From 0d79f609b3a4badf29d6d34acc8a6734015b0ca5 Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 18:30:07 -0400 Subject: [PATCH 1/9] Upgrade to node 20 --- config/bootstrap.js | 15 +- package.json | 29 +- yarn.lock | 3096 +++++++++++++++++++++++-------------------- 3 files changed, 1680 insertions(+), 1460 deletions(-) diff --git a/config/bootstrap.js b/config/bootstrap.js index cd5af49..2ba6b50 100644 --- a/config/bootstrap.js +++ b/config/bootstrap.js @@ -9,10 +9,9 @@ * https://sailsjs.com/config/bootstrap */ -require('dotenv-safe').config(); - -module.exports.bootstrap = async function(done) { +require("dotenv").config(); +module.exports.bootstrap = async function (done) { let offset = parseInt(process.env.BACKFILL_OFFSET); // Status object @@ -20,25 +19,23 @@ module.exports.bootstrap = async function(done) { backfill: { start: offset, current: offset, - completed: 0 + completed: 0, }, failures: { esi: 0, zkill: 0, sentinel: 0, - other: 0 + other: 0, }, started: new Date().toISOString(), - connected: false + connected: false, }; // Job queue kickoff (config/jobs.js) sails.config.jobs.init(); - if (process.env.TRACK_ENABLED === 'true') - ZkillSocket.connect(); + if (process.env.TRACK_ENABLED === "true") ZkillSocket.connect(); // Needed for Sails to complete lift. return done(); - }; diff --git a/package.json b/package.json index 0381755..5c1de29 100644 --- a/package.json +++ b/package.json @@ -9,22 +9,23 @@ "mmorpg" ], "dependencies": { - "async": "2.0.1", - "cron": "^1.5.0", - "dotenv-safe": "^5.0.1", + "async": "3.2.6", + "cron": "^4.1.0", + "dotenv": "16.4.7", "eve-swagger-simple": "https://github.com/dougestey/eve-swagger-simple", "kue": "^0.11.6", - "lodash": "3.10.1", - "moment": "^2.20.1", - "qs": "^6.5.1", - "redis": "^2.8.0", - "request": "^2.83.0", - "sails": "1.0.2", - "sails-hook-orm": "^2.0.0-22", - "sails-hook-sockets": "^1.4.0", + "lodash": "4.17.21", + "moment": "^2.30.1", + "prettier": "^3.5.3", + "qs": "^6.14.0", + "redis": "^4.7.0", + "request": "^2.88.2", + "sails": "1.5.14", + "sails-hook-orm": "^4.0.3", + "sails-hook-sockets": "^3.0.1", "sails-postgresql": "https://github.com/dougestey/sails-postgresql", - "socket.io-redis": "5.2.0", - "ws": "^6.1.0" + "socket.io-redis": "6.1.1", + "ws": "^8.18.1" }, "scripts": { "start": "NODE_ENV=production node app.js" @@ -37,6 +38,6 @@ "author": "doug.estey@gmail.com", "license": "MIT", "engines": { - "node": ">=10" + "node": "20" } } diff --git a/yarn.lock b/yarn.lock index c6bdfe1..3f07ec8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,90 @@ # yarn lockfile v1 -"@sailshq/lodash@^3.10.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@sailshq/lodash/-/lodash-3.10.2.tgz#1567d47345364c2c2e2077bc113487b1dfe62154" - integrity sha1-FWfUc0U2TCwuIHe8ETSHsd/mIVQ= +"@redis/bloom@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71" + integrity sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg== + +"@redis/client@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz#dcf4ae1319763db6fdddd6de7f0af68a352c30ea" + integrity sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg== + dependencies: + cluster-key-slot "1.1.2" + generic-pool "3.9.0" + yallist "4.0.0" + +"@redis/graph@1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz#8c10df2df7f7d02741866751764031a957a170ea" + integrity sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw== + +"@redis/json@1.0.7": + version "1.0.7" + resolved "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz#016257fcd933c4cbcb9c49cde8a0961375c6893b" + integrity sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ== + +"@redis/search@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz#50976fd3f31168f585666f7922dde111c74567b8" + integrity sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw== + +"@redis/time-series@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz#cba454c05ec201bd5547aaf55286d44682ac8eb5" + integrity sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g== + +"@sailshq/binary-search-tree@0.2.7": + version "0.2.7" + resolved "https://registry.npmjs.org/@sailshq/binary-search-tree/-/binary-search-tree-0.2.7.tgz#eee88408bb6032855bbf96bcd8fb396662861d0b" + integrity sha512-4q7A4I0cYzRRrPUA/mZYFQ3My26RAyWQ10IfdgHaBC6M1ZNCUpQnT7vRMZd5KgnlUBl8MSlP4JUbL5heeSHMBw== + dependencies: + underscore "1.13.1" + +"@sailshq/csurf@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@sailshq/csurf/-/csurf-1.11.1.tgz#f2d8483a33be45f25f82183ebcc9c07357b5e5cb" + integrity sha512-IlmrTCsGMyPyl6lC1LtygW6xceGIAppwYGYq3GlLt8OgYBLg03Ac/Ob8roozzE2jTMFm7EFvW0XzqQDg1o/61Q== + dependencies: + cookie "0.7.2" + cookie-signature "1.0.6" + csrf "3.1.0" + http-errors "1.8.0" + +"@sailshq/lodash@^3.10.2", "@sailshq/lodash@^3.10.3", "@sailshq/lodash@^3.10.6": + version "3.10.6" + resolved "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.6.tgz#2b16f0a5164d56041e4654edfbe8260a2b8369a2" + integrity sha512-gp2pRE/kyh3DbrQ7MaI65xNcjrToZHRa52XJsNB8kZ0Aj0fcDNQPw8entkcuaaPYzCPxXau4rpOXaw/rl0c/ZQ== + +"@sailshq/nedb@^1.8.2": + version "1.8.2" + resolved "https://registry.npmjs.org/@sailshq/nedb/-/nedb-1.8.2.tgz#a33915a93f5616892bf6c4e4e386bee42d3f7462" + integrity sha512-qCViMLdh5WWIWEP9ARiSZTjQ1fSEwXsd6eYkD04WIrOt6uHRVF9k5bGnDQPKvTdlCVBTzxUZhPb7VC3+BKw21g== + dependencies: + "@sailshq/binary-search-tree" "0.2.7" + async "0.2.10" + localforage "1.3.0" + mkdirp "0.5.6" + underscore "1.13.1" + +"@sailshq/router@^1.3.9": + version "1.3.10" + resolved "https://registry.npmjs.org/@sailshq/router/-/router-1.3.10.tgz#bc3d1f77dfa4c46be99d5040242063e32a4da7d5" + integrity sha512-6h5IE0PrSEkF03Fze1lUwnDMnYMbBPkUgKaUG/mkthHpiO/VDzbD0QJXyD7xmhlD05dEzuZnGqrrUeY5oZIMAg== + dependencies: + array-flatten "3.0.0" + debug "2.6.9" + methods "~1.1.2" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + setprototypeof "1.2.0" + utils-merge "1.0.1" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.1" @@ -19,6 +99,30 @@ dependencies: "@types/babel-types" "*" +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.12": + version "2.8.17" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + dependencies: + "@types/node" "*" + +"@types/luxon@~3.4.0": + version "3.4.2" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7" + integrity sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA== + +"@types/node@*", "@types/node@>=10.0.0": + version "22.13.10" + resolved "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" + integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== + dependencies: + undici-types "~6.20.0" + accepts@~1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -27,6 +131,14 @@ accepts@~1.3.4: mime-types "~2.1.18" negotiator "0.6.1" +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + acorn-globals@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" @@ -44,25 +156,15 @@ acorn@^4.0.4, acorn@~4.0.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= -acorn@^5.0.0: - version "5.5.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" - integrity sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -ajv@^5.1.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" @@ -79,22 +181,22 @@ amdefine@>=0.0.4: integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= anchor@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/anchor/-/anchor-1.2.0.tgz#e22e6e80dd430c3c5a015a956e54e2e974bc7cea" - integrity sha512-HA3dZelD4mTRcOyFEentnsxwUSrkdUZmn6FWey1rQfMzn7UDTDRAnD78ieQU2x5Etn5S/CDCtrVW6qZeqR+dJg== + version "1.4.1" + resolved "https://registry.npmjs.org/anchor/-/anchor-1.4.1.tgz#2f678afeaf34959e04a5be98e3144debf2a78d07" + integrity sha512-T4rWOGuI+pjf0KgrnLMWrHBIsLCxf6HQ2OgXboMs4QAf7ogvbqIYwCLR7k7BBeTBvrmyDv1M6mZDSUl2pKLMkw== dependencies: "@sailshq/lodash" "^3.10.2" - validator "4.4.0" + validator "13.7.0" ansi-regex@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.1.0: version "3.2.1" @@ -103,6 +205,13 @@ ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + "apparatus@>= 0.0.9": version "0.0.9" resolved "https://registry.yarnpkg.com/apparatus/-/apparatus-0.0.9.tgz#37dcd25834ad0b651076596291db823eeb1908bd" @@ -112,14 +221,14 @@ ansi-styles@^3.1.0: arr-diff@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== dependencies: arr-flatten "^1.0.1" arr-flatten@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== array-flatten@1.1.1: @@ -127,20 +236,20 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= +array-flatten@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" + integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== array-unique@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== +asap@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d" + integrity sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA== asap@~2.0.3: version "2.0.6" @@ -148,21 +257,18 @@ asap@~2.0.3: integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y= + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -async@0.2.10, async@0.2.x, async@~0.2.9: +async@0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= @@ -174,27 +280,37 @@ async@2.0.1: dependencies: lodash "^4.8.0" -async@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" - integrity sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw== +async@2.6.4, async@^2.6.4: + version "2.6.4" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: - lodash "^4.14.0" + lodash "^4.17.14" + +async@3.2.6, async@^3.2.3: + version "3.2.6" + resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +async@~0.9.0: + version "0.9.2" + resolved "https://registry.npmjs.org/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== -aws4@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= +aws4@^1.8.0: + version "1.13.2" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" + integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== babel-runtime@^6.11.6, babel-runtime@^6.26.0: version "6.26.0" @@ -219,61 +335,32 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40= - dependencies: - tweetnacl "^0.14.3" - -better-assert@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - -binary-search-tree@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" - integrity sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q= + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: - underscore "~1.4.4" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= + tweetnacl "^0.14.3" bluebird@3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.2.1.tgz#3cecf3504904c30ce3e79c170877e893a11910fd" - integrity sha1-POzzUEkEwwzj55wXCHfok6EZEP0= + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.2.1.tgz#3cecf3504904c30ce3e79c170877e893a11910fd" + integrity sha512-OfdwXncy2KqoGIlXUqxe+xb7G54s8y5pdo96+KGQMkQMZ5C/rT26tT2IJxWtgiAPeklwAU6iXxxjX8b8blcTPQ== bluebird@^3.4.6: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== body-parser@1.18.2, body-parser@^1.12.2: version "1.18.2" @@ -291,57 +378,52 @@ body-parser@1.18.2, body-parser@^1.12.2: raw-body "2.3.2" type-is "~1.6.15" -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE= +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw== - dependencies: - hoek "4.x.x" + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^1.8.2: version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== dependencies: expand-range "^1.8.1" preserve "^0.2.0" repeat-element "^1.1.2" -browserify-transform-machinepack@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/browserify-transform-machinepack/-/browserify-transform-machinepack-1.0.3.tgz#83374310fc83266af9fbcf2f17dee4183d0d88f8" - integrity sha1-gzdDEPyDJmr5+88vF97kGD0NiPg= - dependencies: - browserify-transform-tools "^1.4.2" - lodash "^3.8.0" - -browserify-transform-tools@^1.4.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz#83e277221f63259bed2e7eb2a283a970a501f4c4" - integrity sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ= - dependencies: - falafel "^2.0.0" - through "^2.3.7" - buffer-writer@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08" - integrity sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg= + resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08" + integrity sha512-I5M7UuSeDn5aQR2BSH2+270w9qdd2Rd5LB/XhTcIRdSmeLueMNlY3BaMoHtoASmjEQf/NOAqMIZaoAMSpomW6w== builtin-modules@^1.0.0: version "1.1.1" @@ -353,10 +435,26 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" camelcase@^1.0.2: version "1.2.1" @@ -377,20 +475,20 @@ captains-log@^1.0.1: chalk "1.1.3" rc "1.0.1" -captains-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/captains-log/-/captains-log-2.0.0.tgz#46700932624404627b4973a69c879063d38de6ea" - integrity sha512-ICNwMIjnPvEm9tVoZ1mxFtuN3t9hCFjVOXj5AgeYBrnqErgx0zd4JqueEv6LgRQzSssYe4Tj//S3W86G68pbmg== +captains-log@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/captains-log/-/captains-log-2.0.5.tgz#3f450996cf00c083070822fc12efe7ec06d8e939" + integrity sha512-Gg6xMzB9Ps1kBpbdts2QqT8Dzw4Zo+uHAIjnvBD8APS09AbWDpU4KTlE0w1SkQx8PIZLLUcNPbLraTSTWGm1sA== dependencies: "@sailshq/lodash" "^3.10.2" - chalk "1.1.3" - rc "1.0.1" - semver "5.4.1" + chalk "2.3.0" + rc "1.2.8" + semver "7.5.2" caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== center-align@^0.1.1: version "0.1.3" @@ -420,6 +518,14 @@ chalk@2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-parser@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" @@ -453,10 +559,10 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +cluster-key-slot@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== code-point-at@^1.0.0: version "1.1.0" @@ -470,25 +576,42 @@ color-convert@^1.9.0: dependencies: color-name "^1.1.1" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -colors@*, colors@1.1.2: +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@*: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= -colors@0.6.x: - version "0.6.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" - integrity sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w= +colors@1.0.x: + version "1.0.3" + resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== -combined-stream@1.0.6, combined-stream@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= +colors@1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -505,30 +628,15 @@ commander@2.8.1, commander@2.8.x: graceful-readlink ">= 1.0.0" commander@^2.2.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" - integrity sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew== + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== common-js-file-extensions@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/common-js-file-extensions/-/common-js-file-extensions-1.0.2.tgz#1ecf1387001156da680f58149a8be9beb804bf1e" integrity sha1-Hs8ThwARVtpoD1gUmovpvrgEvx4= -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - compressible@~2.0.11: version "2.0.13" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" @@ -551,8 +659,8 @@ compression@1.7.1: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== connect@3.6.5: version "3.6.5" @@ -579,27 +687,29 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-to-ecmascript-compatible-varname@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/convert-to-ecmascript-compatible-varname/-/convert-to-ecmascript-compatible-varname-0.1.4.tgz#49ff46e96c1d356a91d4b83e5ffe0133c3c8ac14" - integrity sha1-Sf9G6WwdNWqR1Lg+X/4BM8PIrBQ= - -convert-to-ecmascript-compatible-varname@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/convert-to-ecmascript-compatible-varname/-/convert-to-ecmascript-compatible-varname-0.1.5.tgz#f67a4938c5233443564250479c67014bac878499" - integrity sha1-9npJOMUjNENWQlBHnGcBS6yHhJk= +content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -cookie-parser@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.3.tgz#0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5" - integrity sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU= +cookie-parser@1.4.7: + version "1.4.7" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz#e2125635dfd766888ffe90d60c286404fa0e7b26" + integrity sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw== dependencies: - cookie "0.3.1" + cookie "0.7.2" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -607,72 +717,81 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= +cookie-signature@1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== + +cookie-signature@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.1.0.tgz#cc94974f91fb9a9c1bb485e95fc2b7f4b120aff2" + integrity sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A== + cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +cookie@0.7.2: + version "0.7.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + core-js@^2.4.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" - integrity sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4= + version "2.6.12" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -crc@3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" - integrity sha1-naHpgOO9RPxck79as9ozeNheRms= + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -cron@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cron/-/cron-1.5.0.tgz#50acb15ec640cff1f6f42091c9df2b81ed303066" - integrity sha512-j7zMFLrcSta53xqOvETUt8ge+PM14GtF47gEGJJeVlM6qP24/eWHSgtiWiEiKBR2sHS8xZaBQZq4D7vFXg8dcQ== - dependencies: - moment-timezone "^0.5.x" +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cross-spawn@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: - lru-cache "^4.0.1" - which "^1.2.9" + object-assign "^4" + vary "^1" -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - integrity sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4= +cron@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cron/-/cron-4.1.0.tgz#1207e890c4c705b9b1ee3b799fb9d9ec17d54792" + integrity sha512-wmcuXr2qP0UZStYgwruG6jC2AYSO9n5VMm2t93hmcEXEjWY3S2bsXe3sfGUrTs/uQ1AvRCrZ0Pp9Q032L/V9tw== dependencies: - boom "5.x.x" + "@types/luxon" "~3.4.0" + luxon "~3.5.0" -csrf@~3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.0.6.tgz#b61120ddceeafc91e76ed5313bb5c0b2667b710a" - integrity sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo= +csrf@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz#ec75e9656d004d674b8ef5ba47b41fbfd6cb9c30" + integrity sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w== dependencies: rndm "1.2.0" - tsscmp "1.0.5" - uid-safe "2.1.4" + tsscmp "1.0.6" + uid-safe "2.1.5" css-parse@1.7.x: version "1.7.0" resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= -csurf@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.9.0.tgz#49d2c6925ffcec7b7de559597c153fa533364133" - integrity sha1-SdLGkl/87Ht95VlZfBU/pTM2QTM= - dependencies: - cookie "0.3.1" - cookie-signature "1.0.6" - csrf "~3.0.3" - http-errors "~1.5.0" - cycle@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" @@ -680,12 +799,12 @@ cycle@1.0.x: dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" -debug@*, debug@3.1.0, debug@~3.1.0: +debug@*, debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -694,53 +813,77 @@ debug@*, debug@3.1.0, debug@~3.1.0: debug@2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo= + resolved "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + integrity sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw== dependencies: ms "0.7.1" -debug@2.6.9, debug@^2.1.1, debug@^2.1.3, debug@~2.6.4, debug@~2.6.6, debug@~2.6.8: +debug@2.6.9, debug@^2.1.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: + version "4.3.7" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -deep-equal@*: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-extend@~0.2.5: version "0.2.11" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.2.11.tgz#7a16ba69729132340506170494bc83f7076fe08f" integrity sha1-eha6aXKRMjQFBhcElLyD9wdv4I8= -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - integrity sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8= - delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denque@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" + integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= -depd@~1.1.1: +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -748,8 +891,8 @@ destroy@~1.0.4: detect-file@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" - integrity sha1-STXe39lIhkjgBrASlWbpOGcR6mM= + resolved "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + integrity sha512-akiVcMZym+vO3IxctGG9dnuJT4AYQTAhjsGbjeGqqMUr9Ffy7XEAUmfKLSHugr/tGLaAZ4jWROErPPrsfG8+bQ== dependencies: fs-exists-sync "^0.1.0" @@ -758,50 +901,55 @@ doctypes@^1.1.0: resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= -dot-access@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dot-access/-/dot-access-1.0.0.tgz#a362e5a25906b55bab48a42d101538726061fa68" - integrity sha1-o2LlolkGtVurSKQtEBU4cmBh+mg= - -dotenv-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv-safe/-/dotenv-safe-5.0.1.tgz#8c4a79b8978fd4271b3d8ef17be2b2f04588af71" - integrity sha512-NiS92uLQHKThcQIB4pNEQHLaosz+O1VaJ1yuBaZNj0BASGpQliSzfPKgaoFs/WvE+p8pS9STXOMW30b5uxBZog== - dependencies: - dotenv "^5.0.0" - -dotenv@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== +dotenv@16.4.7: + version "16.4.7" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== double-ended-queue@^2.1.0-0: version "2.1.0-0" resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU= + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" + safer-buffer "^2.1.0" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@2.5.7: - version "2.5.7" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" - integrity sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo= +ejs@3.1.10: + version "3.1.10" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" -encodeurl@~1.0.1: +encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encrypted-attr@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/encrypted-attr/-/encrypted-attr-1.0.6.tgz#5b9f81a9308ebe99dbe9cdd84523c8fdabb6f95e" @@ -809,47 +957,26 @@ encrypted-attr@1.0.6: dependencies: lodash "^4.17.4" -engine.io-client@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.5.tgz#85de17666560327ef1817978f6e3f8101ded2c47" - integrity sha512-Rv9vgb83zrNVhRircUXHi4mtbJhgy2oWtJOCZEbCLFs2HiDSWmh/aOEj8TwoKsn8zXGqTuQuPSoU4v3E10bR6A== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" - integrity sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary2 "~1.0.2" +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== -engine.io@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" - integrity sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA== +engine.io@~6.5.2: + version "6.5.5" + resolved "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz#430b80d8840caab91a50e9e23cb551455195fc93" + integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA== dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" error-ex@^1.2.0: version "1.3.1" @@ -858,6 +985,23 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -886,41 +1030,77 @@ etag@~1.8.1: expand-brackets@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== dependencies: is-posix-bracket "^0.1.0" expand-range@^1.8.1: version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== dependencies: fill-range "^2.1.0" expand-tilde@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== dependencies: os-homedir "^1.0.1" -express-session@1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.15.6.tgz#47b4160c88f42ab70fe8a508e31cbff76757ab0a" - integrity sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA== +express-session@1.18.1: + version "1.18.1" + resolved "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz#88d0bbd41878882840f24ec6227493fcb167e8d5" + integrity sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA== dependencies: - cookie "0.3.1" - cookie-signature "1.0.6" - crc "3.4.4" + cookie "0.7.2" + cookie-signature "1.0.7" debug "2.6.9" - depd "~1.1.1" - on-headers "~1.0.1" - parseurl "~1.3.2" + depd "~2.0.0" + on-headers "~1.0.2" + parseurl "~1.3.3" + safe-buffer "5.2.1" uid-safe "~2.1.5" + +express@4.21.2: + version "4.21.2" + resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" utils-merge "1.0.1" + vary "~1.1.2" -express@4.16.2, express@^4.12.2: +express@^4.12.2: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" integrity sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w= @@ -961,57 +1141,42 @@ extend@^1.2.1: resolved "https://registry.yarnpkg.com/extend/-/extend-1.3.0.tgz#d1516fb0ff5624d2ebf9123ea1dac5a1994004f8" integrity sha1-0VFvsP9WJNLr+RI+odrFoZlABPg= -extend@^3.0.0: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= - extglob@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== dependencies: is-extglob "^1.0.0" extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== eyes@0.1.x: version "0.1.8" resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= -falafel@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" - integrity sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw= - dependencies: - acorn "^5.0.0" - foreach "^2.0.5" - isarray "0.0.1" - object-keys "^1.0.6" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fd-slicer@~1.0.1: version "1.0.1" @@ -1020,14 +1185,21 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + filename-regex@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== fill-range@^2.1.0: version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" @@ -1062,6 +1234,19 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1072,8 +1257,8 @@ find-up@^1.0.0: findup-sync@^0.4.2: version "0.4.3" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" - integrity sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI= + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" + integrity sha512-Q9vjzZTaI0/aeNnY7QM6En6QwnEP77V8/WHcMaBagz9Jdh+nKMsnGew1CXrgYd1pfyKhLX+PNvDZjYAfGw15Ag== dependencies: detect-file "^0.1.0" is-glob "^2.0.1" @@ -1082,54 +1267,54 @@ findup-sync@^0.4.2: flagged-respawn@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" - integrity sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU= + resolved "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" + integrity sha512-HV3vdzzmQpuvpF5ghGNEKLSk3XrOmhuxWW96cO85B8JUm7iwcE8gLVl2fygaiwHFRXRiIUmEfIGMN6sQIn226g== -flaverr@^1.0.0, flaverr@^1.1.1, flaverr@^1.5.1, flaverr@^1.7.0, flaverr@^1.8.0, flaverr@^1.8.1, flaverr@^1.8.3, flaverr@^1.9.0: +flaverr@^1.0.0, flaverr@^1.8.0, flaverr@^1.8.1: version "1.9.0" resolved "https://registry.yarnpkg.com/flaverr/-/flaverr-1.9.0.tgz#205aeda8ea87c436d461cd7748b80ac7acf12bcf" integrity sha512-PVkovjjvvgMMjsYYR1bSiSxRSt8K/Q6llEpBaaXKaKYbUv49r+W1gNvBlYmme01i71kixISibaBCP03T6OjJZQ== dependencies: "@sailshq/lodash" "^3.10.2" -flaverr@^1.2.5: - version "1.9.2" - resolved "https://registry.yarnpkg.com/flaverr/-/flaverr-1.9.2.tgz#a5259c86cd47a4dee5edde06d731c0e77ecc8b94" - integrity sha512-14CoGOGUhFkhzDCgGdpFFJE9PrdMPhGmhuS39WxxgTpTKVzfWW3DAVfolUiHwYpaROz7UFrJuaSJtsxhem+i9g== +flaverr@^1.1.1, flaverr@^1.10.0, flaverr@^1.2.5, flaverr@^1.5.1, flaverr@^1.7.0, flaverr@^1.9.2: + version "1.10.0" + resolved "https://registry.npmjs.org/flaverr/-/flaverr-1.10.0.tgz#99240b430d0d52a3720efd0e70bef31a04357f9f" + integrity sha512-POaguCzNjWKEKsBkks4YGgNv1LVUqTX4MTudca5ArQAxtBrPswQLAW8la4Hbo0EZy9tpU3a9WwsKdAACqZnE/Q== dependencies: "@sailshq/lodash" "^3.10.2" for-in@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== for-own@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== dependencies: for-in "^1.0.1" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "1.0.6" + combined-stream "^1.0.6" mime-types "^2.1.12" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + forwarded@~0.1.0, forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -1142,24 +1327,13 @@ fresh@0.5.2: fs-exists-sync@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= - -fs-extra@0.26.5: - version "0.26.5" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.5.tgz#53ac74667ca083fd2dc1712c813039ca32d69a7f" - integrity sha1-U6x0Znygg/0twXEsgTA5yjLWmn8= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" + resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== fs-extra@0.30.0: version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -1169,48 +1343,82 @@ fs-extra@0.30.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== function-bind@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + generic-pool@2.4.3: version "2.4.3" - resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz#780c36f69dfad05a5a045dd37be7adca11a4f6ff" - integrity sha1-eAw29p360FpaBF3Te+etyhGk9v8= + resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz#780c36f69dfad05a5a045dd37be7adca11a4f6ff" + integrity sha512-IuvVtXuCtPXl+wMp6eWzxWyJV0TtUSm/LnPO1TmM8/4K7stdrB3GuOVo+x6Izuc5qllayByDvXWOfT/UG0v+Kw== + +generic-pool@3.9.0: + version "3.9.0" + resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" + integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== generic-pool@^2.4.2: version "2.5.4" - resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.5.4.tgz#38c6188513e14030948ec6e5cf65523d9779299b" - integrity sha1-OMYYhRPhQDCUjsblz2VSPZd5KZs= + resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-2.5.4.tgz#38c6188513e14030948ec6e5cf65523d9779299b" + integrity sha512-K2jozechYi0U3CNYlCWFGccmgjYhyqxOQVehL03l+gJ75LWDocM2qJeAaIneFd30ncD965WXnyM04jDgXzTMPw== get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U= +get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" glob-base@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== dependencies: glob-parent "^2.0.0" is-glob "^2.0.0" glob-parent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== dependencies: is-glob "^2.0.0" @@ -1226,7 +1434,7 @@ glob@7.0.x: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.2, glob@^7.0.5: +glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== @@ -1238,28 +1446,45 @@ glob@7.1.2, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@^0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + resolved "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== dependencies: global-prefix "^0.1.4" is-windows "^0.2.0" global-prefix@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== dependencies: homedir-polyfill "^1.0.0" ini "^1.3.4" is-windows "^0.2.0" which "^1.2.12" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== "graceful-readlink@>= 1.0.0": version "1.0.1" @@ -1268,41 +1493,39 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^5.1.0" + ajv "^6.12.3" har-schema "^2.0.0" has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" -has-binary2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" - integrity sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg= - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" @@ -1310,30 +1533,17 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hat@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/hat/-/hat-0.0.3.tgz#bb014a9e64b3788aed8005917413d4ff3d502d8a" - integrity sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo= - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ== +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + function-bind "^1.1.2" homedir-polyfill@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= + version "1.0.3" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" @@ -1352,52 +1562,56 @@ http-errors@1.6.2, http-errors@~1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-errors@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" - integrity sha1-eIwNLB3iyBuebowBhDtrl+uSB1A= +http-errors@1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== dependencies: - inherits "2.0.3" - setprototypeof "1.0.2" - statuses ">= 1.3.1 < 2" + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" -i18n-2@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/i18n-2/-/i18n-2-0.6.3.tgz#57ac6185e3ea47cffe993cd7a5c14b40df364b39" - integrity sha1-V6xhhePqR8/+mTzXpcFLQN82Szk= +i18n-2@0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/i18n-2/-/i18n-2-0.7.3.tgz#c0dfd7793c7ae2c0d6ea00552dc6ee8651154d25" + integrity sha512-NiC0dd+VAVGq/hWsK19XCTwfx7Xr0KPtldQ11/9DHY8Ic4++bbgRhjCvRD1C/K09V7UZpwgVhQuzPPom9XVrOQ== dependencies: - sprintf "^0.1.5" - -i@0.3.x: - version "0.3.6" - resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d" - integrity sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0= + debug "^3.1.0" + sprintf-js "^1.1.1" iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -include-all@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/include-all/-/include-all-1.0.8.tgz#e8bb84b057278a22cf944319037d9700c18a4379" - integrity sha1-6LuEsFcniiLPlEMZA32XAMGKQ3k= +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - lodash "3.10.1" + safer-buffer ">= 2.1.2 < 3" include-all@^4.0.0: version "4.0.3" @@ -1407,33 +1621,38 @@ include-all@^4.0.0: "@sailshq/lodash" "^3.10.2" merge-dictionaries "^0.0.3" -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@~2.0.1: +inherits@2, inherits@2.0.4, inherits@~2.0.1: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== interpret@^0.6.5: version "0.6.6" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" - integrity sha1-/s16GOfOXKar+5U+H4YhOknxYls= + resolved "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" + integrity sha512-Vg6X07U0AOZb4HF6CWHa+jnJU8j71buKQ9Pc0C75qBXgvCYbxWBkGo4jnTS3O0MIc9FZtt0mB7h+uclojqdw1Q== invert-kv@^1.0.0: version "1.0.0" @@ -1450,6 +1669,11 @@ ipaddr.js@1.6.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" integrity sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs= +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1457,7 +1681,7 @@ is-arrayish@^0.2.1: is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^1.0.0: @@ -1467,15 +1691,22 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-dotfile@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== is-equal-shallow@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== dependencies: is-primitive "^2.0.0" @@ -1489,13 +1720,13 @@ is-expression@^3.0.0: is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extglob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -1506,32 +1737,32 @@ is-fullwidth-code-point@^1.0.0: is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== dependencies: is-extglob "^1.0.0" is-number@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-posix-bracket@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== is-primitive@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== is-promise@^2.0.0: version "2.1.0" @@ -1547,8 +1778,8 @@ is-regex@^1.0.3: is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-utf8@^0.2.0: version "0.2.1" @@ -1557,40 +1788,55 @@ is-utf8@^0.2.0: is-windows@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + resolved "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== isarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isstream@0.1.x, isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +js-string-escape@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== js-stringify@^1.0.1: version "1.0.2" @@ -1599,39 +1845,39 @@ js-stringify@^1.0.1: jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== jsonfile@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== optionalDependencies: graceful-fs "^4.1.6" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" jstransformer@1.0.0: @@ -1644,27 +1890,27 @@ jstransformer@1.0.0: kind-of@^3.0.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== klaw@^1.0.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== optionalDependencies: graceful-fs "^4.1.9" knex@0.12.7: version "0.12.7" - resolved "https://registry.yarnpkg.com/knex/-/knex-0.12.7.tgz#5793f579f07a2938bf9874693d74bba55c5baa1c" - integrity sha1-V5P1efB6KTi/mHRpPXS7pVxbqhw= + resolved "https://registry.npmjs.org/knex/-/knex-0.12.7.tgz#5793f579f07a2938bf9874693d74bba55c5baa1c" + integrity sha512-IC+5CUktwN7pZ71eEVNFHIMLAlpYBj+rtyVFI+qzYpVco6ccx31rpVXCDheLCuEUKJ9oaIWl76oxSPeAJs4xFA== dependencies: babel-runtime "^6.11.6" bluebird "^3.4.6" @@ -1714,17 +1960,10 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lie@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= - dependencies: - immediate "~3.0.5" - liftoff@~2.2.0: version "2.2.5" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.2.5.tgz#998c2876cff484b103e4423b93d356da44734c91" - integrity sha1-mYwods/0hLED5EI7k9NW2kRzTJE= + resolved "https://registry.npmjs.org/liftoff/-/liftoff-2.2.5.tgz#998c2876cff484b103e4423b93d356da44734c91" + integrity sha512-2cdnrNglWdYVFOKAVu0UxYQZIdDvN5pgwDKmfNliTgbLmZQ5Z8VNWQgV4t/N+3y9735LGr6O+Vgjv6oYlaWWqg== dependencies: extend "^3.0.0" findup-sync "^0.4.2" @@ -1743,78 +1982,38 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -localforage@^1.3.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.6.0.tgz#8b0059beeb3875c48124286ca7fdbf23d52b8c97" - integrity sha1-iwBZvus4dcSBJChsp/2/I9UrjJc= +localforage@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/localforage/-/localforage-1.3.0.tgz#283c554f3fe5d16b4b925884492d2c9bb5a74bbf" + integrity sha512-ImiUj+yiF3S2X4CE0S8q55nbaDXTLhUAECW87UFq0WXPdiQUKKzznyfeFSKCqCqX2Lg/SuLYFS/l/i02YTgyJA== dependencies: - lie "3.1.1" + promise "^5.0.0" lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= -lodash.iserror@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.iserror/-/lodash.iserror-3.1.1.tgz#297b9a05fab6714bc2444d7cc19d1d7c44b5ecec" - integrity sha1-KXuaBfq2cUvCRE18wZ0dfES17Ow= - -lodash.isfunction@3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b" - integrity sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs= - -lodash.isobject@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= - -lodash.isregexp@3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/lodash.isregexp/-/lodash.isregexp-3.0.5.tgz#e0f596242f2fa228a840086b6c8ad82e4b71fd2d" - integrity sha1-4PWWJC8voiioQAhrbIrYLktx/S0= - lodash.issafeinteger@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.issafeinteger/-/lodash.issafeinteger-4.0.4.tgz#b176d5990ec649d06bedcbce2f028e7890494f90" integrity sha1-sXbVmQ7GSdBr7cvOLwKOeJBJT5A= -lodash.isstring@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - -lodash.isundefined@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" - integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g= - -lodash@3.10.1, lodash@^3.10.1, lodash@^3.8.0: +lodash@3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.8.0.tgz#376eb98bdcd9382a9365c33c4cb8250de1325b91" - integrity sha1-N265i9zZOCqTZcM8TLglDeEyW5E= +lodash@4.17.21, lodash@^4.17.14, lodash@^4.6.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.8.0: +lodash@^4.0.0, lodash@^4.17.4, lodash@^4.8.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" integrity sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw== -lodash@^4.6.0: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== - -lodash@~2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" - integrity sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= - longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -1825,171 +2024,87 @@ lru-cache@^2.5.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= -lru-cache@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" - integrity sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" + yallist "^4.0.0" + +luxon@~3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz#6b6f65c5cd1d61d1fd19dbf07ee87a50bf4b8e20" + integrity sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ== -machine-as-action@^10.0.0-0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/machine-as-action/-/machine-as-action-10.1.1.tgz#d16697e760b6690a13cc9f986136b75f0ff68b87" - integrity sha512-ay8kkZ3YVRSI96OPezta/KcSomcqy5AZ1rmewIEvtGlDIh8PMaelnu6Kx6VcKfRbyj1xd57NQeuFHSpgawYTzg== +machine-as-action@^10.3.1: + version "10.3.1" + resolved "https://registry.npmjs.org/machine-as-action/-/machine-as-action-10.3.1.tgz#a699e7da529705675b6b892654b034378ea596dc" + integrity sha512-IrX+kSjt4XQTxmZ+7/SJUvRJbwcZ2BqFlwwXLZIjYQmKTyd0vV4ZmKdbNZtrEKD1ZmqgtKSgHaxBET+XQU333A== dependencies: "@sailshq/lodash" "^3.10.2" flaverr "^1.5.1" - machine "^15.0.0-19" + machine "^15.2.2" rttc "^10.0.0-4" streamifier "0.1.1" -machine@^13.0.0-11: - version "13.0.0-24" - resolved "https://registry.yarnpkg.com/machine/-/machine-13.0.0-24.tgz#50b0fa4a71db571fcddda5b1c5e2605a83144087" - integrity sha512-M4jMQbHlAgPklsGdCxP6udDgeOEABlYxwSV0oybcgt4bZ5hz0CLIIpJUtBNtpDNe29K9u6qFHQrGAAIkEiNa7w== - dependencies: - "@sailshq/lodash" "^3.10.2" - convert-to-ecmascript-compatible-varname "0.1.4" - debug "3.1.0" - include-all "^1.0.5" - rttc "^9.8.1" - switchback "^2.0.1" - -machine@^15.0.0-19, machine@^15.0.0-5: - version "15.0.0-20" - resolved "https://registry.yarnpkg.com/machine/-/machine-15.0.0-20.tgz#3115a19488f5272bf7c95de3eec2df5e00a3fba8" - integrity sha512-yaA404mKNlosooM64y6TQzdiW1t9y2ALst0o1p+ztUbe0vY9714+kE0YB2U4X8tqIkFS2FPisuA3cwCP2Lepkg== +machine@^15.0.0-12, machine@^15.0.0-2, machine@^15.0.0-21, machine@^15.0.0-23, machine@^15.2.2: + version "15.2.3" + resolved "https://registry.npmjs.org/machine/-/machine-15.2.3.tgz#c5237687f872e8711b60be44ab815a2dc4163020" + integrity sha512-EtEG9sTlcxSsNh6o85mgT++Gux7PHMxPQ2f4rf5Iw49L4KH94+y8CxwJG87OT7YQFUSMsStIIK3ADik0EqzaSw== dependencies: "@sailshq/lodash" "^3.10.2" anchor "^1.2.0" flaverr "^1.7.0" - parley "^3.1.0" + parley "^3.8.0" rttc "^10.0.0-3" -machine@^15.0.0-21: - version "15.0.0-22" - resolved "https://registry.yarnpkg.com/machine/-/machine-15.0.0-22.tgz#57f2f20423248f27a4c3ba105705ab8740d6cc30" - integrity sha512-MR+bfzN5fatzJFlqdM/paH33xPngJk4URJ8OytivVUh2ZcUYvkNEXY7DQ7hnPfTWQE35alHUHUrH+0gAnKcNyA== +machinepack-fs@^12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/machinepack-fs/-/machinepack-fs-12.0.1.tgz#17c66ea3f9e7085e3501c3c19f35524660013ca9" + integrity sha512-5Hao0wOgLwUljQtmWKZDYbXNX29Otav9v5S8hxA43H2UP6KT3xFSE4cwwkBB9jHppgYtMqwGa0Q9TFC07hjFkg== dependencies: - "@sailshq/lodash" "^3.10.2" - anchor "^1.2.0" - flaverr "^1.7.0" - parley "^3.1.0" - rttc "^10.0.0-3" - -machine@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/machine/-/machine-4.1.1.tgz#ef2ecab9d4aac2dbc3978502978a36e71fe59fd7" - integrity sha1-7y7KudSqwtvDl4UCl4o25x/ln9c= - dependencies: - convert-to-ecmascript-compatible-varname "^0.1.0" - debug "^2.1.1" - lodash "~2.4.1" - object-hash "~0.3.0" - rttc "^1.0.2" - switchback "^1.1.3" - -machine@~12.1.0: - version "12.1.1" - resolved "https://registry.yarnpkg.com/machine/-/machine-12.1.1.tgz#2708767d4fb62ebd562b8e8bed8ae19e32bc6e1b" - integrity sha512-fohf/zxGNvZL69JfbZI/rf660cLnC2tU3tSz8BHGrl+5c7C/82Zypy2fpT2FKPh1q56zfAaCqyI5hSROqBF90g== - dependencies: - convert-to-ecmascript-compatible-varname "0.1.4" - debug "3.1.0" - lodash "3.10.1" - object-hash "0.3.0" - rttc "~9.3.0" - switchback "2.0.0" - -machinepack-fs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/machinepack-fs/-/machinepack-fs-8.0.2.tgz#3180317eb4b6d7289a30a1bb4812fe4b473ca4a8" - integrity sha1-MYAxfrS21yiaMKG7SBL+S0c8pKg= - dependencies: - fs-extra "0.26.5" - lodash.isfunction "3.0.8" - lodash.isobject "3.0.2" - machine "~12.1.0" - machinepack-json "~2.0.0" - machinepack-strings "~5.0.0" - machinepack-util "~6.0.0" - rttc "~9.3.0" + fs-extra "0.30.0" + machine "^15.0.0-12" walker "1.0.7" -machinepack-json@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/machinepack-json/-/machinepack-json-2.0.1.tgz#b991ab5c88d8c51e9d81a7def3b538829566cc40" - integrity sha1-uZGrXIjYxR6dgafe87U4gpVmzEA= - dependencies: - lodash.iserror "3.1.1" - lodash.isfunction "3.0.8" - lodash.isregexp "3.0.5" - machine "~12.1.0" - machinepack-postgresql@^1.0.1-0: - version "1.0.1-0" - resolved "https://registry.yarnpkg.com/machinepack-postgresql/-/machinepack-postgresql-1.0.1-0.tgz#b9446d00d50b1fbff7f7e1d470a6442627d8812e" - integrity sha512-A1XvZHqKoM6ZC3IsuCAUpF2L4/pMDOZ2otz5b7p3OHmMrKHWIT/uCGsXjai/BxdYt1EFDDoSh5RdMEizZC/NMA== + version "1.0.2" + resolved "https://registry.npmjs.org/machinepack-postgresql/-/machinepack-postgresql-1.0.2.tgz#b4c728c0d9c6e1c88ca260f043e0b443c7fafa9a" + integrity sha512-BaIos/SHoIGk/+ho0TVh2gwEJK948tXClwaSL+06iAcIR7T2OTFMYgAaNlZG/4YtIuMyGoEdWv/tLgHag0W6rQ== dependencies: "@sailshq/lodash" "^3.10.2" debug "2.2.0" machine "^15.0.0-21" - pg "6.1.0" + pg "6.1.6" waterline-sql-builder "^1.0.0-6" -machinepack-process@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/machinepack-process/-/machinepack-process-2.0.2.tgz#48c6994fe9fc6015c135cb3324a6fad78e3ceb39" - integrity sha1-SMaZT+n8YBXBNcszJKb614486zk= - dependencies: - lodash.isfunction "3.0.8" - lodash.isobject "3.0.2" - lodash.isstring "4.0.1" - lodash.isundefined "3.0.1" - machine "~12.1.0" - machinepack-json "~2.0.0" - open "0.0.5" - -machinepack-redis@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/machinepack-redis/-/machinepack-redis-1.3.0.tgz#79731150a26cf2b0b00b0eb7577ff268e5bf75b8" - integrity sha1-eXMRUKJs8rCwCw63V3/yaOW/dbg= +machinepack-process@^4.0.0, machinepack-process@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/machinepack-process/-/machinepack-process-4.0.1.tgz#c0e36ed4770854c9e87bb6349517dcd26a1ada6f" + integrity sha512-/5dqpWVhNjRC78v4cOKMH2I74u3hbM4pVha0SEh427eddWLSDt41txECZh+HLPPD3h/r35UU0cKszIFxqZYJlA== dependencies: "@sailshq/lodash" "^3.10.2" - async "2.0.1" - flaverr "^1.1.1" - machine "^13.0.0-11" - redis "2.6.3" + machine "^15.0.0-23" + opn "5.3.0" -machinepack-strings@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/machinepack-strings/-/machinepack-strings-5.0.0.tgz#e76a3fd4e0998d7e903195ccec2f09d9e69b258c" - integrity sha1-52o/1OCZjX6QMZXM7C8J2eabJYw= - dependencies: - browserify-transform-machinepack "~1.0.3" - hat "0.0.3" - lodash "3.10.1" - machine "~12.1.0" - -machinepack-urls@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/machinepack-urls/-/machinepack-urls-3.1.1.tgz#d5fb3032cf4a0135e272853506f6b0c66de996aa" - integrity sha1-1fswMs9KATXicoU1Bvawxm3plqo= +machinepack-redis@^2.0.2, machinepack-redis@^2.0.3: + version "2.0.7" + resolved "https://registry.npmjs.org/machinepack-redis/-/machinepack-redis-2.0.7.tgz#a4fed48b8e615f5fe2261516631b3f721e77a472" + integrity sha512-8VzJGbMVEirGiWjp0wgKMt929gGcJRnbCrQl0D05DfYYIzheMlovxKmVWeWXQqzjuRQqIW4LC4q4vtBQLUlArg== dependencies: - machine "^4.0.0" + "@sailshq/lodash" "^3.10.2" + async "2.6.4" + flaverr "^1.9.2" + machine "^15.2.2" + redis "3.1.1" -machinepack-util@~6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/machinepack-util/-/machinepack-util-6.0.1.tgz#275b743344db47f4f4400da7e66b4aaca4543212" - integrity sha1-J1t0M0TbR/T0QA2n5mtKrKRUMhI= +machinepack-urls@^6.0.2-0: + version "6.0.2-0" + resolved "https://registry.npmjs.org/machinepack-urls/-/machinepack-urls-6.0.2-0.tgz#deaa06d7021792d9f340f32e250b9946febb1ebc" + integrity sha512-777UDtPvgDG2XxekkQnjQi6tHgg3uepbjWZFw82isxyMThhsNdrwzaZd9hkupxcECrThw5OuPEsL963ya+SA3w== dependencies: - browserify-transform-machinepack "~1.0.3" - lodash "3.10.1" - lodash.iserror "3.1.1" - lodash.isobject "3.0.2" - machine "~12.1.0" - object-hash "0.5.0" + "@sailshq/lodash" "^3.10.2" + machine "^15.0.0-2" makeerror@1.0.x: version "1.0.11" @@ -1998,28 +2113,45 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= + version "1.0.4" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -merge-defaults@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/merge-defaults/-/merge-defaults-0.2.1.tgz#dd42248eb96bb6a51521724321c72ff9583dde80" - integrity sha1-3UIkjrlrtqUVIXJDIccv+Vg93oA= +merge-defaults@0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/merge-defaults/-/merge-defaults-0.2.2.tgz#68b9da04fef804674a0d63df1c469378c343d506" + integrity sha512-rKkxPFgGDZfmen0IN8BKRsGEbFU3PdO0RhR1GjOk+BLJF7+LAIhs5bUG3s26FkbB5bfIn9il25KkntRGdqHQ3A== dependencies: - lodash "~2.4.1" + "@sailshq/lodash" "^3.10.2" merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-dictionaries@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/merge-dictionaries/-/merge-dictionaries-1.0.0.tgz#7896ee1ab1a1550d3287a0311b7db7804b691931" + integrity sha512-5MpJgYdi5Loor97U3ixSBZhUjaDGIOa9tmvQYT9iYKXTeSJFuE4aVcwpBJdNRa76sJyHGqEh7LH3wbtmhpIg0A== + dependencies: + "@sailshq/lodash" "^3.10.2" + merge-dictionaries@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/merge-dictionaries/-/merge-dictionaries-0.0.3.tgz#c4de4d58dbb25e4c2823aa30cb8e1539069eb757" @@ -2027,13 +2159,6 @@ merge-dictionaries@^0.0.3: dependencies: "@sailshq/lodash" "^3.10.2" -merge-dictionaries@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/merge-dictionaries/-/merge-dictionaries-1.0.0.tgz#7896ee1ab1a1550d3287a0311b7db7804b691931" - integrity sha1-eJbuGrGhVQ0yh6AxG323gEtpGTE= - dependencies: - "@sailshq/lodash" "^3.10.2" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -2041,8 +2166,8 @@ methods@~1.1.2: micromatch@^2.3.7: version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== dependencies: arr-diff "^2.0.0" array-unique "^0.2.1" @@ -2058,12 +2183,24 @@ micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + "mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18: +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.18: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== @@ -2075,66 +2212,95 @@ mime@1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -minimatch@^3.0.2, minimatch@^3.0.4: +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@0.0.10, minimist@~0.0.7: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" minimist@0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== + +minimist@1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minimist@~0.0.7: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + minimist@~1.1.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= + resolved "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" + integrity sha512-2RbeLaM/Hbo9vJ1+iRrxzfDnX9108qb2m923U+s+Ot2eMey0IYGdSjzHmvtg2XsxoCuMnzOMw7qc573RvnLgwg== + +mkdirp@0.5.6, mkdirp@^0.5.0: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" -mkdirp@0.5.x, mkdirp@0.x.x, mkdirp@^0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.x: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" -moment-timezone@^0.5.x: - version "0.5.23" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" - integrity sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w== - dependencies: - moment ">= 2.9.0" - -"moment@>= 2.9.0": - version "2.22.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" - integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= - -moment@^2.20.1: - version "2.21.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" - integrity sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ== +moment@^2.30.1: + version "2.30.1" + resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== ms@0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg= + resolved "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + integrity sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multiparty@4.1.3: version "4.1.3" @@ -2157,27 +2323,16 @@ natural@^0.2.0: sylvester ">= 0.0.12" underscore ">=1.3.1" -ncp@0.4.x: - version "0.4.2" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.4.2.tgz#abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574" - integrity sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ= - -nedb@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/nedb/-/nedb-1.8.0.tgz#0e3502cd82c004d5355a43c9e55577bd7bd91d88" - integrity sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg= - dependencies: - async "0.2.10" - binary-search-tree "0.2.5" - localforage "^1.3.0" - mkdirp "~0.5.1" - underscore "~1.4.4" - negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + nib@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/nib/-/nib-1.1.2.tgz#6a69ede4081b95c0def8be024a4c8ae0c2cbb6c7" @@ -2213,64 +2368,56 @@ normalize-package-data@^2.3.2: normalize-path@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" -notepack.io@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/notepack.io/-/notepack.io-2.1.2.tgz#94a47f5e4ce4ace1f3d71b27c6f83c7163393c52" - integrity sha1-lKR/XkzkrOHz1xsnxvg8cWM5PFI= +notepack.io@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/notepack.io/-/notepack.io-2.2.0.tgz#d7ea71d1cb90094f88c6f3c8d84277c2d0cd101c" + integrity sha512-9b5w3t5VSH6ZPosoYnyDONnUTF8o0UkBw7JLA6eBlYJWyGT1Q3vQa8Hmuj1/X6RYvHjjygBDgw6fJhe0JEojfw== number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + integrity sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@~4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -object-hash@0.3.0, object-hash@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-0.3.0.tgz#548208e43b36a44e4da30bad6c56ac53b885e744" - integrity sha1-VIII5Ds2pE5NowutbFasU7iF50Q= - -object-hash@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-0.5.0.tgz#e9b784d98b66f416e80de55f2c513710b433fe2d" - integrity sha1-6beE2Ytm9BboDeVfLFE3ELQz/i0= - -object-keys@^1.0.6: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0= +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== object.omit@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== dependencies: for-own "^0.1.4" is-extendable "^0.1.1" +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -2283,22 +2430,29 @@ on-headers@~1.0.1: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -open@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" - integrity sha1-QsPhjslUZra/DcQvOilFw/DK2Pw= +opn@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + dependencies: + is-wsl "^1.1.0" os-homedir@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-locale@^1.4.0: version "1.4.0" @@ -2309,15 +2463,15 @@ os-locale@^1.4.0: packet-reader@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.2.0.tgz#819df4d010b82d5ea5671f8a1a3acf039bcd7700" - integrity sha1-gZ300BC4LV6lZx+KGjrPA5vNdwA= + resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz#819df4d010b82d5ea5671f8a1a3acf039bcd7700" + integrity sha512-3GnoJ2cKeSgikX3llywfuefjtkokRfzySXO2H3bDwVguclnpkvjYcBsQNfCcUpwUKRK+4IhhCD18/rLMVOH+aQ== -parasails@^0.7.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/parasails/-/parasails-0.7.4.tgz#2543c0ae3bc5a4ee7abdf083387b9df79e074ea6" - integrity sha512-2Mc8lx/68xrBVa7RoMUNAliqaK8m8fyaEhFAPTtsNbT9BqdixtIjlDGaeqrX082xQ+bmvSxZdw4UJG8f8+G21w== +parasails@^0.9.2: + version "0.9.3" + resolved "https://registry.npmjs.org/parasails/-/parasails-0.9.3.tgz#377545a85170905aeb7127c9310a1b0520264a57" + integrity sha512-tX9sf+qDXE3NqZ8XhXai4dDSiVq8Z5FOttWH7tYuwiYwh9ZpPqFEf7W4Lx3A19e0P1D5FPuw1jNRWe3JMv9sQg== -parley@^3.1.0, parley@^3.3.2, parley@^3.3.4: +parley@^3.3.2, parley@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/parley/-/parley-3.3.4.tgz#1769bbdaa79f2b2cc659b3f8810f0b24ba48591b" integrity sha512-mx0cU+MIOqKaZRcYqBtoxHoW3UvtTGSwYYA3OZ4EI9V/NySyLpLja0OoqlA4SsNraRWNivyW08vp7Me3EYHHKw== @@ -2326,10 +2480,19 @@ parley@^3.1.0, parley@^3.3.2, parley@^3.3.4: bluebird "3.2.1" flaverr "^1.5.1" +parley@^3.8.0: + version "3.8.3" + resolved "https://registry.npmjs.org/parley/-/parley-3.8.3.tgz#a7f95ea4b4943d8198101e78629024b878f9b00d" + integrity sha512-9fSqT4J0jRNh+F/5EAqZvUSq232xjFXZJ3rXgKUXbIUUZ0ZPj6VjW83mI5UpVP8PMGHF3I8xycmvNjs9nQ3O8g== + dependencies: + "@sailshq/lodash" "^3.10.2" + bluebird "3.2.1" + flaverr "^1.5.1" + parse-glob@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== dependencies: glob-base "^0.3.0" is-dotfile "^1.0.0" @@ -2345,28 +2508,19 @@ parse-json@^2.2.0: parse-passwd@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== parseurl@1.3.2, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -2376,23 +2530,28 @@ path-exists@^2.0.0: path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.5.3.tgz#7221ddd42483538bddf9fead942a79ff3164f57a" - integrity sha1-ciHd1CSDU4vd+f6tlCp5/zFk9Xo= +path-to-regexp@1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== dependencies: isarray "0.0.1" @@ -2412,30 +2571,30 @@ pend@~1.2.0: performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== pg-connection-string@0.1.3, pg-connection-string@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" - integrity sha1-2hhHsglA5C7hSSvq9l1J2RskXfc= + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" + integrity sha512-i0NV/CrSkFTaiOQs9AGy3tq0dkSjtTd4d7DfsjeDVZAA4aIHInwfFEmriNYGGJUfZ5x6IAC/QddoUpUJjQAi0w== pg-int8@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== pg-pool@1.*: version "1.8.0" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-1.8.0.tgz#f7ec73824c37a03f076f51bfdf70e340147c4f37" - integrity sha1-9+xzgkw3oD8Hb1G/33DjQBR8Tzc= + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-1.8.0.tgz#f7ec73824c37a03f076f51bfdf70e340147c4f37" + integrity sha512-+X9J1FiucG3wpNIp/InfBWBn3vq/gpwzotKifnOPIRAyt7EhGBKyUFnJoAzhuQkU+EKb/VsW9csDcAzzAoPXGg== dependencies: generic-pool "2.4.3" object-assign "4.1.0" pg-types@1.*: version "1.13.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-1.13.0.tgz#75f490b8a8abf75f1386ef5ec4455ecf6b345c63" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-1.13.0.tgz#75f490b8a8abf75f1386ef5ec4455ecf6b345c63" integrity sha512-lfKli0Gkl/+za/+b6lzENajczwZHc7D5kiUCZfgm914jipD2kIOIvEkAhZ8GrW3/TUoP9w8FHjwpPObBye5KQQ== dependencies: pg-int8 "1.0.1" @@ -2444,12 +2603,13 @@ pg-types@1.*: postgres-date "~1.0.0" postgres-interval "^1.1.0" -pg@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-6.1.0.tgz#4ebc58100a79187b6b98fa5caf1675d669926b41" - integrity sha1-TrxYEAp5GHtrmPpcrxZ11mmSa0E= +pg@6.1.6: + version "6.1.6" + resolved "https://registry.npmjs.org/pg/-/pg-6.1.6.tgz#dd22758250d5ad6eef5a2bf88d96f276d1e95b0d" + integrity sha512-IzXRHvJ9l7ze5OSTpWN3+oWGjp7ETubYjTjCWqECtmncu/VkzEfAcp6CVpBsAfczJzGUw0nBa0ghpnPJPPg6BQ== dependencies: buffer-writer "1.0.1" + js-string-escape "1.0.1" packet-reader "0.2.0" pg-connection-string "0.1.3" pg-pool "1.*" @@ -2458,11 +2618,11 @@ pg@6.1.0: semver "4.3.2" pgpass@1.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" - integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= + version "1.0.5" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: - split "^1.0.0" + split2 "^4.1.0" pify@^2.0.0: version "2.3.0" @@ -2481,47 +2641,49 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pkginfo@0.3.x: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" - integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE= - -pkginfo@0.x.x: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= - pluralize@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= postgres-array@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz#8e0b32eb03bf77a5c0a7851e0441c169a256a238" - integrity sha1-jgsy6wO/d6XAp4UeBEHBaaJWojg= + version "1.0.3" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz#c561fc3b266b21451fc6555384f4986d78ec80f5" + integrity sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ== postgres-bytea@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" - integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== postgres-date@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8" - integrity sha1-4tiXAu/bJY/52c7g/pG9BpdSV6g= + version "1.0.7" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-interval@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz#bf71ff902635f21cb241a013fc421d81d1db15a9" - integrity sha512-fC3xNHeTskCxL1dC8KOtxXt7YeFmlbTYtn7ul8MkVERuTmf7pI4DrkAxcw3kh1fQ9uz4wQmd03a1mRiXUZChfQ== + version "1.2.0" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== dependencies: xtend "^4.0.0" preserve@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== + +prettier@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" + integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== + +promise@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/promise/-/promise-5.0.0.tgz#ac40b7866bed7aaf796ab5b79b80325e047ec0ef" + integrity sha512-N2BfLz0Sigf7rsm5NnItRwTNqEDUF2ephwEXTcOAf2cO9NwZ9TnIjOmnQNtC0r70CV0S1+uc9mSMmFH7gxk87Q== + dependencies: + asap "~1.0.0" promise@^7.0.1: version "7.3.1" @@ -2530,16 +2692,16 @@ promise@^7.0.1: dependencies: asap "~2.0.3" -prompt@0.2.14: - version "0.2.14" - resolved "https://registry.yarnpkg.com/prompt/-/prompt-0.2.14.tgz#57754f64f543fd7b0845707c818ece618f05ffdc" - integrity sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w= +prompt@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prompt/-/prompt-1.2.1.tgz#49f46f17aacbbf501786fc6f3a30d99075c846c9" + integrity sha512-B4+2QeNDn5Cdp4kK2iOwV8qvrWpiPKlZKI9ZKkPl0C9KgeMW6DyWWqhqHiFq9vZf6zTniv+rYalK0ZlgktSwiw== dependencies: - pkginfo "0.x.x" + async "~0.9.0" + colors "1.4.0" read "1.0.x" revalidator "0.1.x" - utile "0.2.x" - winston "0.8.x" + winston "2.x" proxy-addr@1.1.5: version "1.1.5" @@ -2557,10 +2719,20 @@ proxy-addr@~2.0.2: forwarded "~0.1.2" ipaddr.js "1.6.0" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.28: + version "1.15.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" + integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== + dependencies: + punycode "^2.3.1" pug-attrs@^2.0.3: version "2.0.3" @@ -2667,30 +2839,49 @@ pug@^2.0.0-beta3: pug-runtime "^2.0.4" pug-strip-comments "^1.0.3" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" -qs@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= +qs@6.4.1: + version "6.4.1" + resolved "https://registry.npmjs.org/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6" + integrity sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ== -qs@6.5.1, qs@^6.5.1, qs@~6.5.1: +qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== +qs@^6.14.0: + version "6.14.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + dependencies: + side-channel "^1.1.0" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + random-bytes@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= randomatic@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" - integrity sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA== + version "3.1.1" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -2701,6 +2892,11 @@ range-parser@~1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" @@ -2711,6 +2907,16 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + rc@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.0.1.tgz#f919c25e804cb0aa60f6fd92d929fc86b45013e8" @@ -2721,12 +2927,12 @@ rc@1.0.1: minimist "~0.0.7" strip-json-comments "0.1.x" -rc@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" - integrity sha1-2M6ctX6NZNnHut2YdsfDTL48cHc= +rc@1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - deep-extend "~0.4.0" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -2757,8 +2963,8 @@ read@1.0.7, read@1.0.x: readable-stream@^1.1.12: version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -2767,8 +2973,8 @@ readable-stream@^1.1.12: rechoir@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" @@ -2777,33 +2983,64 @@ redis-commands@^1.2.0: resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" integrity sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA== -redis-parser@^2.0.0, redis-parser@^2.6.0: +redis-commands@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + +redis-parser@^2.0.0: version "2.6.0" resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs= -redis@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.6.3.tgz#84305b92553c6a1f09c7c47c30b11ace7dbb7ad4" - integrity sha1-hDBbklU8ah8Jx8R8MLEazn27etQ= +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.0.0" + redis-errors "^1.0.0" + +redis@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/redis/-/redis-3.1.1.tgz#a44bee7c072dcf685e139048d6a1a4d3b00f5d01" + integrity sha512-QhkKhOuzhogR1NDJfBD34TQJz2ZJwDhhIC6ZmvpftlmfYShHHQXjjNspAJ+Z2HH5NwSBVYBVganbiZ8bgFMHjg== + dependencies: + denque "^1.5.0" + redis-commands "^1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" redis@^0.12.1: version "0.12.1" resolved "https://registry.yarnpkg.com/redis/-/redis-0.12.1.tgz#64df76ad0fc8acebaebd2a0645e8a48fac49185e" integrity sha1-ZN92rQ/IrOuuvSoGReikj6xJGF4= -redis@^2.8.0, redis@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A== - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" +redis@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz#766851117e80653d23e0ed536254677ab647638c" + integrity sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw== + dependencies: + denque "^1.5.0" + redis-commands "^1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + +redis@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz#b401787514d25dd0cfc22406d767937ba3be55d6" + integrity sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ== + dependencies: + "@redis/bloom" "1.2.0" + "@redis/client" "1.6.0" + "@redis/graph" "1.1.1" + "@redis/json" "1.0.7" + "@redis/search" "1.2.0" + "@redis/time-series" "1.1.0" redis@~2.6.0-2: version "2.6.5" @@ -2824,30 +3061,30 @@ reds@^0.2.5: regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regex-cache@^0.4.2: version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: is-equal-shallow "^0.1.3" remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.5.2: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== reportback@^2.0.1: version "2.0.1" @@ -2857,33 +3094,31 @@ reportback@^2.0.1: captains-log "^1.0.1" switchback "^2.0.1" -request@^2.81.0, request@^2.83.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" - integrity sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw== +request@^2.81.0, request@^2.88.2: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" - aws4 "^1.6.0" + aws4 "^1.8.0" caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" + combined-stream "~1.0.6" + extend "~3.0.2" forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" + form-data "~2.3.2" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" + mime-types "~2.1.19" + oauth-sign "~0.9.0" performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" - uuid "^3.1.0" + uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" @@ -2897,25 +3132,20 @@ require-main-filename@^1.0.1: resolve-dir@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== dependencies: expand-tilde "^1.2.2" global-modules "^0.2.3" -resolve@^1.1.6: - version "1.5.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" - integrity sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw== - dependencies: - path-parse "^1.0.5" - -resolve@^1.1.7: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== +resolve@^1.1.6, resolve@^1.1.7: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: - path-parse "^1.0.5" + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" revalidator@0.1.x: version "0.1.8" @@ -2929,119 +3159,102 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2.x.x, rimraf@^2.2.8: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: - glob "^7.0.5" + glob "^7.1.3" rndm@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" integrity sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w= -router@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/router/-/router-1.3.2.tgz#bfaa16888a5283d5ee40d999da7a9fa15296a60c" - integrity sha1-v6oWiIpSg9XuQNmZ2nqfoVKWpgw= - dependencies: - array-flatten "2.1.1" - debug "2.6.9" - methods "~1.1.2" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - setprototypeof "1.1.0" - utils-merge "1.0.1" - -rttc@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/rttc/-/rttc-1.0.2.tgz#4d36428e952842b2743fa702e4f561a22f648def" - integrity sha1-TTZCjpUoQrJ0P6cC5PVhoi9kje8= - dependencies: - lodash "~2.4.1" - -rttc@^10.0.0-0, rttc@^10.0.0-1, rttc@^10.0.0-3, rttc@^10.0.0-4: +rttc@^10.0.0-0, rttc@^10.0.0-1, rttc@^10.0.0-4: version "10.0.0-4" resolved "https://registry.yarnpkg.com/rttc/-/rttc-10.0.0-4.tgz#88182df8137c279df968a11dc478124c1d8b6189" integrity sha512-HroJ9z+RVipbPCeFdglopiVM18w9BM5PFqXivM6ZceNQEphjpDGZ154srk1JhviNacrmFqhdzDbGQZsB13g6JA== dependencies: "@sailshq/lodash" "^3.10.2" -rttc@^9.8.1: - version "9.8.2" - resolved "https://registry.yarnpkg.com/rttc/-/rttc-9.8.2.tgz#2337d21d413f4a34fff88177f95eae7edfbd26bf" - integrity sha1-IzfSHUE/SjT/+IF3+V6uft+9Jr8= - dependencies: - lodash "3.10.1" - -rttc@~9.3.0: - version "9.3.4" - resolved "https://registry.yarnpkg.com/rttc/-/rttc-9.3.4.tgz#bc005753b73cd16ac500d91446d6b993206172d7" - integrity sha1-vABXU7c80WrFANkURta5kyBhctc= +rttc@^10.0.0-3: + version "10.0.1" + resolved "https://registry.npmjs.org/rttc/-/rttc-10.0.1.tgz#18f3d97845528d5f99a9b5aafeb831af3bdbac36" + integrity sha512-wBsGNVaZ8K1qG0n5jxQ7dnOpvpewyQHGIjbMFYx8D16+51MM+FwkZwDPgH4GtnaTSzrNvrJriXFyvDi7OTZQ0A== dependencies: - lodash "3.8.0" + "@sailshq/lodash" "^3.10.2" -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0: +safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -sails-disk@^1.0.0-0: - version "1.0.0-12" - resolved "https://registry.yarnpkg.com/sails-disk/-/sails-disk-1.0.0-12.tgz#e249e37e402a1451e5f38bcb17c2a78ac29aab7d" - integrity sha512-vAlxLI4NrRXwmp/X3nSEz7jrTFBmP4EGp0I5OsdnX2AAp9JUqVzNmJZe9oufrLhPl2ZT5wz+bpO0HyCbWH62WQ== +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sails-disk@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/sails-disk/-/sails-disk-2.1.2.tgz#3df0d58abf5fcb0630a6d60f6b211d82f5ca6bb1" + integrity sha512-WOrvlhR3pxl93BK8PZD232UwQxq93rkjsuVpJ46I0Fs4CtFFYSQW+so+0PN3F7mW6znJHv+Uk4wRvpfHqbYLNQ== dependencies: "@sailshq/lodash" "^3.10.2" - async "2.0.1" - machinepack-fs "^8.0.2" - nedb "1.8.0" + "@sailshq/nedb" "^1.8.2" + async "2.6.4" + flaverr "^1.10.0" + machinepack-fs "^12.0.1" -sails-generate@^1.15.19: - version "1.15.28" - resolved "https://registry.yarnpkg.com/sails-generate/-/sails-generate-1.15.28.tgz#ada8239c33dbb680cf99b5cbb7c0c0fa7343f202" - integrity sha512-H+kaa22AIKxr2jB0ncgxhupZETCKfgrHNuHUB2QTtbDCuMn9yVGxhN7O3sgO7GzbRW3XkAJpuFaG0fBvActc8Q== +sails-generate@^2.0.11: + version "2.0.13" + resolved "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.13.tgz#581e3fed2ccfb7692bcbd5401dad45f94ca54222" + integrity sha512-ky+YcxSe2pBTohfIZIxU+XARuYu7ZxjFOTvWcivfF3oVHBmpc22VihbNjotNA4QWdKw13vfHWvoJpyHjccGOoA== dependencies: - async "2.0.1" - chalk "1.1.3" - cross-spawn "4.0.2" + "@sailshq/lodash" "^3.10.3" + async "2.6.4" + chalk "2.3.0" flaverr "^1.0.0" fs-extra "0.30.0" - lodash "3.10.1" - machinepack-process "^2.0.2" - parasails "^0.7.1" + machinepack-process "^4.0.0" + parasails "^0.9.2" read "1.0.7" reportback "^2.0.1" sails.io.js-dist "^1.0.0" -sails-hook-orm@^2.0.0-22: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sails-hook-orm/-/sails-hook-orm-2.1.0.tgz#eaa8a2da2cd6b3afb164a0ea11966cca07fb7f77" - integrity sha512-Q3bJV6zd283eGny89/CST1TY9swR+HQNcOL1ECXyzH2WuEYd8CCplVaF6WvEkJ73xwHol5r80PY2aDpu3h1b2Q== +sails-hook-orm@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.3.tgz#74db1264a0bfa53728c99ab7b6e859c2e8e299d4" + integrity sha512-/PrAHwsjbby0PK27LpLamYMUz4CedVYW3vr6JFSG9OncoeUG9qgwcNjeWNxo2HuEfHDal92KISXkcdRX7jh5Eg== dependencies: "@sailshq/lodash" "^3.10.2" - async "2.0.1" - chalk "1.1.3" + async "2.6.4" + chalk "2.3.0" flaverr "^1.8.0" parley "^3.3.2" - prompt "0.2.14" - sails-disk "^1.0.0-0" - waterline "^0.13.5-0" + prompt "1.2.1" + sails-disk "^2.0.0" + waterline "^0.15.0" waterline-utils "^1.0.0" -sails-hook-sockets@^1.4.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/sails-hook-sockets/-/sails-hook-sockets-1.5.1.tgz#b5507e0fc840f90d9041f2eb37400acf7b753921" - integrity sha512-JivFD+mee6Lki0ettigqf+8nhed9UDDbhm76zKWGdeNvKnwfcjZrGQnqRAZZRlV723RvlVVHE1cQGq+lXAVtqA== +sails-hook-sockets@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-3.0.1.tgz#d968543d7a2b7771d69a41a7a9e4946212d724d9" + integrity sha512-d1LNW3h7T2xGEIHmf0btY2tcgK7EDqHZPyD3fpCx4Frhqx8n6MXdbbuKDdPx3c/h0inoJzZvkjtHNSovDk8hNQ== dependencies: "@sailshq/lodash" "^3.10.2" - async "2.0.1" + async "2.6.4" flaverr "^1.0.0" - machinepack-redis "^1.1.1" - machinepack-urls "^3.1.1" + machinepack-redis "^2.0.3" + machinepack-urls "^6.0.2-0" proxy-addr "1.1.5" - semver "4.3.6" - socket.io "2.0.3" + semver "7.5.2" + socket.io "4.7.5" uid2 "0.0.3" "sails-postgresql@https://github.com/dougestey/sails-postgresql": @@ -3055,68 +3268,68 @@ sails-hook-sockets@^1.4.0: machinepack-postgresql "^1.0.1-0" waterline-utils "^1.3.10" -sails-stringfile@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/sails-stringfile/-/sails-stringfile-0.3.2.tgz#da4e3666a8f9cfd3e1f346bfb8116a303e1c30bd" - integrity sha1-2k42Zqj5z9Ph80a/uBFqMD4cML0= +sails-stringfile@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/sails-stringfile/-/sails-stringfile-0.3.3.tgz#6264107745493f4c062e5e53b43c52b52f1b343c" + integrity sha512-m61lSEURCpKf2T7Df9lkG2eWBPGFKrhJZi8OF3TMQe7HGWyUpYdwKhV6rFsky1gY6g4ecvTZTAqwHXOE1AtaCA== dependencies: + "@sailshq/lodash" "^3.10.2" colors "*" - lodash "~2.4.1" sails.io.js-dist@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/sails.io.js-dist/-/sails.io.js-dist-1.2.0.tgz#95b32f546989c6cf9e2b3417300da0534bb190e9" integrity sha512-piCn5DzLMMOWTVDv+5xWRTeiJBN/Phs4+LmDYCRwzY3jQzTErU66ihmRlvrdDewX4kFbakceGlSUt32aEwJt9g== -sails@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/sails/-/sails-1.0.2.tgz#c18be0fe0b2b305847cedc4d12ec9778c044d1fb" - integrity sha512-tcMERTduNcO1WAWgkQxp5hZEBLBxdNgS3Kf5LEe1PzgEORKLYJrj+KXdjadcYuyuzydBsWmlv76oF2Y97P4RoQ== +sails@1.5.14: + version "1.5.14" + resolved "https://registry.npmjs.org/sails/-/sails-1.5.14.tgz#27235c9671f81a51d929a67127ae65672619f201" + integrity sha512-u4EOT94me18E2MRJtumorgRS+b0TiBLdnAj2WIKmy4mYvc/SNuzcs8Fd/HCmqw979MwQb8hYdwnpwaSBdNaIDg== dependencies: - "@sailshq/lodash" "^3.10.2" - async "2.5.0" - captains-log "^2.0.0" + "@sailshq/csurf" "1.11.1" + "@sailshq/lodash" "^3.10.6" + "@sailshq/router" "^1.3.9" + async "2.6.4" + captains-log "^2.0.5" chalk "2.3.0" commander "2.11.0" common-js-file-extensions "1.0.2" compression "1.7.1" connect "3.6.5" - cookie "0.3.1" - cookie-parser "1.4.3" - cookie-signature "1.0.6" - csurf "1.9.0" - ejs "2.5.7" - express "4.16.2" - express-session "1.15.6" - flaverr "^1.9.0" + cookie "0.7.2" + cookie-parser "1.4.7" + cookie-signature "1.1.0" + ejs "3.1.10" + express "4.21.2" + express-session "1.18.1" + flaverr "^1.10.0" glob "7.1.2" - i18n-2 "0.6.3" + i18n-2 "0.7.3" include-all "^4.0.0" - machine "^15.0.0-21" - machine-as-action "^10.0.0-0" - machinepack-process "^2.0.2" - machinepack-redis "^1.1.1" - merge-defaults "0.2.1" - merge-dictionaries "^1.0.0" - minimist "0.0.10" + machine "^15.2.2" + machine-as-action "^10.3.1" + machinepack-process "^4.0.1" + machinepack-redis "^2.0.2" + merge-defaults "0.2.2" + merge-dictionaries "1.0.0" + minimist "1.2.6" parley "^3.3.4" parseurl "1.3.2" - path-to-regexp "1.5.3" + path-to-regexp "1.9.0" pluralize "1.2.1" - prompt "0.2.14" - rc "1.2.2" - router "1.3.2" + prompt "1.2.1" + rc "1.2.8" rttc "^10.0.0-0" - sails-generate "^1.15.19" - sails-stringfile "0.3.2" - semver "4.3.6" + sails-generate "^2.0.11" + sails-stringfile "^0.3.3" + semver "7.5.2" serve-favicon "2.4.5" - serve-static "1.13.1" - skipper "~0.8.0" - sort-route-addresses "^0.0.1" + serve-static "1.16.2" + skipper "^0.9.5" + sort-route-addresses "^0.0.4" uid-safe "2.1.5" vary "1.1.2" - whelk "^6.0.0" + whelk "^6.0.1" sax@0.5.x: version "0.5.8" @@ -3130,18 +3343,15 @@ sax@0.5.x: semver@4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" - integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= + resolved "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" + integrity sha512-VyFUffiBx8hABJ9HYSTXLRwyZtdDHMzMtFmID1aiNAD2BZppBmJm0Hqw3p2jkgxP9BNt1pQ9RnC49P0EcXf6cA== -semver@4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto= - -semver@5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== +semver@7.5.2: + version "7.5.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" + integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ== + dependencies: + lru-cache "^6.0.0" send@0.16.1: version "0.16.1" @@ -3162,6 +3372,25 @@ send@0.16.1: range-parser "~1.2.0" statuses "~1.3.1" +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serve-favicon@2.4.5: version "2.4.5" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436" @@ -3183,16 +3412,21 @@ serve-static@1.13.1: parseurl "~1.3.2" send "0.16.1" +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -setprototypeof@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" - integrity sha1-gaVSFB7BBLiOic44MQOtXGZWTQg= - setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" @@ -3203,6 +3437,51 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.6, side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + skipper-disk@~0.5.6: version "0.5.10" resolved "https://registry.yarnpkg.com/skipper-disk/-/skipper-disk-0.5.10.tgz#646aa6961cc7da97f283e5845954e5ba1c67d962" @@ -3212,93 +3491,72 @@ skipper-disk@~0.5.6: debug "3.1.0" fs-extra "0.30.0" -skipper@~0.8.0: - version "0.8.4" - resolved "https://registry.yarnpkg.com/skipper/-/skipper-0.8.4.tgz#6835ef11245f9e386a8b0f0ee79114375b7a57ad" - integrity sha512-QDjvQ4DGVxxeR5sWLf7dgaRqyVo7Ng0AY+wiXSgD/sLyJbAGvXv6QWI2Xe4igw5Q8QRRMGsrhv6KKCG7C6N7Kg== +skipper@^0.9.5: + version "0.9.5" + resolved "https://registry.npmjs.org/skipper/-/skipper-0.9.5.tgz#a369a64b5a4273c993b11ff30d16e3558ad36dd5" + integrity sha512-8uQBMJgTI0T07IxThc46pXg5Dkvycp42UhL3JavIcdK+pNRRK0SXUJSJ7Gv9CxdugLQK4H4s4DdnFbvIEtheVA== dependencies: - async "2.0.1" - body-parser "1.18.2" - colors "1.1.2" + "@sailshq/lodash" "^3.10.3" + async "2.6.4" + body-parser "1.20.3" debug "3.1.0" - dot-access "1.0.0" - lodash "3.10.1" multiparty "4.1.3" - semver "4.3.6" + semver "7.5.2" skipper-disk "~0.5.6" string_decoder "0.10.31" - uuid "3.0.1" - -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - integrity sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg== - dependencies: - hoek "4.x.x" - -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + uuid "7.0.0" -socket.io-client@~2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" - integrity sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44= - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.1.1" - to-array "0.1.4" - -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" - integrity sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - has-binary2 "~1.0.2" - isarray "2.0.1" - -socket.io-redis@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/socket.io-redis/-/socket.io-redis-5.2.0.tgz#8fe2ad9445fc50886fb70abc759d67403d5899df" - integrity sha1-j+KtlEX8UIhvtwq8dZ1nQD1Ymd8= - dependencies: - debug "~2.6.8" - notepack.io "~2.1.2" - redis "~2.8.0" - socket.io-adapter "~1.1.0" +socket.io-adapter@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz#43af9157c4609e74b8addc6867873ac7eb48fda2" + integrity sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg== + +socket.io-adapter@~2.5.2: + version "2.5.5" + resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" + integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== + dependencies: + debug "~4.3.4" + ws "~8.17.1" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io-redis@6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/socket.io-redis/-/socket.io-redis-6.1.1.tgz#2361029a6c0b25c602d1422e1beb41907fd0e8bf" + integrity sha512-jeaXe3TGKC20GMSlPHEdwTUIWUpay/L7m5+S9TQcOf22p9Llx44/RkpJV08+buXTZ8E+aivOotj2RdeFJJWJJQ== + dependencies: + debug "~4.3.1" + notepack.io "~2.2.0" + redis "^3.0.0" + socket.io-adapter "~2.2.0" uid2 "0.0.3" -socket.io@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.3.tgz#4359f06a24933ae6bd087798af78c680eae345e3" - integrity sha1-Q1nwaiSTOua9CHeYr3jGgOrjReM= +socket.io@4.7.5: + version "4.7.5" + resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" + integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== dependencies: - debug "~2.6.6" - engine.io "~3.1.0" - object-assign "~4.1.1" - socket.io-adapter "~1.1.0" - socket.io-client "~2.0.2" - socket.io-parser "~3.1.1" - -sort-route-addresses@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/sort-route-addresses/-/sort-route-addresses-0.0.1.tgz#23a87d283113b12ee1fedb4cf43af212bb56dabb" - integrity sha1-I6h9KDETsS7h/ttM9DryErtW2rs= + accepts "~1.3.4" + base64id "~2.0.0" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.5.2" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" + +sort-route-addresses@^0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/sort-route-addresses/-/sort-route-addresses-0.0.4.tgz#91c257e7dcc1d919fb2a19ccdfef628babef548b" + integrity sha512-8NPmJNHcPIQvUpGQ4zj9Jn3hsp0TpnH4LhX3+mZrZB73N3TqI/RBo9avazhnPdv8jFH1iTsCTzHXYBiYfuWVyg== dependencies: - lodash "^3.10.1" + "@sailshq/lodash" "^3.10.2" source-map@0.1.x: version "0.1.43" @@ -3345,31 +3603,29 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" integrity sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA== -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -sprintf@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf" - integrity sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8= +sprintf-js@^1.1.1: + version "1.1.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - integrity sha1-US322mKHFEMW3EwY/hzx2UBzm+M= + version "1.18.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" ecc-jsbn "~0.1.1" + getpass "^0.1.1" jsbn "~0.1.0" + safer-buffer "^2.0.2" tweetnacl "~0.14.0" stack-trace@0.0.x: @@ -3377,11 +3633,21 @@ stack-trace@0.0.x: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.3.1 < 2": version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -3406,11 +3672,6 @@ string_decoder@0.10.31, string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -3449,8 +3710,8 @@ stylus@0.54.5, stylus@~0.54.5: supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^4.0.0: version "4.5.0" @@ -3459,19 +3720,17 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" -switchback@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/switchback/-/switchback-2.0.0.tgz#2a27d90333def305a7521dcc1e32f6a8e3ad7205" - integrity sha1-KifZAzPe8wWnUh3MHjL2qOOtcgU= +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - lodash "~2.4.1" + has-flag "^4.0.0" -switchback@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/switchback/-/switchback-1.1.3.tgz#12c70109348d6a296f739ba910eeb853f8b6e631" - integrity sha1-EscBCTSNailvc5upEO64U/i25jE= - dependencies: - lodash "~2.4.1" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== switchback@^2.0.1: version "2.0.2" @@ -3485,15 +3744,10 @@ switchback@^2.0.1: resolved "https://registry.yarnpkg.com/sylvester/-/sylvester-0.0.21.tgz#2987b1ce2bd2f38b0dce2a34388884bfa4400ea7" integrity sha1-KYexzivS84sNzio0OIiEv6RADqc= -through@2, through@^2.3.7: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - tildify@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.0.0.tgz#2a021db5e8fbde0a8f8b4df37adaa8fb1d39d7dd" - integrity sha1-KgIdtej73gqPi03zetqo+x05190= + resolved "https://registry.npmjs.org/tildify/-/tildify-1.0.0.tgz#2a021db5e8fbde0a8f8b4df37adaa8fb1d39d7dd" + integrity sha512-3Tu0EzUZpMeGRxUrajQPKBhYrpQLIA42RtQsaIaJ75zvaAov6d0ArxVEKoz+ZYSVOa7XnEvbjkzJDSawIntYIA== dependencies: user-home "^1.0.0" @@ -3502,44 +3756,50 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + token-stream@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - punycode "^1.4.1" + psl "^1.1.28" + punycode "^2.1.1" -tsscmp@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" - integrity sha1-fcSjOvcVgatDN9qR2FylQn69mpc= +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-is@~1.6.15: version "1.6.16" @@ -3549,6 +3809,14 @@ type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.18" +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + uglify-js@^2.6.1: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" @@ -3564,13 +3832,6 @@ uglify-to-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= -uid-safe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.4.tgz#3ad6f38368c6d4c8c75ec17623fb79aa1d071d81" - integrity sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE= - dependencies: - random-bytes "~1.0.0" - uid-safe@2.1.5, uid-safe@~2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" @@ -3583,77 +3844,62 @@ uid2@0.0.3: resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== +underscore@1.13.1: + version "1.13.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== underscore@>=1.3.1: version "1.8.3" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= -underscore@~1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" - integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + user-home@^1.0.0, user-home@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= - -utile@0.2.x: - version "0.2.1" - resolved "https://registry.yarnpkg.com/utile/-/utile-0.2.1.tgz#930c88e99098d6220834c356cbd9a770522d90d7" - integrity sha1-kwyI6ZCY1iIINMNWy9mncFItkNc= - dependencies: - async "~0.2.9" - deep-equal "*" - i "0.3.x" - mkdirp "0.x.x" - ncp "0.4.x" - rimraf "2.x.x" + resolved "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ== utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE= +uuid@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-7.0.0.tgz#1833d4b9ce50b732bfaa271f9cb74e974d303c79" + integrity sha512-LNUrNsXdI/fUsypJbWM8Jt4DgQdFAZh41p9C7WE9Cn+CULOEkoG2lgQyH68v3wnIy5K3fN4jdSt270K6IFA3MQ== uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= -uuid@^3.0.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== - -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - integrity sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg== +uuid@^3.0.0, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8flags@^2.0.2: version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + resolved "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA== dependencies: user-home "^1.1.1" @@ -3665,20 +3911,20 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validator@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-4.4.0.tgz#35e29555dd5f7826f970a4eaecff9e6df6df3da6" - integrity sha1-NeKVVd1feCb5cKTq7P+ebfbfPaY= +validator@13.7.0: + version "13.7.0" + resolved "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== -vary@1.1.2, vary@~1.1.2: +vary@1.1.2, vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -3707,7 +3953,7 @@ waterline-schema@^1.0.0-20: waterline-sql-builder@^1.0.0-6: version "1.0.0" - resolved "https://registry.yarnpkg.com/waterline-sql-builder/-/waterline-sql-builder-1.0.0.tgz#4bd98819bd37f5ab1df0555366e955ff56eeb8a5" + resolved "https://registry.npmjs.org/waterline-sql-builder/-/waterline-sql-builder-1.0.0.tgz#4bd98819bd37f5ab1df0555366e955ff56eeb8a5" integrity sha512-2oWLfAV5dpJHcUC3+wHoE4wjilks4kp6h0AtlgEvn3Wl8pac1MvPJmZqwRyJH2prakGfhxE+E5yBXaMQfOnUrQ== dependencies: "@sailshq/lodash" "^3.10.2" @@ -3725,42 +3971,42 @@ waterline-utils@^1.0.0, waterline-utils@^1.3.7: fs-extra "0.30.0" waterline-utils@^1.3.10, waterline-utils@^1.3.8: - version "1.4.1" - resolved "https://registry.yarnpkg.com/waterline-utils/-/waterline-utils-1.4.1.tgz#8ec752b32a2d92f769fbcc3c84d0c785f1fe334d" - integrity sha512-BSxWHC6U8R/4NXfJMZ88S80pzQQVDznH3nP2y2yi4RDUameCvVSR5appDX1SqpRTwFTv8z2e8tP8nLAP59l1+Q== + version "1.4.5" + resolved "https://registry.npmjs.org/waterline-utils/-/waterline-utils-1.4.5.tgz#bb2d20c3b09da92aee32eaf591b72a8e21fd7756" + integrity sha512-S2KAlfsDjh6WfAgEGHn2BSAhrytnUzXc0BdO2igLrVMhnnheWSWVsW+6koOxOruxaStWuSkCqS5H5H9pL2LCOg== dependencies: "@sailshq/lodash" "^3.10.2" - async "2.0.1" + async "2.6.4" flaverr "^1.1.1" fs-extra "0.30.0" - qs "6.4.0" + qs "6.4.1" -waterline@^0.13.5-0: - version "0.13.5" - resolved "https://registry.yarnpkg.com/waterline/-/waterline-0.13.5.tgz#14fde1ef47bb214c9f44dd30db5c680dccfbbaab" - integrity sha512-P0hcoC/jM8E2H6C69nU4ExSsaXiy8J88O5KTB/64JW1HRdkC3w5qWdQ++FJ4PBFLuUumQloZ7X25D0Ub2Eh6AA== +waterline@^0.15.0: + version "0.15.2" + resolved "https://registry.npmjs.org/waterline/-/waterline-0.15.2.tgz#41ab04bb0cab6cf949e8a48624c94b4645216b67" + integrity sha512-GCLabGXVh4d5l5uQEpozqsmG0PpPAxhe+kOertotTpvAI4S+Uspev+Q/tef1B7efAMUa8SMs4l5UheNpbe3zTA== dependencies: "@sailshq/lodash" "^3.10.2" anchor "^1.2.0" - async "2.0.1" + async "2.6.4" encrypted-attr "1.0.6" - flaverr "^1.8.3" + flaverr "^1.9.2" lodash.issafeinteger "4.0.4" parley "^3.3.2" rttc "^10.0.0-1" waterline-schema "^1.0.0-20" waterline-utils "^1.3.7" -whelk@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/whelk/-/whelk-6.0.0.tgz#62e01d54dd5675cc022083de1756864d0c369418" - integrity sha512-qNAuQ3af4oe9mzgYUmCKyxJKzfrx+JE2xN7QxrdNPBkpyFEw2rdABLofHxOl2OHgLEEAQTq2fqbpDQVQHvIg7g== +whelk@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/whelk/-/whelk-6.0.2.tgz#701b6df3e2d7b70ade95a7ca7b5d0967908dd80e" + integrity sha512-1wgNmOlNn1JgOBK2kYDAuOswdh9FwlehGD4Rs22CPcz0leE6fn/OXvlpPEV0UWbmTmlmK6+sYs3o97DSk7tnhA== dependencies: "@sailshq/lodash" "^3.10.2" - chalk "1.1.3" + chalk "2.3.0" commander "2.8.1" flaverr "^1.7.0" - machine "^15.0.0-5" + machine "^15.2.2" rttc "^10.0.0-0" yargs "3.4.5" @@ -3771,18 +4017,11 @@ which-module@^1.0.0: which@^1.2.12: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^1.2.9: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== - dependencies: - isexe "^2.0.0" - window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -3793,17 +4032,16 @@ window-size@^0.2.0: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -winston@0.8.x: - version "0.8.3" - resolved "https://registry.yarnpkg.com/winston/-/winston-0.8.3.tgz#64b6abf4cd01adcaefd5009393b1d8e8bec19db0" - integrity sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA= +winston@2.x: + version "2.4.7" + resolved "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz#5791fe08ea7e90db090f1cb31ef98f32531062f1" + integrity sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg== dependencies: - async "0.2.x" - colors "0.6.x" + async "^2.6.4" + colors "1.0.x" cycle "1.0.x" eyes "0.1.x" isstream "0.1.x" - pkginfo "0.3.x" stack-trace "0.0.x" with@^5.0.0: @@ -3829,44 +4067,33 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.0.tgz#119a9dbf92c54e190ec18d10e871d55c95cf9373" - integrity sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg== - dependencies: - async-limiter "~1.0.0" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" +ws@^8.18.1: + version "8.18.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" + integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@4.0.0, yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs-parser@^2.4.1: version "2.4.1" @@ -3915,8 +4142,3 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= From fcebe4f9940271a23c0ee530c680afba87a52e4e Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 18:30:47 -0400 Subject: [PATCH 2/9] Run prettier against all source code --- README.md | 11 +- api/controllers/CharacterController.js | 96 ++++---- api/controllers/FleetController.js | 12 +- api/controllers/SocketController.js | 6 +- api/controllers/StatusController.js | 12 +- api/models/Alliance.js | 18 +- api/models/Character.js | 24 +- api/models/Constellation.js | 65 +++--- api/models/Corporation.js | 20 +- api/models/Fleet.js | 49 ++-- api/models/Kill.js | 28 +-- api/models/Package.js | 28 +-- api/models/Region.js | 73 +++--- api/models/Stargate.js | 10 +- api/models/System.js | 32 ++- api/models/Type.js | 23 +- api/services/CharacterSerializer.js | 69 +++--- api/services/Dispatcher.js | 16 +- api/services/FleetSerializer.js | 26 +-- api/services/Fuzzworks.js | 41 ++-- api/services/Identifier.js | 110 +++++---- api/services/Resolver.js | 37 ++-- api/services/Swagger.js | 187 ++++++++-------- api/services/ZkillResolve.js | 78 ++++--- api/services/ZkillSocket.js | 225 ++++++++++--------- api/services/ZkillStats.js | 84 +++---- app.js | 42 ++-- config/blueprints.js | 30 ++- config/custom.js | 10 +- config/datastores.js | 44 ++-- config/env/development.js | 6 +- config/env/production.js | 295 ++++++++++++------------- config/globals.js | 50 ++--- config/http.js | 44 ++-- config/i18n.js | 36 ++- config/jobs.js | 234 +++++++++++--------- config/log.js | 23 +- config/models.js | 152 ++++++------- config/policies.js | 13 +- config/redis.js | 8 +- config/routes.js | 8 +- config/security.js | 52 ++--- config/sockets.js | 83 ++++--- config/views.js | 32 ++- jobs/FleetJobs.js | 22 +- jobs/SwaggerJobs.js | 5 +- jobs/ZkillJobs.js | 61 ++--- 47 files changed, 1321 insertions(+), 1309 deletions(-) diff --git a/README.md b/README.md index 41299c5..fc4595a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ A WebSocket-compatible kill & fleet tracker for EVE Online, built [on Sails.js](https://sailsjs.com/). Part of the magic behind the [GLOSS](https://github.com/dougestey/gloss) project. -## Features ## +## Features + - Backed by PostgreSQL - Live reporting from zKillboard's [WebSocket service](https://github.com/zKillboard/zKillboard/wiki/Websocket) - Identifies fleet patterns based on recorded kills @@ -10,16 +11,16 @@ A WebSocket-compatible kill & fleet tracker for EVE Online, built [on Sails.js]( - Resolves shiptypes and systems via the [EVE Online SDE](https://developers.eveonline.com/resource/resources) - Sophisticated job queue scheduling via [Kue](https://github.com/Automattic/kue) -## Environment ## +## Environment - Install Node >= 8 - Install Yarn -- Install and [configure](config/datastores.js) a database (PostgreSQL preferred) +- Install and [configure](config/datastores.js) a database (PostgreSQL preferred) - Install and [configure](config/jobs.js) Redis The app will refuse to run without a valid root-level `.env` - see the [example file.](.env.example) -## Boot ## +## Boot $ cd sentinel $ yarn @@ -31,7 +32,7 @@ Provided it's not firewalled, a frontend to the job queue will be available at ` If you're going to leave this thing running permanently, you should run it with `NODE_ENV=production` (i.e. `npm start`). -## Support ## +## Support Got a problem? File a GitHub issue. Please be nice. diff --git a/api/controllers/CharacterController.js b/api/controllers/CharacterController.js index d2c88ce..229cecb 100644 --- a/api/controllers/CharacterController.js +++ b/api/controllers/CharacterController.js @@ -1,50 +1,46 @@ -/** - * CharacterController - * - * @description :: Character lookup controller - * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers - */ - -module.exports = { - - async find(req, res) { - let { name } = req.query; - - if (name) { - characters = await Character.find({ - where: { - name: { - contains: name - } - } - }); - } else { - characters = await Character.find(req.query); - } - - let results = []; - - for (let character of characters) { - let result = await CharacterSerializer.one(character.id); - - results.push(result); - } - - return res.status(200).json(results); - }, - - async findOne(req, res) { - if (!req.params.id) - return res.badRequest(); - - let { id } = req.params; - - let character = await CharacterSerializer.one(id); - - if (!character) - return res.notFound(); - - return res.status(200).json(character); - } - -}; +/** + * CharacterController + * + * @description :: Character lookup controller + * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers + */ + +module.exports = { + async find(req, res) { + let { name } = req.query; + + if (name) { + characters = await Character.find({ + where: { + name: { + contains: name, + }, + }, + }); + } else { + characters = await Character.find(req.query); + } + + let results = []; + + for (let character of characters) { + let result = await CharacterSerializer.one(character.id); + + results.push(result); + } + + return res.status(200).json(results); + }, + + async findOne(req, res) { + if (!req.params.id) return res.badRequest(); + + let { id } = req.params; + + let character = await CharacterSerializer.one(id); + + if (!character) return res.notFound(); + + return res.status(200).json(character); + }, +}; diff --git a/api/controllers/FleetController.js b/api/controllers/FleetController.js index 39b0186..675fd7b 100644 --- a/api/controllers/FleetController.js +++ b/api/controllers/FleetController.js @@ -6,22 +6,19 @@ */ module.exports = { - async findOne(req, res) { - if (!req.params.id) - return res.badRequest(); + if (!req.params.id) return res.badRequest(); let { id } = req.params; let fleet = await FleetSerializer.one(id); - if (!fleet) - return res.notFound(); + if (!fleet) return res.notFound(); return res.status(200).json(fleet); }, - async active (req, res) { + async active(req, res) { let fleets = await Fleet.find({ isActive: true }); let resolved = []; @@ -32,6 +29,5 @@ module.exports = { } return res.status(200).json(resolved); - } - + }, }; diff --git a/api/controllers/SocketController.js b/api/controllers/SocketController.js index b0fd100..def90b6 100644 --- a/api/controllers/SocketController.js +++ b/api/controllers/SocketController.js @@ -6,7 +6,6 @@ */ module.exports = { - connect(req, res) { if (req.isSocket) { Dispatcher.joinPool(req); @@ -15,6 +14,5 @@ module.exports = { } return res.status(403).send(); - } - -} + }, +}; diff --git a/api/controllers/StatusController.js b/api/controllers/StatusController.js index ae9c41c..bbc0c41 100644 --- a/api/controllers/StatusController.js +++ b/api/controllers/StatusController.js @@ -1,7 +1,5 @@ -module.exports = { - - async status(req, res) { - return res.status(200).json(sails.config.sentinel); - } - -} +module.exports = { + async status(req, res) { + return res.status(200).json(sails.config.sentinel); + }, +}; diff --git a/api/models/Alliance.js b/api/models/Alliance.js index 4008177..8c2163e 100644 --- a/api/models/Alliance.js +++ b/api/models/Alliance.js @@ -6,21 +6,17 @@ */ module.exports = { - attributes: { + id: { type: "number", autoIncrement: false, required: true }, - id: { type: 'number', autoIncrement: false, required: true }, - - name: 'string', - - ticker: 'string', - - activeCombatPilots: 'number', + name: "string", - hasSupers: 'boolean', + ticker: "string", - dangerRatio: 'number' + activeCombatPilots: "number", - } + hasSupers: "boolean", + dangerRatio: "number", + }, }; diff --git a/api/models/Character.js b/api/models/Character.js index cb468fd..9686343 100644 --- a/api/models/Character.js +++ b/api/models/Character.js @@ -6,31 +6,27 @@ */ module.exports = { - attributes: { + id: { type: "number", autoIncrement: false, required: true }, - id: { type: 'number', autoIncrement: false, required: true }, - - name: 'string', + name: "string", - dangerRatio: 'number', + dangerRatio: "number", // Relationships - corporation: { model: 'corporation' }, + corporation: { model: "corporation" }, - alliance: { model: 'alliance' }, + alliance: { model: "alliance" }, - fleet: { model: 'fleet' }, + fleet: { model: "fleet" }, - history: { collection: 'fleet', via: 'history' }, + history: { collection: "fleet", via: "history" }, // Meta - lastEsiUpdate: 'string', - - lastZkillUpdate: 'string' - - } + lastEsiUpdate: "string", + lastZkillUpdate: "string", + }, }; diff --git a/api/models/Constellation.js b/api/models/Constellation.js index 5df756b..284ace4 100644 --- a/api/models/Constellation.js +++ b/api/models/Constellation.js @@ -1,32 +1,33 @@ -/** - * Constellation.js - * - * @description :: TODO: You might write a short summary of how this model works and what it represents here. - * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models - */ - -let datastore = 'sdeDev'; - -if (process.env.NODE_ENV === 'production') { - datastore = 'sde'; -} - -module.exports = { - - datastore, - - tableName: 'mapConstellations', - - attributes: { - - createdAt: false, - - updatedAt: false, - - id: { columnName: 'constellationID', type: 'number', autoIncrement: false, required: true }, - - name: { columnName: 'constellationName', type: 'string' }, - - } - -}; +/** + * Constellation.js + * + * @description :: TODO: You might write a short summary of how this model works and what it represents here. + * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models + */ + +let datastore = "sdeDev"; + +if (process.env.NODE_ENV === "production") { + datastore = "sde"; +} + +module.exports = { + datastore, + + tableName: "mapConstellations", + + attributes: { + createdAt: false, + + updatedAt: false, + + id: { + columnName: "constellationID", + type: "number", + autoIncrement: false, + required: true, + }, + + name: { columnName: "constellationName", type: "string" }, + }, +}; diff --git a/api/models/Corporation.js b/api/models/Corporation.js index 6bd39b2..e4bf9d6 100644 --- a/api/models/Corporation.js +++ b/api/models/Corporation.js @@ -6,23 +6,19 @@ */ module.exports = { - attributes: { + id: { type: "number", autoIncrement: false, required: true }, - id: { type: 'number', autoIncrement: false, required: true }, - - name: 'string', - - ticker: 'string', - - memberCount: 'number', + name: "string", - activeCombatPilots: 'number', + ticker: "string", - hasSupers: 'boolean', + memberCount: "number", - dangerRatio: 'number' + activeCombatPilots: "number", - } + hasSupers: "boolean", + dangerRatio: "number", + }, }; diff --git a/api/models/Fleet.js b/api/models/Fleet.js index 4d76ba6..8c2a068 100644 --- a/api/models/Fleet.js +++ b/api/models/Fleet.js @@ -5,54 +5,49 @@ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ -let moment = require('moment'); +let moment = require("moment"); module.exports = { - attributes: { + startTime: "string", - startTime: 'string', - - endTime: 'string', + endTime: "string", - isActive: 'boolean', + isActive: "boolean", - lastSeen: 'string', + lastSeen: "string", - composition: 'json', + composition: "json", configuration: { - type: 'string', - isIn: [ - 'roam', - 'gatecamp', - 'hsgank', - 'hswar', - 'blops', - 'unknown' - ] + type: "string", + isIn: ["roam", "gatecamp", "hsgank", "hswar", "blops", "unknown"], }, - efficiency: { type: 'ref', columnType: 'decimal' }, + efficiency: { type: "ref", columnType: "decimal" }, - dangerRatio: { type: 'ref', columnType: 'decimal' }, + dangerRatio: { type: "ref", columnType: "decimal" }, // Relationships - system: { model: 'system' }, + system: { model: "system" }, - characters: { collection: 'character', via: 'fleet' }, + characters: { collection: "character", via: "fleet" }, - history: { collection: 'character', via: 'history' }, + history: { collection: "character", via: "history" }, - kills: { collection: 'kill', via: 'fleet' }, + kills: { collection: "kill", via: "fleet" }, // Meta - lastFleetHealthCheck: { type: 'string', defaultsTo: moment().subtract(5, 'minutes').toISOString() }, - - lastFleetThreatLevelCheck: { type: 'string', defaultsTo: moment().subtract(5, 'minutes').toISOString() }, + lastFleetHealthCheck: { + type: "string", + defaultsTo: moment().subtract(5, "minutes").toISOString(), + }, + lastFleetThreatLevelCheck: { + type: "string", + defaultsTo: moment().subtract(5, "minutes").toISOString(), + }, }, - }; diff --git a/api/models/Kill.js b/api/models/Kill.js index 2b4bd0a..3b27b0f 100644 --- a/api/models/Kill.js +++ b/api/models/Kill.js @@ -6,33 +6,29 @@ */ module.exports = { - attributes: { + killId: { type: "number", unique: true }, - killId: { type: 'number', unique: true }, - - time: 'string', + time: "string", - position: 'json', + position: "json", - positionName: 'string', + positionName: "string", - items: 'json', + items: "json", - composition: 'json', + composition: "json", - meta: 'json', + meta: "json", // Relationships - ship: { model: 'type' }, - - victim: { model: 'character' }, - - system: { model: 'system' }, + ship: { model: "type" }, - fleet: { model: 'fleet' } + victim: { model: "character" }, - } + system: { model: "system" }, + fleet: { model: "fleet" }, + }, }; diff --git a/api/models/Package.js b/api/models/Package.js index ff9454c..5747675 100644 --- a/api/models/Package.js +++ b/api/models/Package.js @@ -1,16 +1,12 @@ -/** - * Package.js - * - * @description :: Package as retrieved from the ZKillSocket service. - * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models - */ - -module.exports = { - - attributes: { - - body: 'json', - - } - -}; +/** + * Package.js + * + * @description :: Package as retrieved from the ZKillSocket service. + * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models + */ + +module.exports = { + attributes: { + body: "json", + }, +}; diff --git a/api/models/Region.js b/api/models/Region.js index 766e316..f5c9e98 100644 --- a/api/models/Region.js +++ b/api/models/Region.js @@ -1,36 +1,37 @@ -/** - * Region.js - * - * @description :: TODO: You might write a short summary of how this model works and what it represents here. - * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models - */ - -let datastore = 'sdeDev'; - -if (process.env.NODE_ENV === 'production') { - datastore = 'sde'; -} - -module.exports = { - - datastore, - - tableName: 'mapRegions', - - attributes: { - - createdAt: false, - - updatedAt: false, - - id: { columnName: 'regionID', type: 'number', autoIncrement: false, required: true }, - - name: { columnName: 'regionName', type: 'string' }, - - x: { columnType: 'decimal', type: 'number' }, - - y: { columnType: 'decimal', type: 'number' }, - - } - -}; +/** + * Region.js + * + * @description :: TODO: You might write a short summary of how this model works and what it represents here. + * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models + */ + +let datastore = "sdeDev"; + +if (process.env.NODE_ENV === "production") { + datastore = "sde"; +} + +module.exports = { + datastore, + + tableName: "mapRegions", + + attributes: { + createdAt: false, + + updatedAt: false, + + id: { + columnName: "regionID", + type: "number", + autoIncrement: false, + required: true, + }, + + name: { columnName: "regionName", type: "string" }, + + x: { columnType: "decimal", type: "number" }, + + y: { columnType: "decimal", type: "number" }, + }, +}; diff --git a/api/models/Stargate.js b/api/models/Stargate.js index b1707f0..0e23cd1 100644 --- a/api/models/Stargate.js +++ b/api/models/Stargate.js @@ -10,13 +10,9 @@ // TODO: Determine where this lies in the SDE module.exports = { - attributes: { + stargateId: { type: "number", unique: true }, - stargateId: { type: 'number', unique: true }, - - name: 'string' - - } - + name: "string", + }, }; diff --git a/api/models/System.js b/api/models/System.js index 0815357..89a3ce8 100644 --- a/api/models/System.js +++ b/api/models/System.js @@ -5,45 +5,41 @@ * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models */ -let datastore = 'sdeDev'; +let datastore = "sdeDev"; -if (process.env.NODE_ENV === 'production') { - datastore = 'sde'; +if (process.env.NODE_ENV === "production") { + datastore = "sde"; } module.exports = { - datastore, - tableName: 'mapSolarSystems', + tableName: "mapSolarSystems", attributes: { - createdAt: false, updatedAt: false, id: { - columnName: 'solarSystemID', - type: 'number', + columnName: "solarSystemID", + type: "number", autoIncrement: false, - required: true + required: true, }, - name: { columnName: 'solarSystemName', type: 'string' }, + name: { columnName: "solarSystemName", type: "string" }, - securityStatus: { columnName: 'security', type: 'number' }, + securityStatus: { columnName: "security", type: "number" }, - x: { columnType: 'decimal', type: 'number' }, + x: { columnType: "decimal", type: "number" }, - y: { columnType: 'decimal', type: 'number' }, + y: { columnType: "decimal", type: "number" }, // Relationships - constellation: { columnName: 'constellationID', model: 'constellation' }, - - region: { columnName: 'regionID', model: 'region' }, - - } + constellation: { columnName: "constellationID", model: "constellation" }, + region: { columnName: "regionID", model: "region" }, + }, }; diff --git a/api/models/Type.js b/api/models/Type.js index f349b10..ca91868 100644 --- a/api/models/Type.js +++ b/api/models/Type.js @@ -5,34 +5,31 @@ * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models */ -let datastore = 'sdeDev'; +let datastore = "sdeDev"; -if (process.env.NODE_ENV === 'production') { - datastore = 'sde'; +if (process.env.NODE_ENV === "production") { + datastore = "sde"; } module.exports = { - datastore, - tableName: 'invTypes', + tableName: "invTypes", attributes: { - createdAt: false, updatedAt: false, id: { - columnName: 'typeID', - type: 'number', + columnName: "typeID", + type: "number", autoIncrement: false, - required: true + required: true, }, - name: { columnName: 'typeName', type: 'string' }, - - description: 'string', + name: { columnName: "typeName", type: "string" }, - } + description: "string", + }, }; diff --git a/api/services/CharacterSerializer.js b/api/services/CharacterSerializer.js index a9925f4..d0d8370 100644 --- a/api/services/CharacterSerializer.js +++ b/api/services/CharacterSerializer.js @@ -1,36 +1,33 @@ -module.exports = { - - async one(idOrName) { - let query = (function() { - if (isNaN(idOrName)) { - return { name: idOrName }; - } else { - return idOrName; - } - })(); - - let character = await Character.findOne(query) - .populate('corporation') - .populate('alliance') - .populate('fleet') - .populate('history'); - - let knownCyno = false; - let losses = await Kill.find({ victim: character.id }) - .sort('time DESC'); - - for (let loss of losses) { - for (let item of loss.items) { - if (item.item_type_id === 21096) { - knownCyno = true; - } - } - } - - character.losses = losses; - character.knownCyno = knownCyno; - - return character; - } - -}; +module.exports = { + async one(idOrName) { + let query = (function () { + if (isNaN(idOrName)) { + return { name: idOrName }; + } else { + return idOrName; + } + })(); + + let character = await Character.findOne(query) + .populate("corporation") + .populate("alliance") + .populate("fleet") + .populate("history"); + + let knownCyno = false; + let losses = await Kill.find({ victim: character.id }).sort("time DESC"); + + for (let loss of losses) { + for (let item of loss.items) { + if (item.item_type_id === 21096) { + knownCyno = true; + } + } + } + + character.losses = losses; + character.knownCyno = knownCyno; + + return character; + }, +}; diff --git a/api/services/Dispatcher.js b/api/services/Dispatcher.js index 3fa3c60..702f37a 100644 --- a/api/services/Dispatcher.js +++ b/api/services/Dispatcher.js @@ -8,7 +8,6 @@ let pool = {}; let Dispatcher = { - joinPool(req) { let socketId = sails.sockets.getId(req); @@ -17,28 +16,31 @@ let Dispatcher = { } if (!_.has(pool, socketId)) { - sails.sockets.join(req, 'activeSockets'); + sails.sockets.join(req, "activeSockets"); sails.log.debug(`[Dispatcher.joinPool] ${socketId} joins the pool.`); pool[socketId] = []; } else { - sails.log.debug(`[Dispatcher.joinPool] ${socketId} is already in the pool.`); + sails.log.debug( + `[Dispatcher.joinPool] ${socketId} is already in the pool.`, + ); } }, // Notify connected sockets of new data notifySockets(data, type) { - sails.io.sockets.in('activeSockets').clients((err, members) => { + sails.io.sockets.in("activeSockets").clients((err, members) => { members.map((socketId) => { - sails.log.debug(`[Dispatcher.notifySockets] Notifying ${socketId} of ${type}...`); + sails.log.debug( + `[Dispatcher.notifySockets] Notifying ${socketId} of ${type}...`, + ); sails.log.silly(`[Dispatcher.notifySockets] ${data}`); sails.sockets.broadcast(socketId, type, data); }); }); - } - + }, }; module.exports = Dispatcher; diff --git a/api/services/FleetSerializer.js b/api/services/FleetSerializer.js index a932e77..426dfa3 100644 --- a/api/services/FleetSerializer.js +++ b/api/services/FleetSerializer.js @@ -1,31 +1,31 @@ module.exports = { - // Flesh out useful corp/alliance data for chars. // Also resolve shiptypes. async one(id) { let fleet = await Fleet.findOne(id); - fleet.system = await System.findOne(fleet.system) - .populate('region'); + fleet.system = await System.findOne(fleet.system).populate("region"); fleet.characters = await Character.find({ fleet: fleet.id }) - .populate('corporation') - .populate('alliance'); + .populate("corporation") + .populate("alliance"); fleet.kills = await Kill.find({ fleet: fleet.id }) - .populate('ship') - .populate('victim') - .populate('system') - .populate('fleet') - .sort('time DESC'); + .populate("ship") + .populate("victim") + .populate("system") + .populate("fleet") + .sort("time DESC"); // Now let's resolve the ship type IDs for each character. - let { characters, ships } = await Resolver.composition(fleet.composition, fleet.characters); + let { characters, ships } = await Resolver.composition( + fleet.composition, + fleet.characters, + ); fleet.characters = characters; fleet.ships = ships; return fleet; - } - + }, }; diff --git a/api/services/Fuzzworks.js b/api/services/Fuzzworks.js index 710c0a5..92e69f3 100644 --- a/api/services/Fuzzworks.js +++ b/api/services/Fuzzworks.js @@ -5,31 +5,34 @@ * @help :: https://esi.tech.ccp.is/ui/ */ -const request = require('request'); +const request = require("request"); module.exports = { - nearestCelestial({ x, y, z }, systemId) { return new Promise((resolve, reject) => { - request({ - url: `https://www.fuzzwork.co.uk/api/nearestCelestial.php?x=${x}&y=${y}&z=${z}&solarsystemid=${systemId}`, - method: 'GET', - headers: { - 'User-Agent': 'https://gloss.space' + request( + { + url: `https://www.fuzzwork.co.uk/api/nearestCelestial.php?x=${x}&y=${y}&z=${z}&solarsystemid=${systemId}`, + method: "GET", + headers: { + "User-Agent": "https://gloss.space", + }, + json: true, }, - json: true - }, (error, response, body) => { - if (error || !body) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Fuzzworks.nearestCelestial] ${response.statusCode} ${error}`); - return reject(); - } + (error, response, body) => { + if (error || !body) { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Fuzzworks.nearestCelestial] ${response.statusCode} ${error}`, + ); + return reject(); + } - sails.log.silly(`[Fuzzworks.nearestCelestial] Success.`); - sails.log.silly(`[Fuzzworks.nearestCelestial] ${body}`); + sails.log.silly(`[Fuzzworks.nearestCelestial] Success.`); + sails.log.silly(`[Fuzzworks.nearestCelestial] ${body}`); - return resolve(body); - }); + return resolve(body); + }, + ); }); - } - + }, }; diff --git a/api/services/Identifier.js b/api/services/Identifier.js index 6847637..2cff6d3 100644 --- a/api/services/Identifier.js +++ b/api/services/Identifier.js @@ -10,25 +10,28 @@ // // Now that Sentinel uses PostgreSQL with real character IDs as unique // identifiers, this function should return the same thing passed to it. -let _resolveCharactersToIds = async(ids) => { +let _resolveCharactersToIds = async (ids) => { let resolved = []; - sails.log.silly(`[Identifier._resolveCharactersToIds] Resolving ${ids.length} characters...`); + sails.log.silly( + `[Identifier._resolveCharactersToIds] Resolving ${ids.length} characters...`, + ); for (let characterId of ids) { let character; try { character = await Swagger.character(characterId); - } catch(e) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Identifier._resolveCharactersToIds] ${JSON.stringify(e)}`); + } catch (e) { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Identifier._resolveCharactersToIds] ${JSON.stringify(e)}`, + ); } - if (character && character.id) - resolved.push(character.id); + if (character && character.id) resolved.push(character.id); } - sails.log.silly('[Identifier._resolveCharactersToIds] End'); + sails.log.silly("[Identifier._resolveCharactersToIds] End"); return _.compact(resolved); }; @@ -42,7 +45,7 @@ let _determineActiveCharacters = (kills) => { characterId = parseInt(characterId); characterIds.push(characterId); - }; + } }); return _.uniq(characterIds); @@ -61,13 +64,15 @@ let _determineActiveComposition = (kills) => { return totalComposition; }; -let _createFleet = async(killmail, kill, system) => { +let _createFleet = async (killmail, kill, system) => { let { killmail_time: startTime } = killmail, - lastSeen = startTime, - characters = await _resolveCharactersToIds(killmail.attackers.map((a) => a.character_id)), - composition = _determineActiveComposition([kill]), - configuration = 'unknown', - isActive = true; + lastSeen = startTime, + characters = await _resolveCharactersToIds( + killmail.attackers.map((a) => a.character_id), + ), + composition = _determineActiveComposition([kill]), + configuration = "unknown", + isActive = true; let fleet = await Fleet.create({ startTime, @@ -75,28 +80,37 @@ let _createFleet = async(killmail, kill, system) => { composition, configuration, isActive, - system + system, }) - .intercept((e) => sails.log.error(`[${new Date().toLocaleTimeString()}] [Identifier._createFleet] Fleet create error:`, e)) - .fetch(); - - await Fleet.addToCollection(fleet.id, 'characters').members(characters); - await Fleet.addToCollection(fleet.id, 'history').members(characters); - await Fleet.addToCollection(fleet.id, 'kills').members([kill.id]); + .intercept((e) => + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Identifier._createFleet] Fleet create error:`, + e, + ), + ) + .fetch(); + + await Fleet.addToCollection(fleet.id, "characters").members(characters); + await Fleet.addToCollection(fleet.id, "history").members(characters); + await Fleet.addToCollection(fleet.id, "kills").members([kill.id]); return FleetSerializer.one(fleet.id); }; -let _updateFleet = async(fleet, kill, system) => { +let _updateFleet = async (fleet, kill, system) => { if (!fleet) { - return sails.log.error(`[${new Date().toLocaleTimeString()}] [Identifier._updateFleet] No fleet to update`); + return sails.log.error( + `[${new Date().toLocaleTimeString()}] [Identifier._updateFleet] No fleet to update`, + ); } // First we add the kill to the fleet's collection, as it will impact other data. - await Fleet.addToCollection(fleet.id, 'kills').members([kill.id]); + await Fleet.addToCollection(fleet.id, "kills").members([kill.id]); // Then we fetch the three latest kills in order to determine who's actively in the fleet. - let latestKills = await Kill.find({ fleet: fleet.id }).sort('time DESC').limit(3); + let latestKills = await Kill.find({ fleet: fleet.id }) + .sort("time DESC") + .limit(3); let existingCharacters = await Character.find({ fleet: fleet.id }); let activeCharacters = _determineActiveCharacters(latestKills); let composition = _determineActiveComposition(latestKills); @@ -117,11 +131,13 @@ let _updateFleet = async(fleet, kill, system) => { } // Ensure we're preserving character fleet history. - await Fleet.addToCollection(fleet.id, 'history').members(existingCharacters); - await Fleet.addToCollection(fleet.id, 'history').members(activeCharacters); + await Fleet.addToCollection(fleet.id, "history").members(existingCharacters); + await Fleet.addToCollection(fleet.id, "history").members(activeCharacters); // Update the fleet's collection of characters. This will drop expired ones. - await Fleet.replaceCollection(fleet.id, 'characters').members(activeCharacters); + await Fleet.replaceCollection(fleet.id, "characters").members( + activeCharacters, + ); // Update other attributes on the fleet await Fleet.update(fleet.id, { @@ -135,28 +151,29 @@ let _updateFleet = async(fleet, kill, system) => { }; let Identifier = { - async fleet(killmail, system, kill) { // Attackers without a corporation ID aren't relevant - let attackers = killmail.attackers.filter((a) => a.corporation_id).map((a) => a.character_id); + let attackers = killmail.attackers + .filter((a) => a.corporation_id) + .map((a) => a.character_id); // Some of the [] above will be undefined due to no corporation_id (NPC etc) // We still need the total number of attackers for scoring logic, so create a new compacted [] let attackersWithIds = _.compact(attackers); // No real players with corporation_ids = no identifiable fleet - if (!attackersWithIds.length) - return; + if (!attackersWithIds.length) return; - sails.log.silly(`[Identifier.fleet] Fetching active fleet records related to km...`); + sails.log.silly( + `[Identifier.fleet] Fetching active fleet records related to km...`, + ); let fleetIds = []; for (let characterId of attackersWithIds) { let record = await Character.findOne(characterId); - if (record && record.fleet) - fleetIds.push(record.fleet); + if (record && record.fleet) fleetIds.push(record.fleet); } // Some of the pilots above will be in the same fleet already. No point in resolving @@ -166,10 +183,11 @@ let Identifier = { let fleets = []; for (let id of fleetIds) { - let record = await Fleet.findOne({ id, isActive: true }).populate('characters'); + let record = await Fleet.findOne({ id, isActive: true }).populate( + "characters", + ); - if (record) - fleets.push(record); + if (record) fleets.push(record); } // No matches; create a fleet. @@ -191,7 +209,10 @@ let Identifier = { let mostPilots, leastPilots; - if (attackersWithIds.length > characters.length || attackersWithIds.length === characters.length) { + if ( + attackersWithIds.length > characters.length || + attackersWithIds.length === characters.length + ) { mostPilots = attackersWithIds; leastPilots = characters; } else { @@ -200,14 +221,18 @@ let Identifier = { } let differentIds = _.difference(mostPilots, leastPilots), - similarity = 1 - differentIds.length / mostPilots.length; + similarity = 1 - differentIds.length / mostPilots.length; return { id, similarity, size: characters.length }; }); sails.log.silly(`[Identifier.fleet] Sorting potential matches...`); - candidates = _.sortByOrder(candidates, ['similarity', 'size'], ['desc', 'desc']); + candidates = _.sortByOrder( + candidates, + ["similarity", "size"], + ["desc", "desc"], + ); let bestMatch = _.first(candidates); let fleet = _.find(fleets, (f) => f.id === bestMatch.id); @@ -219,8 +244,7 @@ let Identifier = { // No matches whatsoever. Create a fleet. return _createFleet(killmail, kill, system); } - } - + }, }; module.exports = Identifier; diff --git a/api/services/Resolver.js b/api/services/Resolver.js index 2c233d4..4f92d11 100644 --- a/api/services/Resolver.js +++ b/api/services/Resolver.js @@ -6,27 +6,27 @@ */ let Resolver = { - async position(position, systemId) { if (!position || !systemId) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Resolver] ESI failure: Incomplete position data`); + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Resolver] ESI failure: Incomplete position data`, + ); - return 'Unknown'; + return "Unknown"; } let response; try { response = await Fuzzworks.nearestCelestial(position, systemId); - } catch(e) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Resolver] Fuzzworks failure: ${e}`); - return 'Unknown'; + } catch (e) { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Resolver] Fuzzworks failure: ${e}`, + ); + return "Unknown"; } - let { - itemName, - typeid: typeId, - itemid: itemId } = response; + let { itemName, typeid: typeId, itemid: itemId } = response; // Unfortunately Fuzzworks doesn't give us an itemName for stargates. // It does seem to handle belts and stations fine. More testing req'd. @@ -34,7 +34,7 @@ let Resolver = { let type = await Type.findOne(typeId); if (type && type.name) { - if (type.name.indexOf('Stargate') !== -1) { + if (type.name.indexOf("Stargate") !== -1) { let { name } = await Swagger.stargate(itemId); let { name: systemName } = await System.findOne(systemId); @@ -45,10 +45,9 @@ let Resolver = { } } - if (itemName === 'bad item') - return 'Abyssal Deadspace'; + if (itemName === "bad item") return "Abyssal Deadspace"; - return itemName ? itemName : 'Unknown'; + return itemName ? itemName : "Unknown"; }, async composition(ids, characters) { @@ -65,16 +64,14 @@ let Resolver = { let ships = await Swagger.names(_.uniq(shipTypeIds)); _.forEach(ids, (shipTypeId, characterId) => { - let charIndex = _.findIndex(characters, 'id', parseInt(characterId)), - shipIndex = _.findIndex(ships, 'id', shipTypeId); + let charIndex = _.findIndex(characters, "id", parseInt(characterId)), + shipIndex = _.findIndex(ships, "id", shipTypeId); - if (charIndex !== -1) - characters[charIndex].ship = ships[shipIndex]; + if (charIndex !== -1) characters[charIndex].ship = ships[shipIndex]; }); return { characters, ships }; - } - + }, }; module.exports = Resolver; diff --git a/api/services/Swagger.js b/api/services/Swagger.js index a87db12..8b5ff69 100644 --- a/api/services/Swagger.js +++ b/api/services/Swagger.js @@ -5,67 +5,69 @@ * @help :: https://esi.tech.ccp.is/ui/ */ -let ESI = require('eve-swagger-simple'), - request = require('request'), - qs = require('qs'), - moment = require('moment'); +let ESI = require("eve-swagger-simple"), + request = require("request"), + qs = require("qs"), + moment = require("moment"); let _endpointIsNeeded = (endpoint) => { let requiredEndpoints = [ - '/universe/names/', - '/universe/systems/', - '/characters/{character_id}/', - '/universe/types/{type_id}/', - '/universe/systems/{system_id}/', - '/universe/stargates/{stargate_id}/', - '/corporations/{corporation_id}/', - '/alliances/{alliance_id}/' + "/universe/names/", + "/universe/systems/", + "/characters/{character_id}/", + "/universe/types/{type_id}/", + "/universe/systems/{system_id}/", + "/universe/stargates/{stargate_id}/", + "/corporations/{corporation_id}/", + "/alliances/{alliance_id}/", ]; let isNeeded = false; requiredEndpoints.map((route) => { - if (route === endpoint.route) - return true; + if (route === endpoint.route) return true; }); }; module.exports = { - status() { return new Promise((resolve, reject) => { - request.get('https://esi.evetech.net/status.json', - { json: true }, - (error, response, body) => { - if (error) { - sails.log.error(`[Swagger.status] ${error}`); - return resolve(false); - } - - if (!body || !body.length || !Array.isArray(body)) - return resolve(false); - - let allSystemsGo = true, + request.get( + "https://esi.evetech.net/status.json", + { json: true }, + (error, response, body) => { + if (error) { + sails.log.error(`[Swagger.status] ${error}`); + return resolve(false); + } + + if (!body || !body.length || !Array.isArray(body)) + return resolve(false); + + let allSystemsGo = true, status = body; - status.map((endpoint) => { - if (_endpointIsNeeded(endpoint) && endpoint.status !== 'green') { - allSystemsGo = false; + status.map((endpoint) => { + if (_endpointIsNeeded(endpoint) && endpoint.status !== "green") { + allSystemsGo = false; - sails.log.error(`[Swagger.status] ${endpoint.route} is ${endpoint.status}.`); - } - }); + sails.log.error( + `[Swagger.status] ${endpoint.route} is ${endpoint.status}.`, + ); + } + }); - return resolve(allSystemsGo); - }); + return resolve(allSystemsGo); + }, + ); }); }, async initialize() { - let systems = await ESI.request('/universe/systems'), - fn = async function(systemId) { - await System.findOrCreate({ systemId }, { systemId }); - }; + let systems = await ESI.request("/universe/systems"), + fn = async function (systemId) { + await System.findOrCreate({ systemId }, { systemId }); + }; let resolvedSystems = await Promise.all(systems.map(fn)); @@ -74,32 +76,31 @@ module.exports = { // POSTing in eve-swagger-simple is absolute shit, so we use request. async names(ids) { - if (!ids.length) - return; + if (!ids.length) return; return new Promise((resolve, reject) => { - request.post('https://esi.evetech.net/latest/universe/names/', + request.post( + "https://esi.evetech.net/latest/universe/names/", { json: true, - body: ids - } - , (error, response, body) => { - if (error) { - sails.log.error(`[Swagger.names] ${error}`); - reject(error); - } - - if (!body) - return reject(); - - resolve(body); - }); + body: ids, + }, + (error, response, body) => { + if (error) { + sails.log.error(`[Swagger.names] ${error}`); + reject(error); + } + + if (!body) return reject(); + + resolve(body); + }, + ); }); }, async character(characterId) { - if (!characterId) - return; + if (!characterId) return; let localCharacter = await Character.findOne(characterId); @@ -107,38 +108,41 @@ module.exports = { let { name, corporation_id: corporationId, - alliance_id: allianceId + alliance_id: allianceId, } = await ESI.request(`/characters/${characterId}`); let alliance = await Swagger.alliance(allianceId), - corporation = await Swagger.corporation(corporationId, alliance), - lastEsiUpdate = new Date().toISOString(); + corporation = await Swagger.corporation(corporationId, alliance), + lastEsiUpdate = new Date().toISOString(); localCharacter = await Character.create({ id: characterId, name, lastEsiUpdate, corporation: corporation ? corporation.id : null, - alliance: alliance ? alliance.id : null + alliance: alliance ? alliance.id : null, }) - .intercept('E_UNIQUE', (e) => { - sails.log.error(`[Swagger.character] Race condition: Tried to create a character that already exists.`); - sails.log.error(`[Swagger.character] characterId: ${characterId}`); - - return e; - }) - .fetch(); + .intercept("E_UNIQUE", (e) => { + sails.log.error( + `[Swagger.character] Race condition: Tried to create a character that already exists.`, + ); + sails.log.error(`[Swagger.character] characterId: ${characterId}`); + + return e; + }) + .fetch(); } else { let lastEsiUpdate = moment(localCharacter.lastEsiUpdate), - now = moment(); + now = moment(); let diff = now.diff(lastEsiUpdate); - let maxCacheTime = parseInt(process.env.CACHE_CHARACTERS_IN_DAYS) * 24 * 60 * 60 * 1000; + let maxCacheTime = + parseInt(process.env.CACHE_CHARACTERS_IN_DAYS) * 24 * 60 * 60 * 1000; if (diff > maxCacheTime) { let { corporation_id: corporationId = null, - alliance_id: allianceId = null + alliance_id: allianceId = null, } = await ESI.request(`/characters/${characterId}`); let alliance = await Swagger.alliance(allianceId), @@ -147,7 +151,7 @@ module.exports = { localCharacter = await Character.update(characterId, { corporation: corporation ? corporation.id : null, alliance: alliance ? alliance.id : null, - lastEsiUpdate: now.toISOString() + lastEsiUpdate: now.toISOString(), }).fetch(); localCharacter = _.first(localCharacter); @@ -158,8 +162,7 @@ module.exports = { }, async stargate(stargateId) { - if (!stargateId) - return; + if (!stargateId) return; let localStargate = await Stargate.findOne({ stargateId }); @@ -169,7 +172,7 @@ module.exports = { localStargate = await Stargate.create({ stargateId: stargate.stargate_id, - name: stargate.name + name: stargate.name, }).fetch(); } @@ -177,34 +180,37 @@ module.exports = { }, async corporation(corporationId, allianceRecord) { - if (!corporationId) - return; + if (!corporationId) return; let localCorporation = await Corporation.findOne(corporationId); if (!localCorporation) { - let { name, - ticker, - member_count: memberCount - } = await ESI.request(`/corporations/${corporationId}`); + let { + name, + ticker, + member_count: memberCount, + } = await ESI.request(`/corporations/${corporationId}`); localCorporation = await Corporation.create({ id: corporationId, name, ticker, memberCount, - alliance: allianceRecord ? allianceRecord.id : null + alliance: allianceRecord ? allianceRecord.id : null, }) - .intercept('E_UNIQUE', (e) => { sails.log.error(`[Swagger.corporation] Race condition: Tried to create a corporation that already exists. ${e}`) }) - .fetch(); + .intercept("E_UNIQUE", (e) => { + sails.log.error( + `[Swagger.corporation] Race condition: Tried to create a corporation that already exists. ${e}`, + ); + }) + .fetch(); } return localCorporation; }, async alliance(allianceId) { - if (!allianceId) - return; + if (!allianceId) return; let localAlliance = await Alliance.findOne(allianceId); @@ -212,7 +218,11 @@ module.exports = { let { name, ticker } = await ESI.request(`/alliances/${allianceId}`); localAlliance = await Alliance.create({ id: allianceId, name, ticker }) - .intercept('E_UNIQUE', (e) => { sails.log.error(`[Swagger.alliance] Race condition: Tried to create an alliance that already exists. ${e}`) }) + .intercept("E_UNIQUE", (e) => { + sails.log.error( + `[Swagger.alliance] Race condition: Tried to create an alliance that already exists. ${e}`, + ); + }) .fetch(); } @@ -223,6 +233,5 @@ module.exports = { let package = await ESI.request(`/killmails/${id}/${hash}`); return package; - } - + }, }; diff --git a/api/services/ZkillResolve.js b/api/services/ZkillResolve.js index e37d07b..10a878d 100644 --- a/api/services/ZkillResolve.js +++ b/api/services/ZkillResolve.js @@ -6,23 +6,26 @@ */ const _sdeFailure = (e) => { - sails.log.error(`[${new Date().toLocaleTimeString()}] [ZkillResolve] SDE failure.`); + sails.log.error( + `[${new Date().toLocaleTimeString()}] [ZkillResolve] SDE failure.`, + ); sails.log.error(e); sails.config.sentinel.failures.sentinel++; return; -} +}; const _esiFailure = (e) => { - sails.log.error(`[${new Date().toLocaleTimeString()}] [ZkillResolve] ESI failure.`); + sails.log.error( + `[${new Date().toLocaleTimeString()}] [ZkillResolve] ESI failure.`, + ); sails.log.error(e); sails.config.sentinel.failures.esi++; return; -} +}; -let moment = require('moment'); +let moment = require("moment"); module.exports = { - async kill(killmail) { let { killmail_id: killId, @@ -32,36 +35,42 @@ module.exports = { character_id: characterId, items, position, - ship_type_id: shipTypeId + ship_type_id: shipTypeId, }, attackers, - zkb: meta + zkb: meta, } = killmail; // Check for local record. If it exists, cancel further logic. let existingRecord = await Kill.findOne({ killId }); if (existingRecord) { - return sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Ignoring ${killId} - already in database.`); + return sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Ignoring ${killId} - already in database.`, + ); } if (!characterId || !shipTypeId || !systemId) { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Issue with record: characterId ${characterId} || shipTypeId ${shipTypeId} || systemId ${systemId}`); - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Cancelling resolve.`); + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Issue with record: characterId ${characterId} || shipTypeId ${shipTypeId} || systemId ${systemId}`, + ); + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Cancelling resolve.`, + ); return; } let { id: ship } = await Type.findOne(shipTypeId).catch(_sdeFailure); - let { id: victim } = await Swagger.character(characterId).catch(_esiFailure); + let { id: victim } = + await Swagger.character(characterId).catch(_esiFailure); let { id: system } = await System.findOne(systemId).catch(_sdeFailure); let positionName = await Resolver.position(position, systemId); let composition = {}; attackers.map(({ character_id, ship_type_id }) => { - if (character_id !== undefined) - composition[character_id] = ship_type_id; + if (character_id !== undefined) composition[character_id] = ship_type_id; }); let kill = await Kill.create({ @@ -74,36 +83,39 @@ module.exports = { meta, ship, victim, - system + system, }) - .intercept('E_UNIQUE', (e) => { - sails.config.sentinel.failures.sentinel++; + .intercept("E_UNIQUE", (e) => { + sails.config.sentinel.failures.sentinel++; - return sails.log.error(`[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Race condition: Tried to create a kill that already exists. ${e}`) - }) - .fetch(); + return sails.log.error( + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Race condition: Tried to create a kill that already exists. ${e}`, + ); + }) + .fetch(); let now = moment(), - then = moment(time), - fleet; + then = moment(time), + fleet; - let elapsedTime = now.diff(then, 'minutes'); + let elapsedTime = now.diff(then, "minutes"); - if (process.env.TRACK_FLEETS === 'true' && elapsedTime < parseInt(process.env.FLEET_EXPIRY_IN_MINUTES)) + if ( + process.env.TRACK_FLEETS === "true" && + elapsedTime < parseInt(process.env.FLEET_EXPIRY_IN_MINUTES) + ) fleet = await Identifier.fleet(killmail, system, kill); kill = await Kill.findOne(kill.id) - .populate('ship') - .populate('victim') - .populate('system') - .populate('fleet'); + .populate("ship") + .populate("victim") + .populate("system") + .populate("fleet"); - if (fleet) - Dispatcher.notifySockets(fleet, 'fleet'); + if (fleet) Dispatcher.notifySockets(fleet, "fleet"); - Dispatcher.notifySockets(kill, 'kill'); + Dispatcher.notifySockets(kill, "kill"); return kill; - } - + }, }; diff --git a/api/services/ZkillSocket.js b/api/services/ZkillSocket.js index caf54db..e54d0c4 100644 --- a/api/services/ZkillSocket.js +++ b/api/services/ZkillSocket.js @@ -1,101 +1,124 @@ -/** - * ZkillSocket - * - * @description :: Interface to zKillboard's Websocket service. - * @help :: See https://github.com/zKillboard/zKillboard/wiki/Websocket - */ - -const WebSocket = require('ws'); - -let ZkillSocket = { - - connect() { - this.socket = new WebSocket('wss://zkillboard.com:2096'); - - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Initializing new socket instance.`); - - this.initialize(); - }, - - ping() { - this.socket.ping(); - }, - - initialize() { - // Set up heartbeat. - if (this.heartbeatCheck) { - clearInterval(this.heartbeatCheck); - } - - this.isAlive = true; - - this.heartbeatCheck = setInterval(() => { - if (!this.isAlive) { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] No heartbeat detected in over 30 seconds.`); - - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Will attempt to reconnect in 10 seconds.`); - - sails.config.sentinel.connected = false; - sails.config.sentinel.failures.zkill++; - - return setTimeout(this.connect, 10000); - } - - this.isAlive = false; - - this.ping(); - }, 30000); - - this.socket.on('pong', () => { - this.isAlive = true; - - sails.config.sentinel.connected = true; - - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Heartbeat response received from Zkill.`); - }); - - // Subscribe to the full killstream. - this.socket.on('open', () => { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Connected.`); - sails.config.sentinel.connected = true; - - this.socket.send(JSON.stringify({ - action: 'sub', - channel: 'killstream' - })); - }); - - this.socket.on('message', async(data) => { - let package = await Package.create({ body: data }).fetch(); - - let job = sails.config.jobs.create('process_zkill_package', { id: package.id }); - - // Failure/backoff strategy - job.attempts(3).backoff({ type: 'exponential' }); - - job.on('failed', function(err) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${package.id} failed`); - sails.log.error(err); - }); - - job.save(); - }); - - this.socket.on('close', (code, reason) => { - sails.log.error(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Connection was closed: ${code} ${reason}`); - - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Attempting to re-establish...`); - - setTimeout(this.connect, 10000); - }); - - this.socket.on('error', (error) => { - sails.log.error(`[${new Date().toLocaleTimeString()}] [ZkillSocket] Error from Zkill:`, error); - }); - - sails.log.debug(`[${new Date().toLocaleTimeString()}] [ZkillSocket] All message handlers initialized.`); - }, - -}; - -module.exports = ZkillSocket; +/** + * ZkillSocket + * + * @description :: Interface to zKillboard's Websocket service. + * @help :: See https://github.com/zKillboard/zKillboard/wiki/Websocket + */ + +const WebSocket = require("ws"); + +let ZkillSocket = { + connect() { + this.socket = new WebSocket("wss://zkillboard.com:2096"); + + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Initializing new socket instance.`, + ); + + this.initialize(); + }, + + ping() { + this.socket.ping(); + }, + + initialize() { + // Set up heartbeat. + if (this.heartbeatCheck) { + clearInterval(this.heartbeatCheck); + } + + this.isAlive = true; + + this.heartbeatCheck = setInterval(() => { + if (!this.isAlive) { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] No heartbeat detected in over 30 seconds.`, + ); + + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Will attempt to reconnect in 10 seconds.`, + ); + + sails.config.sentinel.connected = false; + sails.config.sentinel.failures.zkill++; + + return setTimeout(this.connect, 10000); + } + + this.isAlive = false; + + this.ping(); + }, 30000); + + this.socket.on("pong", () => { + this.isAlive = true; + + sails.config.sentinel.connected = true; + + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Heartbeat response received from Zkill.`, + ); + }); + + // Subscribe to the full killstream. + this.socket.on("open", () => { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Connected.`, + ); + sails.config.sentinel.connected = true; + + this.socket.send( + JSON.stringify({ + action: "sub", + channel: "killstream", + }), + ); + }); + + this.socket.on("message", async (data) => { + let package = await Package.create({ body: data }).fetch(); + + let job = sails.config.jobs.create("process_zkill_package", { + id: package.id, + }); + + // Failure/backoff strategy + job.attempts(3).backoff({ type: "exponential" }); + + job.on("failed", function (err) { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${package.id} failed`, + ); + sails.log.error(err); + }); + + job.save(); + }); + + this.socket.on("close", (code, reason) => { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Connection was closed: ${code} ${reason}`, + ); + + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Attempting to re-establish...`, + ); + + setTimeout(this.connect, 10000); + }); + + this.socket.on("error", (error) => { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Error from Zkill:`, + error, + ); + }); + + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [ZkillSocket] All message handlers initialized.`, + ); + }, +}; + +module.exports = ZkillSocket; diff --git a/api/services/ZkillStats.js b/api/services/ZkillStats.js index 05fd389..4809308 100644 --- a/api/services/ZkillStats.js +++ b/api/services/ZkillStats.js @@ -5,60 +5,68 @@ * @help :: https://esi.tech.ccp.is/ui/ */ -const request = require('request'); +const request = require("request"); module.exports = { - character(characterId) { return new Promise((resolve, reject) => { - request({ - url: `https://zkillboard.com/api/stats/characterID/${characterId}/`, - method: 'GET', - headers: { - 'User-Agent': 'https://gloss.space' + request( + { + url: `https://zkillboard.com/api/stats/characterID/${characterId}/`, + method: "GET", + headers: { + "User-Agent": "https://gloss.space", + }, + json: true, + gzip: true, }, - json: true, - gzip: true - }, (error, response, body) => { - if (error || !body) { - if (!response) { - sails.log.error(`[ZkillStats.character] No response at all.`); + (error, response, body) => { + if (error || !body) { + if (!response) { + sails.log.error(`[ZkillStats.character] No response at all.`); + return reject(); + } + + sails.log.error( + `[ZkillStats.character] ${response.statusCode} ${error}`, + ); return reject(); } - sails.log.error(`[ZkillStats.character] ${response.statusCode} ${error}`); - return reject(); - } - - return resolve(body); - }); + return resolve(body); + }, + ); }); }, history(date) { return new Promise((resolve, reject) => { - request({ - url: `https://zkillboard.com/api/history/${date}/`, - method: 'GET', - headers: { - 'User-Agent': 'https://gloss.space' + request( + { + url: `https://zkillboard.com/api/history/${date}/`, + method: "GET", + headers: { + "User-Agent": "https://gloss.space", + }, + json: true, + gzip: true, }, - json: true, - gzip: true - }, (error, response, body) => { - if (error || !body) { - if (!response) { - sails.log.error(`[ZkillStats.history] No response at all.`); + (error, response, body) => { + if (error || !body) { + if (!response) { + sails.log.error(`[ZkillStats.history] No response at all.`); + return reject(); + } + + sails.log.error( + `[ZkillStats.history] ${response.statusCode} ${error}`, + ); return reject(); } - sails.log.error(`[ZkillStats.history] ${response.statusCode} ${error}`); - return reject(); - } - - return resolve(body); - }); + return resolve(body); + }, + ); }); - } - + }, }; diff --git a/app.js b/app.js index f2c5f4e..391fdde 100644 --- a/app.js +++ b/app.js @@ -20,35 +20,43 @@ * https://sailsjs.com/anatomy/app.js */ - // Ensure we're in the project directory, so cwd-relative paths work as expected // no matter where we actually lift from. // > Note: This is not required in order to lift, but it is a convenient default. process.chdir(__dirname); - - // Attempt to import `sails` dependency, as well as `rc` (for loading `.sailsrc` files). var sails; var rc; try { - sails = require('sails'); - rc = require('sails/accessible/rc'); + sails = require("sails"); + rc = require("sails/accessible/rc"); } catch (err) { - console.error('Encountered an error when attempting to require(\'sails\'):'); + console.error("Encountered an error when attempting to require('sails'):"); console.error(err.stack); - console.error('--'); - console.error('To run an app using `node app.js`, you need to have Sails installed'); - console.error('locally (`./node_modules/sails`). To do that, just make sure you\'re'); - console.error('in the same directory as your app and run `npm install`.'); + console.error("--"); + console.error( + "To run an app using `node app.js`, you need to have Sails installed", + ); + console.error( + "locally (`./node_modules/sails`). To do that, just make sure you're", + ); + console.error("in the same directory as your app and run `npm install`."); console.error(); - console.error('If Sails is installed globally (i.e. `npm install -g sails`) you can'); - console.error('also run this app with `sails lift`. Running with `sails lift` will'); - console.error('not run this file (`app.js`), but it will do exactly the same thing.'); - console.error('(It even uses your app directory\'s local Sails install, if possible.)'); + console.error( + "If Sails is installed globally (i.e. `npm install -g sails`) you can", + ); + console.error( + "also run this app with `sails lift`. Running with `sails lift` will", + ); + console.error( + "not run this file (`app.js`), but it will do exactly the same thing.", + ); + console.error( + "(It even uses your app directory's local Sails install, if possible.)", + ); return; -}//-• - +} //-• // Start server -sails.lift(rc('sails')); +sails.lift(rc("sails")); diff --git a/config/blueprints.js b/config/blueprints.js index 92d69d2..372d77b 100644 --- a/config/blueprints.js +++ b/config/blueprints.js @@ -10,34 +10,32 @@ */ module.exports.blueprints = { - /*************************************************************************** - * * - * Automatically expose implicit routes for every action in your app? * - * * - ***************************************************************************/ + * * + * Automatically expose implicit routes for every action in your app? * + * * + ***************************************************************************/ actions: false, /*************************************************************************** - * * - * Automatically expose RESTful routes for your models? * - * * - ***************************************************************************/ + * * + * Automatically expose RESTful routes for your models? * + * * + ***************************************************************************/ rest: true, - prefix: '/api/sentinel', + prefix: "/api/sentinel", pluralize: true, /*************************************************************************** - * * - * Automatically expose CRUD "shortcut" routes to GET requests? * - * (These are enabled by default in development only.) * - * * - ***************************************************************************/ + * * + * Automatically expose CRUD "shortcut" routes to GET requests? * + * (These are enabled by default in development only.) * + * * + ***************************************************************************/ shortcuts: false, - }; diff --git a/config/custom.js b/config/custom.js index 827e3bf..d639186 100644 --- a/config/custom.js +++ b/config/custom.js @@ -9,15 +9,13 @@ */ module.exports.custom = { - /*************************************************************************** - * * - * Any other custom config this Sails app should use during development. * - * * - ***************************************************************************/ + * * + * Any other custom config this Sails app should use during development. * + * * + ***************************************************************************/ // mailgunDomain: 'transactional-mail.example.com', // mailgunSecret: 'key-testkeyb183848139913858e8abd9a3', // stripeSecret: 'sk_test_Zzd814nldl91104qor5911gjald', // … - }; diff --git a/config/datastores.js b/config/datastores.js index b32ef5c..d67c0e6 100644 --- a/config/datastores.js +++ b/config/datastores.js @@ -14,41 +14,39 @@ */ module.exports.datastores = { - sentinel: { - adapter: 'sails-postgresql', - host: 'localhost', + adapter: "sails-postgresql", + host: "localhost", port: 5432, - database: 'sentinel', - user: 'sentinel', - password: 'sentinel' + database: "sentinel", + user: "sentinel", + password: "sentinel", }, sentinelDev: { - adapter: 'sails-postgresql', - host: 'localhost', + adapter: "sails-postgresql", + host: "localhost", port: 5432, - database: 'sentinel_dev', - user: 'sentinel', - password: 'sentinel' + database: "sentinel_dev", + user: "sentinel", + password: "sentinel", }, sde: { - adapter: 'sails-postgresql', - host: 'localhost', + adapter: "sails-postgresql", + host: "localhost", port: 5432, - database: 'eve', - user: 'eve', - password: 'eve' + database: "eve", + user: "eve", + password: "eve", }, sdeDev: { - adapter: 'sails-postgresql', - host: 'localhost', + adapter: "sails-postgresql", + host: "localhost", port: 5432, - database: 'eve_dev', - user: 'eve', - password: 'eve' - } - + database: "eve_dev", + user: "eve", + password: "eve", + }, }; diff --git a/config/env/development.js b/config/env/development.js index c0b9a3b..23e8702 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -7,13 +7,11 @@ */ module.exports = { - models: { - datastore: 'sentinelDev' + datastore: "sentinelDev", }, port: 8101, - hookTimeout: 60000 - + hookTimeout: 60000, }; diff --git a/config/env/production.js b/config/env/production.js index 245c50c..34db825 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -20,111 +20,105 @@ */ module.exports = { - /************************************************************************** - * * - * Tell Sails what database(s) it should use in production. * - * * - * (https://sailsjs.com/config/datastores) * - * * - **************************************************************************/ + * * + * Tell Sails what database(s) it should use in production. * + * * + * (https://sailsjs.com/config/datastores) * + * * + **************************************************************************/ models: { - - datastore: 'sentinel', + datastore: "sentinel", /*************************************************************************** - * * - * To help avoid accidents, Sails automatically sets the automigration * - * strategy to "safe" when your app lifts in production mode. * - * (This is just here as a reminder.) * - * * - * More info: * - * https://sailsjs.com/docs/concepts/models-and-orm/model-settings#?migrate * - * * - ***************************************************************************/ - migrate: 'safe', + * * + * To help avoid accidents, Sails automatically sets the automigration * + * strategy to "safe" when your app lifts in production mode. * + * (This is just here as a reminder.) * + * * + * More info: * + * https://sailsjs.com/docs/concepts/models-and-orm/model-settings#?migrate * + * * + ***************************************************************************/ + migrate: "safe", /*************************************************************************** - * * - * If, in production, this app has access to physical-layer CASCADE * - * constraints (e.g. PostgreSQL or MySQL), then set those up in the * - * database and uncomment this to disable Waterline's `cascadeOnDestroy` * - * polyfill. (Otherwise, if you are using a databse like Mongo, you might * - * choose to keep this enabled.) * - * * - ***************************************************************************/ + * * + * If, in production, this app has access to physical-layer CASCADE * + * constraints (e.g. PostgreSQL or MySQL), then set those up in the * + * database and uncomment this to disable Waterline's `cascadeOnDestroy` * + * polyfill. (Otherwise, if you are using a databse like Mongo, you might * + * choose to keep this enabled.) * + * * + ***************************************************************************/ // cascadeOnDestroy: false, - }, /************************************************************************** - * * - * Always disable "shortcut" blueprint routes. * - * * - * > You'll also want to disable any other blueprint routes if you are not * - * > actually using them (e.g. "actions" and "rest") -- but you can do * - * > that in `config/blueprints.js`, since you'll want to disable them in * - * > all environments (not just in production.) * - * * - ***************************************************************************/ + * * + * Always disable "shortcut" blueprint routes. * + * * + * > You'll also want to disable any other blueprint routes if you are not * + * > actually using them (e.g. "actions" and "rest") -- but you can do * + * > that in `config/blueprints.js`, since you'll want to disable them in * + * > all environments (not just in production.) * + * * + ***************************************************************************/ blueprints: { shortcuts: false, }, /*************************************************************************** - * * - * Configure your security settings for production. * - * * - * IMPORTANT: * - * If web browsers will be communicating with your app, be sure that * - * you have CSRF protection enabled. To do that, set `csrf: true` over * - * in the `config/security.js` file (not here), so that CSRF app can be * - * tested with CSRF protection turned on in development mode too. * - * * - ***************************************************************************/ + * * + * Configure your security settings for production. * + * * + * IMPORTANT: * + * If web browsers will be communicating with your app, be sure that * + * you have CSRF protection enabled. To do that, set `csrf: true` over * + * in the `config/security.js` file (not here), so that CSRF app can be * + * tested with CSRF protection turned on in development mode too. * + * * + ***************************************************************************/ security: { - /*************************************************************************** - * * - * If this app has CORS enabled (see `config/security.js`) with the * - * `allowCredentials` setting enabled, then you should uncomment the * - * `allowOrigins` whitelist below. This sets which "origins" are allowed * - * to send cross-domain (CORS) requests to your Sails app. * - * * - * > Replace "https://example.com" with the URL of your production server. * - * > Be sure to use the right protocol! ("http://" vs. "https://") * - * * - ***************************************************************************/ + * * + * If this app has CORS enabled (see `config/security.js`) with the * + * `allowCredentials` setting enabled, then you should uncomment the * + * `allowOrigins` whitelist below. This sets which "origins" are allowed * + * to send cross-domain (CORS) requests to your Sails app. * + * * + * > Replace "https://example.com" with the URL of your production server. * + * > Be sure to use the right protocol! ("http://" vs. "https://") * + * * + ***************************************************************************/ cors: { // allowOrigins: [ // 'https://example.com', // ] }, - }, /************************************************************************** - * * - * Set up Socket.io for your production environment. * - * * - * (https://sailsjs.com/config/sockets) * - * * - * > If you have disabled the "sockets" hook, then you can safely remove * - * > this section from your `config/env/production.js` file. * - * * - ***************************************************************************/ + * * + * Set up Socket.io for your production environment. * + * * + * (https://sailsjs.com/config/sockets) * + * * + * > If you have disabled the "sockets" hook, then you can safely remove * + * > this section from your `config/env/production.js` file. * + * * + ***************************************************************************/ sockets: { - /*************************************************************************** - * * - * Uncomment the `onlyAllowOrigins` whitelist below to configure which * - * "origins" are allowed to open socket connections to your Sails app. * - * * - * > Replace "https://example.com" etc. with the URL(s) of your app. * - * > Be sure to use the right protocol! ("http://" vs. "https://") * - * * - ***************************************************************************/ + * * + * Uncomment the `onlyAllowOrigins` whitelist below to configure which * + * "origins" are allowed to open socket connections to your Sails app. * + * * + * > Replace "https://example.com" etc. with the URL(s) of your app. * + * > Be sure to use the right protocol! ("http://" vs. "https://") * + * * + ***************************************************************************/ // onlyAllowOrigins: [ // 'http://127.0.0.1', // 'http://127.0.0.1:8080', @@ -135,20 +129,18 @@ module.exports = { // 'http://localhost', // 'http://localhost:8080' // ], - - /*************************************************************************** - * * - * If you are deploying a cluster of multiple servers and/or processes, * - * then uncomment the following lines. This tells Socket.io about a Redis * - * server it can use to help it deliver broadcasted socket messages. * - * * - * > Be sure you have a compatible version of socket.io-redis installed! * - * > (See https://sailsjs.com/config/sockets for the latest version info) * - * * - * (https://sailsjs.com/docs/concepts/deployment/scaling) * - * * - ***************************************************************************/ + * * + * If you are deploying a cluster of multiple servers and/or processes, * + * then uncomment the following lines. This tells Socket.io about a Redis * + * server it can use to help it deliver broadcasted socket messages. * + * * + * > Be sure you have a compatible version of socket.io-redis installed! * + * > (See https://sailsjs.com/config/sockets for the latest version info) * + * * + * (https://sailsjs.com/docs/concepts/deployment/scaling) * + * * + ***************************************************************************/ // adapter: 'socket.io-redis', // url: 'redis://user:password@bigsquid.redistogo.com:9562/dbname', //-------------------------------------------------------------------------- @@ -160,89 +152,86 @@ module.exports = { // sails_sockets__url=redis://admin:myc00lpAssw2D@bigsquid.redistogo.com:9562/ // ``` //-------------------------------------------------------------------------- - }, /************************************************************************** - * * - * Set the production log level. * - * * - * (https://sailsjs.com/config/log) * - * * - ***************************************************************************/ + * * + * Set the production log level. * + * * + * (https://sailsjs.com/config/log) * + * * + ***************************************************************************/ log: { - level: 'error' + level: "error", }, http: { - /*************************************************************************** - * * - * The number of milliseconds to cache static assets in production. * - * (the "max-age" to include in the "Cache-Control" response header) * - * * - ***************************************************************************/ + * * + * The number of milliseconds to cache static assets in production. * + * (the "max-age" to include in the "Cache-Control" response header) * + * * + ***************************************************************************/ cache: 365.25 * 24 * 60 * 60 * 1000, // One year /*************************************************************************** - * * - * Proxy settings * - * * - * If your app will be deployed behind a proxy/load balancer - for example, * - * on a PaaS like Heroku - then uncomment the `trustProxy` setting below. * - * This tells Sails/Express how to interpret X-Forwarded headers. * - * * - * This setting is especially important if you are using secure cookies * - * (see the `cookies: secure` setting under `session` above) or if your app * - * relies on knowing the original IP address that a request came from. * - * * - * (https://sailsjs.com/config/http) * - * * - ***************************************************************************/ + * * + * Proxy settings * + * * + * If your app will be deployed behind a proxy/load balancer - for example, * + * on a PaaS like Heroku - then uncomment the `trustProxy` setting below. * + * This tells Sails/Express how to interpret X-Forwarded headers. * + * * + * This setting is especially important if you are using secure cookies * + * (see the `cookies: secure` setting under `session` above) or if your app * + * relies on knowing the original IP address that a request came from. * + * * + * (https://sailsjs.com/config/http) * + * * + ***************************************************************************/ // trustProxy: true, - }, /************************************************************************** - * * - * Lift the server on port 80. * - * (if deploying behind a proxy, or to a PaaS like Heroku or Deis, you * - * probably don't need to set a port here, because it is oftentimes * - * handled for you automatically. If you are not sure if you need to set * - * this, just try deploying without setting it and see if it works.) * - * * - ***************************************************************************/ + * * + * Lift the server on port 80. * + * (if deploying behind a proxy, or to a PaaS like Heroku or Deis, you * + * probably don't need to set a port here, because it is oftentimes * + * handled for you automatically. If you are not sure if you need to set * + * this, just try deploying without setting it and see if it works.) * + * * + ***************************************************************************/ port: 8081, /************************************************************************** - * * - * Configure an SSL certificate * - * * - * For the safety of your users' data, you should use SSL in production. * - * ...But in many cases, you may not actually want to set it up _here_. * - * * - * Normally, this setting is only relevant when running a single-process * - * deployment, with no proxy/load balancer in the mix. But if, on the * - * other hand, you are using a PaaS like Heroku, you'll want to set up * - * SSL in your load balancer settings (usually somewhere in your hosting * - * provider's dashboard-- not here.) * - * * - * > For more information about configuring SSL in Sails, see: * - * > https://sailsjs.com/config/*#?sailsconfigssl * - * * - **************************************************************************/ + * * + * Configure an SSL certificate * + * * + * For the safety of your users' data, you should use SSL in production. * + * ...But in many cases, you may not actually want to set it up _here_. * + * * + * Normally, this setting is only relevant when running a single-process * + * deployment, with no proxy/load balancer in the mix. But if, on the * + * other hand, you are using a PaaS like Heroku, you'll want to set up * + * SSL in your load balancer settings (usually somewhere in your hosting * + * provider's dashboard-- not here.) * + * * + * > For more information about configuring SSL in Sails, see: * + * > https://sailsjs.com/config/*#?sailsconfigssl * + * * + **************************************************************************/ // ssl: undefined, /************************************************************************** - * * - * Production overrides for any custom settings specific to your app. * - * (for example, production credentials for 3rd party APIs like Stripe) * - * * - * > See config/custom.js for more info on how to configure these options. * - * * - ***************************************************************************/ + * * + * Production overrides for any custom settings specific to your app. * + * (for example, production credentials for 3rd party APIs like Stripe) * + * * + * > See config/custom.js for more info on how to configure these options. * + * * + ***************************************************************************/ custom: { - baseUrl: 'http://gloss.space/api/sentinel' + baseUrl: "http://gloss.space/api/sentinel", // baseUrl: 'https://example.com', // internalEmailAddress: 'support@example.com', @@ -260,9 +249,5 @@ module.exports = { // sails_custom__stripeSecret=sk_prod__fake_Nfgh82401348jaDa3lkZ0d9Hm // ``` //-------------------------------------------------------------------------- - }, - - - }; diff --git a/config/globals.js b/config/globals.js index 3d02107..b8257af 100644 --- a/config/globals.js +++ b/config/globals.js @@ -10,43 +10,41 @@ */ module.exports.globals = { - /**************************************************************************** - * * - * Whether to expose the locally-installed `lodash` as a global variable * - * (`_`), making it accessible throughout your app. * - * (See the link above for help.) * - * * - ****************************************************************************/ + * * + * Whether to expose the locally-installed `lodash` as a global variable * + * (`_`), making it accessible throughout your app. * + * (See the link above for help.) * + * * + ****************************************************************************/ - _: require('lodash'), + _: require("lodash"), /**************************************************************************** - * * - * Whether to expose the locally-installed `async` as a global variable * - * (`async`), making it accessible throughout your app. * - * (See the link above for help.) * - * * - ****************************************************************************/ + * * + * Whether to expose the locally-installed `async` as a global variable * + * (`async`), making it accessible throughout your app. * + * (See the link above for help.) * + * * + ****************************************************************************/ - async: require('async'), + async: require("async"), /**************************************************************************** - * * - * Whether to expose each of your app's models as global variables. * - * (See the link at the top of this file for more information.) * - * * - ****************************************************************************/ + * * + * Whether to expose each of your app's models as global variables. * + * (See the link at the top of this file for more information.) * + * * + ****************************************************************************/ models: true, /**************************************************************************** - * * - * Whether to expose the Sails app instance as a global variable (`sails`), * - * making it accessible throughout your app. * - * * - ****************************************************************************/ + * * + * Whether to expose the Sails app instance as a global variable (`sails`), * + * making it accessible throughout your app. * + * * + ****************************************************************************/ sails: true, - }; diff --git a/config/http.js b/config/http.js index 3cf438f..0db822c 100644 --- a/config/http.js +++ b/config/http.js @@ -10,25 +10,22 @@ */ module.exports.http = { - /**************************************************************************** - * * - * Sails/Express middleware to run for every HTTP request. * - * (Only applies to HTTP requests -- not virtual WebSocket requests.) * - * * - * https://sailsjs.com/documentation/concepts/middleware * - * * - ****************************************************************************/ + * * + * Sails/Express middleware to run for every HTTP request. * + * (Only applies to HTTP requests -- not virtual WebSocket requests.) * + * * + * https://sailsjs.com/documentation/concepts/middleware * + * * + ****************************************************************************/ middleware: { - /*************************************************************************** - * * - * The order in which middleware should be run for HTTP requests. * - * (This Sails app's routes are handled by the "router" middleware below.) * - * * - ***************************************************************************/ - + * * + * The order in which middleware should be run for HTTP requests. * + * (This Sails app's routes are handled by the "router" middleware below.) * + * * + ***************************************************************************/ // order: [ // 'cookieParser', // 'session', @@ -39,22 +36,17 @@ module.exports.http = { // 'www', // 'favicon', // ], - - /*************************************************************************** - * * - * The body parser that will handle incoming multipart HTTP requests. * - * * - * https://sailsjs.com/config/http#?customizing-the-body-parser * - * * - ***************************************************************************/ - + * * + * The body parser that will handle incoming multipart HTTP requests. * + * * + * https://sailsjs.com/config/http#?customizing-the-body-parser * + * * + ***************************************************************************/ // bodyParser: (function _configureBodyParser(){ // var skipper = require('skipper'); // var middlewareFn = skipper({ strict: true }); // return middlewareFn; // })(), - }, - }; diff --git a/config/i18n.js b/config/i18n.js index 0b652d2..67ca11f 100644 --- a/config/i18n.js +++ b/config/i18n.js @@ -13,33 +13,31 @@ */ module.exports.i18n = { - /*************************************************************************** - * * - * Which locales are supported? * - * * - ***************************************************************************/ + * * + * Which locales are supported? * + * * + ***************************************************************************/ - locales: ['en', 'es', 'fr', 'de'], + locales: ["en", "es", "fr", "de"], /**************************************************************************** - * * - * What is the default locale for the site? Note that this setting will be * - * overridden for any request that sends an "Accept-Language" header (i.e. * - * most browsers), but it's still useful if you need to localize the * - * response for requests made by non-browser clients (e.g. cURL). * - * * - ****************************************************************************/ + * * + * What is the default locale for the site? Note that this setting will be * + * overridden for any request that sends an "Accept-Language" header (i.e. * + * most browsers), but it's still useful if you need to localize the * + * response for requests made by non-browser clients (e.g. cURL). * + * * + ****************************************************************************/ // defaultLocale: 'en', /**************************************************************************** - * * - * Path (relative to app root) of directory to store locale (translation) * - * files in. * - * * - ****************************************************************************/ + * * + * Path (relative to app root) of directory to store locale (translation) * + * files in. * + * * + ****************************************************************************/ // localesDirectory: 'config/locales' - }; diff --git a/config/jobs.js b/config/jobs.js index defc789..c405765 100644 --- a/config/jobs.js +++ b/config/jobs.js @@ -6,218 +6,246 @@ * */ -let kue = require('kue'), - moment = require('moment'); - port = 6667, - webUiPort = 6574; +let kue = require("kue"), + moment = require("moment"); +(port = 6667), (webUiPort = 6574); -if (process.env.NODE_ENV === 'production') { +if (process.env.NODE_ENV === "production") { port = 6666; webUiPort = 6564; } let jobs = kue.createQueue({ - prefix: 'sentinel', - redis: { - host: '127.0.0.1', - port, - auth: '' - }, - disableSearch: true - }); + prefix: "sentinel", + redis: { + host: "127.0.0.1", + port, + auth: "", + }, + disableSearch: true, +}); // ui for jobs kue.app.listen(webUiPort); // give kue workers time to finish active job -process.once('SIGTERM', function() { - jobs.shutdown(function(error) { - sails.log.debug('Kue saw SIGTERM: ', error || 'ok'); +process.once("SIGTERM", function () { + jobs.shutdown(function (error) { + sails.log.debug("Kue saw SIGTERM: ", error || "ok"); process.exit(0); }, 5000); }); let _shouldTrack = (package) => { - if (package.zkb) - return !package.zkb.npc || process.env.TRACK_NPC === 'true'; + if (package.zkb) return !package.zkb.npc || process.env.TRACK_NPC === "true"; - return package.attackers.length > 1 || - (package.attackers[0].corporation_id && package.attackers[0].corporation_id > 1000200); + return ( + package.attackers.length > 1 || + (package.attackers[0].corporation_id && + package.attackers[0].corporation_id > 1000200) + ); }; function init() { - // Fleet - jobs.process('determine_fleet_health', (job, done) => { + jobs.process("determine_fleet_health", (job, done) => { let now = moment(), - fiveMinutesAgo = now.subtract(5, 'minutes').toISOString(); + fiveMinutesAgo = now.subtract(5, "minutes").toISOString(); Fleet.find({ isActive: true, - lastFleetHealthCheck : { '<=' : fiveMinutesAgo } + lastFleetHealthCheck: { "<=": fiveMinutesAgo }, }) .limit(50) - .then(async(fleets) => { + .then(async (fleets) => { for (let fleet of fleets) { let lastSeen = moment(fleet.lastSeen), - now = moment(); + now = moment(); let diff = now.diff(lastSeen); - let fleetExpireTimeInMilliseconds = parseInt(process.env.FLEET_EXPIRY_IN_MINUTES) * 60 * 1000; + let fleetExpireTimeInMilliseconds = + parseInt(process.env.FLEET_EXPIRY_IN_MINUTES) * 60 * 1000; if (diff > fleetExpireTimeInMilliseconds) { await Fleet.update(fleet.id, { isActive: false, endTime: now.toISOString(), - lastFleetHealthCheck: now.toISOString() + lastFleetHealthCheck: now.toISOString(), }); if (!fleet.system) - sails.log.error(`[Job.determineFleetHealth] No fleet.system for fleet with id ${fleet.id}.`); + sails.log.error( + `[Job.determineFleetHealth] No fleet.system for fleet with id ${fleet.id}.`, + ); fleet = await FleetSerializer.one(fleet.id); - Dispatcher.notifySockets(fleet, 'fleet_expire'); + Dispatcher.notifySockets(fleet, "fleet_expire"); } else { - await Fleet.update(fleet.id, { lastFleetHealthCheck: now.toISOString() }); + await Fleet.update(fleet.id, { + lastFleetHealthCheck: now.toISOString(), + }); } } done(null); - }) + }); }); - jobs.process('determine_fleet_threat_level', (job, done) => { + jobs.process("determine_fleet_threat_level", (job, done) => { let now = moment(), - fiveMinutesAgo = now.subtract(5, 'minutes').toISOString(); + fiveMinutesAgo = now.subtract(5, "minutes").toISOString(); Fleet.find({ - isActive: true, - lastFleetThreatLevelCheck: { '<=' : fiveMinutesAgo } - }) + isActive: true, + lastFleetThreatLevelCheck: { "<=": fiveMinutesAgo }, + }) .limit(25) - .populate('characters') - .then(async(fleets) => { + .populate("characters") + .then(async (fleets) => { for (let fleet of fleets) { if (fleet.characters.length) { - let dangerRatio = await Character.avg('dangerRatio', { fleet: fleet.id, dangerRatio: { '>' : 0 } }); + let dangerRatio = await Character.avg("dangerRatio", { + fleet: fleet.id, + dangerRatio: { ">": 0 }, + }); let lastFleetThreatLevelCheck = moment().toISOString(); - await Fleet.update(fleet.id, { dangerRatio, lastFleetThreatLevelCheck }); + await Fleet.update(fleet.id, { + dangerRatio, + lastFleetThreatLevelCheck, + }); fleet = await FleetSerializer.one(fleet.id); - Dispatcher.notifySockets(fleet, 'fleet'); + Dispatcher.notifySockets(fleet, "fleet"); } } done(); - }).catch((e) => sails.log.error(e)); + }) + .catch((e) => sails.log.error(e)); }); // Zkill - jobs.process('process_zkill_package', (job, done) => { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [Kue] Processing job for ${job.data.id}`); - - Package.findOne(job.data.id) - .then((package) => { - let resolvedPackage = JSON.parse(package.body); + jobs.process("process_zkill_package", (job, done) => { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [Kue] Processing job for ${job.data.id}`, + ); - if (!_shouldTrack(resolvedPackage)) { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Not tracking ${resolvedPackage.killmail_id}.`); + Package.findOne(job.data.id).then((package) => { + let resolvedPackage = JSON.parse(package.body); - return done(); - } + if (!_shouldTrack(resolvedPackage)) { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Not tracking ${resolvedPackage.killmail_id}.`, + ); - ZkillResolve.kill(resolvedPackage) - .then(() => { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${job.data.id} finished.`); + return done(); + } - done(); - }) - .catch((err) => { - done(err) - }); - }) + ZkillResolve.kill(resolvedPackage) + .then(() => { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${job.data.id} finished.`, + ); + + done(); + }) + .catch((err) => { + done(err); + }); + }); }); - jobs.process('backfill', ({ data: { id, hash }}, done) => { - Swagger.killmail(id, hash) - .then((package) => { - if (!_shouldTrack(package)) { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [Zkill.backfill] Not tracking ${package.killmail_id}.`); + jobs.process("backfill", ({ data: { id, hash } }, done) => { + Swagger.killmail(id, hash).then((package) => { + if (!_shouldTrack(package)) { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Not tracking ${package.killmail_id}.`, + ); - return done(); - } - - ZkillResolve.kill(package) - .then(() => { - sails.log.debug(`[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} finished.`); - sails.config.sentinel.backfill.completed++; + return done(); + } - done(); - }) - .catch((err) => { - done(err) - }); - }) + ZkillResolve.kill(package) + .then(() => { + sails.log.debug( + `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} finished.`, + ); + sails.config.sentinel.backfill.completed++; + + done(); + }) + .catch((err) => { + done(err); + }); + }); }); - jobs.process('update_danger_ratios', (job, done) => { + jobs.process("update_danger_ratios", (job, done) => { let now = moment(), - maxCacheTime = parseInt(process.env.CACHE_CHARACTERS_IN_DAYS), - threshold = now.subtract(maxCacheTime, 'days').toISOString(); + maxCacheTime = parseInt(process.env.CACHE_CHARACTERS_IN_DAYS), + threshold = now.subtract(maxCacheTime, "days").toISOString(); Character.find({ - or: [ - { lastZkillUpdate: '' }, - { lastZkillUpdate: { '<=' : threshold } } - ] - }) + or: [{ lastZkillUpdate: "" }, { lastZkillUpdate: { "<=": threshold } }], + }) .limit(10) .then((characters) => { if (characters && characters instanceof Error) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${characters}`); + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${characters}`, + ); done(characters); } for (let character of characters) { ZkillStats.character(character.id) - .then(async(stats) => { + .then(async (stats) => { let { dangerRatio } = stats, - lastZkillUpdate = new Date().toISOString(); + lastZkillUpdate = new Date().toISOString(); - await Character.update(character.id, { dangerRatio, lastZkillUpdate }); + await Character.update(character.id, { + dangerRatio, + lastZkillUpdate, + }); }) .catch((error) => { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${error}`); + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${error}`, + ); }); } done(null); - }) + }); }); // TODO: if we ever cluster the server, these jobs should be in a // worker process // Interval Jobs - if (process.env.TRACK_ENABLED === 'true') { - require('../jobs/ZkillJobs').kickoff(); - require('../jobs/FleetJobs').kickoff(); - require('../jobs/SwaggerJobs').kickoff(); + if (process.env.TRACK_ENABLED === "true") { + require("../jobs/ZkillJobs").kickoff(); + require("../jobs/FleetJobs").kickoff(); + require("../jobs/SwaggerJobs").kickoff(); } // remove jobs once completed - jobs.on('job complete', function(id) { - kue.Job.get(id, function(err, job) { + jobs.on("job complete", function (id) { + kue.Job.get(id, function (err, job) { if (err) { - console.log(`[${new Date().toLocaleTimeString()}] [Kue] Job ${id} failed: ${err}`); + console.log( + `[${new Date().toLocaleTimeString()}] [Kue] Job ${id} failed: ${err}`, + ); } - if (err) { return; } + if (err) { + return; + } job.remove(); }); }); @@ -225,7 +253,7 @@ function init() { var Jobs = { init: init, - create: jobs.create + create: jobs.create, }; module.exports.jobs = Jobs; diff --git a/config/log.js b/config/log.js index 1ef07f5..d35877b 100644 --- a/config/log.js +++ b/config/log.js @@ -11,19 +11,16 @@ */ module.exports.log = { - /*************************************************************************** - * * - * Valid `level` configs: i.e. the minimum log level to capture with * - * sails.log.*() * - * * - * The order of precedence for log levels from lowest to highest is: * - * silly, verbose, info, debug, warn, error * - * * - * You may also set the level to "silent" to suppress all logs. * - * * - ***************************************************************************/ - + * * + * Valid `level` configs: i.e. the minimum log level to capture with * + * sails.log.*() * + * * + * The order of precedence for log levels from lowest to highest is: * + * silly, verbose, info, debug, warn, error * + * * + * You may also set the level to "silent" to suppress all logs. * + * * + ***************************************************************************/ // level: 'info' - }; diff --git a/config/models.js b/config/models.js index d00dbce..3bfe30f 100644 --- a/config/models.js +++ b/config/models.js @@ -14,98 +14,92 @@ */ module.exports.models = { - - /*************************************************************************** - * * - * Whether the `.create()` and `.update()` model methods should ignore * - * (and refuse to persist) unrecognized data-- i.e. properties other than * - * those explicitly defined by attributes in the model definition. * - * * - * To ease future maintenance of your code base, it is usually a good idea * - * to set this to `true`. * - * * - * > Note that `schema: false` is not supported by every database. * - * > For example, if you are using a SQL database, then relevant models * - * > are always effectively `schema: true`. And if no `schema` setting is * - * > provided whatsoever, the behavior is left up to the database adapter. * - * > * - * > For more info, see: * - * > https://sailsjs.com/docs/concepts/orm/model-settings#?schema * - * * - ***************************************************************************/ + * * + * Whether the `.create()` and `.update()` model methods should ignore * + * (and refuse to persist) unrecognized data-- i.e. properties other than * + * those explicitly defined by attributes in the model definition. * + * * + * To ease future maintenance of your code base, it is usually a good idea * + * to set this to `true`. * + * * + * > Note that `schema: false` is not supported by every database. * + * > For example, if you are using a SQL database, then relevant models * + * > are always effectively `schema: true`. And if no `schema` setting is * + * > provided whatsoever, the behavior is left up to the database adapter. * + * > * + * > For more info, see: * + * > https://sailsjs.com/docs/concepts/orm/model-settings#?schema * + * * + ***************************************************************************/ // schema: true, - /*************************************************************************** - * * - * How and whether Sails will attempt to automatically rebuild the * - * tables/collections/etc. in your schema. * - * * - * > Note that, when running in a production environment, this will be * - * > automatically set to `migrate: 'safe'`, no matter what you configure * - * > here. This is a failsafe to prevent Sails from accidentally running * - * > auto-migrations on your production database. * - * > * - * > For more info, see: * - * > https://sailsjs.com/docs/concepts/orm/model-settings#?migrate * - * * - ***************************************************************************/ - - migrate: 'safe', + * * + * How and whether Sails will attempt to automatically rebuild the * + * tables/collections/etc. in your schema. * + * * + * > Note that, when running in a production environment, this will be * + * > automatically set to `migrate: 'safe'`, no matter what you configure * + * > here. This is a failsafe to prevent Sails from accidentally running * + * > auto-migrations on your production database. * + * > * + * > For more info, see: * + * > https://sailsjs.com/docs/concepts/orm/model-settings#?migrate * + * * + ***************************************************************************/ + + migrate: "safe", /*************************************************************************** - * * - * Base attributes that are included in all of your models by default. * - * By convention, this is your primary key attribute (`id`), as well as two * - * other timestamp attributes for tracking when records were last created * - * or updated. * - * * - * > For more info, see: * - * > https://sailsjs.com/docs/concepts/orm/model-settings#?attributes * - * * - ***************************************************************************/ - - attributes: { - createdAt: { type: 'string', autoCreatedAt: true, }, - updatedAt: { type: 'string', autoUpdatedAt: true, }, - id: { columnName: 'id', type: 'number', autoIncrement: true } + * * + * Base attributes that are included in all of your models by default. * + * By convention, this is your primary key attribute (`id`), as well as two * + * other timestamp attributes for tracking when records were last created * + * or updated. * + * * + * > For more info, see: * + * > https://sailsjs.com/docs/concepts/orm/model-settings#?attributes * + * * + ***************************************************************************/ + + attributes: { + createdAt: { type: "string", autoCreatedAt: true }, + updatedAt: { type: "string", autoUpdatedAt: true }, + id: { columnName: "id", type: "number", autoIncrement: true }, }, /****************************************************************************** - * * - * The set of DEKs (data encryption keys) for at-rest encryption. * - * i.e. when encrypting/decrypting data for attributes with `encrypt: true`. * - * * - * > The `default` DEK is used for all new encryptions, but multiple DEKs * - * > can be configured to allow for key rotation. In production, be sure to * - * > manage these keys like you would any other sensitive credential. * - * * - * > For more info, see: * - * > https://sailsjs.com/docs/concepts/orm/model-settings#?dataEncryptionKeys * - * * - ******************************************************************************/ + * * + * The set of DEKs (data encryption keys) for at-rest encryption. * + * i.e. when encrypting/decrypting data for attributes with `encrypt: true`. * + * * + * > The `default` DEK is used for all new encryptions, but multiple DEKs * + * > can be configured to allow for key rotation. In production, be sure to * + * > manage these keys like you would any other sensitive credential. * + * * + * > For more info, see: * + * > https://sailsjs.com/docs/concepts/orm/model-settings#?dataEncryptionKeys * + * * + ******************************************************************************/ dataEncryptionKeys: { - default: 'W/PubfPP/wmgjWNLF3h/nfwhQ/r90xdM0mZVsXVIPeg=' + default: "W/PubfPP/wmgjWNLF3h/nfwhQ/r90xdM0mZVsXVIPeg=", }, - /*************************************************************************** - * * - * Whether or not implicit records for associations should be cleaned up * - * automatically using the built-in polyfill. This is especially useful * - * during development with sails-disk. * - * * - * Depending on which databases you're using, you may want to disable this * - * polyfill in your production environment. * - * * - * (For production configuration, see `config/env/production.js`.) * - * * - ***************************************************************************/ - - cascadeOnDestroy: true - - + * * + * Whether or not implicit records for associations should be cleaned up * + * automatically using the built-in polyfill. This is especially useful * + * during development with sails-disk. * + * * + * Depending on which databases you're using, you may want to disable this * + * polyfill in your production environment. * + * * + * (For production configuration, see `config/env/production.js`.) * + * * + ***************************************************************************/ + + cascadeOnDestroy: true, }; diff --git a/config/policies.js b/config/policies.js index c4d1bb5..21ccc6a 100644 --- a/config/policies.js +++ b/config/policies.js @@ -9,14 +9,11 @@ */ module.exports.policies = { - /*************************************************************************** - * * - * Default policy for all controllers and actions, unless overridden. * - * (`true` allows public access) * - * * - ***************************************************************************/ - + * * + * Default policy for all controllers and actions, unless overridden. * + * (`true` allows public access) * + * * + ***************************************************************************/ // '*': true, - }; diff --git a/config/redis.js b/config/redis.js index 45a8647..0af6f48 100644 --- a/config/redis.js +++ b/config/redis.js @@ -1,8 +1,8 @@ -let redis = require('redis'), - redisUrl = 'redis://localhost:6667/'; +let redis = require("redis"), + redisUrl = "redis://localhost:6667/"; -if (process.env.NODE_ENV === 'production') { - redisUrl = 'redis://localhost:6666/'; +if (process.env.NODE_ENV === "production") { + redisUrl = "redis://localhost:6666/"; } let db = redis.createClient(redisUrl); diff --git a/config/routes.js b/config/routes.js index f7c8c43..b04587e 100644 --- a/config/routes.js +++ b/config/routes.js @@ -9,11 +9,9 @@ */ module.exports.routes = { + "GET /api/sentinel/fleets/active": "FleetController.active", - 'GET /api/sentinel/fleets/active': 'FleetController.active', - - 'GET /api/sentinel/socket': 'SocketController.connect', - - 'GET /api/sentinel/status': 'StatusController.status' + "GET /api/sentinel/socket": "SocketController.connect", + "GET /api/sentinel/status": "StatusController.status", }; diff --git a/config/security.js b/config/security.js index bd57631..39dd58b 100644 --- a/config/security.js +++ b/config/security.js @@ -14,41 +14,35 @@ */ module.exports.security = { - /*************************************************************************** - * * - * CORS is like a more modern version of JSONP-- it allows your application * - * to circumvent browsers' same-origin policy, so that the responses from * - * your Sails app hosted on one domain (e.g. example.com) can be received * - * in the client-side JavaScript code from a page you trust hosted on _some * - * other_ domain (e.g. trustedsite.net). * - * * - * For additional options and more information, see: * - * https://sailsjs.com/docs/concepts/security/cors * - * * - ***************************************************************************/ - + * * + * CORS is like a more modern version of JSONP-- it allows your application * + * to circumvent browsers' same-origin policy, so that the responses from * + * your Sails app hosted on one domain (e.g. example.com) can be received * + * in the client-side JavaScript code from a page you trust hosted on _some * + * other_ domain (e.g. trustedsite.net). * + * * + * For additional options and more information, see: * + * https://sailsjs.com/docs/concepts/security/cors * + * * + ***************************************************************************/ // cors: { // allRoutes: false, // allowOrigins: '*', // allowCredentials: false, // }, - - /**************************************************************************** - * * - * By default, Sails' built-in CSRF protection is disabled to facilitate * - * rapid development. But be warned! If your Sails app will be accessed by * - * web browsers, you should _always_ enable CSRF protection before deploying * - * to production. * - * * - * To enable CSRF protection, set this to `true`. * - * * - * For more information, see: * - * https://sailsjs.com/docs/concepts/security/csrf * - * * - ****************************************************************************/ - + * * + * By default, Sails' built-in CSRF protection is disabled to facilitate * + * rapid development. But be warned! If your Sails app will be accessed by * + * web browsers, you should _always_ enable CSRF protection before deploying * + * to production. * + * * + * To enable CSRF protection, set this to `true`. * + * * + * For more information, see: * + * https://sailsjs.com/docs/concepts/security/csrf * + * * + ****************************************************************************/ // csrf: false - }; diff --git a/config/sockets.js b/config/sockets.js index 40454c9..ff4deb4 100644 --- a/config/sockets.js +++ b/config/sockets.js @@ -10,54 +10,50 @@ */ module.exports.sockets = { - /*************************************************************************** - * * - * `transports` * - * * - * The protocols or "transports" that socket clients are permitted to * - * use when connecting and communicating with this Sails application. * - * * - * > Never change this here without also configuring `io.sails.transports` * - * > in your client-side code. If the client and the server are not using * - * > the same array of transports, sockets will not work properly. * - * > * - * > For more info, see: * - * > https://sailsjs.com/docs/reference/web-sockets/socket-client * - * * - ***************************************************************************/ + * * + * `transports` * + * * + * The protocols or "transports" that socket clients are permitted to * + * use when connecting and communicating with this Sails application. * + * * + * > Never change this here without also configuring `io.sails.transports` * + * > in your client-side code. If the client and the server are not using * + * > the same array of transports, sockets will not work properly. * + * > * + * > For more info, see: * + * > https://sailsjs.com/docs/reference/web-sockets/socket-client * + * * + ***************************************************************************/ - transports: [ 'websocket' ], + transports: ["websocket"], /*************************************************************************** - * * - * `beforeConnect` * - * * - * This custom beforeConnect function will be run each time BEFORE a new * - * socket is allowed to connect, when the initial socket.io handshake is * - * performed with the server. * - * * - * https://sailsjs.com/config/sockets#?beforeconnect * - * * - ***************************************************************************/ + * * + * `beforeConnect` * + * * + * This custom beforeConnect function will be run each time BEFORE a new * + * socket is allowed to connect, when the initial socket.io handshake is * + * performed with the server. * + * * + * https://sailsjs.com/config/sockets#?beforeconnect * + * * + ***************************************************************************/ - beforeConnect: function(handshake, proceed) { - + beforeConnect: function (handshake, proceed) { // `true` allows the socket to connect. // (`false` would reject the connection) return proceed(undefined, true); - }, - /*************************************************************************** - * * - * `afterDisconnect` * - * * - * This custom afterDisconnect function will be run each time a socket * - * disconnects * - * * - ***************************************************************************/ + * * + * `afterDisconnect` * + * * + * This custom afterDisconnect function will be run each time a socket * + * disconnects * + * * + ***************************************************************************/ // afterDisconnect: function(session, socket, done) { // @@ -67,15 +63,12 @@ module.exports.sockets = { // // }, - /*************************************************************************** - * * - * Whether to expose a 'GET /__getcookie' route that sets an HTTP-only * - * session cookie. * - * * - ***************************************************************************/ + * * + * Whether to expose a 'GET /__getcookie' route that sets an HTTP-only * + * session cookie. * + * * + ***************************************************************************/ // grant3rdPartyCookie: true, - - }; diff --git a/config/views.js b/config/views.js index 601e667..73d4ff8 100644 --- a/config/views.js +++ b/config/views.js @@ -15,27 +15,25 @@ */ module.exports.views = { - /*************************************************************************** - * * - * Extension to use for your views. When calling `res.view()` in an action, * - * you can leave this extension off. For example, calling * - * `res.view('homepage')` will (using default settings) look for a * - * `views/homepage.ejs` file. * - * * - ***************************************************************************/ + * * + * Extension to use for your views. When calling `res.view()` in an action, * + * you can leave this extension off. For example, calling * + * `res.view('homepage')` will (using default settings) look for a * + * `views/homepage.ejs` file. * + * * + ***************************************************************************/ // extension: 'ejs', /*************************************************************************** - * * - * The path (relative to the views directory, and without extension) to * - * the default layout file to use, or `false` to disable layouts entirely. * - * * - * Note that layouts only work with the built-in EJS view engine! * - * * - ***************************************************************************/ - - layout: false + * * + * The path (relative to the views directory, and without extension) to * + * the default layout file to use, or `false` to disable layouts entirely. * + * * + * Note that layouts only work with the built-in EJS view engine! * + * * + ***************************************************************************/ + layout: false, }; diff --git a/jobs/FleetJobs.js b/jobs/FleetJobs.js index 72ce9f8..f0923f9 100644 --- a/jobs/FleetJobs.js +++ b/jobs/FleetJobs.js @@ -2,7 +2,6 @@ const everyMinute = 1000 * 60; const everyThirtySeconds = everyMinute / 2; let FleetJobs = { - kickoff() { this.determineFleetHealth(); @@ -11,10 +10,13 @@ let FleetJobs = { }, determineFleetHealth() { - let job = sails.config.jobs.create('determine_fleet_health').priority('low').ttl(everyMinute); + let job = sails.config.jobs + .create("determine_fleet_health") + .priority("low") + .ttl(everyMinute); - job.on('failed', function(err) { - sails.log.error('[Fleet.determineFleetHealth] Job failed'); + job.on("failed", function (err) { + sails.log.error("[Fleet.determineFleetHealth] Job failed"); sails.log.error(err); }); @@ -22,16 +24,18 @@ let FleetJobs = { }, determineFleetThreatLevel() { - let job = sails.config.jobs.create('determine_fleet_threat_level').priority('low').ttl(everyMinute); + let job = sails.config.jobs + .create("determine_fleet_threat_level") + .priority("low") + .ttl(everyMinute); - job.on('failed', function(err) { - sails.log.error('[Fleet.determineFleetThreatlevel] Job failed'); + job.on("failed", function (err) { + sails.log.error("[Fleet.determineFleetThreatlevel] Job failed"); sails.log.error(err); }); job.save(); - } - + }, }; module.exports = FleetJobs; diff --git a/jobs/SwaggerJobs.js b/jobs/SwaggerJobs.js index 74ac94e..61fe6ce 100644 --- a/jobs/SwaggerJobs.js +++ b/jobs/SwaggerJobs.js @@ -2,10 +2,7 @@ const everyMinute = 1000 * 60; const everyFiveMinutes = everyMinute * 5; let SwaggerJobs = { - - kickoff() { - }, - + kickoff() {}, }; module.exports = SwaggerJobs; diff --git a/jobs/ZkillJobs.js b/jobs/ZkillJobs.js index 04ffb3b..32486ce 100644 --- a/jobs/ZkillJobs.js +++ b/jobs/ZkillJobs.js @@ -1,17 +1,16 @@ -const { CronJob } = require('cron'); -const moment = require('moment'); +const { CronJob } = require("cron"); +const moment = require("moment"); const everyMinute = 1000 * 60; const everyThirtySeconds = everyMinute / 2; let ZkillJobs = { - kickoff() { this.updateDangerRatios(); setInterval(this.updateDangerRatios, everyThirtySeconds); - if (process.env.BACKFILL_ENABLED === 'true') { + if (process.env.BACKFILL_ENABLED === "true") { let schedule = process.env.BACKFILL_SCHEDULE; let timezone = process.env.TIMEZONE; @@ -22,10 +21,13 @@ let ZkillJobs = { }, updateDangerRatios() { - let job = sails.config.jobs.create('update_danger_ratios').priority('low').ttl(everyMinute); + let job = sails.config.jobs + .create("update_danger_ratios") + .priority("low") + .ttl(everyMinute); - job.on('failed', function(err) { - sails.log.error('[Zkill.updateDangerRatios] Job failed'); + job.on("failed", function (err) { + sails.log.error("[Zkill.updateDangerRatios] Job failed"); sails.log.error(err); }); @@ -35,40 +37,48 @@ let ZkillJobs = { async backfill() { let backfillOffset = sails.config.sentinel.backfill.current; - console.log('Current backfill offset', backfillOffset); - console.log(typeof(backfillOffset)); + console.log("Current backfill offset", backfillOffset); + console.log(typeof backfillOffset); - let day = moment().subtract(backfillOffset, 'days').format('YYYYMMDD'); + let day = moment().subtract(backfillOffset, "days").format("YYYYMMDD"); let killHash = await ZkillStats.history(day); let killHashKeys = _.keys(killHash); let firstKill = parseInt(_.first(killHashKeys)); let lastKill = parseInt(_.last(killHashKeys)); - let { rows: missingIds } = await Kill.getDatastore() - .sendNativeQuery( - `SELECT s.i AS "killId" + let { rows: missingIds } = await Kill.getDatastore().sendNativeQuery( + `SELECT s.i AS "killId" FROM generate_series(${firstKill}, ${lastKill}) s(i) - WHERE NOT EXISTS (SELECT 1 FROM kill WHERE "killId" = s.i);` - ); + WHERE NOT EXISTS (SELECT 1 FROM kill WHERE "killId" = s.i);`, + ); let backfillIds = []; for (let row of missingIds) { - if (killHash[row.killId]) - backfillIds.push(row.killId); + if (killHash[row.killId]) backfillIds.push(row.killId); } sails.log.debug(`Backfilling for ${day}`); - sails.log.debug(`${backfillIds.length} kills to backfill (out of ${killHashKeys.length})`); - sails.log.debug(`Had ${((1 - backfillIds.length / killHashKeys.length) * 100).toFixed(2)}% before backfill.`); - sails.log.debug(`Note that NPC and structure kills are included in backfill calc, because the kill packages have not been resolved yet.`) + sails.log.debug( + `${backfillIds.length} kills to backfill (out of ${killHashKeys.length})`, + ); + sails.log.debug( + `Had ${((1 - backfillIds.length / killHashKeys.length) * 100).toFixed(2)}% before backfill.`, + ); + sails.log.debug( + `Note that NPC and structure kills are included in backfill calc, because the kill packages have not been resolved yet.`, + ); for (let id of backfillIds) { let hash = killHash[id]; - let job = sails.config.jobs.create('backfill', { id, hash }).priority('low'); - - job.on('failed', function(err) { - sails.log.error(`[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} failed`); + let job = sails.config.jobs + .create("backfill", { id, hash }) + .priority("low"); + + job.on("failed", function (err) { + sails.log.error( + `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} failed`, + ); sails.log.error(err); }); @@ -77,7 +87,6 @@ let ZkillJobs = { sails.config.sentinel.backfill.current++; }, - -} +}; module.exports = ZkillJobs; From c3e402787b919226a793daaf8ffb7dcae8ba5d6f Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 18:34:57 -0400 Subject: [PATCH 3/9] Upgrade sails-postgresql --- package.json | 2 +- yarn.lock | 695 ++++++++++++--------------------------------------- 2 files changed, 165 insertions(+), 532 deletions(-) diff --git a/package.json b/package.json index 5c1de29..4c34f5e 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "sails": "1.5.14", "sails-hook-orm": "^4.0.3", "sails-hook-sockets": "^3.0.1", - "sails-postgresql": "https://github.com/dougestey/sails-postgresql", + "sails-postgresql": "5.0.1", "socket.io-redis": "6.1.1", "ws": "^8.18.1" }, diff --git a/yarn.lock b/yarn.lock index 3f07ec8..6a40886 100644 --- a/yarn.lock +++ b/yarn.lock @@ -219,18 +219,6 @@ ansi-styles@^4.1.0: dependencies: sylvester ">= 0.0.8" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -241,11 +229,6 @@ array-flatten@3.0.0: resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== - asap@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d" @@ -312,7 +295,7 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== -babel-runtime@^6.11.6, babel-runtime@^6.26.0: +babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -357,11 +340,6 @@ bluebird@3.2.1: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.2.1.tgz#3cecf3504904c30ce3e79c170877e893a11910fd" integrity sha512-OfdwXncy2KqoGIlXUqxe+xb7G54s8y5pdo96+KGQMkQMZ5C/rT26tT2IJxWtgiAPeklwAU6iXxxjX8b8blcTPQ== -bluebird@^3.4.6: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - body-parser@1.18.2, body-parser@^1.12.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" @@ -411,19 +389,10 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -buffer-writer@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08" - integrity sha512-I5M7UuSeDn5aQR2BSH2+270w9qdd2Rd5LB/XhTcIRdSmeLueMNlY3BaMoHtoASmjEQf/NOAqMIZaoAMSpomW6w== +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== builtin-modules@^1.0.0: version "1.1.1" @@ -498,7 +467,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@1.1.3, chalk@^1.0.0: +chalk@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -593,6 +562,11 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colors@*: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -627,10 +601,10 @@ commander@2.8.1, commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.2.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^9.1.0: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== common-js-file-extensions@1.0.2: version "1.0.2" @@ -757,11 +731,6 @@ core-util-is@1.0.2: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - cors@~2.8.5: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -811,20 +780,20 @@ debug@*, debug@3.1.0: dependencies: ms "2.0.0" -debug@2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - integrity sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw== - dependencies: - ms "0.7.1" - -debug@2.6.9, debug@^2.1.3: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" +debug@4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^3.1.0: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -889,13 +858,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" - integrity sha512-akiVcMZym+vO3IxctGG9dnuJT4AYQTAhjsGbjeGqqMUr9Ffy7XEAUmfKLSHugr/tGLaAZ4jWROErPPrsfG8+bQ== - dependencies: - fs-exists-sync "^0.1.0" - doctypes@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" @@ -1002,6 +964,11 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: dependencies: es-errors "^1.3.0" +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1012,6 +979,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -1028,27 +1000,6 @@ etag@~1.8.1: dependencies: request "^2.81.0" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== - dependencies: - fill-range "^2.1.0" - -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - integrity sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== - dependencies: - os-homedir "^1.0.1" - express-session@1.18.1: version "1.18.1" resolved "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz#88d0bbd41878882840f24ec6227493fcb167e8d5" @@ -1141,18 +1092,11 @@ extend@^1.2.1: resolved "https://registry.yarnpkg.com/extend/-/extend-1.3.0.tgz#d1516fb0ff5624d2ebf9123ea1dac5a1994004f8" integrity sha1-0VFvsP9WJNLr+RI+odrFoZlABPg= -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== - dependencies: - is-extglob "^1.0.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -1192,22 +1136,6 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - finalhandler@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" @@ -1255,21 +1183,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -findup-sync@^0.4.2: - version "0.4.3" - resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" - integrity sha512-Q9vjzZTaI0/aeNnY7QM6En6QwnEP77V8/WHcMaBagz9Jdh+nKMsnGew1CXrgYd1pfyKhLX+PNvDZjYAfGw15Ag== - dependencies: - detect-file "^0.1.0" - is-glob "^2.0.1" - micromatch "^2.3.7" - resolve-dir "^0.1.0" - -flagged-respawn@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" - integrity sha512-HV3vdzzmQpuvpF5ghGNEKLSk3XrOmhuxWW96cO85B8JUm7iwcE8gLVl2fygaiwHFRXRiIUmEfIGMN6sQIn226g== - flaverr@^1.0.0, flaverr@^1.8.0, flaverr@^1.8.1: version "1.9.0" resolved "https://registry.yarnpkg.com/flaverr/-/flaverr-1.9.0.tgz#205aeda8ea87c436d461cd7748b80ac7acf12bcf" @@ -1284,18 +1197,6 @@ flaverr@^1.1.1, flaverr@^1.10.0, flaverr@^1.2.5, flaverr@^1.5.1, flaverr@^1.7.0, dependencies: "@sailshq/lodash" "^3.10.2" -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1325,11 +1226,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== - fs-extra@0.30.0: version "0.30.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -1356,21 +1252,11 @@ function-bind@^1.1.2: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -generic-pool@2.4.3: - version "2.4.3" - resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz#780c36f69dfad05a5a045dd37be7adca11a4f6ff" - integrity sha512-IuvVtXuCtPXl+wMp6eWzxWyJV0TtUSm/LnPO1TmM8/4K7stdrB3GuOVo+x6Izuc5qllayByDvXWOfT/UG0v+Kw== - generic-pool@3.9.0: version "3.9.0" resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== -generic-pool@^2.4.2: - version "2.5.4" - resolved "https://registry.npmjs.org/generic-pool/-/generic-pool-2.5.4.tgz#38c6188513e14030948ec6e5cf65523d9779299b" - integrity sha512-K2jozechYi0U3CNYlCWFGccmgjYhyqxOQVehL03l+gJ75LWDocM2qJeAaIneFd30ncD965WXnyM04jDgXzTMPw== - get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -1392,6 +1278,11 @@ get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: hasown "^2.0.2" math-intrinsics "^1.1.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-proto@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" @@ -1400,6 +1291,11 @@ get-proto@^1.0.1: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" +getopts@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== + getpass@^0.1.1: version "0.1.7" resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1407,21 +1303,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== - dependencies: - is-glob "^2.0.0" - glob@7.0.x: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" @@ -1458,24 +1339,6 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - integrity sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - integrity sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - gopd@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" @@ -1540,13 +1403,6 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -homedir-polyfill@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" @@ -1629,7 +1485,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@~2.0.1: +inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1639,20 +1495,15 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -interpret@^0.6.5: - version "0.6.6" - resolved "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" - integrity sha512-Vg6X07U0AOZb4HF6CWHa+jnJU8j71buKQ9Pc0C75qBXgvCYbxWBkGo4jnTS3O0MIc9FZtt0mB7h+uclojqdw1Q== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invert-kv@^1.0.0: version "1.0.0" @@ -1698,18 +1549,6 @@ is-core-module@^2.16.0: dependencies: hasown "^2.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== - dependencies: - is-primitive "^2.0.0" - is-expression@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" @@ -1718,16 +1557,6 @@ is-expression@^3.0.0: acorn "~4.0.2" object-assign "^4.0.1" -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -1735,35 +1564,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== - dependencies: - is-extglob "^1.0.0" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== - is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -1786,11 +1586,6 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - integrity sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== - is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" @@ -1801,23 +1596,6 @@ isarray@0.0.1: resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - isstream@0.1.x, isstream@~0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -1833,11 +1611,6 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -js-string-escape@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== - js-stringify@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" @@ -1895,11 +1668,6 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" -kind-of@^6.0.0: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - klaw@^1.0.0: version "1.3.1" resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -1907,29 +1675,25 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -knex@0.12.7: - version "0.12.7" - resolved "https://registry.npmjs.org/knex/-/knex-0.12.7.tgz#5793f579f07a2938bf9874693d74bba55c5baa1c" - integrity sha512-IC+5CUktwN7pZ71eEVNFHIMLAlpYBj+rtyVFI+qzYpVco6ccx31rpVXCDheLCuEUKJ9oaIWl76oxSPeAJs4xFA== - dependencies: - babel-runtime "^6.11.6" - bluebird "^3.4.6" - chalk "^1.0.0" - commander "^2.2.0" - debug "^2.1.3" - generic-pool "^2.4.2" - inherits "~2.0.1" - interpret "^0.6.5" - liftoff "~2.2.0" - lodash "^4.6.0" - minimist "~1.1.0" - mkdirp "^0.5.0" - pg-connection-string "^0.1.3" - readable-stream "^1.1.12" - safe-buffer "^5.0.1" - tildify "~1.0.0" - uuid "^3.0.0" - v8flags "^2.0.2" +knex@2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz#a34a289d38406dc19a0447a78eeaf2d16ebedd61" + integrity sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg== + dependencies: + colorette "2.0.19" + commander "^9.1.0" + debug "4.3.4" + escalade "^3.1.1" + esm "^3.2.25" + get-package-type "^0.1.0" + getopts "2.3.0" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.5.0" + rechoir "^0.8.0" + resolve-from "^5.0.0" + tarn "^3.0.2" + tildify "2.0.0" kue@^0.11.6: version "0.11.6" @@ -1960,17 +1724,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -liftoff@~2.2.0: - version "2.2.5" - resolved "https://registry.npmjs.org/liftoff/-/liftoff-2.2.5.tgz#998c2876cff484b103e4423b93d356da44734c91" - integrity sha512-2cdnrNglWdYVFOKAVu0UxYQZIdDvN5pgwDKmfNliTgbLmZQ5Z8VNWQgV4t/N+3y9735LGr6O+Vgjv6oYlaWWqg== - dependencies: - extend "^3.0.0" - findup-sync "^0.4.2" - flagged-respawn "^0.3.2" - rechoir "^0.6.2" - resolve "^1.1.7" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2004,7 +1757,7 @@ lodash@3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@4.17.21, lodash@^4.17.14, lodash@^4.6.0: +lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2067,16 +1820,16 @@ machinepack-fs@^12.0.1: machine "^15.0.0-12" walker "1.0.7" -machinepack-postgresql@^1.0.1-0: - version "1.0.2" - resolved "https://registry.npmjs.org/machinepack-postgresql/-/machinepack-postgresql-1.0.2.tgz#b4c728c0d9c6e1c88ca260f043e0b443c7fafa9a" - integrity sha512-BaIos/SHoIGk/+ho0TVh2gwEJK948tXClwaSL+06iAcIR7T2OTFMYgAaNlZG/4YtIuMyGoEdWv/tLgHag0W6rQ== +machinepack-postgresql@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/machinepack-postgresql/-/machinepack-postgresql-4.0.2.tgz#7ee1eecbbbbf1770cd98bc9d2525bed91ea35879" + integrity sha512-alKWR0FjxoUCn6jXNfHfSU723FmKIQMH5A41cgpYPZZz4C+o1mwWHu+2WzZ8xr2dtWYfoBq8lsQa3fPZKSrWIg== dependencies: "@sailshq/lodash" "^3.10.2" - debug "2.2.0" + debug "2.6.9" machine "^15.0.0-21" - pg "6.1.6" - waterline-sql-builder "^1.0.0-6" + pg "8.11.0" + waterline-sql-builder "^3.0.1" machinepack-process@^4.0.0, machinepack-process@^4.0.1: version "4.0.1" @@ -2118,11 +1871,6 @@ math-intrinsics@^1.1.0: resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2164,25 +1912,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -2263,12 +1992,7 @@ minimist@~0.0.7: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minimist@~1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha512-2RbeLaM/Hbo9vJ1+iRrxzfDnX9108qb2m923U+s+Ot2eMey0IYGdSjzHmvtg2XsxoCuMnzOMw7qc573RvnLgwg== - -mkdirp@0.5.6, mkdirp@^0.5.0: +mkdirp@0.5.6: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -2287,16 +2011,16 @@ moment@^2.30.1: resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== -ms@0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - integrity sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" @@ -2366,13 +2090,6 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - notepack.io@~2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/notepack.io/-/notepack.io-2.2.0.tgz#d7ea71d1cb90094f88c6f3c8d84277c2d0cd101c" @@ -2388,11 +2105,6 @@ oauth-sign@~0.9.0: resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - integrity sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA== - object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2403,14 +2115,6 @@ object-inspect@^1.13.3: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -2449,11 +2153,6 @@ opn@5.3.0: dependencies: is-wsl "^1.1.0" -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -2461,10 +2160,10 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -packet-reader@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz#819df4d010b82d5ea5671f8a1a3acf039bcd7700" - integrity sha512-3GnoJ2cKeSgikX3llywfuefjtkokRfzySXO2H3bDwVguclnpkvjYcBsQNfCcUpwUKRK+4IhhCD18/rLMVOH+aQ== +packet-reader@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== parasails@^0.9.2: version "0.9.3" @@ -2489,16 +2188,6 @@ parley@^3.8.0: bluebird "3.2.1" flaverr "^1.5.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -2506,11 +2195,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== - parseurl@1.3.2, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -2574,48 +2258,61 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -pg-connection-string@0.1.3, pg-connection-string@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" - integrity sha512-i0NV/CrSkFTaiOQs9AGy3tq0dkSjtTd4d7DfsjeDVZAA4aIHInwfFEmriNYGGJUfZ5x6IAC/QddoUpUJjQAi0w== +pg-cloudflare@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" + integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== + +pg-connection-string@^2.6.0: + version "2.7.0" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz#f1d3489e427c62ece022dba98d5262efcb168b37" + integrity sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA== pg-int8@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-pool@1.*: +pg-pool@^3.6.0: + version "3.8.0" + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz#e6bce7fc4506a8d6106551363fc5283e5445b776" + integrity sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw== + +pg-protocol@^1.6.0: version "1.8.0" - resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-1.8.0.tgz#f7ec73824c37a03f076f51bfdf70e340147c4f37" - integrity sha512-+X9J1FiucG3wpNIp/InfBWBn3vq/gpwzotKifnOPIRAyt7EhGBKyUFnJoAzhuQkU+EKb/VsW9csDcAzzAoPXGg== - dependencies: - generic-pool "2.4.3" - object-assign "4.1.0" + resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz#c707101dd07813868035a44571488e4b98639d48" + integrity sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g== -pg-types@1.*: - version "1.13.0" - resolved "https://registry.npmjs.org/pg-types/-/pg-types-1.13.0.tgz#75f490b8a8abf75f1386ef5ec4455ecf6b345c63" - integrity sha512-lfKli0Gkl/+za/+b6lzENajczwZHc7D5kiUCZfgm914jipD2kIOIvEkAhZ8GrW3/TUoP9w8FHjwpPObBye5KQQ== +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== dependencies: pg-int8 "1.0.1" - postgres-array "~1.0.0" + postgres-array "~2.0.0" postgres-bytea "~1.0.0" - postgres-date "~1.0.0" + postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@6.1.6: - version "6.1.6" - resolved "https://registry.npmjs.org/pg/-/pg-6.1.6.tgz#dd22758250d5ad6eef5a2bf88d96f276d1e95b0d" - integrity sha512-IzXRHvJ9l7ze5OSTpWN3+oWGjp7ETubYjTjCWqECtmncu/VkzEfAcp6CVpBsAfczJzGUw0nBa0ghpnPJPPg6BQ== - dependencies: - buffer-writer "1.0.1" - js-string-escape "1.0.1" - packet-reader "0.2.0" - pg-connection-string "0.1.3" - pg-pool "1.*" - pg-types "1.*" +pg@8.11.0: + version "8.11.0" + resolved "https://registry.npmjs.org/pg/-/pg-8.11.0.tgz#a37e534e94b57a7ed811e926f23a7c56385f55d9" + integrity sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA== + dependencies: + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.6.0" + pg-pool "^3.6.0" + pg-protocol "^1.6.0" + pg-types "^2.1.0" pgpass "1.x" - semver "4.3.2" + optionalDependencies: + pg-cloudflare "^1.1.0" pgpass@1.x: version "1.0.5" @@ -2646,17 +2343,17 @@ pluralize@1.2.1: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= -postgres-array@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz#c561fc3b266b21451fc6555384f4986d78ec80f5" - integrity sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ== +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== postgres-bytea@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== -postgres-date@~1.0.0: +postgres-date@~1.0.4: version "1.0.7" resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== @@ -2668,11 +2365,6 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== - prettier@^3.5.3: version "3.5.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" @@ -2878,15 +2570,6 @@ random-bytes@~1.0.0: resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -2961,22 +2644,12 @@ read@1.0.7, read@1.0.x: dependencies: mute-stream "~0.0.4" -readable-stream@^1.1.12: - version "1.1.14" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" + resolve "^1.20.0" redis-commands@^1.2.0: version "1.3.5" @@ -3064,23 +2737,6 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -3130,15 +2786,12 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - integrity sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.1.6, resolve@^1.1.7: +resolve@^1.1.6, resolve@^1.20.0: version "1.22.10" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -3257,15 +2910,16 @@ sails-hook-sockets@^3.0.1: socket.io "4.7.5" uid2 "0.0.3" -"sails-postgresql@https://github.com/dougestey/sails-postgresql": - version "1.0.1" - resolved "https://github.com/dougestey/sails-postgresql#f3ea0fbc6c5f0cb6637f2231193438f9c8d46fd8" +sails-postgresql@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/sails-postgresql/-/sails-postgresql-5.0.1.tgz#c7523f120438c4378227603e67e46321273f8348" + integrity sha512-80CKJoNwji4wMSPHj/v6bijKsovJx49q9sMIns9csFSOfsUtvuULX5KeEPMoAg2fnPhOG4nItbwDs9BKdrxWfA== dependencies: "@sailshq/lodash" "^3.10.2" - async "2.0.1" + async "2.6.4" flaverr "^1.2.5" machine "^15.0.0-21" - machinepack-postgresql "^1.0.1-0" + machinepack-postgresql "^4.0.0" waterline-utils "^1.3.10" sails-stringfile@^0.3.3: @@ -3341,11 +2995,6 @@ sax@0.5.x: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" - integrity sha512-VyFUffiBx8hABJ9HYSTXLRwyZtdDHMzMtFmID1aiNAD2BZppBmJm0Hqw3p2jkgxP9BNt1pQ9RnC49P0EcXf6cA== - semver@7.5.2: version "7.5.2" resolved "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" @@ -3667,7 +3316,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string_decoder@0.10.31, string_decoder@~0.10.x: +string_decoder@0.10.31: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= @@ -3744,12 +3393,15 @@ switchback@^2.0.1: resolved "https://registry.yarnpkg.com/sylvester/-/sylvester-0.0.21.tgz#2987b1ce2bd2f38b0dce2a34388884bfa4400ea7" integrity sha1-KYexzivS84sNzio0OIiEv6RADqc= -tildify@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/tildify/-/tildify-1.0.0.tgz#2a021db5e8fbde0a8f8b4df37adaa8fb1d39d7dd" - integrity sha512-3Tu0EzUZpMeGRxUrajQPKBhYrpQLIA42RtQsaIaJ75zvaAov6d0ArxVEKoz+ZYSVOa7XnEvbjkzJDSawIntYIA== - dependencies: - user-home "^1.0.0" +tarn@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" + integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== + +tildify@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" + integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== tmpl@1.0.x: version "1.0.4" @@ -3871,11 +3523,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -user-home@^1.0.0, user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - integrity sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ== - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -3891,18 +3538,11 @@ uuid@^2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= -uuid@^3.0.0, uuid@^3.3.2: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8flags@^2.0.2: - version "2.1.1" - resolved "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - integrity sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA== - dependencies: - user-home "^1.1.1" - validate-npm-package-license@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" @@ -3951,13 +3591,13 @@ waterline-schema@^1.0.0-20: flaverr "^1.8.1" rttc "^10.0.0-1" -waterline-sql-builder@^1.0.0-6: - version "1.0.0" - resolved "https://registry.npmjs.org/waterline-sql-builder/-/waterline-sql-builder-1.0.0.tgz#4bd98819bd37f5ab1df0555366e955ff56eeb8a5" - integrity sha512-2oWLfAV5dpJHcUC3+wHoE4wjilks4kp6h0AtlgEvn3Wl8pac1MvPJmZqwRyJH2prakGfhxE+E5yBXaMQfOnUrQ== +waterline-sql-builder@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/waterline-sql-builder/-/waterline-sql-builder-3.0.1.tgz#a804759b4100bc096fe34b45533e1f52bce2ed22" + integrity sha512-XW1Wf+grpm7vpxwZd5QWhYTvWEYXwlEcXPEwo3hpyMvMj9hzzQIU0smFAYIIr2AHYvMCFeu4SJmzPsahFT+S6w== dependencies: "@sailshq/lodash" "^3.10.2" - knex "0.12.7" + knex "2.4.2" waterline-utils "^1.3.8" waterline-utils@^1.0.0, waterline-utils@^1.3.7: @@ -4015,13 +3655,6 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= -which@^1.2.12: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" From b105974e43235bd1edb56e0dea2bd823e4cc51da Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 20:06:31 -0400 Subject: [PATCH 4/9] Environment setup, code rework and cleanup --- .env.example | 10 +++- api/models/Alliance.js | 17 ++---- api/models/Character.js | 26 +++------ api/models/Constellation.js | 20 ++----- api/models/Corporation.js | 20 +++---- api/models/Fleet.js | 49 ++++++---------- api/models/Kill.js | 32 ++++------- api/models/Package.js | 2 +- api/models/Region.js | 27 +++------ api/models/Stargate.js | 5 +- api/models/System.js | 36 ++++-------- api/models/Type.js | 22 ++----- api/services/CharacterSerializer.js | 10 ++-- api/services/Dispatcher.js | 8 +-- api/services/FleetSerializer.js | 18 +++--- api/services/Fuzzworks.js | 10 ++-- api/services/Identifier.js | 42 +++++++------- api/services/Resolver.js | 18 +++--- api/services/Swagger.js | 50 ++++++++-------- api/services/ZkillResolve.js | 32 +++++------ api/services/ZkillSocket.js | 46 +++++++-------- api/services/ZkillStats.js | 18 +++--- app.js | 22 +++---- config/blueprints.js | 4 +- config/bootstrap.js | 4 +- config/datastores.js | 42 ++++---------- config/env/development.js | 4 +- config/env/production.js | 10 ++-- config/globals.js | 4 +- config/i18n.js | 2 +- config/jobs.js | 89 ++++++++++++++--------------- config/models.js | 10 ++-- config/redis.js | 12 ++-- config/routes.js | 6 +- config/sockets.js | 2 +- jobs/FleetJobs.js | 16 +++--- jobs/ZkillJobs.js | 34 +++++------ prettier.config.js | 10 ++++ 38 files changed, 345 insertions(+), 444 deletions(-) create mode 100644 prettier.config.js diff --git a/.env.example b/.env.example index e9c4a3b..97afd85 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,12 @@ -APP_URL=http://localhost +BASE_URL=http://localhost +DATABASE_HOST=localhost +DATABASE_PORT=5432 +DATABASE_NAME=sentinel +DATABASE_USER=sentinel +DATABASE_PASSWORD=sentinel +REDIS_HOST=localhost +REDIS_PORT=6379 +JOB_UI_PORT=6574 TRACK_ENABLED=true TRACK_NPC=false TRACK_FLEETS=true diff --git a/api/models/Alliance.js b/api/models/Alliance.js index 8c2163e..ef66662 100644 --- a/api/models/Alliance.js +++ b/api/models/Alliance.js @@ -7,16 +7,11 @@ module.exports = { attributes: { - id: { type: "number", autoIncrement: false, required: true }, - - name: "string", - - ticker: "string", - - activeCombatPilots: "number", - - hasSupers: "boolean", - - dangerRatio: "number", + id: { type: 'number', autoIncrement: false, required: true }, + name: 'string', + ticker: 'string', + activeCombatPilots: 'number', + hasSupers: 'boolean', + dangerRatio: 'number', }, }; diff --git a/api/models/Character.js b/api/models/Character.js index 9686343..b9a1a3d 100644 --- a/api/models/Character.js +++ b/api/models/Character.js @@ -7,26 +7,18 @@ module.exports = { attributes: { - id: { type: "number", autoIncrement: false, required: true }, - - name: "string", - - dangerRatio: "number", + id: { type: 'number', autoIncrement: false, required: true }, + name: 'string', + dangerRatio: 'number', // Relationships - - corporation: { model: "corporation" }, - - alliance: { model: "alliance" }, - - fleet: { model: "fleet" }, - - history: { collection: "fleet", via: "history" }, + corporation: { model: 'corporation' }, + alliance: { model: 'alliance' }, + fleet: { model: 'fleet' }, + history: { collection: 'fleet', via: 'history' }, // Meta - - lastEsiUpdate: "string", - - lastZkillUpdate: "string", + lastEsiUpdate: 'string', + lastZkillUpdate: 'string', }, }; diff --git a/api/models/Constellation.js b/api/models/Constellation.js index 284ace4..87c5932 100644 --- a/api/models/Constellation.js +++ b/api/models/Constellation.js @@ -5,29 +5,19 @@ * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models */ -let datastore = "sdeDev"; - -if (process.env.NODE_ENV === "production") { - datastore = "sde"; -} - module.exports = { - datastore, - - tableName: "mapConstellations", + datastore: 'sde', // this model references the EVE SDE + tableName: 'mapConstellations', attributes: { createdAt: false, - updatedAt: false, - id: { - columnName: "constellationID", - type: "number", + columnName: 'constellationID', + type: 'number', autoIncrement: false, required: true, }, - - name: { columnName: "constellationName", type: "string" }, + name: { columnName: 'constellationName', type: 'string' }, }, }; diff --git a/api/models/Corporation.js b/api/models/Corporation.js index e4bf9d6..7c119dc 100644 --- a/api/models/Corporation.js +++ b/api/models/Corporation.js @@ -7,18 +7,12 @@ module.exports = { attributes: { - id: { type: "number", autoIncrement: false, required: true }, - - name: "string", - - ticker: "string", - - memberCount: "number", - - activeCombatPilots: "number", - - hasSupers: "boolean", - - dangerRatio: "number", + id: { type: 'number', autoIncrement: false, required: true }, + name: 'string', + ticker: 'string', + memberCount: 'number', + activeCombatPilots: 'number', + hasSupers: 'boolean', + dangerRatio: 'number', }, }; diff --git a/api/models/Fleet.js b/api/models/Fleet.js index 8c2a068..59c98fb 100644 --- a/api/models/Fleet.js +++ b/api/models/Fleet.js @@ -5,49 +5,36 @@ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ -let moment = require("moment"); +const moment = require('moment'); module.exports = { attributes: { - startTime: "string", - - endTime: "string", - - isActive: "boolean", - - lastSeen: "string", - - composition: "json", - + startTime: 'string', + endTime: 'string', + isActive: 'boolean', + lastSeen: 'string', + composition: 'json', configuration: { - type: "string", - isIn: ["roam", "gatecamp", "hsgank", "hswar", "blops", "unknown"], + type: 'string', + isIn: ['roam', 'gatecamp', 'hsgank', 'hswar', 'blops', 'unknown'], }, - - efficiency: { type: "ref", columnType: "decimal" }, - - dangerRatio: { type: "ref", columnType: "decimal" }, + efficiency: { type: 'ref', columnType: 'decimal' }, + dangerRatio: { type: 'ref', columnType: 'decimal' }, // Relationships - - system: { model: "system" }, - - characters: { collection: "character", via: "fleet" }, - - history: { collection: "character", via: "history" }, - - kills: { collection: "kill", via: "fleet" }, + system: { model: 'system' }, + characters: { collection: 'character', via: 'fleet' }, + history: { collection: 'character', via: 'history' }, + kills: { collection: 'kill', via: 'fleet' }, // Meta - lastFleetHealthCheck: { - type: "string", - defaultsTo: moment().subtract(5, "minutes").toISOString(), + type: 'string', + defaultsTo: moment().subtract(5, 'minutes').toISOString(), }, - lastFleetThreatLevelCheck: { - type: "string", - defaultsTo: moment().subtract(5, "minutes").toISOString(), + type: 'string', + defaultsTo: moment().subtract(5, 'minutes').toISOString(), }, }, }; diff --git a/api/models/Kill.js b/api/models/Kill.js index 3b27b0f..9045e0c 100644 --- a/api/models/Kill.js +++ b/api/models/Kill.js @@ -7,28 +7,18 @@ module.exports = { attributes: { - killId: { type: "number", unique: true }, - - time: "string", - - position: "json", - - positionName: "string", - - items: "json", - - composition: "json", - - meta: "json", + killId: { type: 'number', unique: true }, + time: 'string', + position: 'json', + positionName: 'string', + items: 'json', + composition: 'json', + meta: 'json', // Relationships - - ship: { model: "type" }, - - victim: { model: "character" }, - - system: { model: "system" }, - - fleet: { model: "fleet" }, + ship: { model: 'type' }, + victim: { model: 'character' }, + system: { model: 'system' }, + fleet: { model: 'fleet' }, }, }; diff --git a/api/models/Package.js b/api/models/Package.js index 5747675..ab8f1c8 100644 --- a/api/models/Package.js +++ b/api/models/Package.js @@ -7,6 +7,6 @@ module.exports = { attributes: { - body: "json", + body: 'json', }, }; diff --git a/api/models/Region.js b/api/models/Region.js index f5c9e98..9b75831 100644 --- a/api/models/Region.js +++ b/api/models/Region.js @@ -5,33 +5,20 @@ * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models */ -let datastore = "sdeDev"; - -if (process.env.NODE_ENV === "production") { - datastore = "sde"; -} - module.exports = { - datastore, - - tableName: "mapRegions", - + datastore: 'sde', // this model references the EVE SDE + tableName: 'mapRegions', attributes: { createdAt: false, - updatedAt: false, - id: { - columnName: "regionID", - type: "number", + columnName: 'regionID', + type: 'number', autoIncrement: false, required: true, }, - - name: { columnName: "regionName", type: "string" }, - - x: { columnType: "decimal", type: "number" }, - - y: { columnType: "decimal", type: "number" }, + name: { columnName: 'regionName', type: 'string' }, + x: { columnType: 'decimal', type: 'number' }, + y: { columnType: 'decimal', type: 'number' }, }, }; diff --git a/api/models/Stargate.js b/api/models/Stargate.js index 0e23cd1..34d9aab 100644 --- a/api/models/Stargate.js +++ b/api/models/Stargate.js @@ -11,8 +11,7 @@ // TODO: Determine where this lies in the SDE module.exports = { attributes: { - stargateId: { type: "number", unique: true }, - - name: "string", + stargateId: { type: 'number', unique: true }, + name: 'string', }, }; diff --git a/api/models/System.js b/api/models/System.js index 89a3ce8..4ddcc02 100644 --- a/api/models/System.js +++ b/api/models/System.js @@ -5,41 +5,27 @@ * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models */ -let datastore = "sdeDev"; - -if (process.env.NODE_ENV === "production") { - datastore = "sde"; -} - module.exports = { - datastore, - - tableName: "mapSolarSystems", + datastore: 'sde', // this model references the EVE SDE + tableName: 'mapSolarSystems', + // Attributes attributes: { createdAt: false, - updatedAt: false, - id: { - columnName: "solarSystemID", - type: "number", + columnName: 'solarSystemID', + type: 'number', autoIncrement: false, required: true, }, - - name: { columnName: "solarSystemName", type: "string" }, - - securityStatus: { columnName: "security", type: "number" }, - - x: { columnType: "decimal", type: "number" }, - - y: { columnType: "decimal", type: "number" }, + name: { columnName: 'solarSystemName', type: 'string' }, + securityStatus: { columnName: 'security', type: 'number' }, + x: { columnType: 'decimal', type: 'number' }, + y: { columnType: 'decimal', type: 'number' }, // Relationships - - constellation: { columnName: "constellationID", model: "constellation" }, - - region: { columnName: "regionID", model: "region" }, + constellation: { columnName: 'constellationID', model: 'constellation' }, + region: { columnName: 'regionID', model: 'region' }, }, }; diff --git a/api/models/Type.js b/api/models/Type.js index ca91868..2e0a9c9 100644 --- a/api/models/Type.js +++ b/api/models/Type.js @@ -5,31 +5,19 @@ * @docs :: http://sailsjs.org/documentation/concepts/models-and-orm/models */ -let datastore = "sdeDev"; - -if (process.env.NODE_ENV === "production") { - datastore = "sde"; -} - module.exports = { - datastore, - - tableName: "invTypes", + tableName: 'invTypes', attributes: { createdAt: false, - updatedAt: false, - id: { - columnName: "typeID", - type: "number", + columnName: 'typeID', + type: 'number', autoIncrement: false, required: true, }, - - name: { columnName: "typeName", type: "string" }, - - description: "string", + name: { columnName: 'typeName', type: 'string' }, + description: 'string', }, }; diff --git a/api/services/CharacterSerializer.js b/api/services/CharacterSerializer.js index d0d8370..d574576 100644 --- a/api/services/CharacterSerializer.js +++ b/api/services/CharacterSerializer.js @@ -9,13 +9,13 @@ module.exports = { })(); let character = await Character.findOne(query) - .populate("corporation") - .populate("alliance") - .populate("fleet") - .populate("history"); + .populate('corporation') + .populate('alliance') + .populate('fleet') + .populate('history'); let knownCyno = false; - let losses = await Kill.find({ victim: character.id }).sort("time DESC"); + let losses = await Kill.find({ victim: character.id }).sort('time DESC'); for (let loss of losses) { for (let item of loss.items) { diff --git a/api/services/Dispatcher.js b/api/services/Dispatcher.js index 702f37a..2c1d537 100644 --- a/api/services/Dispatcher.js +++ b/api/services/Dispatcher.js @@ -16,24 +16,24 @@ let Dispatcher = { } if (!_.has(pool, socketId)) { - sails.sockets.join(req, "activeSockets"); + sails.sockets.join(req, 'activeSockets'); sails.log.debug(`[Dispatcher.joinPool] ${socketId} joins the pool.`); pool[socketId] = []; } else { sails.log.debug( - `[Dispatcher.joinPool] ${socketId} is already in the pool.`, + `[Dispatcher.joinPool] ${socketId} is already in the pool.` ); } }, // Notify connected sockets of new data notifySockets(data, type) { - sails.io.sockets.in("activeSockets").clients((err, members) => { + sails.io.sockets.in('activeSockets').clients((err, members) => { members.map((socketId) => { sails.log.debug( - `[Dispatcher.notifySockets] Notifying ${socketId} of ${type}...`, + `[Dispatcher.notifySockets] Notifying ${socketId} of ${type}...` ); sails.log.silly(`[Dispatcher.notifySockets] ${data}`); diff --git a/api/services/FleetSerializer.js b/api/services/FleetSerializer.js index 426dfa3..79f84e5 100644 --- a/api/services/FleetSerializer.js +++ b/api/services/FleetSerializer.js @@ -4,23 +4,23 @@ module.exports = { async one(id) { let fleet = await Fleet.findOne(id); - fleet.system = await System.findOne(fleet.system).populate("region"); + fleet.system = await System.findOne(fleet.system).populate('region'); fleet.characters = await Character.find({ fleet: fleet.id }) - .populate("corporation") - .populate("alliance"); + .populate('corporation') + .populate('alliance'); fleet.kills = await Kill.find({ fleet: fleet.id }) - .populate("ship") - .populate("victim") - .populate("system") - .populate("fleet") - .sort("time DESC"); + .populate('ship') + .populate('victim') + .populate('system') + .populate('fleet') + .sort('time DESC'); // Now let's resolve the ship type IDs for each character. let { characters, ships } = await Resolver.composition( fleet.composition, - fleet.characters, + fleet.characters ); fleet.characters = characters; diff --git a/api/services/Fuzzworks.js b/api/services/Fuzzworks.js index 92e69f3..5a294a9 100644 --- a/api/services/Fuzzworks.js +++ b/api/services/Fuzzworks.js @@ -5,7 +5,7 @@ * @help :: https://esi.tech.ccp.is/ui/ */ -const request = require("request"); +const request = require('request'); module.exports = { nearestCelestial({ x, y, z }, systemId) { @@ -13,16 +13,16 @@ module.exports = { request( { url: `https://www.fuzzwork.co.uk/api/nearestCelestial.php?x=${x}&y=${y}&z=${z}&solarsystemid=${systemId}`, - method: "GET", + method: 'GET', headers: { - "User-Agent": "https://gloss.space", + 'User-Agent': 'https://gloss.space', }, json: true, }, (error, response, body) => { if (error || !body) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Fuzzworks.nearestCelestial] ${response.statusCode} ${error}`, + `[${new Date().toLocaleTimeString()}] [Fuzzworks.nearestCelestial] ${response.statusCode} ${error}` ); return reject(); } @@ -31,7 +31,7 @@ module.exports = { sails.log.silly(`[Fuzzworks.nearestCelestial] ${body}`); return resolve(body); - }, + } ); }); }, diff --git a/api/services/Identifier.js b/api/services/Identifier.js index 2cff6d3..7fcce19 100644 --- a/api/services/Identifier.js +++ b/api/services/Identifier.js @@ -14,7 +14,7 @@ let _resolveCharactersToIds = async (ids) => { let resolved = []; sails.log.silly( - `[Identifier._resolveCharactersToIds] Resolving ${ids.length} characters...`, + `[Identifier._resolveCharactersToIds] Resolving ${ids.length} characters...` ); for (let characterId of ids) { @@ -24,14 +24,14 @@ let _resolveCharactersToIds = async (ids) => { character = await Swagger.character(characterId); } catch (e) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Identifier._resolveCharactersToIds] ${JSON.stringify(e)}`, + `[${new Date().toLocaleTimeString()}] [Identifier._resolveCharactersToIds] ${JSON.stringify(e)}` ); } if (character && character.id) resolved.push(character.id); } - sails.log.silly("[Identifier._resolveCharactersToIds] End"); + sails.log.silly('[Identifier._resolveCharactersToIds] End'); return _.compact(resolved); }; @@ -68,10 +68,10 @@ let _createFleet = async (killmail, kill, system) => { let { killmail_time: startTime } = killmail, lastSeen = startTime, characters = await _resolveCharactersToIds( - killmail.attackers.map((a) => a.character_id), + killmail.attackers.map((a) => a.character_id) ), composition = _determineActiveComposition([kill]), - configuration = "unknown", + configuration = 'unknown', isActive = true; let fleet = await Fleet.create({ @@ -85,14 +85,14 @@ let _createFleet = async (killmail, kill, system) => { .intercept((e) => sails.log.error( `[${new Date().toLocaleTimeString()}] [Identifier._createFleet] Fleet create error:`, - e, - ), + e + ) ) .fetch(); - await Fleet.addToCollection(fleet.id, "characters").members(characters); - await Fleet.addToCollection(fleet.id, "history").members(characters); - await Fleet.addToCollection(fleet.id, "kills").members([kill.id]); + await Fleet.addToCollection(fleet.id, 'characters').members(characters); + await Fleet.addToCollection(fleet.id, 'history').members(characters); + await Fleet.addToCollection(fleet.id, 'kills').members([kill.id]); return FleetSerializer.one(fleet.id); }; @@ -100,16 +100,16 @@ let _createFleet = async (killmail, kill, system) => { let _updateFleet = async (fleet, kill, system) => { if (!fleet) { return sails.log.error( - `[${new Date().toLocaleTimeString()}] [Identifier._updateFleet] No fleet to update`, + `[${new Date().toLocaleTimeString()}] [Identifier._updateFleet] No fleet to update` ); } // First we add the kill to the fleet's collection, as it will impact other data. - await Fleet.addToCollection(fleet.id, "kills").members([kill.id]); + await Fleet.addToCollection(fleet.id, 'kills').members([kill.id]); // Then we fetch the three latest kills in order to determine who's actively in the fleet. let latestKills = await Kill.find({ fleet: fleet.id }) - .sort("time DESC") + .sort('time DESC') .limit(3); let existingCharacters = await Character.find({ fleet: fleet.id }); let activeCharacters = _determineActiveCharacters(latestKills); @@ -131,12 +131,12 @@ let _updateFleet = async (fleet, kill, system) => { } // Ensure we're preserving character fleet history. - await Fleet.addToCollection(fleet.id, "history").members(existingCharacters); - await Fleet.addToCollection(fleet.id, "history").members(activeCharacters); + await Fleet.addToCollection(fleet.id, 'history').members(existingCharacters); + await Fleet.addToCollection(fleet.id, 'history').members(activeCharacters); // Update the fleet's collection of characters. This will drop expired ones. - await Fleet.replaceCollection(fleet.id, "characters").members( - activeCharacters, + await Fleet.replaceCollection(fleet.id, 'characters').members( + activeCharacters ); // Update other attributes on the fleet @@ -165,7 +165,7 @@ let Identifier = { if (!attackersWithIds.length) return; sails.log.silly( - `[Identifier.fleet] Fetching active fleet records related to km...`, + `[Identifier.fleet] Fetching active fleet records related to km...` ); let fleetIds = []; @@ -184,7 +184,7 @@ let Identifier = { for (let id of fleetIds) { let record = await Fleet.findOne({ id, isActive: true }).populate( - "characters", + 'characters' ); if (record) fleets.push(record); @@ -230,8 +230,8 @@ let Identifier = { candidates = _.sortByOrder( candidates, - ["similarity", "size"], - ["desc", "desc"], + ['similarity', 'size'], + ['desc', 'desc'] ); let bestMatch = _.first(candidates); diff --git a/api/services/Resolver.js b/api/services/Resolver.js index 4f92d11..c340239 100644 --- a/api/services/Resolver.js +++ b/api/services/Resolver.js @@ -9,10 +9,10 @@ let Resolver = { async position(position, systemId) { if (!position || !systemId) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Resolver] ESI failure: Incomplete position data`, + `[${new Date().toLocaleTimeString()}] [Resolver] ESI failure: Incomplete position data` ); - return "Unknown"; + return 'Unknown'; } let response; @@ -21,9 +21,9 @@ let Resolver = { response = await Fuzzworks.nearestCelestial(position, systemId); } catch (e) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Resolver] Fuzzworks failure: ${e}`, + `[${new Date().toLocaleTimeString()}] [Resolver] Fuzzworks failure: ${e}` ); - return "Unknown"; + return 'Unknown'; } let { itemName, typeid: typeId, itemid: itemId } = response; @@ -34,7 +34,7 @@ let Resolver = { let type = await Type.findOne(typeId); if (type && type.name) { - if (type.name.indexOf("Stargate") !== -1) { + if (type.name.indexOf('Stargate') !== -1) { let { name } = await Swagger.stargate(itemId); let { name: systemName } = await System.findOne(systemId); @@ -45,9 +45,9 @@ let Resolver = { } } - if (itemName === "bad item") return "Abyssal Deadspace"; + if (itemName === 'bad item') return 'Abyssal Deadspace'; - return itemName ? itemName : "Unknown"; + return itemName ? itemName : 'Unknown'; }, async composition(ids, characters) { @@ -64,8 +64,8 @@ let Resolver = { let ships = await Swagger.names(_.uniq(shipTypeIds)); _.forEach(ids, (shipTypeId, characterId) => { - let charIndex = _.findIndex(characters, "id", parseInt(characterId)), - shipIndex = _.findIndex(ships, "id", shipTypeId); + let charIndex = _.findIndex(characters, 'id', parseInt(characterId)), + shipIndex = _.findIndex(ships, 'id', shipTypeId); if (charIndex !== -1) characters[charIndex].ship = ships[shipIndex]; }); diff --git a/api/services/Swagger.js b/api/services/Swagger.js index 8b5ff69..18663b1 100644 --- a/api/services/Swagger.js +++ b/api/services/Swagger.js @@ -5,21 +5,21 @@ * @help :: https://esi.tech.ccp.is/ui/ */ -let ESI = require("eve-swagger-simple"), - request = require("request"), - qs = require("qs"), - moment = require("moment"); +let ESI = require('eve-swagger-simple'), + request = require('request'), + qs = require('qs'), + moment = require('moment'); let _endpointIsNeeded = (endpoint) => { let requiredEndpoints = [ - "/universe/names/", - "/universe/systems/", - "/characters/{character_id}/", - "/universe/types/{type_id}/", - "/universe/systems/{system_id}/", - "/universe/stargates/{stargate_id}/", - "/corporations/{corporation_id}/", - "/alliances/{alliance_id}/", + '/universe/names/', + '/universe/systems/', + '/characters/{character_id}/', + '/universe/types/{type_id}/', + '/universe/systems/{system_id}/', + '/universe/stargates/{stargate_id}/', + '/corporations/{corporation_id}/', + '/alliances/{alliance_id}/', ]; let isNeeded = false; @@ -33,7 +33,7 @@ module.exports = { status() { return new Promise((resolve, reject) => { request.get( - "https://esi.evetech.net/status.json", + 'https://esi.evetech.net/status.json', { json: true }, (error, response, body) => { if (error) { @@ -48,23 +48,23 @@ module.exports = { status = body; status.map((endpoint) => { - if (_endpointIsNeeded(endpoint) && endpoint.status !== "green") { + if (_endpointIsNeeded(endpoint) && endpoint.status !== 'green') { allSystemsGo = false; sails.log.error( - `[Swagger.status] ${endpoint.route} is ${endpoint.status}.`, + `[Swagger.status] ${endpoint.route} is ${endpoint.status}.` ); } }); return resolve(allSystemsGo); - }, + } ); }); }, async initialize() { - let systems = await ESI.request("/universe/systems"), + let systems = await ESI.request('/universe/systems'), fn = async function (systemId) { await System.findOrCreate({ systemId }, { systemId }); }; @@ -80,7 +80,7 @@ module.exports = { return new Promise((resolve, reject) => { request.post( - "https://esi.evetech.net/latest/universe/names/", + 'https://esi.evetech.net/latest/universe/names/', { json: true, body: ids, @@ -94,7 +94,7 @@ module.exports = { if (!body) return reject(); resolve(body); - }, + } ); }); }, @@ -122,9 +122,9 @@ module.exports = { corporation: corporation ? corporation.id : null, alliance: alliance ? alliance.id : null, }) - .intercept("E_UNIQUE", (e) => { + .intercept('E_UNIQUE', (e) => { sails.log.error( - `[Swagger.character] Race condition: Tried to create a character that already exists.`, + `[Swagger.character] Race condition: Tried to create a character that already exists.` ); sails.log.error(`[Swagger.character] characterId: ${characterId}`); @@ -198,9 +198,9 @@ module.exports = { memberCount, alliance: allianceRecord ? allianceRecord.id : null, }) - .intercept("E_UNIQUE", (e) => { + .intercept('E_UNIQUE', (e) => { sails.log.error( - `[Swagger.corporation] Race condition: Tried to create a corporation that already exists. ${e}`, + `[Swagger.corporation] Race condition: Tried to create a corporation that already exists. ${e}` ); }) .fetch(); @@ -218,9 +218,9 @@ module.exports = { let { name, ticker } = await ESI.request(`/alliances/${allianceId}`); localAlliance = await Alliance.create({ id: allianceId, name, ticker }) - .intercept("E_UNIQUE", (e) => { + .intercept('E_UNIQUE', (e) => { sails.log.error( - `[Swagger.alliance] Race condition: Tried to create an alliance that already exists. ${e}`, + `[Swagger.alliance] Race condition: Tried to create an alliance that already exists. ${e}` ); }) .fetch(); diff --git a/api/services/ZkillResolve.js b/api/services/ZkillResolve.js index 10a878d..c53f1cb 100644 --- a/api/services/ZkillResolve.js +++ b/api/services/ZkillResolve.js @@ -7,7 +7,7 @@ const _sdeFailure = (e) => { sails.log.error( - `[${new Date().toLocaleTimeString()}] [ZkillResolve] SDE failure.`, + `[${new Date().toLocaleTimeString()}] [ZkillResolve] SDE failure.` ); sails.log.error(e); sails.config.sentinel.failures.sentinel++; @@ -16,14 +16,14 @@ const _sdeFailure = (e) => { const _esiFailure = (e) => { sails.log.error( - `[${new Date().toLocaleTimeString()}] [ZkillResolve] ESI failure.`, + `[${new Date().toLocaleTimeString()}] [ZkillResolve] ESI failure.` ); sails.log.error(e); sails.config.sentinel.failures.esi++; return; }; -let moment = require("moment"); +let moment = require('moment'); module.exports = { async kill(killmail) { @@ -46,16 +46,16 @@ module.exports = { if (existingRecord) { return sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Ignoring ${killId} - already in database.`, + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Ignoring ${killId} - already in database.` ); } if (!characterId || !shipTypeId || !systemId) { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Issue with record: characterId ${characterId} || shipTypeId ${shipTypeId} || systemId ${systemId}`, + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Issue with record: characterId ${characterId} || shipTypeId ${shipTypeId} || systemId ${systemId}` ); sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Cancelling resolve.`, + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Cancelling resolve.` ); return; @@ -85,11 +85,11 @@ module.exports = { victim, system, }) - .intercept("E_UNIQUE", (e) => { + .intercept('E_UNIQUE', (e) => { sails.config.sentinel.failures.sentinel++; return sails.log.error( - `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Race condition: Tried to create a kill that already exists. ${e}`, + `[${new Date().toLocaleTimeString()}] [ZkillResolve.kill] Race condition: Tried to create a kill that already exists. ${e}` ); }) .fetch(); @@ -98,23 +98,23 @@ module.exports = { then = moment(time), fleet; - let elapsedTime = now.diff(then, "minutes"); + let elapsedTime = now.diff(then, 'minutes'); if ( - process.env.TRACK_FLEETS === "true" && + process.env.TRACK_FLEETS === 'true' && elapsedTime < parseInt(process.env.FLEET_EXPIRY_IN_MINUTES) ) fleet = await Identifier.fleet(killmail, system, kill); kill = await Kill.findOne(kill.id) - .populate("ship") - .populate("victim") - .populate("system") - .populate("fleet"); + .populate('ship') + .populate('victim') + .populate('system') + .populate('fleet'); - if (fleet) Dispatcher.notifySockets(fleet, "fleet"); + if (fleet) Dispatcher.notifySockets(fleet, 'fleet'); - Dispatcher.notifySockets(kill, "kill"); + Dispatcher.notifySockets(kill, 'kill'); return kill; }, diff --git a/api/services/ZkillSocket.js b/api/services/ZkillSocket.js index e54d0c4..2a96806 100644 --- a/api/services/ZkillSocket.js +++ b/api/services/ZkillSocket.js @@ -5,14 +5,14 @@ * @help :: See https://github.com/zKillboard/zKillboard/wiki/Websocket */ -const WebSocket = require("ws"); +const WebSocket = require('ws'); let ZkillSocket = { connect() { - this.socket = new WebSocket("wss://zkillboard.com:2096"); + this.socket = new WebSocket('wss://zkillboard.com:2096'); sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] Initializing new socket instance.`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Initializing new socket instance.` ); this.initialize(); @@ -33,11 +33,11 @@ let ZkillSocket = { this.heartbeatCheck = setInterval(() => { if (!this.isAlive) { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] No heartbeat detected in over 30 seconds.`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] No heartbeat detected in over 30 seconds.` ); sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] Will attempt to reconnect in 10 seconds.`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Will attempt to reconnect in 10 seconds.` ); sails.config.sentinel.connected = false; @@ -51,44 +51,44 @@ let ZkillSocket = { this.ping(); }, 30000); - this.socket.on("pong", () => { + this.socket.on('pong', () => { this.isAlive = true; sails.config.sentinel.connected = true; sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] Heartbeat response received from Zkill.`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Heartbeat response received from Zkill.` ); }); // Subscribe to the full killstream. - this.socket.on("open", () => { + this.socket.on('open', () => { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] Connected.`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Connected.` ); sails.config.sentinel.connected = true; this.socket.send( JSON.stringify({ - action: "sub", - channel: "killstream", - }), + action: 'sub', + channel: 'killstream', + }) ); }); - this.socket.on("message", async (data) => { + this.socket.on('message', async (data) => { let package = await Package.create({ body: data }).fetch(); - let job = sails.config.jobs.create("process_zkill_package", { + let job = sails.config.jobs.create('process_zkill_package', { id: package.id, }); // Failure/backoff strategy - job.attempts(3).backoff({ type: "exponential" }); + job.attempts(3).backoff({ type: 'exponential' }); - job.on("failed", function (err) { + job.on('failed', function (err) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${package.id} failed`, + `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${package.id} failed` ); sails.log.error(err); }); @@ -96,27 +96,27 @@ let ZkillSocket = { job.save(); }); - this.socket.on("close", (code, reason) => { + this.socket.on('close', (code, reason) => { sails.log.error( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] Connection was closed: ${code} ${reason}`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Connection was closed: ${code} ${reason}` ); sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] Attempting to re-establish...`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] Attempting to re-establish...` ); setTimeout(this.connect, 10000); }); - this.socket.on("error", (error) => { + this.socket.on('error', (error) => { sails.log.error( `[${new Date().toLocaleTimeString()}] [ZkillSocket] Error from Zkill:`, - error, + error ); }); sails.log.debug( - `[${new Date().toLocaleTimeString()}] [ZkillSocket] All message handlers initialized.`, + `[${new Date().toLocaleTimeString()}] [ZkillSocket] All message handlers initialized.` ); }, }; diff --git a/api/services/ZkillStats.js b/api/services/ZkillStats.js index 4809308..ee8ac26 100644 --- a/api/services/ZkillStats.js +++ b/api/services/ZkillStats.js @@ -5,7 +5,7 @@ * @help :: https://esi.tech.ccp.is/ui/ */ -const request = require("request"); +const request = require('request'); module.exports = { character(characterId) { @@ -13,9 +13,9 @@ module.exports = { request( { url: `https://zkillboard.com/api/stats/characterID/${characterId}/`, - method: "GET", + method: 'GET', headers: { - "User-Agent": "https://gloss.space", + 'User-Agent': 'https://gloss.space', }, json: true, gzip: true, @@ -28,13 +28,13 @@ module.exports = { } sails.log.error( - `[ZkillStats.character] ${response.statusCode} ${error}`, + `[ZkillStats.character] ${response.statusCode} ${error}` ); return reject(); } return resolve(body); - }, + } ); }); }, @@ -44,9 +44,9 @@ module.exports = { request( { url: `https://zkillboard.com/api/history/${date}/`, - method: "GET", + method: 'GET', headers: { - "User-Agent": "https://gloss.space", + 'User-Agent': 'https://gloss.space', }, json: true, gzip: true, @@ -59,13 +59,13 @@ module.exports = { } sails.log.error( - `[ZkillStats.history] ${response.statusCode} ${error}`, + `[ZkillStats.history] ${response.statusCode} ${error}` ); return reject(); } return resolve(body); - }, + } ); }); }, diff --git a/app.js b/app.js index 391fdde..83f28a6 100644 --- a/app.js +++ b/app.js @@ -29,34 +29,34 @@ process.chdir(__dirname); var sails; var rc; try { - sails = require("sails"); - rc = require("sails/accessible/rc"); + sails = require('sails'); + rc = require('sails/accessible/rc'); } catch (err) { console.error("Encountered an error when attempting to require('sails'):"); console.error(err.stack); - console.error("--"); + console.error('--'); console.error( - "To run an app using `node app.js`, you need to have Sails installed", + 'To run an app using `node app.js`, you need to have Sails installed' ); console.error( - "locally (`./node_modules/sails`). To do that, just make sure you're", + "locally (`./node_modules/sails`). To do that, just make sure you're" ); - console.error("in the same directory as your app and run `npm install`."); + console.error('in the same directory as your app and run `npm install`.'); console.error(); console.error( - "If Sails is installed globally (i.e. `npm install -g sails`) you can", + 'If Sails is installed globally (i.e. `npm install -g sails`) you can' ); console.error( - "also run this app with `sails lift`. Running with `sails lift` will", + 'also run this app with `sails lift`. Running with `sails lift` will' ); console.error( - "not run this file (`app.js`), but it will do exactly the same thing.", + 'not run this file (`app.js`), but it will do exactly the same thing.' ); console.error( - "(It even uses your app directory's local Sails install, if possible.)", + "(It even uses your app directory's local Sails install, if possible.)" ); return; } //-• // Start server -sails.lift(rc("sails")); +sails.lift(rc('sails')); diff --git a/config/blueprints.js b/config/blueprints.js index 372d77b..ed42ab2 100644 --- a/config/blueprints.js +++ b/config/blueprints.js @@ -25,9 +25,7 @@ module.exports.blueprints = { ***************************************************************************/ rest: true, - - prefix: "/api/sentinel", - + prefix: '/api/sentinel', pluralize: true, /*************************************************************************** diff --git a/config/bootstrap.js b/config/bootstrap.js index 2ba6b50..c605173 100644 --- a/config/bootstrap.js +++ b/config/bootstrap.js @@ -9,7 +9,7 @@ * https://sailsjs.com/config/bootstrap */ -require("dotenv").config(); +require('dotenv').config(); module.exports.bootstrap = async function (done) { let offset = parseInt(process.env.BACKFILL_OFFSET); @@ -34,7 +34,7 @@ module.exports.bootstrap = async function (done) { // Job queue kickoff (config/jobs.js) sails.config.jobs.init(); - if (process.env.TRACK_ENABLED === "true") ZkillSocket.connect(); + if (process.env.TRACK_ENABLED === 'true') ZkillSocket.connect(); // Needed for Sails to complete lift. return done(); diff --git a/config/datastores.js b/config/datastores.js index d67c0e6..7ced733 100644 --- a/config/datastores.js +++ b/config/datastores.js @@ -15,38 +15,20 @@ module.exports.datastores = { sentinel: { - adapter: "sails-postgresql", - host: "localhost", - port: 5432, - database: "sentinel", - user: "sentinel", - password: "sentinel", - }, - - sentinelDev: { - adapter: "sails-postgresql", - host: "localhost", - port: 5432, - database: "sentinel_dev", - user: "sentinel", - password: "sentinel", + adapter: 'sails-postgresql', + host: process.env.DATABASE_HOST, + port: process.env.DATABASE_PORT, + database: process.env.DATABASE_NAME, + user: process.env.DATABASE_USER, + password: process.env.DATABASE_PASSWORD, }, sde: { - adapter: "sails-postgresql", - host: "localhost", - port: 5432, - database: "eve", - user: "eve", - password: "eve", - }, - - sdeDev: { - adapter: "sails-postgresql", - host: "localhost", - port: 5432, - database: "eve_dev", - user: "eve", - password: "eve", + adapter: 'sails-postgresql', + host: process.env.DATABASE_HOST, + port: process.env.DATABASE_PORT, + database: process.env.DATABASE_NAME + '_sde', + user: process.env.DATABASE_USER, + password: process.env.DATABASE_PASSWORD, }, }; diff --git a/config/env/development.js b/config/env/development.js index 23e8702..50156ab 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -8,10 +8,10 @@ module.exports = { models: { - datastore: "sentinelDev", + datastore: 'sentinel', }, - port: 8101, + port: process.env.PORT || 8081, hookTimeout: 60000, }; diff --git a/config/env/production.js b/config/env/production.js index 34db825..f8289ce 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -29,7 +29,7 @@ module.exports = { **************************************************************************/ models: { - datastore: "sentinel", + datastore: 'sentinel', /*************************************************************************** * * @@ -41,7 +41,7 @@ module.exports = { * https://sailsjs.com/docs/concepts/models-and-orm/model-settings#?migrate * * * ***************************************************************************/ - migrate: "safe", + migrate: 'safe', /*************************************************************************** * * @@ -162,7 +162,7 @@ module.exports = { * * ***************************************************************************/ log: { - level: "error", + level: 'error', }, http: { @@ -201,7 +201,7 @@ module.exports = { * this, just try deploying without setting it and see if it works.) * * * ***************************************************************************/ - port: 8081, + port: process.env.PORT || 8081, /************************************************************************** * * @@ -231,7 +231,7 @@ module.exports = { * * ***************************************************************************/ custom: { - baseUrl: "http://gloss.space/api/sentinel", + baseUrl: process.env.BASE_URL, // baseUrl: 'https://example.com', // internalEmailAddress: 'support@example.com', diff --git a/config/globals.js b/config/globals.js index b8257af..f836fb4 100644 --- a/config/globals.js +++ b/config/globals.js @@ -18,7 +18,7 @@ module.exports.globals = { * * ****************************************************************************/ - _: require("lodash"), + _: require('lodash'), /**************************************************************************** * * @@ -28,7 +28,7 @@ module.exports.globals = { * * ****************************************************************************/ - async: require("async"), + async: require('async'), /**************************************************************************** * * diff --git a/config/i18n.js b/config/i18n.js index 67ca11f..21dd4ee 100644 --- a/config/i18n.js +++ b/config/i18n.js @@ -19,7 +19,7 @@ module.exports.i18n = { * * ***************************************************************************/ - locales: ["en", "es", "fr", "de"], + locales: ['en', 'es', 'fr', 'de'], /**************************************************************************** * * diff --git a/config/jobs.js b/config/jobs.js index c405765..de95fdf 100644 --- a/config/jobs.js +++ b/config/jobs.js @@ -6,21 +6,22 @@ * */ -let kue = require("kue"), - moment = require("moment"); -(port = 6667), (webUiPort = 6574); +const kue = require('kue'); +const moment = require('moment'); -if (process.env.NODE_ENV === "production") { - port = 6666; - webUiPort = 6564; -} +// Redis configuration +const host = process.env.REDIS_HOST; +const port = process.env.REDIS_PORT || 6379; + +// Kue configuration +const webUiPort = process.env.WEB_UI_PORT || 6574; let jobs = kue.createQueue({ - prefix: "sentinel", + prefix: 'sentinel', redis: { - host: "127.0.0.1", + host, port, - auth: "", + auth: '', }, disableSearch: true, }); @@ -29,15 +30,15 @@ let jobs = kue.createQueue({ kue.app.listen(webUiPort); // give kue workers time to finish active job -process.once("SIGTERM", function () { +process.once('SIGTERM', function () { jobs.shutdown(function (error) { - sails.log.debug("Kue saw SIGTERM: ", error || "ok"); + sails.log.debug('Kue saw SIGTERM: ', error || 'ok'); process.exit(0); }, 5000); }); let _shouldTrack = (package) => { - if (package.zkb) return !package.zkb.npc || process.env.TRACK_NPC === "true"; + if (package.zkb) return !package.zkb.npc || process.env.TRACK_NPC === 'true'; return ( package.attackers.length > 1 || @@ -48,14 +49,13 @@ let _shouldTrack = (package) => { function init() { // Fleet - - jobs.process("determine_fleet_health", (job, done) => { + jobs.process('determine_fleet_health', (job, done) => { let now = moment(), - fiveMinutesAgo = now.subtract(5, "minutes").toISOString(); + fiveMinutesAgo = now.subtract(5, 'minutes').toISOString(); Fleet.find({ isActive: true, - lastFleetHealthCheck: { "<=": fiveMinutesAgo }, + lastFleetHealthCheck: { '<=': fiveMinutesAgo }, }) .limit(50) .then(async (fleets) => { @@ -76,12 +76,12 @@ function init() { if (!fleet.system) sails.log.error( - `[Job.determineFleetHealth] No fleet.system for fleet with id ${fleet.id}.`, + `[Job.determineFleetHealth] No fleet.system for fleet with id ${fleet.id}.` ); fleet = await FleetSerializer.one(fleet.id); - Dispatcher.notifySockets(fleet, "fleet_expire"); + Dispatcher.notifySockets(fleet, 'fleet_expire'); } else { await Fleet.update(fleet.id, { lastFleetHealthCheck: now.toISOString(), @@ -93,22 +93,22 @@ function init() { }); }); - jobs.process("determine_fleet_threat_level", (job, done) => { + jobs.process('determine_fleet_threat_level', (job, done) => { let now = moment(), - fiveMinutesAgo = now.subtract(5, "minutes").toISOString(); + fiveMinutesAgo = now.subtract(5, 'minutes').toISOString(); Fleet.find({ isActive: true, - lastFleetThreatLevelCheck: { "<=": fiveMinutesAgo }, + lastFleetThreatLevelCheck: { '<=': fiveMinutesAgo }, }) .limit(25) - .populate("characters") + .populate('characters') .then(async (fleets) => { for (let fleet of fleets) { if (fleet.characters.length) { - let dangerRatio = await Character.avg("dangerRatio", { + let dangerRatio = await Character.avg('dangerRatio', { fleet: fleet.id, - dangerRatio: { ">": 0 }, + dangerRatio: { '>': 0 }, }); let lastFleetThreatLevelCheck = moment().toISOString(); @@ -119,7 +119,7 @@ function init() { fleet = await FleetSerializer.one(fleet.id); - Dispatcher.notifySockets(fleet, "fleet"); + Dispatcher.notifySockets(fleet, 'fleet'); } } @@ -129,10 +129,9 @@ function init() { }); // Zkill - - jobs.process("process_zkill_package", (job, done) => { + jobs.process('process_zkill_package', (job, done) => { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [Kue] Processing job for ${job.data.id}`, + `[${new Date().toLocaleTimeString()}] [Kue] Processing job for ${job.data.id}` ); Package.findOne(job.data.id).then((package) => { @@ -140,7 +139,7 @@ function init() { if (!_shouldTrack(resolvedPackage)) { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Not tracking ${resolvedPackage.killmail_id}.`, + `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Not tracking ${resolvedPackage.killmail_id}.` ); return done(); @@ -149,7 +148,7 @@ function init() { ZkillResolve.kill(resolvedPackage) .then(() => { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${job.data.id} finished.`, + `[${new Date().toLocaleTimeString()}] [Zkill.processZkillPackage] Job for ${job.data.id} finished.` ); done(); @@ -160,11 +159,11 @@ function init() { }); }); - jobs.process("backfill", ({ data: { id, hash } }, done) => { + jobs.process('backfill', ({ data: { id, hash } }, done) => { Swagger.killmail(id, hash).then((package) => { if (!_shouldTrack(package)) { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Not tracking ${package.killmail_id}.`, + `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Not tracking ${package.killmail_id}.` ); return done(); @@ -173,7 +172,7 @@ function init() { ZkillResolve.kill(package) .then(() => { sails.log.debug( - `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} finished.`, + `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} finished.` ); sails.config.sentinel.backfill.completed++; @@ -185,19 +184,19 @@ function init() { }); }); - jobs.process("update_danger_ratios", (job, done) => { + jobs.process('update_danger_ratios', (job, done) => { let now = moment(), maxCacheTime = parseInt(process.env.CACHE_CHARACTERS_IN_DAYS), - threshold = now.subtract(maxCacheTime, "days").toISOString(); + threshold = now.subtract(maxCacheTime, 'days').toISOString(); Character.find({ - or: [{ lastZkillUpdate: "" }, { lastZkillUpdate: { "<=": threshold } }], + or: [{ lastZkillUpdate: '' }, { lastZkillUpdate: { '<=': threshold } }], }) .limit(10) .then((characters) => { if (characters && characters instanceof Error) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${characters}`, + `[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${characters}` ); done(characters); } @@ -215,7 +214,7 @@ function init() { }) .catch((error) => { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${error}`, + `[${new Date().toLocaleTimeString()}] [Job.update_danger_ratios] ${error}` ); }); } @@ -228,18 +227,18 @@ function init() { // worker process // Interval Jobs - if (process.env.TRACK_ENABLED === "true") { - require("../jobs/ZkillJobs").kickoff(); - require("../jobs/FleetJobs").kickoff(); - require("../jobs/SwaggerJobs").kickoff(); + if (process.env.TRACK_ENABLED === 'true') { + require('../jobs/ZkillJobs').kickoff(); + require('../jobs/FleetJobs').kickoff(); + require('../jobs/SwaggerJobs').kickoff(); } // remove jobs once completed - jobs.on("job complete", function (id) { + jobs.on('job complete', function (id) { kue.Job.get(id, function (err, job) { if (err) { console.log( - `[${new Date().toLocaleTimeString()}] [Kue] Job ${id} failed: ${err}`, + `[${new Date().toLocaleTimeString()}] [Kue] Job ${id} failed: ${err}` ); } diff --git a/config/models.js b/config/models.js index 3bfe30f..6fa9852 100644 --- a/config/models.js +++ b/config/models.js @@ -50,7 +50,7 @@ module.exports.models = { * * ***************************************************************************/ - migrate: "safe", + migrate: 'safe', /*************************************************************************** * * @@ -65,9 +65,9 @@ module.exports.models = { ***************************************************************************/ attributes: { - createdAt: { type: "string", autoCreatedAt: true }, - updatedAt: { type: "string", autoUpdatedAt: true }, - id: { columnName: "id", type: "number", autoIncrement: true }, + createdAt: { type: 'string', autoCreatedAt: true }, + updatedAt: { type: 'string', autoUpdatedAt: true }, + id: { columnName: 'id', type: 'number', autoIncrement: true }, }, /****************************************************************************** @@ -85,7 +85,7 @@ module.exports.models = { ******************************************************************************/ dataEncryptionKeys: { - default: "W/PubfPP/wmgjWNLF3h/nfwhQ/r90xdM0mZVsXVIPeg=", + default: 'W/PubfPP/wmgjWNLF3h/nfwhQ/r90xdM0mZVsXVIPeg=', }, /*************************************************************************** diff --git a/config/redis.js b/config/redis.js index 0af6f48..ef3867a 100644 --- a/config/redis.js +++ b/config/redis.js @@ -1,12 +1,8 @@ -let redis = require("redis"), - redisUrl = "redis://localhost:6667/"; +const redis = require('redis'); +const redisUrl = `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`; -if (process.env.NODE_ENV === "production") { - redisUrl = "redis://localhost:6666/"; -} +const db = redis.createClient(redisUrl); -let db = redis.createClient(redisUrl); - -db.flushdb(); +// db.flushdb(); module.exports.redis = db; diff --git a/config/routes.js b/config/routes.js index b04587e..9035faa 100644 --- a/config/routes.js +++ b/config/routes.js @@ -9,9 +9,9 @@ */ module.exports.routes = { - "GET /api/sentinel/fleets/active": "FleetController.active", + 'GET /api/sentinel/fleets/active': 'FleetController.active', - "GET /api/sentinel/socket": "SocketController.connect", + 'GET /api/sentinel/socket': 'SocketController.connect', - "GET /api/sentinel/status": "StatusController.status", + 'GET /api/sentinel/status': 'StatusController.status', }; diff --git a/config/sockets.js b/config/sockets.js index ff4deb4..0f374c0 100644 --- a/config/sockets.js +++ b/config/sockets.js @@ -26,7 +26,7 @@ module.exports.sockets = { * * ***************************************************************************/ - transports: ["websocket"], + transports: ['websocket'], /*************************************************************************** * * diff --git a/jobs/FleetJobs.js b/jobs/FleetJobs.js index f0923f9..216aa98 100644 --- a/jobs/FleetJobs.js +++ b/jobs/FleetJobs.js @@ -11,12 +11,12 @@ let FleetJobs = { determineFleetHealth() { let job = sails.config.jobs - .create("determine_fleet_health") - .priority("low") + .create('determine_fleet_health') + .priority('low') .ttl(everyMinute); - job.on("failed", function (err) { - sails.log.error("[Fleet.determineFleetHealth] Job failed"); + job.on('failed', function (err) { + sails.log.error('[Fleet.determineFleetHealth] Job failed'); sails.log.error(err); }); @@ -25,12 +25,12 @@ let FleetJobs = { determineFleetThreatLevel() { let job = sails.config.jobs - .create("determine_fleet_threat_level") - .priority("low") + .create('determine_fleet_threat_level') + .priority('low') .ttl(everyMinute); - job.on("failed", function (err) { - sails.log.error("[Fleet.determineFleetThreatlevel] Job failed"); + job.on('failed', function (err) { + sails.log.error('[Fleet.determineFleetThreatlevel] Job failed'); sails.log.error(err); }); diff --git a/jobs/ZkillJobs.js b/jobs/ZkillJobs.js index 32486ce..a079173 100644 --- a/jobs/ZkillJobs.js +++ b/jobs/ZkillJobs.js @@ -1,5 +1,5 @@ -const { CronJob } = require("cron"); -const moment = require("moment"); +const { CronJob } = require('cron'); +const moment = require('moment'); const everyMinute = 1000 * 60; const everyThirtySeconds = everyMinute / 2; @@ -10,7 +10,7 @@ let ZkillJobs = { setInterval(this.updateDangerRatios, everyThirtySeconds); - if (process.env.BACKFILL_ENABLED === "true") { + if (process.env.BACKFILL_ENABLED === 'true') { let schedule = process.env.BACKFILL_SCHEDULE; let timezone = process.env.TIMEZONE; @@ -22,12 +22,12 @@ let ZkillJobs = { updateDangerRatios() { let job = sails.config.jobs - .create("update_danger_ratios") - .priority("low") + .create('update_danger_ratios') + .priority('low') .ttl(everyMinute); - job.on("failed", function (err) { - sails.log.error("[Zkill.updateDangerRatios] Job failed"); + job.on('failed', function (err) { + sails.log.error('[Zkill.updateDangerRatios] Job failed'); sails.log.error(err); }); @@ -37,10 +37,10 @@ let ZkillJobs = { async backfill() { let backfillOffset = sails.config.sentinel.backfill.current; - console.log("Current backfill offset", backfillOffset); + console.log('Current backfill offset', backfillOffset); console.log(typeof backfillOffset); - let day = moment().subtract(backfillOffset, "days").format("YYYYMMDD"); + let day = moment().subtract(backfillOffset, 'days').format('YYYYMMDD'); let killHash = await ZkillStats.history(day); let killHashKeys = _.keys(killHash); let firstKill = parseInt(_.first(killHashKeys)); @@ -49,7 +49,7 @@ let ZkillJobs = { let { rows: missingIds } = await Kill.getDatastore().sendNativeQuery( `SELECT s.i AS "killId" FROM generate_series(${firstKill}, ${lastKill}) s(i) - WHERE NOT EXISTS (SELECT 1 FROM kill WHERE "killId" = s.i);`, + WHERE NOT EXISTS (SELECT 1 FROM kill WHERE "killId" = s.i);` ); let backfillIds = []; @@ -60,24 +60,24 @@ let ZkillJobs = { sails.log.debug(`Backfilling for ${day}`); sails.log.debug( - `${backfillIds.length} kills to backfill (out of ${killHashKeys.length})`, + `${backfillIds.length} kills to backfill (out of ${killHashKeys.length})` ); sails.log.debug( - `Had ${((1 - backfillIds.length / killHashKeys.length) * 100).toFixed(2)}% before backfill.`, + `Had ${((1 - backfillIds.length / killHashKeys.length) * 100).toFixed(2)}% before backfill.` ); sails.log.debug( - `Note that NPC and structure kills are included in backfill calc, because the kill packages have not been resolved yet.`, + `Note that NPC and structure kills are included in backfill calc, because the kill packages have not been resolved yet.` ); for (let id of backfillIds) { let hash = killHash[id]; let job = sails.config.jobs - .create("backfill", { id, hash }) - .priority("low"); + .create('backfill', { id, hash }) + .priority('low'); - job.on("failed", function (err) { + job.on('failed', function (err) { sails.log.error( - `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} failed`, + `[${new Date().toLocaleTimeString()}] [Zkill.backfill] Job for ${id} failed` ); sails.log.error(err); }); diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..73cb125 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,10 @@ +module.exports = { + trailingComma: 'es5', + htmlWhitespaceSensitivity: 'css', + singleAttributePerLine: true, + bracketSameLine: false, + tabWidth: 2, + semi: true, + singleQuote: true, + endOfLine: 'lf', +}; From 94fc0a4cb57a36aa52d25c6ec6c13e48009becd6 Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 22:10:33 -0400 Subject: [PATCH 5/9] Config --- .env.example | 6 +++--- config/datastores.js | 4 ++-- config/env/development.js | 4 +--- config/env/production.js | 2 +- config/jobs.js | 2 +- config/redis.js | 2 +- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index 97afd85..afea6cf 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,5 @@ -BASE_URL=http://localhost -DATABASE_HOST=localhost +BASE_URL=http://127.0.0.1 +DATABASE_HOST=127.0.0.1 DATABASE_PORT=5432 DATABASE_NAME=sentinel DATABASE_USER=sentinel @@ -12,7 +12,7 @@ TRACK_NPC=false TRACK_FLEETS=true FLEET_EXPIRY_IN_MINUTES=30 CACHE_CHARACTERS_IN_DAYS=7 -BACKFILL_ENABLED=true +BACKFILL_ENABLED=false BACKFILL_OFFSET=0 BACKFILL_SCHEDULE=0 11 * * * TIMEZONE=Atlantic/Reykjavik diff --git a/config/datastores.js b/config/datastores.js index 7ced733..88e18d5 100644 --- a/config/datastores.js +++ b/config/datastores.js @@ -14,7 +14,7 @@ */ module.exports.datastores = { - sentinel: { + default: { adapter: 'sails-postgresql', host: process.env.DATABASE_HOST, port: process.env.DATABASE_PORT, @@ -27,7 +27,7 @@ module.exports.datastores = { adapter: 'sails-postgresql', host: process.env.DATABASE_HOST, port: process.env.DATABASE_PORT, - database: process.env.DATABASE_NAME + '_sde', + database: 'sde', user: process.env.DATABASE_USER, password: process.env.DATABASE_PASSWORD, }, diff --git a/config/env/development.js b/config/env/development.js index 50156ab..fccef46 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -8,10 +8,8 @@ module.exports = { models: { - datastore: 'sentinel', + datastore: 'default', }, - port: process.env.PORT || 8081, - hookTimeout: 60000, }; diff --git a/config/env/production.js b/config/env/production.js index f8289ce..960b0b3 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -29,7 +29,7 @@ module.exports = { **************************************************************************/ models: { - datastore: 'sentinel', + datastore: 'default', /*************************************************************************** * * diff --git a/config/jobs.js b/config/jobs.js index de95fdf..38b7d84 100644 --- a/config/jobs.js +++ b/config/jobs.js @@ -16,7 +16,7 @@ const port = process.env.REDIS_PORT || 6379; // Kue configuration const webUiPort = process.env.WEB_UI_PORT || 6574; -let jobs = kue.createQueue({ +const jobs = kue.createQueue({ prefix: 'sentinel', redis: { host, diff --git a/config/redis.js b/config/redis.js index ef3867a..bf65b52 100644 --- a/config/redis.js +++ b/config/redis.js @@ -1,5 +1,5 @@ const redis = require('redis'); -const redisUrl = `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`; +const redisUrl = `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/`; const db = redis.createClient(redisUrl); From 1c57f48f1d22259b6080dc5e8afc146fd6bd480a Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 22:25:12 -0400 Subject: [PATCH 6/9] Update zKill config --- api/services/ZkillSocket.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/services/ZkillSocket.js b/api/services/ZkillSocket.js index 2a96806..8efc7ff 100644 --- a/api/services/ZkillSocket.js +++ b/api/services/ZkillSocket.js @@ -9,7 +9,7 @@ const WebSocket = require('ws'); let ZkillSocket = { connect() { - this.socket = new WebSocket('wss://zkillboard.com:2096'); + this.socket = new WebSocket('wss://zkillboard.com/websocket/'); sails.log.debug( `[${new Date().toLocaleTimeString()}] [ZkillSocket] Initializing new socket instance.` From 1b9efeb22226688c6118728a3b3287f6b73263a3 Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Fri, 14 Mar 2025 23:14:12 -0400 Subject: [PATCH 7/9] Update zKill API usage --- api/services/ZkillSocket.js | 5 ++++- config/jobs.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/api/services/ZkillSocket.js b/api/services/ZkillSocket.js index 8efc7ff..475d983 100644 --- a/api/services/ZkillSocket.js +++ b/api/services/ZkillSocket.js @@ -77,7 +77,10 @@ let ZkillSocket = { }); this.socket.on('message', async (data) => { - let package = await Package.create({ body: data }).fetch(); + // Convert Buffer to string + const parsedData = JSON.parse(data.toString()); + + let package = await Package.create({ body: parsedData }).fetch(); let job = sails.config.jobs.create('process_zkill_package', { id: package.id, diff --git a/config/jobs.js b/config/jobs.js index 38b7d84..51b024d 100644 --- a/config/jobs.js +++ b/config/jobs.js @@ -135,7 +135,7 @@ function init() { ); Package.findOne(job.data.id).then((package) => { - let resolvedPackage = JSON.parse(package.body); + let resolvedPackage = package.body; if (!_shouldTrack(resolvedPackage)) { sails.log.debug( From 2d3240eb49e18e11f62702f14711516b8df00e77 Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Thu, 20 Mar 2025 21:56:16 -0400 Subject: [PATCH 8/9] Use SDE DB config that's closer to the defaults provided --- config/datastores.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/datastores.js b/config/datastores.js index 88e18d5..24ae3bd 100644 --- a/config/datastores.js +++ b/config/datastores.js @@ -27,8 +27,8 @@ module.exports.datastores = { adapter: 'sails-postgresql', host: process.env.DATABASE_HOST, port: process.env.DATABASE_PORT, - database: 'sde', - user: process.env.DATABASE_USER, - password: process.env.DATABASE_PASSWORD, + database: 'yaml', + user: 'yaml', + password: 'yaml', }, }; From 56584b940ca028669cda6cdc7b0544f24e8e7d42 Mon Sep 17 00:00:00 2001 From: Doug Estey Date: Thu, 20 Mar 2025 21:59:10 -0400 Subject: [PATCH 9/9] Update gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 2f42935..f2effed 100644 --- a/.gitignore +++ b/.gitignore @@ -131,3 +131,7 @@ lib-cov *.pid .env +.github + +# EVE SDE +evedb/