diff --git a/.pnp.js b/.pnp.js index 9009463..e4b0405 100755 --- a/.pnp.js +++ b/.pnp.js @@ -42,7 +42,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["koa-body", "npm:4.2.0"], ["koa-helmet", "npm:6.0.0"], ["koa-logger", "npm:3.2.1"], - ["koa-router", "npm:10.0.0"] + ["koa-router", "npm:10.0.0"], + ["koa2-ratelimit", "npm:0.9.0"] ], "linkType": "SOFT", }] @@ -922,6 +923,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["@types/bson", [ + ["npm:4.0.3", { + "packageLocation": "./.yarn/cache/@types-bson-npm-4.0.3-4ec8c44242-73c0179851.zip/node_modules/@types/bson/", + "packageDependencies": [ + ["@types/bson", "npm:4.0.3"], + ["@types/node", "npm:14.14.32"] + ], + "linkType": "HARD", + }] + ]], ["@types/formidable", [ ["npm:1.0.32", { "packageLocation": "./.yarn/cache/@types-formidable-npm-1.0.32-12f895a971-98f3f54727.zip/node_modules/@types/formidable/", @@ -971,6 +982,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["@types/mongodb", [ + ["npm:3.6.9", { + "packageLocation": "./.yarn/cache/@types-mongodb-npm-3.6.9-2e9fa33eb9-ab78a36f7d.zip/node_modules/@types/mongodb/", + "packageDependencies": [ + ["@types/mongodb", "npm:3.6.9"], + ["@types/bson", "npm:4.0.3"], + ["@types/node", "npm:14.14.32"] + ], + "linkType": "HARD", + }] + ]], ["@types/node", [ ["npm:14.14.32", { "packageLocation": "./.yarn/cache/@types-node-npm-14.14.32-2727f07820-ae73f3b668.zip/node_modules/@types/node/", @@ -1455,6 +1477,33 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["bl", [ + ["npm:2.2.1", { + "packageLocation": "./.yarn/cache/bl-npm-2.2.1-f294e1ea12-438c510aa2.zip/node_modules/bl/", + "packageDependencies": [ + ["bl", "npm:2.2.1"], + ["readable-stream", "npm:2.3.7"], + ["safe-buffer", "npm:5.2.1"] + ], + "linkType": "HARD", + }] + ]], + ["bluebird", [ + ["npm:3.5.1", { + "packageLocation": "./.yarn/cache/bluebird-npm-3.5.1-f0d1499f67-11347ec6d5.zip/node_modules/bluebird/", + "packageDependencies": [ + ["bluebird", "npm:3.5.1"] + ], + "linkType": "HARD", + }], + ["npm:3.7.2", { + "packageLocation": "./.yarn/cache/bluebird-npm-3.7.2-6a54136ee3-4f2288662f.zip/node_modules/bluebird/", + "packageDependencies": [ + ["bluebird", "npm:3.7.2"] + ], + "linkType": "HARD", + }] + ]], ["brace-expansion", [ ["npm:1.1.11", { "packageLocation": "./.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-4c878e25e4.zip/node_modules/brace-expansion/", @@ -1526,6 +1575,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["bson", [ + ["npm:1.1.5", { + "packageLocation": "./.yarn/cache/bson-npm-1.1.5-1b827c162d-d1e6fe96ba.zip/node_modules/bson/", + "packageDependencies": [ + ["bson", "npm:1.1.5"] + ], + "linkType": "HARD", + }] + ]], ["buffer-from", [ ["npm:1.1.1", { "packageLocation": "./.yarn/cache/buffer-from-npm-1.1.1-22917b8ed8-540ceb79c4.zip/node_modules/buffer-from/", @@ -1708,6 +1766,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["cls-bluebird", [ + ["npm:2.1.0", { + "packageLocation": "./.yarn/cache/cls-bluebird-npm-2.1.0-1a11680445-f3b31004a9.zip/node_modules/cls-bluebird/", + "packageDependencies": [ + ["cls-bluebird", "npm:2.1.0"], + ["is-bluebird", "npm:1.0.2"], + ["shimmer", "npm:1.2.1"] + ], + "linkType": "HARD", + }] + ]], ["co", [ ["npm:4.6.0", { "packageLocation": "./.yarn/cache/co-npm-4.6.0-03f2d1feb6-3f22dbbe0f.zip/node_modules/co/", @@ -2003,11 +2072,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ], "linkType": "HARD", }], - ["virtual:71ea54087243fefc16fde4b11d95f9eb477e415c7421826db923917f0e4dceec4fe3d86d7bfb6c329c21b575806e6747ac2d62e670e3f6883a666e4b547ea8d6#npm:3.1.0", { - "packageLocation": "./.yarn/$$virtual/debug-virtual-85076ebe0f/0/cache/debug-npm-3.1.0-9f0accb99b-1295acd5e0.zip/node_modules/debug/", + ["virtual:bb5021588f7e5595fb57318130fbd71573bb1e56e36c52894c6ab92335cefc204411143fb343142c8264fb8b584b87ad650c627bf465ca1d60190627a49cbc6b#npm:4.3.2", { + "packageLocation": "./.yarn/$$virtual/debug-virtual-02669c90d4/0/cache/debug-npm-4.3.2-f0148b6afe-5543570879.zip/node_modules/debug/", "packageDependencies": [ - ["debug", "virtual:71ea54087243fefc16fde4b11d95f9eb477e415c7421826db923917f0e4dceec4fe3d86d7bfb6c329c21b575806e6747ac2d62e670e3f6883a666e4b547ea8d6#npm:3.1.0"], - ["ms", "npm:2.0.0"], + ["debug", "virtual:bb5021588f7e5595fb57318130fbd71573bb1e56e36c52894c6ab92335cefc204411143fb343142c8264fb8b584b87ad650c627bf465ca1d60190627a49cbc6b#npm:4.3.2"], + ["ms", "npm:2.1.2"], ["supports-color", null] ], "packagePeers": [ @@ -2015,11 +2084,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ], "linkType": "HARD", }], - ["virtual:bb5021588f7e5595fb57318130fbd71573bb1e56e36c52894c6ab92335cefc204411143fb343142c8264fb8b584b87ad650c627bf465ca1d60190627a49cbc6b#npm:4.3.2", { - "packageLocation": "./.yarn/$$virtual/debug-virtual-02669c90d4/0/cache/debug-npm-4.3.2-f0148b6afe-5543570879.zip/node_modules/debug/", + ["virtual:fd152ef5ea5b927af21613a3ffacbfad00494590b9686e04fe1654481f3136deac22592ee6d819887e9b3378ff79aab24e896b9bd74fc8fb363f8ddd9a495b64#npm:3.1.0", { + "packageLocation": "./.yarn/$$virtual/debug-virtual-95079f485d/0/cache/debug-npm-3.1.0-9f0accb99b-1295acd5e0.zip/node_modules/debug/", "packageDependencies": [ - ["debug", "virtual:bb5021588f7e5595fb57318130fbd71573bb1e56e36c52894c6ab92335cefc204411143fb343142c8264fb8b584b87ad650c627bf465ca1d60190627a49cbc6b#npm:4.3.2"], - ["ms", "npm:2.1.2"], + ["debug", "virtual:fd152ef5ea5b927af21613a3ffacbfad00494590b9686e04fe1654481f3136deac22592ee6d819887e9b3378ff79aab24e896b9bd74fc8fb363f8ddd9a495b64#npm:3.1.0"], + ["ms", "npm:2.0.0"], ["supports-color", null] ], "packagePeers": [ @@ -2127,6 +2196,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["denque", [ + ["npm:1.5.0", { + "packageLocation": "./.yarn/cache/denque-npm-1.5.0-fd3ca7b46a-3564778cda.zip/node_modules/denque/", + "packageDependencies": [ + ["denque", "npm:1.5.0"] + ], + "linkType": "HARD", + }] + ]], ["depd", [ ["npm:1.1.2", { "packageLocation": "./.yarn/cache/depd-npm-1.1.2-b0c8414da7-f45566ff70.zip/node_modules/depd/", @@ -2180,6 +2258,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["dottie", [ + ["npm:2.0.2", { + "packageLocation": "./.yarn/cache/dottie-npm-2.0.2-ef16765a8f-91e8553058.zip/node_modules/dottie/", + "packageDependencies": [ + ["dottie", "npm:2.0.2"] + ], + "linkType": "HARD", + }] + ]], ["ecc-jsbn", [ ["npm:0.1.2", { "packageLocation": "./.yarn/cache/ecc-jsbn-npm-0.1.2-85b7a7be89-5b4dd05f24.zip/node_modules/ecc-jsbn/", @@ -3008,6 +3095,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["inflection", [ + ["npm:1.12.0", { + "packageLocation": "./.yarn/cache/inflection-npm-1.12.0-528e724bc4-b08d8b92fc.zip/node_modules/inflection/", + "packageDependencies": [ + ["inflection", "npm:1.12.0"] + ], + "linkType": "HARD", + }] + ]], ["inflight", [ ["npm:1.0.6", { "packageLocation": "./.yarn/cache/inflight-npm-1.0.6-ccedb4b908-17c53fc42c.zip/node_modules/inflight/", @@ -3064,6 +3160,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["is-bluebird", [ + ["npm:1.0.2", { + "packageLocation": "./.yarn/cache/is-bluebird-npm-1.0.2-5cb8e3b80c-88981b25d8.zip/node_modules/is-bluebird/", + "packageDependencies": [ + ["is-bluebird", "npm:1.0.2"] + ], + "linkType": "HARD", + }] + ]], ["is-buffer", [ ["npm:1.1.6", { "packageLocation": "./.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-336ec78f00.zip/node_modules/is-buffer/", @@ -4012,6 +4117,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["kareem", [ + ["npm:2.3.2", { + "packageLocation": "./.yarn/cache/kareem-npm-2.3.2-b3c6b60e2e-de7225607b.zip/node_modules/kareem/", + "packageDependencies": [ + ["kareem", "npm:2.3.2"] + ], + "linkType": "HARD", + }] + ]], ["keygrip", [ ["npm:1.1.0", { "packageLocation": "./.yarn/cache/keygrip-npm-1.1.0-8da030c3ff-917fc9c6ad.zip/node_modules/keygrip/", @@ -4073,7 +4187,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["content-disposition", "npm:0.5.3"], ["content-type", "npm:1.0.4"], ["cookies", "npm:0.8.0"], - ["debug", "virtual:71ea54087243fefc16fde4b11d95f9eb477e415c7421826db923917f0e4dceec4fe3d86d7bfb6c329c21b575806e6747ac2d62e670e3f6883a666e4b547ea8d6#npm:3.1.0"], + ["debug", "virtual:fd152ef5ea5b927af21613a3ffacbfad00494590b9686e04fe1654481f3136deac22592ee6d819887e9b3378ff79aab24e896b9bd74fc8fb363f8ddd9a495b64#npm:3.1.0"], ["delegates", "npm:1.0.0"], ["depd", "npm:2.0.0"], ["destroy", "npm:1.0.4"], @@ -4172,6 +4286,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["koa2-ratelimit", [ + ["npm:0.9.0", { + "packageLocation": "./.yarn/cache/koa2-ratelimit-npm-0.9.0-377f490985-768e80f77a.zip/node_modules/koa2-ratelimit/", + "packageDependencies": [ + ["koa2-ratelimit", "npm:0.9.0"], + ["mongoose", "npm:5.11.19"], + ["promise-redis", "npm:0.0.5"], + ["sequelize", "npm:5.22.3"] + ], + "linkType": "HARD", + }] + ]], ["leven", [ ["npm:3.1.0", { "packageLocation": "./.yarn/cache/leven-npm-3.1.0-b7697736a3-6ebca75298.zip/node_modules/leven/", @@ -4287,6 +4413,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["memory-pager", [ + ["npm:1.5.0", { + "packageLocation": "./.yarn/cache/memory-pager-npm-1.5.0-46e20e6c81-6812af8165.zip/node_modules/memory-pager/", + "packageDependencies": [ + ["memory-pager", "npm:1.5.0"] + ], + "linkType": "HARD", + }] + ]], ["merge-stream", [ ["npm:2.0.0", { "packageLocation": "./.yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-cde834809a.zip/node_modules/merge-stream/", @@ -4424,6 +4559,127 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["moment", [ + ["npm:2.29.1", { + "packageLocation": "./.yarn/cache/moment-npm-2.29.1-787d9fdafd-86729013fe.zip/node_modules/moment/", + "packageDependencies": [ + ["moment", "npm:2.29.1"] + ], + "linkType": "HARD", + }] + ]], + ["moment-timezone", [ + ["npm:0.5.33", { + "packageLocation": "./.yarn/cache/moment-timezone-npm-0.5.33-f2b784cd1b-d4e72a3514.zip/node_modules/moment-timezone/", + "packageDependencies": [ + ["moment-timezone", "npm:0.5.33"], + ["moment", "npm:2.29.1"] + ], + "linkType": "HARD", + }] + ]], + ["mongodb", [ + ["npm:3.6.4", { + "packageLocation": "./.yarn/cache/mongodb-npm-3.6.4-1ff94acb62-f2331e7cdc.zip/node_modules/mongodb/", + "packageDependencies": [ + ["mongodb", "npm:3.6.4"] + ], + "linkType": "SOFT", + }], + ["virtual:c8c80dbc4908acf95c1e1a821b5c49876cee185b8e332e282743610941a5d61447c440cfe6c497980e02c7fdad759cbcad6de962ff612d13f1297e4df9862b67#npm:3.6.4", { + "packageLocation": "./.yarn/$$virtual/mongodb-virtual-0f4a28c1dc/0/cache/mongodb-npm-3.6.4-1ff94acb62-f2331e7cdc.zip/node_modules/mongodb/", + "packageDependencies": [ + ["mongodb", "virtual:c8c80dbc4908acf95c1e1a821b5c49876cee185b8e332e282743610941a5d61447c440cfe6c497980e02c7fdad759cbcad6de962ff612d13f1297e4df9862b67#npm:3.6.4"], + ["aws4", null], + ["bl", "npm:2.2.1"], + ["bson", "npm:1.1.5"], + ["bson-ext", null], + ["denque", "npm:1.5.0"], + ["kerberos", null], + ["mongodb-client-encryption", null], + ["mongodb-extjson", null], + ["require_optional", "npm:1.0.1"], + ["safe-buffer", "npm:5.2.1"], + ["saslprep", "npm:1.0.3"], + ["snappy", null] + ], + "packagePeers": [ + "aws4", + "bson-ext", + "kerberos", + "mongodb-client-encryption", + "mongodb-extjson", + "snappy" + ], + "linkType": "HARD", + }] + ]], + ["mongoose", [ + ["npm:5.11.19", { + "packageLocation": "./.yarn/cache/mongoose-npm-5.11.19-c8c80dbc49-45b01cb131.zip/node_modules/mongoose/", + "packageDependencies": [ + ["mongoose", "npm:5.11.19"], + ["@types/mongodb", "npm:3.6.9"], + ["bson", "npm:1.1.5"], + ["kareem", "npm:2.3.2"], + ["mongodb", "virtual:c8c80dbc4908acf95c1e1a821b5c49876cee185b8e332e282743610941a5d61447c440cfe6c497980e02c7fdad759cbcad6de962ff612d13f1297e4df9862b67#npm:3.6.4"], + ["mongoose-legacy-pluralize", "virtual:c8c80dbc4908acf95c1e1a821b5c49876cee185b8e332e282743610941a5d61447c440cfe6c497980e02c7fdad759cbcad6de962ff612d13f1297e4df9862b67#npm:1.0.2"], + ["mpath", "npm:0.8.3"], + ["mquery", "npm:3.2.4"], + ["ms", "npm:2.1.2"], + ["regexp-clone", "npm:1.0.0"], + ["safe-buffer", "npm:5.2.1"], + ["sift", "npm:7.0.1"], + ["sliced", "npm:1.0.1"] + ], + "linkType": "HARD", + }] + ]], + ["mongoose-legacy-pluralize", [ + ["npm:1.0.2", { + "packageLocation": "./.yarn/cache/mongoose-legacy-pluralize-npm-1.0.2-2fbdda9a5a-a1f86450b3.zip/node_modules/mongoose-legacy-pluralize/", + "packageDependencies": [ + ["mongoose-legacy-pluralize", "npm:1.0.2"] + ], + "linkType": "SOFT", + }], + ["virtual:c8c80dbc4908acf95c1e1a821b5c49876cee185b8e332e282743610941a5d61447c440cfe6c497980e02c7fdad759cbcad6de962ff612d13f1297e4df9862b67#npm:1.0.2", { + "packageLocation": "./.yarn/$$virtual/mongoose-legacy-pluralize-virtual-578094a483/0/cache/mongoose-legacy-pluralize-npm-1.0.2-2fbdda9a5a-a1f86450b3.zip/node_modules/mongoose-legacy-pluralize/", + "packageDependencies": [ + ["mongoose-legacy-pluralize", "virtual:c8c80dbc4908acf95c1e1a821b5c49876cee185b8e332e282743610941a5d61447c440cfe6c497980e02c7fdad759cbcad6de962ff612d13f1297e4df9862b67#npm:1.0.2"], + ["@types/mongoose", null], + ["mongoose", "npm:5.11.19"] + ], + "packagePeers": [ + "@types/mongoose", + "mongoose" + ], + "linkType": "HARD", + }] + ]], + ["mpath", [ + ["npm:0.8.3", { + "packageLocation": "./.yarn/cache/mpath-npm-0.8.3-c764f5a56c-6c129da222.zip/node_modules/mpath/", + "packageDependencies": [ + ["mpath", "npm:0.8.3"] + ], + "linkType": "HARD", + }] + ]], + ["mquery", [ + ["npm:3.2.4", { + "packageLocation": "./.yarn/cache/mquery-npm-3.2.4-fd152ef5ea-80410d4e80.zip/node_modules/mquery/", + "packageDependencies": [ + ["mquery", "npm:3.2.4"], + ["bluebird", "npm:3.5.1"], + ["debug", "virtual:fd152ef5ea5b927af21613a3ffacbfad00494590b9686e04fe1654481f3136deac22592ee6d819887e9b3378ff79aab24e896b9bd74fc8fb363f8ddd9a495b64#npm:3.1.0"], + ["regexp-clone", "npm:1.0.0"], + ["safe-buffer", "npm:5.1.2"], + ["sliced", "npm:1.0.1"] + ], + "linkType": "HARD", + }] + ]], ["ms", [ ["npm:2.0.0", { "packageLocation": "./.yarn/cache/ms-npm-2.0.0-9e1101a471-1a230340cc.zip/node_modules/ms/", @@ -4967,6 +5223,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["promise-redis", [ + ["npm:0.0.5", { + "packageLocation": "./.yarn/cache/promise-redis-npm-0.0.5-d6dc567e1e-0871ee02e6.zip/node_modules/promise-redis/", + "packageDependencies": [ + ["promise-redis", "npm:0.0.5"], + ["redis", "npm:3.0.2"], + ["redis-commands", "npm:1.7.0"] + ], + "linkType": "HARD", + }] + ]], ["prompts", [ ["npm:2.4.0", { "packageLocation": "./.yarn/cache/prompts-npm-2.4.0-44f1e10a9a-fd375679ad.zip/node_modules/prompts/", @@ -5086,6 +5353,47 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["redis", [ + ["npm:3.0.2", { + "packageLocation": "./.yarn/cache/redis-npm-3.0.2-488560e37e-74858b9f5a.zip/node_modules/redis/", + "packageDependencies": [ + ["redis", "npm:3.0.2"], + ["denque", "npm:1.5.0"], + ["redis-commands", "npm:1.7.0"], + ["redis-errors", "npm:1.2.0"], + ["redis-parser", "npm:3.0.0"] + ], + "linkType": "HARD", + }] + ]], + ["redis-commands", [ + ["npm:1.7.0", { + "packageLocation": "./.yarn/cache/redis-commands-npm-1.7.0-528f61f9d8-cbf5d33768.zip/node_modules/redis-commands/", + "packageDependencies": [ + ["redis-commands", "npm:1.7.0"] + ], + "linkType": "HARD", + }] + ]], + ["redis-errors", [ + ["npm:1.2.0", { + "packageLocation": "./.yarn/cache/redis-errors-npm-1.2.0-a81fd9b0f1-b260bb64a1.zip/node_modules/redis-errors/", + "packageDependencies": [ + ["redis-errors", "npm:1.2.0"] + ], + "linkType": "HARD", + }] + ]], + ["redis-parser", [ + ["npm:3.0.0", { + "packageLocation": "./.yarn/cache/redis-parser-npm-3.0.0-7ebe40abcb-45dbcb05be.zip/node_modules/redis-parser/", + "packageDependencies": [ + ["redis-parser", "npm:3.0.0"], + ["redis-errors", "npm:1.2.0"] + ], + "linkType": "HARD", + }] + ]], ["regex-not", [ ["npm:1.0.2", { "packageLocation": "./.yarn/cache/regex-not-npm-1.0.2-06a03c9206-3d6d95b4fd.zip/node_modules/regex-not/", @@ -5097,6 +5405,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["regexp-clone", [ + ["npm:1.0.0", { + "packageLocation": "./.yarn/cache/regexp-clone-npm-1.0.0-969a61b0d1-0cb16b8806.zip/node_modules/regexp-clone/", + "packageDependencies": [ + ["regexp-clone", "npm:1.0.0"] + ], + "linkType": "HARD", + }] + ]], ["remove-trailing-separator", [ ["npm:1.1.0", { "packageLocation": "./.yarn/cache/remove-trailing-separator-npm-1.1.0-16d7231316-17dadf3d1f.zip/node_modules/remove-trailing-separator/", @@ -5219,6 +5536,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["require_optional", [ + ["npm:1.0.1", { + "packageLocation": "./.yarn/cache/require_optional-npm-1.0.1-4f914df17e-2a7cae14fc.zip/node_modules/require_optional/", + "packageDependencies": [ + ["require_optional", "npm:1.0.1"], + ["resolve-from", "npm:2.0.0"], + ["semver", "npm:5.7.1"] + ], + "linkType": "HARD", + }] + ]], ["resolve", [ ["patch:resolve@npm%3A1.20.0#builtin::version=1.20.0&hash=3388aa", { "packageLocation": "./.yarn/cache/resolve-patch-55fcdb097c-c4a515b760.zip/node_modules/resolve/", @@ -5241,6 +5569,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }] ]], ["resolve-from", [ + ["npm:2.0.0", { + "packageLocation": "./.yarn/cache/resolve-from-npm-2.0.0-7d5a73a272-e2cfa9d440.zip/node_modules/resolve-from/", + "packageDependencies": [ + ["resolve-from", "npm:2.0.0"] + ], + "linkType": "HARD", + }], ["npm:5.0.0", { "packageLocation": "./.yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-0d29fc7012.zip/node_modules/resolve-from/", "packageDependencies": [ @@ -5267,6 +5602,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["retry-as-promised", [ + ["npm:3.2.0", { + "packageLocation": "./.yarn/cache/retry-as-promised-npm-3.2.0-292b66348b-4aab2302ba.zip/node_modules/retry-as-promised/", + "packageDependencies": [ + ["retry-as-promised", "npm:3.2.0"], + ["any-promise", "npm:1.3.0"] + ], + "linkType": "HARD", + }] + ]], ["rimraf", [ ["npm:3.0.2", { "packageLocation": "./.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-f0de3e4455.zip/node_modules/rimraf/", @@ -5339,6 +5684,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["saslprep", [ + ["npm:1.0.3", { + "packageLocation": "./.yarn/cache/saslprep-npm-1.0.3-8db649c346-d007f50fe6.zip/node_modules/saslprep/", + "packageDependencies": [ + ["saslprep", "npm:1.0.3"], + ["sparse-bitfield", "npm:3.0.3"] + ], + "linkType": "HARD", + }] + ]], ["saxes", [ ["npm:5.0.1", { "packageLocation": "./.yarn/cache/saxes-npm-5.0.1-57abf031ae-6ad14be68d.zip/node_modules/saxes/", @@ -5373,6 +5728,39 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["sequelize", [ + ["npm:5.22.3", { + "packageLocation": "./.yarn/cache/sequelize-npm-5.22.3-6c1eb3cfa3-6c5c265007.zip/node_modules/sequelize/", + "packageDependencies": [ + ["sequelize", "npm:5.22.3"], + ["bluebird", "npm:3.7.2"], + ["cls-bluebird", "npm:2.1.0"], + ["debug", "virtual:bb5021588f7e5595fb57318130fbd71573bb1e56e36c52894c6ab92335cefc204411143fb343142c8264fb8b584b87ad650c627bf465ca1d60190627a49cbc6b#npm:4.3.2"], + ["dottie", "npm:2.0.2"], + ["inflection", "npm:1.12.0"], + ["lodash", "npm:4.17.21"], + ["moment", "npm:2.29.1"], + ["moment-timezone", "npm:0.5.33"], + ["retry-as-promised", "npm:3.2.0"], + ["semver", "npm:6.3.0"], + ["sequelize-pool", "npm:2.3.0"], + ["toposort-class", "npm:1.0.1"], + ["uuid", "npm:3.4.0"], + ["validator", "npm:10.11.0"], + ["wkx", "npm:0.4.8"] + ], + "linkType": "HARD", + }] + ]], + ["sequelize-pool", [ + ["npm:2.3.0", { + "packageLocation": "./.yarn/cache/sequelize-pool-npm-2.3.0-02b5476cea-a6fc8cc5ef.zip/node_modules/sequelize-pool/", + "packageDependencies": [ + ["sequelize-pool", "npm:2.3.0"] + ], + "linkType": "HARD", + }] + ]], ["serve-my-jams", [ ["workspace:.", { "packageLocation": "./", @@ -5383,7 +5771,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["koa-body", "npm:4.2.0"], ["koa-helmet", "npm:6.0.0"], ["koa-logger", "npm:3.2.1"], - ["koa-router", "npm:10.0.0"] + ["koa-router", "npm:10.0.0"], + ["koa2-ratelimit", "npm:0.9.0"] ], "linkType": "SOFT", }] @@ -5469,6 +5858,24 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["shimmer", [ + ["npm:1.2.1", { + "packageLocation": "./.yarn/cache/shimmer-npm-1.2.1-8b50bf3206-23431fc4c5.zip/node_modules/shimmer/", + "packageDependencies": [ + ["shimmer", "npm:1.2.1"] + ], + "linkType": "HARD", + }] + ]], + ["sift", [ + ["npm:7.0.1", { + "packageLocation": "./.yarn/cache/sift-npm-7.0.1-defcf70fb3-267d30f964.zip/node_modules/sift/", + "packageDependencies": [ + ["sift", "npm:7.0.1"] + ], + "linkType": "HARD", + }] + ]], ["signal-exit", [ ["npm:3.0.3", { "packageLocation": "./.yarn/cache/signal-exit-npm-3.0.3-5a2d797648-f8f3fec95c.zip/node_modules/signal-exit/", @@ -5496,6 +5903,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["sliced", [ + ["npm:1.0.1", { + "packageLocation": "./.yarn/cache/sliced-npm-1.0.1-5537b02c49-af6bd9d911.zip/node_modules/sliced/", + "packageDependencies": [ + ["sliced", "npm:1.0.1"] + ], + "linkType": "HARD", + }] + ]], ["snapdragon", [ ["npm:0.8.2", { "packageLocation": "./.yarn/cache/snapdragon-npm-0.8.2-2bcc47d217-c30b63a732.zip/node_modules/snapdragon/", @@ -5592,6 +6008,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["sparse-bitfield", [ + ["npm:3.0.3", { + "packageLocation": "./.yarn/cache/sparse-bitfield-npm-3.0.3-cb80d0c89f-3d7ea483df.zip/node_modules/sparse-bitfield/", + "packageDependencies": [ + ["sparse-bitfield", "npm:3.0.3"], + ["memory-pager", "npm:1.5.0"] + ], + "linkType": "HARD", + }] + ]], ["spdx-correct", [ ["npm:3.1.1", { "packageLocation": "./.yarn/cache/spdx-correct-npm-3.1.1-47f574c27a-f3413eb225.zip/node_modules/spdx-correct/", @@ -5967,6 +6393,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["toposort-class", [ + ["npm:1.0.1", { + "packageLocation": "./.yarn/cache/toposort-class-npm-1.0.1-aefabde69e-cead76d5ab.zip/node_modules/toposort-class/", + "packageDependencies": [ + ["toposort-class", "npm:1.0.1"] + ], + "linkType": "HARD", + }] + ]], ["tough-cookie", [ ["npm:2.5.0", { "packageLocation": "./.yarn/cache/tough-cookie-npm-2.5.0-79a2fe43fe-bf5d6fac5c.zip/node_modules/tough-cookie/", @@ -6198,6 +6633,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["validator", [ + ["npm:10.11.0", { + "packageLocation": "./.yarn/cache/validator-npm-10.11.0-62602d1058-07a37cd146.zip/node_modules/validator/", + "packageDependencies": [ + ["validator", "npm:10.11.0"] + ], + "linkType": "HARD", + }] + ]], ["vary", [ ["npm:1.1.2", { "packageLocation": "./.yarn/cache/vary-npm-1.1.2-b49f70ae63-591f059f72.zip/node_modules/vary/", @@ -6333,6 +6777,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD", }] ]], + ["wkx", [ + ["npm:0.4.8", { + "packageLocation": "./.yarn/cache/wkx-npm-0.4.8-50b554d0a6-b18c150a87.zip/node_modules/wkx/", + "packageDependencies": [ + ["wkx", "npm:0.4.8"], + ["@types/node", "npm:14.14.32"] + ], + "linkType": "HARD", + }] + ]], ["word-wrap", [ ["npm:1.2.3", { "packageLocation": "./.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-6526abd75d.zip/node_modules/word-wrap/", diff --git a/package.json b/package.json index 1de3358..b2bf15d 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "koa-body": "^4.2.0", "koa-helmet": "^6.0.0", "koa-logger": "^3.2.1", - "koa-router": "^10.0.0" + "koa-router": "^10.0.0", + "koa2-ratelimit": "^0.9.0" } } diff --git a/src/serve.js b/src/serve.js index 47fb491..99ae9a1 100644 --- a/src/serve.js +++ b/src/serve.js @@ -5,11 +5,19 @@ const Logger = require("koa-logger"); const bodyParser = require('koa-body'); const koaRouter = require("koa-router"); const helmet = require("koa-helmet"); +const { RateLimit } = require('koa2-ratelimit'); // koa docs: https://koajs.com/#application const app = new Koa(); const router = new koaRouter(); +// see https://www.npmjs.com/package/koa2-ratelimit, simple brute-force with helmet will suffice. +app.use(RateLimit.middleware({ + interval: { min: 15 }, + max: 100 +})); +app.use(helmet()); + // TODO not sure what to do on error yet app.use(Logger()); @@ -21,9 +29,8 @@ app.use(bodyParser({ // route docs: https://github.com/koajs/router/blob/HEAD/API.md#module_koa-router--Router+get%7Cput%7Cpost%7Cpatch%7Cdelete%7Cdel -require("./webmention/route").route(router) +require("./webmention/route").route(router); -app.use(helmet()); app.use(router.routes()).use(router.allowedMethods()); const port = process.env.PORT || 4000 diff --git a/yarn.lock b/yarn.lock index 3ed6d19..a05b132 100644 --- a/yarn.lock +++ b/yarn.lock @@ -680,6 +680,15 @@ __metadata: languageName: node linkType: hard +"@types/bson@npm:*": + version: 4.0.3 + resolution: "@types/bson@npm:4.0.3" + dependencies: + "@types/node": "*" + checksum: 73c0179851f02bd43f010db65c465b09f7c495b35b0e3820a79d36f4bb209c84a512121c1af4c1d2512e5f13cd27cc74fa8aa6f3df9b17b7cca9d37d59ece3ce + languageName: node + linkType: hard + "@types/formidable@npm:^1.0.31": version: 1.0.32 resolution: "@types/formidable@npm:1.0.32" @@ -723,6 +732,16 @@ __metadata: languageName: node linkType: hard +"@types/mongodb@npm:^3.5.27": + version: 3.6.9 + resolution: "@types/mongodb@npm:3.6.9" + dependencies: + "@types/bson": "*" + "@types/node": "*" + checksum: ab78a36f7d0b76359715c50dcf98e415fccbefcf38f3f5372ffed4e7d93ee5a875ad6bc8628d2568d0d039ce2ccaea550a615627d6519c8f8a3e43bcbe9758d0 + languageName: node + linkType: hard + "@types/node@npm:*": version: 14.14.32 resolution: "@types/node@npm:14.14.32" @@ -877,7 +896,7 @@ __metadata: languageName: node linkType: hard -"any-promise@npm:^1.1.0": +"any-promise@npm:^1.1.0, any-promise@npm:^1.3.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" checksum: e829425e4aef532fb9063c638de4693feaf285dae8ba84bcabd9c6d49446264650d1e16b73af8a25ae1e4480f9a4dc7cae364b4c4d4753b57dd1900cdfab8183 @@ -1119,6 +1138,30 @@ __metadata: languageName: node linkType: hard +"bl@npm:^2.2.1": + version: 2.2.1 + resolution: "bl@npm:2.2.1" + dependencies: + readable-stream: ^2.3.5 + safe-buffer: ^5.1.1 + checksum: 438c510aa211ec4398819ad1cb4ef1617b0ffeb0f1946c2b359fc5aefbe6f8e22dc2f6788e8746509779fabee89f1c3b34ec87ff30fb7b3d95654d8cd51e3b70 + languageName: node + linkType: hard + +"bluebird@npm:3.5.1": + version: 3.5.1 + resolution: "bluebird@npm:3.5.1" + checksum: 11347ec6d59fdb2aca5f2507bbc5f7127bf5a7bb978da30f83469ad43a3fa6b533b24544a9b31e21fd730b77b93b0526e65c73d8fdb11b3b633f4269d75e420a + languageName: node + linkType: hard + +"bluebird@npm:^3.5.0": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 4f2288662f3d4eadbb82d4daa4a7d7976a28fa3c7eb4102c9b4033b03e5be4574ba123ac52a7c103cde4cb7b2d2afc1dbe41817ca15a29ff21ecd258d0286047 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -1187,6 +1230,13 @@ __metadata: languageName: node linkType: hard +"bson@npm:^1.1.4": + version: 1.1.5 + resolution: "bson@npm:1.1.5" + checksum: d1e6fe96baac02dacc54cc33f8accce7bd289a22f0e98804e76adbb9af463ee414f6c8aed15fa18c133330fe859a7bb750e432f39549bd823bc73c5e6dc8e1e4 + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.1 resolution: "buffer-from@npm:1.1.1" @@ -1344,6 +1394,16 @@ __metadata: languageName: node linkType: hard +"cls-bluebird@npm:^2.1.0": + version: 2.1.0 + resolution: "cls-bluebird@npm:2.1.0" + dependencies: + is-bluebird: ^1.0.2 + shimmer: ^1.1.0 + checksum: f3b31004a9ff9cc86eb86bd8e9287bc969670e2b60508c95e98e1bac969423c480318b224662f78e6fc0ffeaf1e1e36d1156acfeb002a67e417dd4263c270fc6 + languageName: node + linkType: hard + "co-body@npm:^5.1.1": version: 5.2.0 resolution: "co-body@npm:5.2.0" @@ -1572,6 +1632,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:3.1.0, debug@npm:~3.1.0": + version: 3.1.0 + resolution: "debug@npm:3.1.0" + dependencies: + ms: 2.0.0 + checksum: 1295acd5e0531761255661d325cd0a80ac8c5f6de8942a53bb23c2197ccb97526972de662ed0e5d9393be83f3428a298a6e7185ecb02f0da6282019cd2ffb4a8 + languageName: node + linkType: hard + "debug@npm:^2.2.0, debug@npm:^2.3.3": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -1593,15 +1662,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:~3.1.0": - version: 3.1.0 - resolution: "debug@npm:3.1.0" - dependencies: - ms: 2.0.0 - checksum: 1295acd5e0531761255661d325cd0a80ac8c5f6de8942a53bb23c2197ccb97526972de662ed0e5d9393be83f3428a298a6e7185ecb02f0da6282019cd2ffb4a8 - languageName: node - linkType: hard - "decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" @@ -1686,6 +1746,13 @@ __metadata: languageName: node linkType: hard +"denque@npm:^1.4.1": + version: 1.5.0 + resolution: "denque@npm:1.5.0" + checksum: 3564778cda60c7dee3f1d71e397e50e6b39a8c06118aab9843b9396cb621b3191ab56d13de5237b8beee2b87bec485e8239c58ca3133472d2d1eaa3d2d518022 + languageName: node + linkType: hard + "depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -1730,6 +1797,13 @@ __metadata: languageName: node linkType: hard +"dottie@npm:^2.0.0": + version: 2.0.2 + resolution: "dottie@npm:2.0.2" + checksum: 91e855305849b75934d78c5b061f6551f1e866e592ee3a30f97669bdc136061432c4d30205b0bb86909f5495d2c88cecc69d28f0d73b84a27e0cf66caeb749a7 + languageName: node + linkType: hard + "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" @@ -2470,6 +2544,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"inflection@npm:1.12.0": + version: 1.12.0 + resolution: "inflection@npm:1.12.0" + checksum: b08d8b92fcc3a3860995a00605f56eac3964829ca6061fd7b0a1c06f888536c734b685f620fff6b694a8c9ed3e3b7a40fc79c3c6f2cc31bf58dee7eb8244c955 + languageName: node + linkType: hard + "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -2519,6 +2600,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"is-bluebird@npm:^1.0.2": + version: 1.0.2 + resolution: "is-bluebird@npm:1.0.2" + checksum: 88981b25d84294916cdfb2e5ea081a21ffbc9a9e325f38d3330991413306c638e4813fe2a336fa98e37d9a0b2b3ba59179034306af072a4459b2102d62538cf4 + languageName: node + linkType: hard + "is-buffer@npm:^1.1.5": version: 1.1.6 resolution: "is-buffer@npm:1.1.6" @@ -3377,6 +3465,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"kareem@npm:2.3.2": + version: 2.3.2 + resolution: "kareem@npm:2.3.2" + checksum: de7225607b86280e5c39c00d564e1cb4daee9f0a75076fa0c096af75069681ca9a97ea39d8d48ce58ff8dd4d3a738942b1b43101aa95982c4599284ec36e02b4 + languageName: node + linkType: hard + "keygrip@npm:~1.1.0": version: 1.1.0 resolution: "keygrip@npm:1.1.0" @@ -3496,6 +3591,17 @@ fsevents@^2.1.2: languageName: node linkType: hard +"koa2-ratelimit@npm:^0.9.0": + version: 0.9.0 + resolution: "koa2-ratelimit@npm:0.9.0" + dependencies: + mongoose: ^5.5.13 + promise-redis: 0.0.5 + sequelize: ^5.8.7 + checksum: 768e80f77ac72fbdb327f911c38e4d5defdb7ce69a5b06e929317ade235ec252da78006988d17039b359fc981671e154d06afaa1e6270e1f00ec6ad64046f35e + languageName: node + linkType: hard + "koa@npm:^2.13.1": version: 2.13.1 resolution: "koa@npm:2.13.1" @@ -3567,7 +3673,7 @@ fsevents@^2.1.2: languageName: node linkType: hard -"lodash@npm:^4.17.19": +"lodash@npm:^4.17.15, lodash@npm:^4.17.19": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 @@ -3624,6 +3730,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"memory-pager@npm:^1.0.2": + version: 1.5.0 + resolution: "memory-pager@npm:1.5.0" + checksum: 6812af8165a31e729df25af125ba91b7ea7f3cacaf73a1c139b755be640cab9dfa4bb05b9acfc5d5f1f540b334203f26dac0662576033dd351e0a798abc4d72a + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -3746,6 +3859,101 @@ fsevents@^2.1.2: languageName: node linkType: hard +"moment-timezone@npm:^0.5.21": + version: 0.5.33 + resolution: "moment-timezone@npm:0.5.33" + dependencies: + moment: ">= 2.9.0" + checksum: d4e72a3514a2885ab26b1cbc640e2f4785c997f9de28bb48bf3994ef137b0a560ca8f07eb07f11121e1223eef0c3bce4bc647b911111481a6a066bbc61285f99 + languageName: node + linkType: hard + +"moment@npm:>= 2.9.0, moment@npm:^2.24.0": + version: 2.29.1 + resolution: "moment@npm:2.29.1" + checksum: 86729013febf7160de5b93da69273dd304d674b0224f9544b3abd09a87671ddd2cdd57598261ce57588910d63747ffd5590965e83c790d8bf327083c0e0a06e0 + languageName: node + linkType: hard + +"mongodb@npm:3.6.4": + version: 3.6.4 + resolution: "mongodb@npm:3.6.4" + dependencies: + bl: ^2.2.1 + bson: ^1.1.4 + denque: ^1.4.1 + require_optional: ^1.0.1 + safe-buffer: ^5.1.2 + saslprep: ^1.0.0 + dependenciesMeta: + saslprep: + optional: true + peerDependenciesMeta: + aws4: + optional: true + bson-ext: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + mongodb-extjson: + optional: true + snappy: + optional: true + checksum: f2331e7cdce7694b033346f898af9429bab53505ffc1175cb66e370eecc26eb3ae08d950f57ee6ca0be1a4d24f735c40ac758f3e8f0f68826b43e7a36ed5f5bf + languageName: node + linkType: hard + +"mongoose-legacy-pluralize@npm:1.0.2": + version: 1.0.2 + resolution: "mongoose-legacy-pluralize@npm:1.0.2" + peerDependencies: + mongoose: "*" + checksum: a1f86450b3540a1883cfb093001846806d14cd3a8b80f6681fdac13afcfd4a1f57875fb79009aceacf2e80e3ffd2d5ab7e289ba873c586958ce536eff270dc0a + languageName: node + linkType: hard + +"mongoose@npm:5.11.19, mongoose@npm:^5.5.13": + version: 5.11.19 + resolution: "mongoose@npm:5.11.19" + dependencies: + "@types/mongodb": ^3.5.27 + bson: ^1.1.4 + kareem: 2.3.2 + mongodb: 3.6.4 + mongoose-legacy-pluralize: 1.0.2 + mpath: 0.8.3 + mquery: 3.2.4 + ms: 2.1.2 + regexp-clone: 1.0.0 + safe-buffer: 5.2.1 + sift: 7.0.1 + sliced: 1.0.1 + checksum: 45b01cb1310ecb27d02c489f170298dc219f0225f98f10318b9d1577f62a42a0c85e0682f17e06a37ab164dcb5d9aedfc8982b30c2ac507f365754c531ca211d + languageName: node + linkType: hard + +"mpath@npm:0.8.3": + version: 0.8.3 + resolution: "mpath@npm:0.8.3" + checksum: 6c129da222169bcf2eb28ae73abca2a8a32c3c659748efd496308aed21c7dca7a9a923de53a5a1df3d898f5eba74c704fdf352ca68e5ecb602d2352a9d5ab90e + languageName: node + linkType: hard + +"mquery@npm:3.2.4": + version: 3.2.4 + resolution: "mquery@npm:3.2.4" + dependencies: + bluebird: 3.5.1 + debug: 3.1.0 + regexp-clone: ^1.0.0 + safe-buffer: 5.1.2 + sliced: 1.0.1 + checksum: 80410d4e80b40730b0121315e34b33a37a7e468b9c9d517072b7b5e7f6fd00f04a42b3cffa458f5b4b71433f2313e9e227d4a507f3c66a7646fe153e153158fb + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -4215,6 +4423,16 @@ fsevents@^2.1.2: languageName: node linkType: hard +"promise-redis@npm:0.0.5": + version: 0.0.5 + resolution: "promise-redis@npm:0.0.5" + dependencies: + redis: "*" + redis-commands: "*" + checksum: 0871ee02e6e52511654872c27001568eb9366971bb30e305d07d1d3cd5ee28aed8e4bcf14a299c92b1bb12ba67e59f8664255750a6dad8135c98f662c018d9fa + languageName: node + linkType: hard + "prompts@npm:^2.0.1": version: 2.4.0 resolution: "prompts@npm:2.4.0" @@ -4305,7 +4523,7 @@ fsevents@^2.1.2: languageName: node linkType: hard -"readable-stream@npm:^2.0.6": +"readable-stream@npm:^2.0.6, readable-stream@npm:^2.3.5": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -4320,6 +4538,41 @@ fsevents@^2.1.2: languageName: node linkType: hard +"redis-commands@npm:*, redis-commands@npm:^1.5.0": + version: 1.7.0 + resolution: "redis-commands@npm:1.7.0" + checksum: cbf5d33768b1c8e1001e2a7ffdaeb6ef830c538ef812d803a1c5e6038cf03482cf0a22b29eadf1182aa02a522331826e3af0967ae75fa7883da8a139ad2fc77b + languageName: node + linkType: hard + +"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": + version: 1.2.0 + resolution: "redis-errors@npm:1.2.0" + checksum: b260bb64a1c8523d32a56701681ac3e5cc6bb0a4eb09f1d30729ebba397021d274216ff189909c08fe3c6b706ec8b74948e20ea410b6f69d31b35bda3fb82a59 + languageName: node + linkType: hard + +"redis-parser@npm:^3.0.0": + version: 3.0.0 + resolution: "redis-parser@npm:3.0.0" + dependencies: + redis-errors: ^1.0.0 + checksum: 45dbcb05bed2c80a4aac288bbefed2347ecf3508c24d542ab42efa21fd63b5aaca4208b206f05818835a2ac43abe09250c2638c11c3b0b66a5d67e83985e350f + languageName: node + linkType: hard + +"redis@npm:*": + version: 3.0.2 + resolution: "redis@npm:3.0.2" + dependencies: + denque: ^1.4.1 + redis-commands: ^1.5.0 + redis-errors: ^1.2.0 + redis-parser: ^3.0.0 + checksum: 74858b9f5ae3859ed55435d413315ab3f911aa483a3817c0d1ebe46b966c7061f43ea0d3d5170b540ff4a1f15edd5ea2bc0e107d0e6e516c4d61ea489460f5dc + languageName: node + linkType: hard + "regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": version: 1.0.2 resolution: "regex-not@npm:1.0.2" @@ -4330,6 +4583,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"regexp-clone@npm:1.0.0, regexp-clone@npm:^1.0.0": + version: 1.0.0 + resolution: "regexp-clone@npm:1.0.0" + checksum: 0cb16b8806a0a4e3e0f8887c1465d03ff25371fde03d03ab3b2fe7bc521faaabaac36feabcdcdf63bcbce05a7d0eca113eb5b4d3b9a9efc77dc1c0fa87a2811d + languageName: node + linkType: hard + "remove-trailing-separator@npm:^1.0.1": version: 1.1.0 resolution: "remove-trailing-separator@npm:1.1.0" @@ -4417,6 +4677,16 @@ fsevents@^2.1.2: languageName: node linkType: hard +"require_optional@npm:^1.0.1": + version: 1.0.1 + resolution: "require_optional@npm:1.0.1" + dependencies: + resolve-from: ^2.0.0 + semver: ^5.1.0 + checksum: 2a7cae14fcb0f7aac9e1837bde2edc1e95b2cf635376df09e973151ea735b77f2069e6bf9e1a1c5dd27f052e0b00a477db15807302a1ceeb487307ea61416bee + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -4426,6 +4696,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"resolve-from@npm:^2.0.0": + version: 2.0.0 + resolution: "resolve-from@npm:2.0.0" + checksum: e2cfa9d4402ceb731ce14f639248c8a8a364db8710ba3360a4492046c6688084235645a4f4004ac7d9acf40bc0644fac6d8c24f9012c7e5773234a7c09d57cb4 + languageName: node + linkType: hard + "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -4467,6 +4744,15 @@ fsevents@^2.1.2: languageName: node linkType: hard +"retry-as-promised@npm:^3.2.0": + version: 3.2.0 + resolution: "retry-as-promised@npm:3.2.0" + dependencies: + any-promise: ^1.3.0 + checksum: 4aab2302ba9c101844ed2439aeb99c794f4b0d34e1b6386d838cf9528f1de2b902ab38ebc2d79cc5d3d01e37bfeb688956e5b86bd8362fee7f932de0081bdc02 + languageName: node + linkType: hard + "rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" @@ -4492,7 +4778,7 @@ fsevents@^2.1.2: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 0bb57f0d8f9d1fa4fe35ad8a2db1f83a027d48f2822d59ede88fd5cd4ddad83c0b497213feb7a70fbf90597a70c5217f735b0eb1850df40ce9b4ae81dd22b3f9 @@ -4534,6 +4820,15 @@ fsevents@^2.1.2: languageName: node linkType: hard +"saslprep@npm:^1.0.0": + version: 1.0.3 + resolution: "saslprep@npm:1.0.3" + dependencies: + sparse-bitfield: ^3.0.3 + checksum: d007f50fe6578814d7b6c06f528cf7b08f1e12292b1c7d671a29a7a709cec29527d85352d1de3e020b3ee30017a9abd58252ff27b5042b889acd4a67b089c38c + languageName: node + linkType: hard + "saxes@npm:^5.0.0": version: 5.0.1 resolution: "saxes@npm:5.0.1" @@ -4543,7 +4838,7 @@ fsevents@^2.1.2: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.1.0, semver@npm:^5.5.0": version: 5.7.1 resolution: "semver@npm:5.7.1" bin: @@ -4572,6 +4867,36 @@ fsevents@^2.1.2: languageName: node linkType: hard +"sequelize-pool@npm:^2.3.0": + version: 2.3.0 + resolution: "sequelize-pool@npm:2.3.0" + checksum: a6fc8cc5ef189671efb9964c702796fc00d49092e764d79d1f79a02673b3a6c006721e724d3a1f78baab9eb2605539e3e389841407c199631b82a0c6fd6187f4 + languageName: node + linkType: hard + +"sequelize@npm:^5.8.7": + version: 5.22.3 + resolution: "sequelize@npm:5.22.3" + dependencies: + bluebird: ^3.5.0 + cls-bluebird: ^2.1.0 + debug: ^4.1.1 + dottie: ^2.0.0 + inflection: 1.12.0 + lodash: ^4.17.15 + moment: ^2.24.0 + moment-timezone: ^0.5.21 + retry-as-promised: ^3.2.0 + semver: ^6.3.0 + sequelize-pool: ^2.3.0 + toposort-class: ^1.0.1 + uuid: ^3.3.3 + validator: ^10.11.0 + wkx: ^0.4.8 + checksum: 6c5c2650072da71f76197dfb26a93c992b79453002621c1575c7627422eb2e7ba84fd84f57c29e74fcc6bb6964aee2a021564ada143d11b8b9e063aa5d4655b1 + languageName: node + linkType: hard + "serve-my-jams@workspace:.": version: 0.0.0-use.local resolution: "serve-my-jams@workspace:." @@ -4582,6 +4907,7 @@ fsevents@^2.1.2: koa-helmet: ^6.0.0 koa-logger: ^3.2.1 koa-router: ^10.0.0 + koa2-ratelimit: ^0.9.0 languageName: unknown linkType: soft @@ -4657,6 +4983,20 @@ fsevents@^2.1.2: languageName: node linkType: hard +"shimmer@npm:^1.1.0": + version: 1.2.1 + resolution: "shimmer@npm:1.2.1" + checksum: 23431fc4c5cf2df4c4ffca20a415ac18fbc989bdec595b97b541c65b08cf04da55c5b4e1d7b7ea73d17fc92d4c33bd6e97e4da356adbf0349e06813068263d87 + languageName: node + linkType: hard + +"sift@npm:7.0.1": + version: 7.0.1 + resolution: "sift@npm:7.0.1" + checksum: 267d30f964324df4e55152d977cdca8da0a04e24f82c0ae0737d0dc771f613a415f5d26ad97ed5bcedbb032be2dfd78da9e4060b6131b4ee7cb0bd09e1095cf8 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2": version: 3.0.3 resolution: "signal-exit@npm:3.0.3" @@ -4678,6 +5018,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"sliced@npm:1.0.1": + version: 1.0.1 + resolution: "sliced@npm:1.0.1" + checksum: af6bd9d9116298828d84a0c4ad417f941c61b72ed16cc289b97ad3669c2c41d13763b79385f3ac44c40a1e82f8c0774d18587b3b7125034fa6f80d10363a234c + languageName: node + linkType: hard + "snapdragon-node@npm:^2.0.1": version: 2.1.1 resolution: "snapdragon-node@npm:2.1.1" @@ -4765,6 +5112,15 @@ fsevents@^2.1.2: languageName: node linkType: hard +"sparse-bitfield@npm:^3.0.3": + version: 3.0.3 + resolution: "sparse-bitfield@npm:3.0.3" + dependencies: + memory-pager: ^1.0.2 + checksum: 3d7ea483df832df45c1a9b4905b2e2ffb9107b6b43db664ffaf03371000f9ec0db664c8d94600443e344c91be36c52a299ba627f2d15c7f2bcd2c2b7ded6f3b0 + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.1.1 resolution: "spdx-correct@npm:3.1.1" @@ -5106,6 +5462,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"toposort-class@npm:^1.0.1": + version: 1.0.1 + resolution: "toposort-class@npm:1.0.1" + checksum: cead76d5abf1090ba903f36f42fbd69c78dd417593bce8d0f64c0f4226a34fa8c6ac92e7be358da90fdae800dd8b3c069eaf07ef6fac4cd53016575b9a100871 + languageName: node + linkType: hard + "tough-cookie@npm:^2.3.3, tough-cookie@npm:~2.5.0": version: 2.5.0 resolution: "tough-cookie@npm:2.5.0" @@ -5274,7 +5637,7 @@ fsevents@^2.1.2: languageName: node linkType: hard -"uuid@npm:^3.3.2": +"uuid@npm:^3.3.2, uuid@npm:^3.3.3": version: 3.4.0 resolution: "uuid@npm:3.4.0" bin: @@ -5313,6 +5676,13 @@ fsevents@^2.1.2: languageName: node linkType: hard +"validator@npm:^10.11.0": + version: 10.11.0 + resolution: "validator@npm:10.11.0" + checksum: 07a37cd1469001b121696c2aa5494e9a4e416feabad31d849c02dfa414ae39c7885acb08d81d50d45e0ec63a1269bd8169937acf76202a79dc1ae53e909186b5 + languageName: node + linkType: hard + "vary@npm:^1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -5437,6 +5807,15 @@ fsevents@^2.1.2: languageName: node linkType: hard +"wkx@npm:^0.4.8": + version: 0.4.8 + resolution: "wkx@npm:0.4.8" + dependencies: + "@types/node": "*" + checksum: b18c150a870dc62a6e4cb35666698a9ae1ffc6e629d8ae2a09e5c2dc65ab1f7df3075c91b8d8291091895fef6e8f8df853e214c14b6d27263508f7e6364844ef + languageName: node + linkType: hard + "word-wrap@npm:~1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3"