From 017dbab0c945e15117436678fa9ffa1e9bd229bc Mon Sep 17 00:00:00 2001 From: boufni95 Date: Sat, 27 Jun 2020 16:30:50 +0200 Subject: [PATCH 1/2] add docker files --- .dockerignore | 3 +++ Dockerfile | 29 +++++++++++++++++++++++++++++ docker-start.sh | 5 +++++ 3 files changed, 37 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-start.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..eebfc91a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +**/.git +**/node_modules +**/radata \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..90e3aef2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM node:12.18.0-alpine3.9 + +WORKDIR /usr/src/app + + +ADD ./package.json /usr/src/app/package.json +ADD ./yarn.lock /usr/src/app/yarn.lock +#RUN useradd app && \ +# mkdir -p /home/app/.lnd +RUN apk update && apk upgrade && \ + apk add --no-cache bash git openssh +RUN yarn install + +ADD . /usr/src/app +RUN ls /usr/src/app + +RUN chmod +x ./docker-start.sh +#ADD ./tls.cert /usr/src/app/tls.cert +#ADD ./admin.macaroon /usr/src/app/admin.macaroon + +# && \ +# chown -R app:app /home/app && \ +# chown -R app:app /usr/src/app && \ +# chown -R app:app /start.sh + +#ARG lnd_address +#ENV LND_ADDR=$lnd_address +EXPOSE 9835 +CMD ["./docker-start.sh"] \ No newline at end of file diff --git a/docker-start.sh b/docker-start.sh new file mode 100644 index 00000000..986525b1 --- /dev/null +++ b/docker-start.sh @@ -0,0 +1,5 @@ +#!/bin/ash +node main -h 0.0.0.0 \ + -m admin.macaroon \ + -d tls.cert \ + -l $LND_ADDR \ No newline at end of file From 18a3143d8f0942ce1216f3021a796ba8be32a261 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Sat, 27 Jun 2020 18:47:45 -0400 Subject: [PATCH 2/2] circumvent gun.load() bug --- services/gunDB/contact-api/getters/follows.js | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/services/gunDB/contact-api/getters/follows.js b/services/gunDB/contact-api/getters/follows.js index b74080fa..22a49333 100644 --- a/services/gunDB/contact-api/getters/follows.js +++ b/services/gunDB/contact-api/getters/follows.js @@ -1,6 +1,11 @@ +/** + * @format + */ const Common = require('shock-common') const Logger = require('winston') +const size = require('lodash/size') +const Utils = require('../utils') const Key = require('../key') /** @@ -8,43 +13,47 @@ const Key = require('../key') */ /** + * @throws {TypeError} * @returns {Promise>} */ -exports.currentFollows = () => { - const user = require('../../Mediator').getUser() - - return new Promise(res => { - user.get(Key.FOLLOWS).load(data => { - if (typeof data !== 'object' || data === null) { - Logger.warn( - `GunDb -> getters -> currentFollows() -> Current follows data as fetched from gun is not an object but ${typeof data}. This can happen if Gun lost its cache and it's still retrieving data from the network.` - ) - res({}) - return +exports.currentFollows = async () => { + /** + * @type {Record} + */ + const raw = await Utils.tryAndWait( + // @ts-ignore + (_, user) => new Promise(res => user.get(Key.FOLLOWS).load(res)), + v => { + if (typeof v !== 'object' || v === null) { + return true } - const rejected = Object.entries(data).filter( - ([_, follow]) => !Common.Schema.isFollow(follow) - ) + if (size(v) === 0) { + return true + } - rejected.forEach(([key, item]) => { - // expected when unfollowed - if (item !== null) { - Logger.warn( - `GunDb -> getters -> currentFollows() -> Item not conforming to schema found inside follows data. Key: ${key}, item: ${JSON.stringify( - item - )}.` - ) - } - }) + return false + } + ) - const passed = Object.entries(data).filter(([_, follow]) => - Common.Schema.isFollow(follow) - ) + if (typeof raw !== 'object' || raw === null) { + Logger.error( + `Expected user.follows to be an object but instead got: ${JSON.stringify( + raw + )}` + ) + throw new TypeError('Could not get follows, not an object') + } - const p = /** @type {unknown} */ (passed) + const clean = { + ...raw + } - res(/** @type {Record} */ (p)) - }) - }) -} \ No newline at end of file + for (const [key, followOrNull] of Object.entries(clean)) { + if (!Common.Schema.isFollow(followOrNull)) { + delete clean[key] + } + } + + return clean +}