diff --git a/package-lock.json b/package-lock.json index 33f8917f..5e9b2a12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "climate-warehouse", - "version": "0.0.32", + "version": "1.1.4", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.0.32", + "version": "1.1.4", "hasInstallScript": true, "dependencies": { "body-parser": "^1.19.0", @@ -25,6 +25,7 @@ "mysql2": "^2.3.3", "mysql2-promise": "^0.1.4", "node-xlsx": "^0.21.0", + "public-ip": "^6.0.1", "random-hash": "^4.0.1", "regenerator-runtime": "^0.13.9", "request-promise": "^4.2.6", @@ -3092,6 +3093,11 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -3228,6 +3234,17 @@ "@babel/types": "^7.3.0" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "node_modules/@types/chai": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", @@ -3272,6 +3289,11 @@ "@types/node": "*" } }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3296,6 +3318,19 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -3330,6 +3365,14 @@ "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", "dev": true }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -4313,6 +4356,14 @@ "node": ">= 0.8" } }, + "node_modules/cacheable-lookup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", + "engines": { + "node": ">=10.6.0" + } + }, "node_modules/cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -4667,7 +4718,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, "dependencies": { "mimic-response": "^1.0.0" } @@ -4785,6 +4835,23 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "node_modules/compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compress-brotli/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5739,6 +5806,28 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dns-socket": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", + "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", + "dependencies": { + "dns-packet": "^5.2.4" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -5937,7 +6026,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -7114,6 +7202,14 @@ "node": ">= 6" } }, + "node_modules/form-data-encoder": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.0.1.tgz", + "integrity": "sha512-Oy+P9w5mnO4TWXVgUiQvggNKPI9/ummcSt5usuIV6HkaLKigwzPpoenhEqmGmx3zHqm6ZLJ+CR/99N8JLinaEw==", + "engines": { + "node": ">= 14.17" + } + }, "node_modules/formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -7441,7 +7537,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, "engines": { "node": ">=10" }, @@ -7898,8 +7993,7 @@ "node_modules/http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, "node_modules/http-errors": { "version": "2.0.0", @@ -7957,6 +8051,29 @@ "npm": ">=1.3.7" } }, + "node_modules/http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -11312,7 +11429,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, "engines": { "node": ">=4" } @@ -12690,11 +12806,286 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, + "node_modules/public-ip": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-6.0.1.tgz", + "integrity": "sha512-1/Mxa1MKrAQ4jF5IalECSBtB0W1FAtnG+9c5X16jjvV/Gx9fiRy7xXIrHlBGYjnTlai0zdZkM3LrpmASavmAEg==", + "dependencies": { + "aggregate-error": "^4.0.1", + "dns-socket": "^4.2.2", + "got": "^12.1.0", + "is-ip": "^4.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/public-ip/node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/public-ip/node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/public-ip/node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/public-ip/node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/public-ip/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/got": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.3.1.tgz", + "integrity": "sha512-tS6+JMhBh4iXMSXF6KkIsRxmloPln31QHDlcb6Ec3bzxjjFJFr/8aXdpyuLmVc9I4i2HyBHYw1QU5K1ruUdpkw==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.0.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/public-ip/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/is-ip": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-4.0.0.tgz", + "integrity": "sha512-4B4XA2HEIm/PY+OSpeMBXr8pGWBYbXuHgjMAqrwbLO3CPTCAd9ArEJzBUKGZtk9viY6+aSfadGnWyjY3ydYZkw==", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/public-ip/node_modules/keyv": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz", + "integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==", + "dependencies": { + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" + } + }, + "node_modules/public-ip/node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/public-ip/node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/public-ip/node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -13288,6 +13679,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -17974,6 +18370,11 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, "@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -18101,6 +18502,17 @@ "@babel/types": "^7.3.0" } }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "@types/chai": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", @@ -18145,6 +18557,11 @@ "@types/node": "*" } }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -18169,6 +18586,19 @@ "@types/istanbul-lib-report": "*" } }, + "@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -18203,6 +18633,14 @@ "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", "dev": true }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -18972,6 +19410,11 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, + "cacheable-lookup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" + }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -19228,7 +19671,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, "requires": { "mimic-response": "^1.0.0" } @@ -19330,6 +19772,22 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "dependencies": { + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -20060,6 +20518,22 @@ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dns-socket": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", + "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", + "requires": { + "dns-packet": "^5.2.4" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -20217,7 +20691,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -21112,6 +21585,11 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.0.1.tgz", + "integrity": "sha512-Oy+P9w5mnO4TWXVgUiQvggNKPI9/ummcSt5usuIV6HkaLKigwzPpoenhEqmGmx3zHqm6ZLJ+CR/99N8JLinaEw==" + }, "formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -21371,8 +21849,7 @@ "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, "get-symbol-description": { "version": "1.0.0", @@ -21704,8 +22181,7 @@ "http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, "http-errors": { "version": "2.0.0", @@ -21752,6 +22228,22 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "dependencies": { + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + } + } + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -24250,8 +24742,7 @@ "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, "min-indent": { "version": "1.0.1", @@ -25321,11 +25812,187 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, + "public-ip": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-6.0.1.tgz", + "integrity": "sha512-1/Mxa1MKrAQ4jF5IalECSBtB0W1FAtnG+9c5X16jjvV/Gx9fiRy7xXIrHlBGYjnTlai0zdZkM3LrpmASavmAEg==", + "requires": { + "aggregate-error": "^4.0.1", + "dns-socket": "^4.2.2", + "got": "^12.1.0", + "is-ip": "^4.0.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==" + }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "requires": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + } + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "requires": { + "escape-string-regexp": "5.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + }, + "got": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.3.1.tgz", + "integrity": "sha512-tS6+JMhBh4iXMSXF6KkIsRxmloPln31QHDlcb6Ec3bzxjjFJFr/8aXdpyuLmVc9I4i2HyBHYw1QU5K1ruUdpkw==", + "requires": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.0.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" + } + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" + }, + "ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==" + }, + "is-ip": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-4.0.0.tgz", + "integrity": "sha512-4B4XA2HEIm/PY+OSpeMBXr8pGWBYbXuHgjMAqrwbLO3CPTCAd9ArEJzBUKGZtk9viY6+aSfadGnWyjY3ydYZkw==", + "requires": { + "ip-regex": "^5.0.0" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "keyv": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz", + "integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==", + "requires": { + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -25782,6 +26449,11 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", diff --git a/package.json b/package.json index b547355f..c674aee3 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "mysql2": "^2.3.3", "mysql2-promise": "^0.1.4", "node-xlsx": "^0.21.0", + "public-ip": "^6.0.1", "random-hash": "^4.0.1", "regenerator-runtime": "^0.13.9", "request-promise": "^4.2.6", diff --git a/src/controllers/organization.controller.js b/src/controllers/organization.controller.js index 0b973cbb..53c39fbe 100644 --- a/src/controllers/organization.controller.js +++ b/src/controllers/organization.controller.js @@ -151,14 +151,14 @@ export const importOrg = async (req, res) => { await assertIfReadOnlyMode(); await assertWalletIsSynced(); - const { orgUid, ip, port } = req.body; + const { orgUid } = req.body; res.json({ message: 'Importing and subscribing organization this can take a few mins.', }); - return Organization.importOrganization(orgUid, ip, port); + return Organization.importOrganization(orgUid); } catch (error) { console.trace(error); res.status(400).json({ diff --git a/src/database/migrations/20220816155101-reset-db-for-new-singletons.js b/src/database/migrations/20220816155101-reset-db-for-new-singletons.js new file mode 100644 index 00000000..0e48d825 --- /dev/null +++ b/src/database/migrations/20220816155101-reset-db-for-new-singletons.js @@ -0,0 +1,373 @@ +'use strict'; + +export default { + async up(queryInterface) { + await queryInterface.sequelize.query( + `DROP TRIGGER IF EXISTS project_delete_fts`, + ); + await queryInterface.sequelize.query( + `DROP TRIGGER IF EXISTS project_insert_fts`, + ); + await queryInterface.sequelize.query( + `DROP TRIGGER IF EXISTS project_update_fts`, + ); + await queryInterface.sequelize.query( + `DROP TRIGGER IF EXISTS unit_delete_fts`, + ); + await queryInterface.sequelize.query( + `DROP TRIGGER IF EXISTS unit_insert_fts`, + ); + await queryInterface.sequelize.query( + `DROP TRIGGER IF EXISTS unit_update_fts`, + ); + await Promise.all( + [ + 'audit', + 'coBenefits', + 'estimations', + 'fileStore', + 'governance', + 'issuances', + 'label_unit', + 'labels', + 'meta', + 'organizations', + 'projectLocations', + 'projectRatings', + 'projects', + 'relatedProjects', + 'simulator', + 'staging', + 'units', + ].map((table) => { + queryInterface.bulkDelete( + table, + {}, + { + truncate: true, + cascade: true, + restartIdentity: true, + }, + ); + }), + ); + + await queryInterface.dropTable('units_fts'); + await queryInterface.sequelize.query(` + CREATE VIRTUAL TABLE units_fts USING fts5( + warehouseUnitId, + issuanceId, + projectLocationId, + orgUid, + unitOwner, + countryJurisdictionOfOwner, + inCountryJurisdictionOfOwner, + serialNumberBlock, + vintageYear, + unitType, + marketplace, + marketplaceLink, + marketplaceIdentifier, + unitTags, + unitStatus, + unitStatusReason, + unitRegistryLink, + correspondingAdjustmentDeclaration, + correspondingAdjustmentStatus, + unitBlockStart, + unitBlockEnd, + unitCount, + timeStaged + ); + `); + await queryInterface.sequelize.query( + `INSERT INTO units_fts SELECT + warehouseUnitId, + issuanceId, + projectLocationId, + orgUid, + unitOwner, + countryJurisdictionOfOwner, + inCountryJurisdictionOfOwner, + serialNumberBlock, + vintageYear, + unitType, + marketplace, + marketplaceLink, + marketplaceIdentifier, + unitTags, + unitStatus, + unitStatusReason, + unitRegistryLink, + correspondingAdjustmentDeclaration, + correspondingAdjustmentStatus, + unitBlockStart, + unitBlockEnd, + unitCount, + timeStaged + FROM units`, + ); + + await queryInterface.sequelize.query(` + CREATE TRIGGER unit_insert_fts AFTER INSERT ON units BEGIN + INSERT INTO units_fts( + warehouseUnitId, + issuanceId, + projectLocationId, + orgUid, + unitOwner, + countryJurisdictionOfOwner, + inCountryJurisdictionOfOwner, + serialNumberBlock, + vintageYear, + unitType, + marketplace, + marketplaceLink, + marketplaceIdentifier, + unitTags, + unitStatus, + unitStatusReason, + unitRegistryLink, + correspondingAdjustmentDeclaration, + correspondingAdjustmentStatus, + unitBlockStart, + unitBlockEnd, + unitCount + ) VALUES ( + new.warehouseUnitId, + new.issuanceId, + new.projectLocationId, + new.orgUid, + new.unitOwner, + new.countryJurisdictionOfOwner, + new.inCountryJurisdictionOfOwner, + new.serialNumberBlock, + new.vintageYear, + new.unitType, + new.marketplace, + new.marketplaceLink, + new.marketplaceIdentifier, + new.unitTags, + new.unitStatus, + new.unitStatusReason, + new.unitRegistryLink, + new.correspondingAdjustmentDeclaration, + new.correspondingAdjustmentStatus, + new.unitBlockStart, + new.unitBlockEnd, + new.unitCount + ); + END;`); + + await queryInterface.sequelize.query(` + CREATE TRIGGER unit_delete_fts AFTER DELETE ON units BEGIN + DELETE FROM units_fts WHERE warehouseUnitId = old.warehouseUnitId; + END; + `); + + await queryInterface.sequelize.query(` + CREATE TRIGGER unit_update_fts AFTER UPDATE ON units BEGIN + DELETE FROM units_fts WHERE warehouseUnitId = old.warehouseUnitId; + INSERT INTO units_fts( + warehouseUnitId, + issuanceId, + projectLocationId, + orgUid, + unitOwner, + countryJurisdictionOfOwner, + inCountryJurisdictionOfOwner, + serialNumberBlock, + vintageYear, + unitType, + marketplace, + marketplaceLink, + marketplaceIdentifier, + unitTags, + unitStatus, + unitStatusReason, + unitRegistryLink, + correspondingAdjustmentDeclaration, + correspondingAdjustmentStatus, + unitBlockStart, + unitBlockEnd, + unitCount + ) VALUES ( + new.warehouseUnitId, + new.issuanceId, + new.projectLocationId, + new.orgUid, + new.unitOwner, + new.countryJurisdictionOfOwner, + new.inCountryJurisdictionOfOwner, + new.serialNumberBlock, + new.vintageYear, + new.unitType, + new.marketplace, + new.marketplaceLink, + new.marketplaceIdentifier, + new.unitTags, + new.unitStatus, + new.unitStatusReason, + new.unitRegistryLink, + new.correspondingAdjustmentDeclaration, + new.correspondingAdjustmentStatus, + new.unitBlockStart, + new.unitBlockEnd, + new.unitCount + ); + END; + `); + + await queryInterface.dropTable('projects_fts'); + await queryInterface.sequelize.query(` + CREATE VIRTUAL TABLE projects_fts USING fts5( + warehouseProjectId, + orgUid, + currentRegistry, + projectId, + registryOfOrigin, + originProjectId, + program, + projectName, + projectLink, + projectDeveloper, + sector, + coveredByNDC, + projectType, + projectTags, + ndcInformation, + projectStatus, + projectStatusDate, + unitMetric, + methodology, + methodology2, + validationBody, + validationDate, + timeStaged + ); + `); + + await queryInterface.sequelize.query(` + CREATE TRIGGER project_insert_fts AFTER INSERT ON projects BEGIN + INSERT INTO projects_fts( + warehouseProjectId, + orgUid, + currentRegistry, + projectId, + registryOfOrigin, + originProjectId, + program, + projectName, + projectLink, + projectDeveloper, + sector, + coveredByNDC, + projectType, + projectTags, + ndcInformation, + projectStatus, + projectStatusDate, + unitMetric, + methodology, + methodology2, + validationBody, + validationDate, + timeStaged + ) VALUES ( + new.warehouseProjectId, + new.orgUid, + new.currentRegistry, + new.projectId, + new.registryOfOrigin, + new.originProjectId, + new.program, + new.projectName, + new.projectLink, + new.projectDeveloper, + new.sector, + new.coveredByNDC, + new.projectType, + new.projectTags, + new.ndcInformation, + new.projectStatus, + new.projectStatusDate, + new.unitMetric, + new.methodology, + new.methodology2, + new.validationBody, + new.validationDate, + new.timeStaged + ); + END;`); + + await queryInterface.sequelize.query(` + CREATE TRIGGER project_delete_fts AFTER DELETE ON projects BEGIN + DELETE FROM projects_fts WHERE warehouseProjectId = old.warehouseProjectId; + END; + `); + + await queryInterface.sequelize.query(` + CREATE TRIGGER project_update_fts AFTER UPDATE ON projects BEGIN + DELETE FROM projects_fts WHERE warehouseProjectId = old.warehouseProjectId; + INSERT INTO projects_fts( + warehouseProjectId, + orgUid, + currentRegistry, + projectId, + registryOfOrigin, + originProjectId, + program, + projectName, + projectLink, + projectDeveloper, + sector, + coveredByNDC, + projectType, + projectTags, + ndcInformation, + projectStatus, + projectStatusDate, + unitMetric, + methodology, + methodology2, + validationBody, + validationDate, + timeStaged + ) VALUES ( + new.warehouseProjectId, + new.orgUid, + new.currentRegistry, + new.projectId, + new.registryOfOrigin, + new.originProjectId, + new.program, + new.projectName, + new.projectLink, + new.projectDeveloper, + new.sector, + new.coveredByNDC, + new.projectType, + new.projectTags, + new.ndcInformation, + new.projectStatus, + new.projectStatusDate, + new.unitMetric, + new.methodology, + new.methodology2, + new.validationBody, + new.validationDate, + new.timeStaged + ); + END; + `); + }, + + async down() { + /** + * Add reverting commands here. + * + * Example: + * await queryInterface.dropTable('users'); + */ + }, +}; diff --git a/src/database/migrations/index.js b/src/database/migrations/index.js index cfb7e545..34125b40 100644 --- a/src/database/migrations/index.js +++ b/src/database/migrations/index.js @@ -27,6 +27,7 @@ import CreateFileStore from './20220724212553-create-file-store'; import AddOptionalMethodology2FieldToProject from './20220721212845-add-optional-methodology2-field-to-project'; import AddFiltStoreSubscribedColumnToProject from './20220809182156-AddFileStoreSubscribedColumn'; import PopulateUnitsFTS from './20220808192709-populate-units-fts'; +import ResetDBForNewSingletons from './20220816155101-reset-db-for-new-singletons'; export const migrations = [ { @@ -149,4 +150,8 @@ export const migrations = [ migration: PopulateUnitsFTS, name: '20220808192709-populate-units-fts', }, + { + migration: ResetDBForNewSingletons, + name: '20220816155101-reset-db-for-new-singletons', + }, ]; diff --git a/src/datalayer/fullNode.js b/src/datalayer/fullNode.js index bf9663be..00e6e5d6 100644 --- a/src/datalayer/fullNode.js +++ b/src/datalayer/fullNode.js @@ -1,8 +1,10 @@ +import _ from 'lodash'; import fs from 'fs'; import path from 'path'; import request from 'request-promise'; import os from 'os'; import { getConfig } from '../utils/config-loader'; +import yaml from 'js-yaml'; process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0; @@ -43,6 +45,14 @@ const getActiveNetwork = async () => { return false; }; +export const getChiaConfig = _.memoize(() => { + const homeDir = os.homedir(); + const persistanceFolder = `${homeDir}/.chia/mainnet/config`; + const configFile = path.resolve(`${persistanceFolder}/config.yaml`); + return yaml.load(fs.readFileSync(configFile, 'utf8')); +}); + export default { getActiveNetwork, + getChiaConfig, }; diff --git a/src/datalayer/persistance.js b/src/datalayer/persistance.js index 632ae120..17331f05 100644 --- a/src/datalayer/persistance.js +++ b/src/datalayer/persistance.js @@ -239,17 +239,16 @@ export const unsubscribeFromDataLayerStore = async (storeId) => { } }; -export const subscribeToStoreOnDataLayer = async (storeId, ip, port) => { +export const subscribeToStoreOnDataLayer = async (storeId) => { const options = { url: `${rpcUrl}/subscribe`, body: JSON.stringify({ id: storeId, - ip, - port, + urls: [], }), }; - logger.info(`RPC Call: ${rpcUrl}/subscribe ${storeId} ${ip} ${port}`); + logger.info(`RPC Call: ${rpcUrl}/subscribe ${storeId}`); try { const response = await request( @@ -259,7 +258,7 @@ export const subscribeToStoreOnDataLayer = async (storeId, ip, port) => { const data = JSON.parse(response); if (Object.keys(data).includes('success') && data.success) { - logger.info(`Successfully Subscribed: ${storeId} ${ip} ${port}`); + logger.info(`Successfully Subscribed: ${storeId}`); return data; } @@ -321,3 +320,32 @@ export const getRootDiff = async (storeId, root1, root2) => { return []; } }; + +export const addMirror = async (storeId, url) => { + const options = { + url: `${rpcUrl}/add_mirror`, + body: JSON.stringify({ + id: storeId, + urls: url, + amount: 1, + }), + }; + + try { + const response = await request( + Object.assign({}, getBaseOptions(), options), + ); + + const data = JSON.parse(response); + + if (data.success) { + logger.info(`Adding mirror ${storeId} at ${url}`); + return true; + } + + logger.error(`FAILED ADDING MIRROR FOR ${storeId}`); + return false; + } catch (error) { + return false; + } +}; diff --git a/src/datalayer/syncService.js b/src/datalayer/syncService.js index 6ebc3f76..5bb13f3a 100644 --- a/src/datalayer/syncService.js +++ b/src/datalayer/syncService.js @@ -167,24 +167,22 @@ const dataLayerWasUpdated = async () => { return updateStoreInfo; }; -const unsubscribeFromDataLayerStore = async (storeId, ip, port) => { +const unsubscribeFromDataLayerStore = async (storeId) => { if (!USE_SIMULATOR) { - return dataLayer.unsubscribeFromDataLayerStore(storeId, ip, port); + return dataLayer.unsubscribeFromDataLayerStore(storeId); } }; -const subscribeToStoreOnDataLayer = async (storeId, ip, port) => { +const subscribeToStoreOnDataLayer = async (storeId) => { if (USE_SIMULATOR) { - return simulator.subscribeToStoreOnDataLayer(storeId, ip, port); + return simulator.subscribeToStoreOnDataLayer(storeId); } else { - return dataLayer.subscribeToStoreOnDataLayer(storeId, ip, port); + return dataLayer.subscribeToStoreOnDataLayer(storeId); } }; const getSubscribedStoreData = async ( storeId, - ip, - port, alreadySubscribed = false, retry = 0, ) => { @@ -197,7 +195,7 @@ const getSubscribedStoreData = async ( const timeoutInterval = 30000; if (!alreadySubscribed) { - const response = await subscribeToStoreOnDataLayer(storeId, ip, port); + const response = await subscribeToStoreOnDataLayer(storeId); if (!response || !response.success) { if (!response) { logger.debug( @@ -212,7 +210,7 @@ const getSubscribedStoreData = async ( await new Promise((resolve) => setTimeout(() => resolve(), timeoutInterval), ); - return getSubscribedStoreData(storeId, ip, port, false, retry + 1); + return getSubscribedStoreData(storeId, false, retry + 1); } } @@ -227,7 +225,7 @@ const getSubscribedStoreData = async ( await new Promise((resolve) => setTimeout(() => resolve(), timeoutInterval), ); - return getSubscribedStoreData(storeId, ip, port, true, retry + 1); + return getSubscribedStoreData(storeId, true, retry + 1); } else { logger.debug( `Store Exists and is confirmed, proceededing to get data ${storeId}`, @@ -251,7 +249,7 @@ const getSubscribedStoreData = async ( await new Promise((resolve) => setTimeout(() => resolve(), timeoutInterval), ); - return getSubscribedStoreData(storeId, ip, port, true, retry + 1); + return getSubscribedStoreData(storeId, true, retry + 1); } const decodedData = decodeDataLayerResponse(encodedData); diff --git a/src/datalayer/writeService.js b/src/datalayer/writeService.js index 4651cdf1..b58d068f 100644 --- a/src/datalayer/writeService.js +++ b/src/datalayer/writeService.js @@ -2,11 +2,13 @@ import _ from 'lodash'; import * as dataLayer from './persistance'; import wallet from './wallet'; +import fullNode from './fullNode'; import * as simulator from './simulator'; import { encodeHex } from '../utils/datalayer-utils'; import { getConfig } from '../utils/config-loader'; import { logger } from '../config/logger.cjs'; import { Organization } from '../models'; +import { publicIpv4 } from 'public-ip'; logger.info('climate-warehouse:datalayer:writeService'); @@ -23,6 +25,11 @@ const createDataLayerStore = async () => { `Created storeId: ${storeId}, waiting for this to be confirmed on the blockchain.`, ); await waitForStoreToBeConfirmed(storeId); + const chiaConfig = fullNode.getChiaConfig(); + await dataLayer.addMirror( + storeId, + `http://${await publicIpv4()}:${chiaConfig.data_layer.host_port}`, + ); } return storeId; diff --git a/src/models/file-store/file-store.model.js b/src/models/file-store/file-store.model.js index 1ee88c97..8da88a63 100644 --- a/src/models/file-store/file-store.model.js +++ b/src/models/file-store/file-store.model.js @@ -8,7 +8,7 @@ import Sequelize from 'sequelize'; const { Model } = Sequelize; import { sequelize } from '../../database'; -import { Organization, Meta } from '../'; +import { Organization } from '../'; import datalayer from '../../datalayer'; import { encodeHex } from '../../utils/datalayer-utils'; @@ -28,20 +28,7 @@ class FileStore extends Model { ); } - const orgMeta = await Meta.findOne( - { where: { metaKey: organization.orgUid } }, - { raw: true }, - ); - - if (!orgMeta) { - throw new Error( - `Org ${orgUid} can not find the ip and port to subscribe to its filestore, re-importing the org can fix this.`, - ); - } - - const { ip, port } = JSON.parse(orgMeta.metaValue); - - datalayer.subscribeToStoreOnDataLayer(organization.fileStoreId, ip, port); + datalayer.subscribeToStoreOnDataLayer(organization.fileStoreId); Organization.update({ fileStoreSubscribed: true }); } diff --git a/src/models/governance/governance.model.js b/src/models/governance/governance.model.js index 7d9a1e78..d5285f2a 100644 --- a/src/models/governance/governance.model.js +++ b/src/models/governance/governance.model.js @@ -11,8 +11,7 @@ import { logger } from '../../config/logger.cjs'; import { getDataModelVersion } from '../../utils/helpers'; import PickListStub from './governance.stub.json'; -const { GOVERANCE_BODY_ID, GOVERNANCE_BODY_IP, GOVERNANCE_BODY_PORT } = - getConfig().GOVERNANCE; +const { GOVERANCE_BODY_ID } = getConfig().GOVERNANCE; const { USE_SIMULATOR, CHIA_NETWORK } = getConfig().APP; @@ -103,7 +102,7 @@ class Governance extends Model { static async sync() { try { - if (!GOVERANCE_BODY_ID || !GOVERNANCE_BODY_IP || !GOVERNANCE_BODY_PORT) { + if (!GOVERANCE_BODY_ID) { throw new Error('Missing information in env to sync Governance data'); } @@ -121,8 +120,6 @@ class Governance extends Model { const governanceData = await datalayer.getSubscribedStoreData( GOVERANCE_BODY_ID, - GOVERNANCE_BODY_IP, - GOVERNANCE_BODY_PORT, ); // Check if there is v1, v2, v3 ..... and if not, then we assume this is a legacy goverance table that isnt versioned @@ -139,8 +136,6 @@ class Governance extends Model { if (governanceData[dataModelVersion]) { const versionedGovernanceData = await datalayer.getSubscribedStoreData( governanceData[dataModelVersion], - GOVERNANCE_BODY_IP, - GOVERNANCE_BODY_PORT, ); await Governance.upsertGovernanceDownload(versionedGovernanceData); diff --git a/src/models/organizations/organizations.model.js b/src/models/organizations/organizations.model.js index 70640989..456e8441 100644 --- a/src/models/organizations/organizations.model.js +++ b/src/models/organizations/organizations.model.js @@ -3,16 +3,12 @@ import Sequelize from 'sequelize'; const { Model } = Sequelize; import { sequelize } from '../../database'; -import { Meta } from '../meta'; import datalayer from '../../datalayer'; import { logger } from '../../config/logger.cjs'; -import { - getDefaultOrganizationList, - serverAvailable, -} from '../../utils/data-loaders'; +import { getDefaultOrganizationList } from '../../utils/data-loaders'; import { getDataModelVersion } from '../../utils/helpers'; @@ -225,10 +221,10 @@ class Organization extends Model { } // eslint-disable-next-line - static importOrganization = async (orgUid, ip, port) => { + static importOrganization = async (orgUid) => { try { - logger.info('Subscribing to', orgUid, ip, port); - const orgData = await datalayer.getSubscribedStoreData(orgUid, ip, port); + logger.info('Subscribing to', orgUid); + const orgData = await datalayer.getSubscribedStoreData(orgUid); if (!orgData.registryId) { throw new Error( @@ -236,20 +232,10 @@ class Organization extends Model { ); } - await Meta.upsert({ - metaKey: orgData.orgUid, - metaValue: JSON.stringify({ - ip, - port, - }), - }); - logger.info(`IMPORTING REGISTRY: ${orgData.registryId}`); const registryData = await datalayer.getSubscribedStoreData( orgData.registryId, - ip, - port, ); const dataModelVersion = getDataModelVersion(); @@ -262,7 +248,7 @@ class Organization extends Model { logger.info(`IMPORTING REGISTRY ${dataModelVersion}: `, registryData.v1); - await datalayer.subscribeToStoreOnDataLayer(registryData.v1, ip, port); + await datalayer.subscribeToStoreOnDataLayer(registryData.v1); logger.info({ orgUid, @@ -371,13 +357,7 @@ class Organization extends Model { }); if (!exists) { - if (serverAvailable(org.ip, org.port)) { - Organization.importOrganization(org.orgUid, org.ip, org.port); - } else { - logger.warn( - `${org.orgUid} can not be detected at ${org.ip}:${org.port}, skipping import...`, - ); - } + Organization.importOrganization(org.orgUid); } }), ); diff --git a/src/tasks/sync-governance-body.js b/src/tasks/sync-governance-body.js index 5ab45f12..ab9ce942 100644 --- a/src/tasks/sync-governance-body.js +++ b/src/tasks/sync-governance-body.js @@ -9,8 +9,7 @@ import { getConfig } from '../utils/config-loader'; import { logger } from '../config/logger.cjs'; import { Organization } from '../models'; -const { GOVERANCE_BODY_ID, GOVERNANCE_BODY_IP, GOVERNANCE_BODY_PORT } = - getConfig().GOVERNANCE; +const { GOVERANCE_BODY_ID } = getConfig().GOVERNANCE; import dotenv from 'dotenv'; dotenv.config(); @@ -23,10 +22,8 @@ const task = new Task('sync-governance-meta', async () => { await assertWalletIsSynced(); logger.info('Syncing governance data'); - if (GOVERANCE_BODY_ID && GOVERNANCE_BODY_IP && GOVERNANCE_BODY_PORT) { - logger.info( - `Governance Config Found ${GOVERANCE_BODY_ID} ${GOVERNANCE_BODY_IP} ${GOVERNANCE_BODY_PORT}`, - ); + if (GOVERANCE_BODY_ID) { + logger.info(`Governance Config Found ${GOVERANCE_BODY_ID}`); const myOrganization = await Organization.getHomeOrg();