greatly reduced distribution node_modules size

Massimo Melina committed Jan 4, 2022 at 11:02 UTC dae0abb8d93a11971dd2d9c9bd2a1ddca60956e8
6 files changed +1371 -64
package-lock.json
+1343 -45
@@ -1,12 +1,12 @@
1 {
2 "name": "hfs",
3 - "version": "0.4.0",
3 + "version": "0.4.1",
4 "lockfileVersion": 2,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "hfs",
9 - "version": "0.4.0",
9 + "version": "0.4.1",
10 "license": "GPL-3.0",
11 "dependencies": {
12 "@koa/router": "^10.1.1",
@@ -14,7 +14,6 @@
14 "buffer-crc32": "https://github.com/rejetto/buffer-crc32.git",
15 "fast-glob": "^3.2.7",
16 "koa": "^2.13.4",
17 - "koa-accesslog": "^1.0.0",
17 "koa-better-http-proxy": "^0.2.9",
18 "koa-bodyparser": "^4.3.0",
19 "koa-compress": "^5.1.0",
@@ -44,11 +43,87 @@
43 "@types/node": "^16.11.12",
44 "axios": "^0.24.0",
45 "mocha": "^9.1.3",
46 + "nm-prune": "^5.0.0",
47 "nodemon": "^2.0.15",
48 - "ts-node": "^10.4.0",
49 - "typescript": "^4.5.2"
48 + "ts-node": "^10.4.0"
49 + }
50 + },
51 + "node_modules/@babel/code-frame": {
52 + "version": "7.16.7",
53 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
54 + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
55 + "dev": true,
56 + "dependencies": {
57 + "@babel/highlight": "^7.16.7"
58 + },
59 + "engines": {
60 + "node": ">=6.9.0"
61 + }
62 + },
63 + "node_modules/@babel/helper-validator-identifier": {
64 + "version": "7.16.7",
65 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
66 + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
67 + "dev": true,
68 + "engines": {
69 + "node": ">=6.9.0"
70 + }
71 + },
72 + "node_modules/@babel/highlight": {
73 + "version": "7.16.7",
74 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz",
75 + "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==",
76 + "dev": true,
77 + "dependencies": {
78 + "@babel/helper-validator-identifier": "^7.16.7",
79 + "chalk": "^2.0.0",
80 + "js-tokens": "^4.0.0"
81 + },
82 + "engines": {
83 + "node": ">=6.9.0"
84 + }
85 + },
86 + "node_modules/@babel/highlight/node_modules/ansi-styles": {
87 + "version": "3.2.1",
88 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
89 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
90 + "dev": true,
91 + "dependencies": {
92 + "color-convert": "^1.9.0"
93 + },
94 + "engines": {
95 + "node": ">=4"
96 + }
97 + },
98 + "node_modules/@babel/highlight/node_modules/chalk": {
99 + "version": "2.4.2",
100 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
101 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
102 + "dev": true,
103 + "dependencies": {
104 + "ansi-styles": "^3.2.1",
105 + "escape-string-regexp": "^1.0.5",
106 + "supports-color": "^5.3.0"
107 + },
108 + "engines": {
109 + "node": ">=4"
110 }
111 },
112 + "node_modules/@babel/highlight/node_modules/color-convert": {
113 + "version": "1.9.3",
114 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
115 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
116 + "dev": true,
117 + "dependencies": {
118 + "color-name": "1.1.3"
119 + }
120 + },
121 + "node_modules/@babel/highlight/node_modules/color-name": {
122 + "version": "1.1.3",
123 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
124 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
125 + "dev": true
126 + },
127 "node_modules/@cspotcode/source-map-consumer": {
128 "version": "0.8.0",
129 "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
@@ -629,6 +704,12 @@
704 "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==",
705 "dev": true
706 },
707 + "node_modules/@types/normalize-package-data": {
708 + "version": "2.4.1",
709 + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
710 + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
711 + "dev": true
712 + },
713 "node_modules/@types/qs": {
714 "version": "6.9.7",
715 "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
@@ -757,6 +838,15 @@
838 "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
839 "dev": true
840 },
841 + "node_modules/arrify": {
842 + "version": "1.0.1",
843 + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
844 + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
845 + "dev": true,
846 + "engines": {
847 + "node": ">=0.10.0"
848 + }
849 + },
850 "node_modules/async": {
851 "version": "1.0.0",
852 "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
@@ -971,6 +1061,32 @@
1061 "url": "https://github.com/sponsors/sindresorhus"
1062 }
1063 },
1064 + "node_modules/camelcase-keys": {
1065 + "version": "6.2.2",
1066 + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
1067 + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
1068 + "dev": true,
1069 + "dependencies": {
1070 + "camelcase": "^5.3.1",
1071 + "map-obj": "^4.0.0",
1072 + "quick-lru": "^4.0.1"
1073 + },
1074 + "engines": {
1075 + "node": ">=8"
1076 + },
1077 + "funding": {
1078 + "url": "https://github.com/sponsors/sindresorhus"
1079 + }
1080 + },
1081 + "node_modules/camelcase-keys/node_modules/camelcase": {
1082 + "version": "5.3.1",
1083 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
1084 + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
1085 + "dev": true,
1086 + "engines": {
1087 + "node": ">=6"
1088 + }
1089 + },
1090 "node_modules/chalk": {
1091 "version": "4.1.2",
1092 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1247,6 +1363,37 @@
1363 "url": "https://github.com/sponsors/sindresorhus"
1364 }
1365 },
1366 + "node_modules/decamelize-keys": {
1367 + "version": "1.1.0",
1368 + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
1369 + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
1370 + "dev": true,
1371 + "dependencies": {
1372 + "decamelize": "^1.1.0",
1373 + "map-obj": "^1.0.0"
1374 + },
1375 + "engines": {
1376 + "node": ">=0.10.0"
1377 + }
1378 + },
1379 + "node_modules/decamelize-keys/node_modules/decamelize": {
1380 + "version": "1.2.0",
1381 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
1382 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
1383 + "dev": true,
1384 + "engines": {
1385 + "node": ">=0.10.0"
1386 + }
1387 + },
1388 + "node_modules/decamelize-keys/node_modules/map-obj": {
1389 + "version": "1.0.1",
1390 + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
1391 + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
1392 + "dev": true,
1393 + "engines": {
1394 + "node": ">=0.10.0"
1395 + }
1396 + },
1397 "node_modules/decompress-response": {
1398 "version": "3.3.0",
1399 "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
@@ -1324,6 +1471,12 @@
1471 "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
1472 "dev": true
1473 },
1474 + "node_modules/each-limit": {
1475 + "version": "1.0.0",
1476 + "resolved": "https://registry.npmjs.org/each-limit/-/each-limit-1.0.0.tgz",
1477 + "integrity": "sha1-OAFACDNnqK9kKZvKwV/dWxqXcZY=",
1478 + "dev": true
1479 + },
1480 "node_modules/ee-first": {
1481 "version": "1.1.1",
1482 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -1352,6 +1505,27 @@
1505 "once": "^1.4.0"
1506 }
1507 },
1508 + "node_modules/enquirer": {
1509 + "version": "2.3.6",
1510 + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
1511 + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
1512 + "dev": true,
1513 + "dependencies": {
1514 + "ansi-colors": "^4.1.1"
1515 + },
1516 + "engines": {
1517 + "node": ">=8.6"
1518 + }
1519 + },
1520 + "node_modules/error-ex": {
1521 + "version": "1.3.2",
1522 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1523 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1524 + "dev": true,
1525 + "dependencies": {
1526 + "is-arrayish": "^0.2.1"
1527 + }
1528 + },
1529 "node_modules/es6-promise": {
1530 "version": "3.3.1",
1531 "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
@@ -1380,6 +1554,15 @@
1554 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1555 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
1556 },
1557 + "node_modules/escape-string-regexp": {
1558 + "version": "1.0.5",
1559 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1560 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1561 + "dev": true,
1562 + "engines": {
1563 + "node": ">=0.8.0"
1564 + }
1565 + },
1566 "node_modules/eyes": {
1567 "version": "0.1.8",
1568 "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
@@ -1422,6 +1605,25 @@
1605 "node": ">=8"
1606 }
1607 },
1608 + "node_modules/find-root": {
1609 + "version": "1.1.0",
1610 + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
1611 + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
1612 + "dev": true
1613 + },
1614 + "node_modules/find-up": {
1615 + "version": "4.1.0",
1616 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
1617 + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1618 + "dev": true,
1619 + "dependencies": {
1620 + "locate-path": "^5.0.0",
1621 + "path-exists": "^4.0.0"
1622 + },
1623 + "engines": {
1624 + "node": ">=8"
1625 + }
1626 + },
1627 "node_modules/flat": {
1628 "version": "5.0.2",
1629 "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
@@ -1459,6 +1661,17 @@
1661 "node": ">= 0.6"
1662 }
1663 },
1664 + "node_modules/fs-extra": {
1665 + "version": "4.0.3",
1666 + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
1667 + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
1668 + "dev": true,
1669 + "dependencies": {
1670 + "graceful-fs": "^4.1.2",
1671 + "jsonfile": "^4.0.0",
1672 + "universalify": "^0.1.0"
1673 + }
1674 + },
1675 "node_modules/fs.realpath": {
1676 "version": "1.0.0",
1677 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -1581,6 +1794,15 @@
1794 "node": ">=4.x"
1795 }
1796 },
1797 + "node_modules/hard-rejection": {
1798 + "version": "2.1.0",
1799 + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
1800 + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
1801 + "dev": true,
1802 + "engines": {
1803 + "node": ">=6"
1804 + }
1805 + },
1806 "node_modules/has": {
1807 "version": "1.0.3",
1808 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -1644,6 +1866,18 @@
1866 "he": "bin/he"
1867 }
1868 },
1869 + "node_modules/hosted-git-info": {
1870 + "version": "4.0.2",
1871 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
1872 + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
1873 + "dev": true,
1874 + "dependencies": {
1875 + "lru-cache": "^6.0.0"
1876 + },
1877 + "engines": {
1878 + "node": ">=10"
1879 + }
1880 + },
1881 "node_modules/http-assert": {
1882 "version": "1.5.0",
1883 "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
@@ -1739,6 +1973,15 @@
1973 "node": ">=0.8.19"
1974 }
1975 },
1976 + "node_modules/indent-string": {
1977 + "version": "4.0.0",
1978 + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
1979 + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
1980 + "dev": true,
1981 + "engines": {
1982 + "node": ">=8"
1983 + }
1984 + },
1985 "node_modules/inflation": {
1986 "version": "2.0.0",
1987 "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz",
@@ -1771,6 +2014,12 @@
2014 "node": ">=10"
2015 }
2016 },
2017 + "node_modules/is-arrayish": {
2018 + "version": "0.2.1",
2019 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
2020 + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
2021 + "dev": true
2022 + },
2023 "node_modules/is-binary-path": {
2024 "version": "2.1.0",
2025 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1800,6 +2049,18 @@
2049 "resolved": "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz",
2050 "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ=="
2051 },
2052 + "node_modules/is-core-module": {
2053 + "version": "2.8.0",
2054 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
2055 + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
2056 + "dev": true,
2057 + "dependencies": {
2058 + "has": "^1.0.3"
2059 + },
2060 + "funding": {
2061 + "url": "https://github.com/sponsors/ljharb"
2062 + }
2063 + },
2064 "node_modules/is-extglob": {
2065 "version": "2.1.1",
2066 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -1950,12 +2211,33 @@
2211 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
2212 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
2213 },
2214 + "node_modules/js-tokens": {
2215 + "version": "4.0.0",
2216 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2217 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2218 + "dev": true
2219 + },
2220 "node_modules/json-buffer": {
2221 "version": "3.0.0",
2222 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
2223 "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
2224 "dev": true
2225 },
2226 + "node_modules/json-parse-even-better-errors": {
2227 + "version": "2.3.1",
2228 + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
2229 + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
2230 + "dev": true
2231 + },
2232 + "node_modules/jsonfile": {
2233 + "version": "4.0.0",
2234 + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
2235 + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
2236 + "dev": true,
2237 + "optionalDependencies": {
2238 + "graceful-fs": "^4.1.6"
2239 + }
2240 + },
2241 "node_modules/keygrip": {
2242 "version": "1.1.0",
2243 "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
@@ -1976,6 +2258,15 @@
2258 "json-buffer": "3.0.0"
2259 }
2260 },
2261 + "node_modules/kind-of": {
2262 + "version": "6.0.3",
2263 + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
2264 + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
2265 + "dev": true,
2266 + "engines": {
2267 + "node": ">=0.10.0"
2268 + }
2269 + },
2270 "node_modules/koa": {
2271 "version": "2.13.4",
2272 "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz",
@@ -2009,17 +2300,6 @@
2300 "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
2301 }
2302 },
2012 - "node_modules/koa-accesslog": {
2013 - "version": "1.0.0",
2014 - "resolved": "https://registry.npmjs.org/koa-accesslog/-/koa-accesslog-1.0.0.tgz",
2015 - "integrity": "sha512-drpakus6DsxCW7mh05O8zmwTTUMGe63o1PMPrz4+6ytypt0UCLRjgpj4AapxxXPWV1nOpcz1YtNP57QbKLfY0w==",
2016 - "dependencies": {
2017 - "moment": "^2.26.0"
2018 - },
2019 - "engines": {
2020 - "node": ">= 10"
2021 - }
2022 - },
2303 "node_modules/koa-better-http-proxy": {
2304 "version": "0.2.9",
2305 "resolved": "https://registry.npmjs.org/koa-better-http-proxy/-/koa-better-http-proxy-0.2.9.tgz",
@@ -2136,11 +2416,47 @@
2416 "node": ">=8"
2417 }
2418 },
2419 + "node_modules/lines-and-columns": {
2420 + "version": "1.2.4",
2421 + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
2422 + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
2423 + "dev": true
2424 + },
2425 + "node_modules/locate-path": {
2426 + "version": "5.0.0",
2427 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
2428 + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
2429 + "dev": true,
2430 + "dependencies": {
2431 + "p-locate": "^4.1.0"
2432 + },
2433 + "engines": {
2434 + "node": ">=8"
2435 + }
2436 + },
2437 "node_modules/lodash": {
2438 "version": "4.17.21",
2439 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
2440 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
2441 },
2442 + "node_modules/lodash.assign": {
2443 + "version": "4.2.0",
2444 + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
2445 + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
2446 + "dev": true
2447 + },
2448 + "node_modules/lodash.isobject": {
2449 + "version": "3.0.2",
2450 + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
2451 + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
2452 + "dev": true
2453 + },
2454 + "node_modules/lodash.isundefined": {
2455 + "version": "3.0.1",
2456 + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz",
2457 + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=",
2458 + "dev": true
2459 + },
2460 "node_modules/log-symbols": {
2461 "version": "4.1.0",
2462 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -2208,6 +2524,18 @@
2524 "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
2525 "dev": true
2526 },
2527 + "node_modules/map-obj": {
2528 + "version": "4.3.0",
2529 + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
2530 + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
2531 + "dev": true,
2532 + "engines": {
2533 + "node": ">=8"
2534 + },
2535 + "funding": {
2536 + "url": "https://github.com/sponsors/sindresorhus"
2537 + }
2538 + },
2539 "node_modules/media-typer": {
2540 "version": "0.3.0",
2541 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -2216,6 +2544,53 @@
2544 "node": ">= 0.6"
2545 }
2546 },
2547 + "node_modules/meow": {
2548 + "version": "9.0.0",
2549 + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
2550 + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
2551 + "dev": true,
2552 + "dependencies": {
2553 + "@types/minimist": "^1.2.0",
2554 + "camelcase-keys": "^6.2.2",
2555 + "decamelize": "^1.2.0",
2556 + "decamelize-keys": "^1.1.0",
2557 + "hard-rejection": "^2.1.0",
2558 + "minimist-options": "4.1.0",
2559 + "normalize-package-data": "^3.0.0",
2560 + "read-pkg-up": "^7.0.1",
2561 + "redent": "^3.0.0",
2562 + "trim-newlines": "^3.0.0",
2563 + "type-fest": "^0.18.0",
2564 + "yargs-parser": "^20.2.3"
2565 + },
2566 + "engines": {
2567 + "node": ">=10"
2568 + },
2569 + "funding": {
2570 + "url": "https://github.com/sponsors/sindresorhus"
2571 + }
2572 + },
2573 + "node_modules/meow/node_modules/decamelize": {
2574 + "version": "1.2.0",
2575 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
2576 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
2577 + "dev": true,
2578 + "engines": {
2579 + "node": ">=0.10.0"
2580 + }
2581 + },
2582 + "node_modules/meow/node_modules/type-fest": {
2583 + "version": "0.18.1",
2584 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
2585 + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
2586 + "dev": true,
2587 + "engines": {
2588 + "node": ">=10"
2589 + },
2590 + "funding": {
2591 + "url": "https://github.com/sponsors/sindresorhus"
2592 + }
2593 + },
2594 "node_modules/merge2": {
2595 "version": "1.4.1",
2596 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -2272,6 +2647,15 @@
2647 "node": ">=4"
2648 }
2649 },
2650 + "node_modules/min-indent": {
2651 + "version": "1.0.1",
2652 + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
2653 + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
2654 + "dev": true,
2655 + "engines": {
2656 + "node": ">=4"
2657 + }
2658 + },
2659 "node_modules/minimatch": {
2660 "version": "3.0.4",
2661 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -2289,6 +2673,29 @@
2673 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
2674 "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
2675 },
2676 + "node_modules/minimist-options": {
2677 + "version": "4.1.0",
2678 + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
2679 + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
2680 + "dev": true,
2681 + "dependencies": {
2682 + "arrify": "^1.0.1",
2683 + "is-plain-obj": "^1.1.0",
2684 + "kind-of": "^6.0.3"
2685 + },
2686 + "engines": {
2687 + "node": ">= 6"
2688 + }
2689 + },
2690 + "node_modules/minimist-options/node_modules/is-plain-obj": {
2691 + "version": "1.1.0",
2692 + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
2693 + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
2694 + "dev": true,
2695 + "engines": {
2696 + "node": ">=0.10.0"
2697 + }
2698 + },
2699 "node_modules/mocha": {
2700 "version": "9.1.3",
2701 "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz",
@@ -2526,14 +2933,6 @@
2933 "node": ">=10"
2934 }
2935 },
2529 - "node_modules/moment": {
2530 - "version": "2.29.1",
2531 - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
2532 - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
2533 - "engines": {
2534 - "node": "*"
2535 - }
2536 - },
2936 "node_modules/ms": {
2937 "version": "2.1.2",
2938 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -2559,15 +2958,35 @@
2958 "node": ">= 0.6"
2959 }
2960 },
2562 - "node_modules/nodemon": {
2563 - "version": "2.0.15",
2564 - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz",
2565 - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==",
2961 + "node_modules/nm-prune": {
2962 + "version": "5.0.0",
2963 + "resolved": "https://registry.npmjs.org/nm-prune/-/nm-prune-5.0.0.tgz",
2964 + "integrity": "sha512-DjLCuKmAP5OEPOn7H/UyigDSj0DeUO6qcrrSo2Y5jPTYbdKXqNpLafEFGoNNhH9v+ChBLlmc5CRN1YVvZIQsOQ==",
2965 "dev": true,
2567 - "hasInstallScript": true,
2966 "dependencies": {
2569 - "chokidar": "^3.5.2",
2570 - "debug": "^3.2.7",
2967 + "enquirer": "^2.3.6",
2968 + "find-root": "^1.1.0",
2969 + "fs-extra": "^4.0.2",
2970 + "meow": "^9.0.0",
2971 + "pretty-bytes": "^4.0.2",
2972 + "walk-filtered": "^0.9.3"
2973 + },
2974 + "bin": {
2975 + "nm-prune": "cli.js"
2976 + },
2977 + "engines": {
2978 + "node": ">=10"
2979 + }
2980 + },
2981 + "node_modules/nodemon": {
2982 + "version": "2.0.15",
2983 + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz",
2984 + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==",
2985 + "dev": true,
2986 + "hasInstallScript": true,
2987 + "dependencies": {
2988 + "chokidar": "^3.5.2",
2989 + "debug": "^3.2.7",
2990 "ignore-by-default": "^1.0.1",
2991 "minimatch": "^3.0.4",
2992 "pstree.remy": "^1.1.8",
@@ -2612,6 +3031,36 @@
3031 "node": "*"
3032 }
3033 },
3034 + "node_modules/normalize-package-data": {
3035 + "version": "3.0.3",
3036 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
3037 + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
3038 + "dev": true,
3039 + "dependencies": {
3040 + "hosted-git-info": "^4.0.1",
3041 + "is-core-module": "^2.5.0",
3042 + "semver": "^7.3.4",
3043 + "validate-npm-package-license": "^3.0.1"
3044 + },
3045 + "engines": {
3046 + "node": ">=10"
3047 + }
3048 + },
3049 + "node_modules/normalize-package-data/node_modules/semver": {
3050 + "version": "7.3.5",
3051 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
3052 + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
3053 + "dev": true,
3054 + "dependencies": {
3055 + "lru-cache": "^6.0.0"
3056 + },
3057 + "bin": {
3058 + "semver": "bin/semver.js"
3059 + },
3060 + "engines": {
3061 + "node": ">=10"
3062 + }
3063 + },
3064 "node_modules/normalize-path": {
3065 "version": "3.0.0",
3066 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -2672,6 +3121,42 @@
3121 "node": ">=6"
3122 }
3123 },
3124 + "node_modules/p-limit": {
3125 + "version": "2.3.0",
3126 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
3127 + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
3128 + "dev": true,
3129 + "dependencies": {
3130 + "p-try": "^2.0.0"
3131 + },
3132 + "engines": {
3133 + "node": ">=6"
3134 + },
3135 + "funding": {
3136 + "url": "https://github.com/sponsors/sindresorhus"
3137 + }
3138 + },
3139 + "node_modules/p-locate": {
3140 + "version": "4.1.0",
3141 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
3142 + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
3143 + "dev": true,
3144 + "dependencies": {
3145 + "p-limit": "^2.2.0"
3146 + },
3147 + "engines": {
3148 + "node": ">=8"
3149 + }
3150 + },
3151 + "node_modules/p-try": {
3152 + "version": "2.2.0",
3153 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
3154 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
3155 + "dev": true,
3156 + "engines": {
3157 + "node": ">=6"
3158 + }
3159 + },
3160 "node_modules/package-json": {
3161 "version": "6.5.0",
3162 "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
@@ -2696,6 +3181,24 @@
3181 "semver": "bin/semver.js"
3182 }
3183 },
3184 + "node_modules/parse-json": {
3185 + "version": "5.2.0",
3186 + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
3187 + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
3188 + "dev": true,
3189 + "dependencies": {
3190 + "@babel/code-frame": "^7.0.0",
3191 + "error-ex": "^1.3.1",
3192 + "json-parse-even-better-errors": "^2.3.0",
3193 + "lines-and-columns": "^1.1.6"
3194 + },
3195 + "engines": {
3196 + "node": ">=8"
3197 + },
3198 + "funding": {
3199 + "url": "https://github.com/sponsors/sindresorhus"
3200 + }
3201 + },
3202 "node_modules/parseurl": {
3203 "version": "1.3.3",
3204 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -2722,6 +3225,12 @@
3225 "node": ">=0.10.0"
3226 }
3227 },
3228 + "node_modules/path-parse": {
3229 + "version": "1.0.7",
3230 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3231 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
3232 + "dev": true
3233 + },
3234 "node_modules/path-to-regexp": {
3235 "version": "6.2.0",
3236 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz",
@@ -2747,6 +3256,15 @@
3256 "node": ">=4"
3257 }
3258 },
3259 + "node_modules/pretty-bytes": {
3260 + "version": "4.0.2",
3261 + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
3262 + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
3263 + "dev": true,
3264 + "engines": {
3265 + "node": ">=4"
3266 + }
3267 + },
3268 "node_modules/pstree.remy": {
3269 "version": "1.1.8",
3270 "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
@@ -2808,6 +3326,15 @@
3326 }
3327 ]
3328 },
3329 + "node_modules/quick-lru": {
3330 + "version": "4.0.1",
3331 + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
3332 + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
3333 + "dev": true,
3334 + "engines": {
3335 + "node": ">=8"
3336 + }
3337 + },
3338 "node_modules/randombytes": {
3339 "version": "2.1.0",
3340 "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -2852,6 +3379,74 @@
3379 "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
3380 "dev": true
3381 },
3382 + "node_modules/read-pkg": {
3383 + "version": "5.2.0",
3384 + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
3385 + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
3386 + "dev": true,
3387 + "dependencies": {
3388 + "@types/normalize-package-data": "^2.4.0",
3389 + "normalize-package-data": "^2.5.0",
3390 + "parse-json": "^5.0.0",
3391 + "type-fest": "^0.6.0"
3392 + },
3393 + "engines": {
3394 + "node": ">=8"
3395 + }
3396 + },
3397 + "node_modules/read-pkg-up": {
3398 + "version": "7.0.1",
3399 + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
3400 + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
3401 + "dev": true,
3402 + "dependencies": {
3403 + "find-up": "^4.1.0",
3404 + "read-pkg": "^5.2.0",
3405 + "type-fest": "^0.8.1"
3406 + },
3407 + "engines": {
3408 + "node": ">=8"
3409 + },
3410 + "funding": {
3411 + "url": "https://github.com/sponsors/sindresorhus"
3412 + }
3413 + },
3414 + "node_modules/read-pkg-up/node_modules/type-fest": {
3415 + "version": "0.8.1",
3416 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
3417 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
3418 + "dev": true,
3419 + "engines": {
3420 + "node": ">=8"
3421 + }
3422 + },
3423 + "node_modules/read-pkg/node_modules/hosted-git-info": {
3424 + "version": "2.8.9",
3425 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
3426 + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
3427 + "dev": true
3428 + },
3429 + "node_modules/read-pkg/node_modules/normalize-package-data": {
3430 + "version": "2.5.0",
3431 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
3432 + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
3433 + "dev": true,
3434 + "dependencies": {
3435 + "hosted-git-info": "^2.1.4",
3436 + "resolve": "^1.10.0",
3437 + "semver": "2 || 3 || 4 || 5",
3438 + "validate-npm-package-license": "^3.0.1"
3439 + }
3440 + },
3441 + "node_modules/read-pkg/node_modules/type-fest": {
3442 + "version": "0.6.0",
3443 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
3444 + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
3445 + "dev": true,
3446 + "engines": {
3447 + "node": ">=8"
3448 + }
3449 + },
3450 "node_modules/readdirp": {
3451 "version": "3.6.0",
3452 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -2864,6 +3459,19 @@
3459 "node": ">=8.10.0"
3460 }
3461 },
3462 + "node_modules/redent": {
3463 + "version": "3.0.0",
3464 + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
3465 + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
3466 + "dev": true,
3467 + "dependencies": {
3468 + "indent-string": "^4.0.0",
3469 + "strip-indent": "^3.0.0"
3470 + },
3471 + "engines": {
3472 + "node": ">=8"
3473 + }
3474 + },
3475 "node_modules/registry-auth-token": {
3476 "version": "4.2.1",
3477 "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
@@ -2897,6 +3505,23 @@
3505 "node": ">=0.10.0"
3506 }
3507 },
3508 + "node_modules/resolve": {
3509 + "version": "1.21.0",
3510 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
3511 + "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
3512 + "dev": true,
3513 + "dependencies": {
3514 + "is-core-module": "^2.8.0",
3515 + "path-parse": "^1.0.7",
3516 + "supports-preserve-symlinks-flag": "^1.0.0"
3517 + },
3518 + "bin": {
3519 + "resolve": "bin/resolve"
3520 + },
3521 + "funding": {
3522 + "url": "https://github.com/sponsors/ljharb"
3523 + }
3524 + },
3525 "node_modules/responselike": {
3526 "version": "1.0.2",
3527 "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -3010,6 +3635,38 @@
3635 "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==",
3636 "dev": true
3637 },
3638 + "node_modules/spdx-correct": {
3639 + "version": "3.1.1",
3640 + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
3641 + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
3642 + "dev": true,
3643 + "dependencies": {
3644 + "spdx-expression-parse": "^3.0.0",
3645 + "spdx-license-ids": "^3.0.0"
3646 + }
3647 + },
3648 + "node_modules/spdx-exceptions": {
3649 + "version": "2.3.0",
3650 + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
3651 + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
3652 + "dev": true
3653 + },
3654 + "node_modules/spdx-expression-parse": {
3655 + "version": "3.0.1",
3656 + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
3657 + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
3658 + "dev": true,
3659 + "dependencies": {
3660 + "spdx-exceptions": "^2.1.0",
3661 + "spdx-license-ids": "^3.0.0"
3662 + }
3663 + },
3664 + "node_modules/spdx-license-ids": {
3665 + "version": "3.0.11",
3666 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
3667 + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
3668 + "dev": true
3669 + },
3670 "node_modules/stack-trace": {
3671 "version": "0.0.10",
3672 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -3052,6 +3709,18 @@
3709 "node": ">=8"
3710 }
3711 },
3712 + "node_modules/strip-indent": {
3713 + "version": "3.0.0",
3714 + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
3715 + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
3716 + "dev": true,
3717 + "dependencies": {
3718 + "min-indent": "^1.0.0"
3719 + },
3720 + "engines": {
3721 + "node": ">=8"
3722 + }
3723 + },
3724 "node_modules/strip-json-comments": {
3725 "version": "2.0.1",
3726 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -3073,6 +3742,18 @@
3742 "node": ">=4"
3743 }
3744 },
3745 + "node_modules/supports-preserve-symlinks-flag": {
3746 + "version": "1.0.0",
3747 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
3748 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
3749 + "dev": true,
3750 + "engines": {
3751 + "node": ">= 0.4"
3752 + },
3753 + "funding": {
3754 + "url": "https://github.com/sponsors/ljharb"
3755 + }
3756 + },
3757 "node_modules/to-readable-stream": {
3758 "version": "1.0.0",
3759 "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -3113,6 +3794,15 @@
3794 "nodetouch": "bin/nodetouch.js"
3795 }
3796 },
3797 + "node_modules/trim-newlines": {
3798 + "version": "3.0.1",
3799 + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
3800 + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
3801 + "dev": true,
3802 + "engines": {
3803 + "node": ">=8"
3804 + }
3805 + },
3806 "node_modules/ts-node": {
3807 "version": "10.4.0",
3808 "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz",
@@ -3200,6 +3890,7 @@
3890 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
3891 "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
3892 "dev": true,
3893 + "peer": true,
3894 "bin": {
3895 "tsc": "bin/tsc",
3896 "tsserver": "bin/tsserver"
@@ -3226,6 +3917,15 @@
3917 "node": ">=8"
3918 }
3919 },
3920 + "node_modules/universalify": {
3921 + "version": "0.1.2",
3922 + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
3923 + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
3924 + "dev": true,
3925 + "engines": {
3926 + "node": ">= 4.0.0"
3927 + }
3928 + },
3929 "node_modules/unpipe": {
3930 "version": "1.0.0",
3931 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -3298,6 +3998,16 @@
3998 "uuid": "bin/uuid"
3999 }
4000 },
4001 + "node_modules/validate-npm-package-license": {
4002 + "version": "3.0.4",
4003 + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
4004 + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
4005 + "dev": true,
4006 + "dependencies": {
4007 + "spdx-correct": "^3.0.0",
4008 + "spdx-expression-parse": "^3.0.0"
4009 + }
4010 + },
4011 "node_modules/vary": {
4012 "version": "1.1.2",
4013 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -3306,6 +4016,19 @@
4016 "node": ">= 0.8"
4017 }
4018 },
4019 + "node_modules/walk-filtered": {
4020 + "version": "0.9.3",
4021 + "resolved": "https://registry.npmjs.org/walk-filtered/-/walk-filtered-0.9.3.tgz",
4022 + "integrity": "sha1-bypivUO29e8sARnFVKf7AKo7lYg=",
4023 + "dev": true,
4024 + "dependencies": {
4025 + "each-limit": "^1.0.0",
4026 + "graceful-fs": "^4.1.2",
4027 + "lodash.assign": "^4.0.0",
4028 + "lodash.isobject": "^3.0.2",
4029 + "lodash.isundefined": "^3.0.1"
4030 + }
4031 + },
4032 "node_modules/which": {
4033 "version": "2.0.2",
4034 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -3495,6 +4218,69 @@
4218 }
4219 },
4220 "dependencies": {
4221 + "@babel/code-frame": {
4222 + "version": "7.16.7",
4223 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
4224 + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
4225 + "dev": true,
4226 + "requires": {
4227 + "@babel/highlight": "^7.16.7"
4228 + }
4229 + },
4230 + "@babel/helper-validator-identifier": {
4231 + "version": "7.16.7",
4232 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
4233 + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
4234 + "dev": true
4235 + },
4236 + "@babel/highlight": {
4237 + "version": "7.16.7",
4238 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz",
4239 + "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==",
4240 + "dev": true,
4241 + "requires": {
4242 + "@babel/helper-validator-identifier": "^7.16.7",
4243 + "chalk": "^2.0.0",
4244 + "js-tokens": "^4.0.0"
4245 + },
4246 + "dependencies": {
4247 + "ansi-styles": {
4248 + "version": "3.2.1",
4249 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
4250 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
4251 + "dev": true,
4252 + "requires": {
4253 + "color-convert": "^1.9.0"
4254 + }
4255 + },
4256 + "chalk": {
4257 + "version": "2.4.2",
4258 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
4259 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
4260 + "dev": true,
4261 + "requires": {
4262 + "ansi-styles": "^3.2.1",
4263 + "escape-string-regexp": "^1.0.5",
4264 + "supports-color": "^5.3.0"
4265 + }
4266 + },
4267 + "color-convert": {
4268 + "version": "1.9.3",
4269 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
4270 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
4271 + "dev": true,
4272 + "requires": {
4273 + "color-name": "1.1.3"
4274 + }
4275 + },
4276 + "color-name": {
4277 + "version": "1.1.3",
4278 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
4279 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
4280 + "dev": true
4281 + }
4282 + }
4283 + },
4284 "@cspotcode/source-map-consumer": {
4285 "version": "0.8.0",
4286 "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
@@ -3926,6 +4712,12 @@
4712 "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==",
4713 "dev": true
4714 },
4715 + "@types/normalize-package-data": {
4716 + "version": "2.4.1",
4717 + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
4718 + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
4719 + "dev": true
4720 + },
4721 "@types/qs": {
4722 "version": "6.9.7",
4723 "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
@@ -4027,6 +4819,12 @@
4819 "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
4820 "dev": true
4821 },
4822 + "arrify": {
4823 + "version": "1.0.1",
4824 + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
4825 + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
4826 + "dev": true
4827 + },
4828 "async": {
4829 "version": "1.0.0",
4830 "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
@@ -4172,6 +4970,25 @@
4970 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
4971 "dev": true
4972 },
4973 + "camelcase-keys": {
4974 + "version": "6.2.2",
4975 + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
4976 + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
4977 + "dev": true,
4978 + "requires": {
4979 + "camelcase": "^5.3.1",
4980 + "map-obj": "^4.0.0",
4981 + "quick-lru": "^4.0.1"
4982 + },
4983 + "dependencies": {
4984 + "camelcase": {
4985 + "version": "5.3.1",
4986 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
4987 + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
4988 + "dev": true
4989 + }
4990 + }
4991 + },
4992 "chalk": {
4993 "version": "4.1.2",
4994 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -4382,6 +5199,30 @@
5199 "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
5200 "dev": true
5201 },
5202 + "decamelize-keys": {
5203 + "version": "1.1.0",
5204 + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
5205 + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
5206 + "dev": true,
5207 + "requires": {
5208 + "decamelize": "^1.1.0",
5209 + "map-obj": "^1.0.0"
5210 + },
5211 + "dependencies": {
5212 + "decamelize": {
5213 + "version": "1.2.0",
5214 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
5215 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
5216 + "dev": true
5217 + },
5218 + "map-obj": {
5219 + "version": "1.0.1",
5220 + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
5221 + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
5222 + "dev": true
5223 + }
5224 + }
5225 + },
5226 "decompress-response": {
5227 "version": "3.3.0",
5228 "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
@@ -4444,6 +5285,12 @@
5285 "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
5286 "dev": true
5287 },
5288 + "each-limit": {
5289 + "version": "1.0.0",
5290 + "resolved": "https://registry.npmjs.org/each-limit/-/each-limit-1.0.0.tgz",
5291 + "integrity": "sha1-OAFACDNnqK9kKZvKwV/dWxqXcZY=",
5292 + "dev": true
5293 + },
5294 "ee-first": {
5295 "version": "1.1.1",
5296 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -4469,6 +5316,24 @@
5316 "once": "^1.4.0"
5317 }
5318 },
5319 + "enquirer": {
5320 + "version": "2.3.6",
5321 + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
5322 + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
5323 + "dev": true,
5324 + "requires": {
5325 + "ansi-colors": "^4.1.1"
5326 + }
5327 + },
5328 + "error-ex": {
5329 + "version": "1.3.2",
5330 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
5331 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
5332 + "dev": true,
5333 + "requires": {
5334 + "is-arrayish": "^0.2.1"
5335 + }
5336 + },
5337 "es6-promise": {
5338 "version": "3.3.1",
5339 "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
@@ -4491,6 +5356,12 @@
5356 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
5357 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
5358 },
5359 + "escape-string-regexp": {
5360 + "version": "1.0.5",
5361 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
5362 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
5363 + "dev": true
5364 + },
5365 "eyes": {
5366 "version": "0.1.8",
5367 "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
@@ -4524,6 +5395,22 @@
5395 "to-regex-range": "^5.0.1"
5396 }
5397 },
5398 + "find-root": {
5399 + "version": "1.1.0",
5400 + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
5401 + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
5402 + "dev": true
5403 + },
5404 + "find-up": {
5405 + "version": "4.1.0",
5406 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
5407 + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
5408 + "dev": true,
5409 + "requires": {
5410 + "locate-path": "^5.0.0",
5411 + "path-exists": "^4.0.0"
5412 + }
5413 + },
5414 "flat": {
5415 "version": "5.0.2",
5416 "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
@@ -4541,6 +5428,17 @@
5428 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
5429 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
5430 },
5431 + "fs-extra": {
5432 + "version": "4.0.3",
5433 + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
5434 + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
5435 + "dev": true,
5436 + "requires": {
5437 + "graceful-fs": "^4.1.2",
5438 + "jsonfile": "^4.0.0",
5439 + "universalify": "^0.1.0"
5440 + }
5441 + },
5442 "fs.realpath": {
5443 "version": "1.0.0",
5444 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -4632,6 +5530,12 @@
5530 "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
5531 "dev": true
5532 },
5533 + "hard-rejection": {
5534 + "version": "2.1.0",
5535 + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
5536 + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
5537 + "dev": true
5538 + },
5539 "has": {
5540 "version": "1.0.3",
5541 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -4671,6 +5575,15 @@
5575 "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
5576 "dev": true
5577 },
5578 + "hosted-git-info": {
5579 + "version": "4.0.2",
5580 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
5581 + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
5582 + "dev": true,
5583 + "requires": {
5584 + "lru-cache": "^6.0.0"
5585 + }
5586 + },
5587 "http-assert": {
5588 "version": "1.5.0",
5589 "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
@@ -4736,6 +5649,12 @@
5649 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
5650 "dev": true
5651 },
5652 + "indent-string": {
5653 + "version": "4.0.0",
5654 + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
5655 + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
5656 + "dev": true
5657 + },
5658 "inflation": {
5659 "version": "2.0.0",
5660 "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz",
@@ -4762,6 +5681,12 @@
5681 "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
5682 "dev": true
5683 },
5684 + "is-arrayish": {
5685 + "version": "0.2.1",
5686 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
5687 + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
5688 + "dev": true
5689 + },
5690 "is-binary-path": {
5691 "version": "2.1.0",
5692 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -4785,6 +5710,15 @@
5710 "resolved": "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz",
5711 "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ=="
5712 },
5713 + "is-core-module": {
5714 + "version": "2.8.0",
5715 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
5716 + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
5717 + "dev": true,
5718 + "requires": {
5719 + "has": "^1.0.3"
5720 + }
5721 + },
5722 "is-extglob": {
5723 "version": "2.1.1",
5724 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -4890,12 +5824,33 @@
5824 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
5825 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
5826 },
5827 + "js-tokens": {
5828 + "version": "4.0.0",
5829 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
5830 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
5831 + "dev": true
5832 + },
5833 "json-buffer": {
5834 "version": "3.0.0",
5835 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
5836 "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
5837 "dev": true
5838 },
5839 + "json-parse-even-better-errors": {
5840 + "version": "2.3.1",
5841 + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
5842 + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
5843 + "dev": true
5844 + },
5845 + "jsonfile": {
5846 + "version": "4.0.0",
5847 + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
5848 + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
5849 + "dev": true,
5850 + "requires": {
5851 + "graceful-fs": "^4.1.6"
5852 + }
5853 + },
5854 "keygrip": {
5855 "version": "1.1.0",
5856 "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
@@ -4913,6 +5868,12 @@
5868 "json-buffer": "3.0.0"
5869 }
5870 },
5871 + "kind-of": {
5872 + "version": "6.0.3",
5873 + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
5874 + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
5875 + "dev": true
5876 + },
5877 "koa": {
5878 "version": "2.13.4",
5879 "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz",
@@ -4943,14 +5904,6 @@
5904 "vary": "^1.1.2"
5905 }
5906 },
4946 - "koa-accesslog": {
4947 - "version": "1.0.0",
4948 - "resolved": "https://registry.npmjs.org/koa-accesslog/-/koa-accesslog-1.0.0.tgz",
4949 - "integrity": "sha512-drpakus6DsxCW7mh05O8zmwTTUMGe63o1PMPrz4+6ytypt0UCLRjgpj4AapxxXPWV1nOpcz1YtNP57QbKLfY0w==",
4950 - "requires": {
4951 - "moment": "^2.26.0"
4952 - }
4953 - },
5907 "koa-better-http-proxy": {
5908 "version": "0.2.9",
5909 "resolved": "https://registry.npmjs.org/koa-better-http-proxy/-/koa-better-http-proxy-0.2.9.tgz",
@@ -5047,11 +6000,44 @@
6000 "package-json": "^6.3.0"
6001 }
6002 },
6003 + "lines-and-columns": {
6004 + "version": "1.2.4",
6005 + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
6006 + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
6007 + "dev": true
6008 + },
6009 + "locate-path": {
6010 + "version": "5.0.0",
6011 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
6012 + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
6013 + "dev": true,
6014 + "requires": {
6015 + "p-locate": "^4.1.0"
6016 + }
6017 + },
6018 "lodash": {
6019 "version": "4.17.21",
6020 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
6021 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
6022 },
6023 + "lodash.assign": {
6024 + "version": "4.2.0",
6025 + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
6026 + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
6027 + "dev": true
6028 + },
6029 + "lodash.isobject": {
6030 + "version": "3.0.2",
6031 + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
6032 + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
6033 + "dev": true
6034 + },
6035 + "lodash.isundefined": {
6036 + "version": "3.0.1",
6037 + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz",
6038 + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=",
6039 + "dev": true
6040 + },
6041 "log-symbols": {
6042 "version": "4.1.0",
6043 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -5100,11 +6086,51 @@
6086 "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
6087 "dev": true
6088 },
6089 + "map-obj": {
6090 + "version": "4.3.0",
6091 + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
6092 + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
6093 + "dev": true
6094 + },
6095 "media-typer": {
6096 "version": "0.3.0",
6097 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
6098 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
6099 },
6100 + "meow": {
6101 + "version": "9.0.0",
6102 + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
6103 + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
6104 + "dev": true,
6105 + "requires": {
6106 + "@types/minimist": "^1.2.0",
6107 + "camelcase-keys": "^6.2.2",
6108 + "decamelize": "^1.2.0",
6109 + "decamelize-keys": "^1.1.0",
6110 + "hard-rejection": "^2.1.0",
6111 + "minimist-options": "4.1.0",
6112 + "normalize-package-data": "^3.0.0",
6113 + "read-pkg-up": "^7.0.1",
6114 + "redent": "^3.0.0",
6115 + "trim-newlines": "^3.0.0",
6116 + "type-fest": "^0.18.0",
6117 + "yargs-parser": "^20.2.3"
6118 + },
6119 + "dependencies": {
6120 + "decamelize": {
6121 + "version": "1.2.0",
6122 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
6123 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
6124 + "dev": true
6125 + },
6126 + "type-fest": {
6127 + "version": "0.18.1",
6128 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
6129 + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
6130 + "dev": true
6131 + }
6132 + }
6133 + },
6134 "merge2": {
6135 "version": "1.4.1",
6136 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -5143,6 +6169,12 @@
6169 "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
6170 "dev": true
6171 },
6172 + "min-indent": {
6173 + "version": "1.0.1",
6174 + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
6175 + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
6176 + "dev": true
6177 + },
6178 "minimatch": {
6179 "version": "3.0.4",
6180 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -5157,6 +6189,25 @@
6189 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
6190 "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
6191 },
6192 + "minimist-options": {
6193 + "version": "4.1.0",
6194 + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
6195 + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
6196 + "dev": true,
6197 + "requires": {
6198 + "arrify": "^1.0.1",
6199 + "is-plain-obj": "^1.1.0",
6200 + "kind-of": "^6.0.3"
6201 + },
6202 + "dependencies": {
6203 + "is-plain-obj": {
6204 + "version": "1.1.0",
6205 + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
6206 + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
6207 + "dev": true
6208 + }
6209 + }
6210 + },
6211 "mocha": {
6212 "version": "9.1.3",
6213 "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz",
@@ -5319,11 +6370,6 @@
6370 }
6371 }
6372 },
5322 - "moment": {
5323 - "version": "2.29.1",
5324 - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
5325 - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
5326 - },
6373 "ms": {
6374 "version": "2.1.2",
6375 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -5340,6 +6386,20 @@
6386 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
6387 "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
6388 },
6389 + "nm-prune": {
6390 + "version": "5.0.0",
6391 + "resolved": "https://registry.npmjs.org/nm-prune/-/nm-prune-5.0.0.tgz",
6392 + "integrity": "sha512-DjLCuKmAP5OEPOn7H/UyigDSj0DeUO6qcrrSo2Y5jPTYbdKXqNpLafEFGoNNhH9v+ChBLlmc5CRN1YVvZIQsOQ==",
6393 + "dev": true,
6394 + "requires": {
6395 + "enquirer": "^2.3.6",
6396 + "find-root": "^1.1.0",
6397 + "fs-extra": "^4.0.2",
6398 + "meow": "^9.0.0",
6399 + "pretty-bytes": "^4.0.2",
6400 + "walk-filtered": "^0.9.3"
6401 + }
6402 + },
6403 "nodemon": {
6404 "version": "2.0.15",
6405 "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz",
@@ -5378,6 +6438,29 @@
6438 "abbrev": "1"
6439 }
6440 },
6441 + "normalize-package-data": {
6442 + "version": "3.0.3",
6443 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
6444 + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
6445 + "dev": true,
6446 + "requires": {
6447 + "hosted-git-info": "^4.0.1",
6448 + "is-core-module": "^2.5.0",
6449 + "semver": "^7.3.4",
6450 + "validate-npm-package-license": "^3.0.1"
6451 + },
6452 + "dependencies": {
6453 + "semver": {
6454 + "version": "7.3.5",
6455 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
6456 + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
6457 + "dev": true,
6458 + "requires": {
6459 + "lru-cache": "^6.0.0"
6460 + }
6461 + }
6462 + }
6463 + },
6464 "normalize-path": {
6465 "version": "3.0.0",
6466 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -5423,6 +6506,30 @@
6506 "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
6507 "dev": true
6508 },
6509 + "p-limit": {
6510 + "version": "2.3.0",
6511 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
6512 + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
6513 + "dev": true,
6514 + "requires": {
6515 + "p-try": "^2.0.0"
6516 + }
6517 + },
6518 + "p-locate": {
6519 + "version": "4.1.0",
6520 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
6521 + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
6522 + "dev": true,
6523 + "requires": {
6524 + "p-limit": "^2.2.0"
6525 + }
6526 + },
6527 + "p-try": {
6528 + "version": "2.2.0",
6529 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
6530 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
6531 + "dev": true
6532 + },
6533 "package-json": {
6534 "version": "6.5.0",
6535 "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
@@ -5443,6 +6550,18 @@
6550 }
6551 }
6552 },
6553 + "parse-json": {
6554 + "version": "5.2.0",
6555 + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
6556 + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
6557 + "dev": true,
6558 + "requires": {
6559 + "@babel/code-frame": "^7.0.0",
6560 + "error-ex": "^1.3.1",
6561 + "json-parse-even-better-errors": "^2.3.0",
6562 + "lines-and-columns": "^1.1.6"
6563 + }
6564 + },
6565 "parseurl": {
6566 "version": "1.3.3",
6567 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -5460,6 +6579,12 @@
6579 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
6580 "dev": true
6581 },
6582 + "path-parse": {
6583 + "version": "1.0.7",
6584 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
6585 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
6586 + "dev": true
6587 + },
6588 "path-to-regexp": {
6589 "version": "6.2.0",
6590 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz",
@@ -5476,6 +6601,12 @@
6601 "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
6602 "dev": true
6603 },
6604 + "pretty-bytes": {
6605 + "version": "4.0.2",
6606 + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
6607 + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
6608 + "dev": true
6609 + },
6610 "pstree.remy": {
6611 "version": "1.1.8",
6612 "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
@@ -5514,6 +6645,12 @@
6645 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
6646 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
6647 },
6648 + "quick-lru": {
6649 + "version": "4.0.1",
6650 + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
6651 + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
6652 + "dev": true
6653 + },
6654 "randombytes": {
6655 "version": "2.1.0",
6656 "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -5554,6 +6691,63 @@
6691 }
6692 }
6693 },
6694 + "read-pkg": {
6695 + "version": "5.2.0",
6696 + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
6697 + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
6698 + "dev": true,
6699 + "requires": {
6700 + "@types/normalize-package-data": "^2.4.0",
6701 + "normalize-package-data": "^2.5.0",
6702 + "parse-json": "^5.0.0",
6703 + "type-fest": "^0.6.0"
6704 + },
6705 + "dependencies": {
6706 + "hosted-git-info": {
6707 + "version": "2.8.9",
6708 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
6709 + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
6710 + "dev": true
6711 + },
6712 + "normalize-package-data": {
6713 + "version": "2.5.0",
6714 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
6715 + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
6716 + "dev": true,
6717 + "requires": {
6718 + "hosted-git-info": "^2.1.4",
6719 + "resolve": "^1.10.0",
6720 + "semver": "2 || 3 || 4 || 5",
6721 + "validate-npm-package-license": "^3.0.1"
6722 + }
6723 + },
6724 + "type-fest": {
6725 + "version": "0.6.0",
6726 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
6727 + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
6728 + "dev": true
6729 + }
6730 + }
6731 + },
6732 + "read-pkg-up": {
6733 + "version": "7.0.1",
6734 + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
6735 + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
6736 + "dev": true,
6737 + "requires": {
6738 + "find-up": "^4.1.0",
6739 + "read-pkg": "^5.2.0",
6740 + "type-fest": "^0.8.1"
6741 + },
6742 + "dependencies": {
6743 + "type-fest": {
6744 + "version": "0.8.1",
6745 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
6746 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
6747 + "dev": true
6748 + }
6749 + }
6750 + },
6751 "readdirp": {
6752 "version": "3.6.0",
6753 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -5563,6 +6757,16 @@
6757 "picomatch": "^2.2.1"
6758 }
6759 },
6760 + "redent": {
6761 + "version": "3.0.0",
6762 + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
6763 + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
6764 + "dev": true,
6765 + "requires": {
6766 + "indent-string": "^4.0.0",
6767 + "strip-indent": "^3.0.0"
6768 + }
6769 + },
6770 "registry-auth-token": {
6771 "version": "4.2.1",
6772 "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
@@ -5587,6 +6791,17 @@
6791 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
6792 "dev": true
6793 },
6794 + "resolve": {
6795 + "version": "1.21.0",
6796 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
6797 + "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
6798 + "dev": true,
6799 + "requires": {
6800 + "is-core-module": "^2.8.0",
6801 + "path-parse": "^1.0.7",
6802 + "supports-preserve-symlinks-flag": "^1.0.0"
6803 + }
6804 + },
6805 "responselike": {
6806 "version": "1.0.2",
6807 "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -5672,6 +6887,38 @@
6887 "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==",
6888 "dev": true
6889 },
6890 + "spdx-correct": {
6891 + "version": "3.1.1",
6892 + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
6893 + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
6894 + "dev": true,
6895 + "requires": {
6896 + "spdx-expression-parse": "^3.0.0",
6897 + "spdx-license-ids": "^3.0.0"
6898 + }
6899 + },
6900 + "spdx-exceptions": {
6901 + "version": "2.3.0",
6902 + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
6903 + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
6904 + "dev": true
6905 + },
6906 + "spdx-expression-parse": {
6907 + "version": "3.0.1",
6908 + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
6909 + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
6910 + "dev": true,
6911 + "requires": {
6912 + "spdx-exceptions": "^2.1.0",
6913 + "spdx-license-ids": "^3.0.0"
6914 + }
6915 + },
6916 + "spdx-license-ids": {
6917 + "version": "3.0.11",
6918 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
6919 + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
6920 + "dev": true
6921 + },
6922 "stack-trace": {
6923 "version": "0.0.10",
6924 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -5702,6 +6949,15 @@
6949 "ansi-regex": "^5.0.1"
6950 }
6951 },
6952 + "strip-indent": {
6953 + "version": "3.0.0",
6954 + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
6955 + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
6956 + "dev": true,
6957 + "requires": {
6958 + "min-indent": "^1.0.0"
6959 + }
6960 + },
6961 "strip-json-comments": {
6962 "version": "2.0.1",
6963 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -5717,6 +6973,12 @@
6973 "has-flag": "^3.0.0"
6974 }
6975 },
6976 + "supports-preserve-symlinks-flag": {
6977 + "version": "1.0.0",
6978 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
6979 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
6980 + "dev": true
6981 + },
6982 "to-readable-stream": {
6983 "version": "1.0.0",
6984 "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -5745,6 +7007,12 @@
7007 "nopt": "~1.0.10"
7008 }
7009 },
7010 + "trim-newlines": {
7011 + "version": "3.0.1",
7012 + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
7013 + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
7014 + "dev": true
7015 + },
7016 "ts-node": {
7017 "version": "10.4.0",
7018 "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz",
@@ -5798,7 +7066,8 @@
7066 "version": "4.5.2",
7067 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
7068 "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
5801 - "dev": true
7069 + "dev": true,
7070 + "peer": true
7071 },
7072 "undefsafe": {
7073 "version": "2.0.5",
@@ -5815,6 +7084,12 @@
7084 "crypto-random-string": "^2.0.0"
7085 }
7086 },
7087 + "universalify": {
7088 + "version": "0.1.2",
7089 + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
7090 + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
7091 + "dev": true
7092 + },
7093 "unpipe": {
7094 "version": "1.0.0",
7095 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -5867,11 +7142,34 @@
7142 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
7143 "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
7144 },
7145 + "validate-npm-package-license": {
7146 + "version": "3.0.4",
7147 + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
7148 + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
7149 + "dev": true,
7150 + "requires": {
7151 + "spdx-correct": "^3.0.0",
7152 + "spdx-expression-parse": "^3.0.0"
7153 + }
7154 + },
7155 "vary": {
7156 "version": "1.1.2",
7157 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
7158 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
7159 },
7160 + "walk-filtered": {
7161 + "version": "0.9.3",
7162 + "resolved": "https://registry.npmjs.org/walk-filtered/-/walk-filtered-0.9.3.tgz",
7163 + "integrity": "sha1-bypivUO29e8sARnFVKf7AKo7lYg=",
7164 + "dev": true,
7165 + "requires": {
7166 + "each-limit": "^1.0.0",
7167 + "graceful-fs": "^4.1.2",
7168 + "lodash.assign": "^4.0.0",
7169 + "lodash.isobject": "^3.0.2",
7170 + "lodash.isundefined": "^3.0.1"
7171 + }
7172 + },
7173 "which": {
7174 "version": "2.0.2",
7175 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
package.json
+5 -5
@@ -1,6 +1,6 @@
1 {
2 "name": "hfs",
3 - "version": "0.4.0",
3 + "version": "0.4.1",
4 "description": "HTTP File Server",
5 "keywords": [
6 "file server",
@@ -13,7 +13,8 @@
13 "watch-server": "nodemon --ignore tests/ --watch src -e ts,tsx --exec ts-node src/index.ts",
14 "start-frontend": "cd frontend && npm run start",
15 "start": "node dist",
16 - "build": "npm install && node timestamp && tsc --target es2018 && cp package*.json *.yaml dist && cd dist && npm ci --production",
16 + "build": "npm install && node timestamp && tsc --target es2018 && cp package*.json *.yaml dist && cd dist && npm ci --production && cd .. && npm run build-prune",
17 + "build-prune": "cd dist && nm-prune --force && cd node_modules && rm -rf yaml/browser && mkdir lodash2 && cp lodash/lodash.min.js lodash2/lodash.js && cp lodash/package.json lodash2 && rm -rf lodash && mv lodash2 lodash",
18 "build-all": "npm run build && cd frontend && npm install && npm run build && cd ..",
19 "test": "mocha -r ts-node/register 'tests/**/*.ts'",
20 "make-exe-after-build": "pkg . -C brotli"
@@ -33,7 +34,6 @@
34 "buffer-crc32": "https://github.com/rejetto/buffer-crc32.git",
35 "fast-glob": "^3.2.7",
36 "koa": "^2.13.4",
36 - "koa-accesslog": "^1.0.0",
37 "koa-better-http-proxy": "^0.2.9",
38 "koa-bodyparser": "^4.3.0",
39 "koa-compress": "^5.1.0",
@@ -60,8 +60,8 @@
60 "@types/node": "^16.11.12",
61 "axios": "^0.24.0",
62 "mocha": "^9.1.3",
63 + "nm-prune": "^5.0.0",
64 "nodemon": "^2.0.15",
64 - "ts-node": "^10.4.0",
65 - "typescript": "^4.5.2"
65 + "ts-node": "^10.4.0"
66 }
67 }
src/config.ts
+1 -1
@@ -6,7 +6,7 @@ const PATH = 'config.yaml'
6
7 let state:Record<string,any> = {}
8 const emitter = new EventEmitter()
9 -watchLoad(PATH, data => {
9 +watchLoad(argv.config || process.env.hfs_config || PATH, data => {
10 for (const k in data)
11 check(k)
12 for (const k in { ...state, ...configProps })
src/index.ts
-2
@@ -9,8 +9,6 @@ import { vfs } from './vfs'
9 import { isDirectory } from './misc'
10 import proxy from 'koa-better-http-proxy'
11 import compress from 'koa-compress'
12 -// @ts-ignore
13 -import accesslog from 'koa-accesslog'
12 import { Server } from 'http'
13 import { subscribeConfig } from './config'
14 import session from 'koa-session'
src/log.ts
+22 -9
@@ -2,29 +2,42 @@ import Koa from 'koa'
2 import { Writable } from 'stream'
3 import { subscribeConfig } from './config'
4 import { createWriteStream } from 'fs'
5 -// @ts-ignore
6 -import accesslog from 'koa-accesslog'
5 +import * as util from 'util'
6
7 class Logger {
9 - mw?: Koa.Middleware
8 stream?: Writable
9 +
10 setPath(path: string) {
11 this.stream?.end()
12 if (!path)
14 - return this.mw = this.stream = undefined
13 + return this.stream = undefined
14 this.stream = createWriteStream(path, { flags: 'a' })
16 - this.mw = accesslog(this.stream)
15 }
16 }
17 +
18 const accessLogger = new Logger()
19
21 -subscribeConfig({ k:'log', defaultValue:'access.log' }, path => {
20 +subscribeConfig({ k: 'log', defaultValue: 'access.log' }, path => {
21 console.debug('log file: ' + (path || 'disabled'))
22 accessLogger.setPath(path)
23 })
24
25 export function log(): Koa.Middleware {
27 - return (ctx, next) => // wrapping in a function will make it use current 'mw' value
28 - accessLogger.mw?.(ctx, next)
29 - || next()
26 + return async (ctx, next) => { // wrapping in a function will make it use current 'mw' value
27 + await next()
28 + const st = accessLogger.stream
29 + if (!st) return
30 + const format = '%s - - [%s] "%s %s HTTP/%s" %d %s\n';
31 + const a = new Date().toString().split(' ')
32 + const date = a[2]+'/'+a[1]+'/'+a[3]+':'+a[4]+' '+a[5].slice(3)
33 + st.write(util.format( format,
34 + ctx.ip,
35 + date,
36 + ctx.method,
37 + ctx.path,
38 + ctx.req.httpVersion,
39 + ctx.status,
40 + ctx.length ? ctx.length.toString() : '-',
41 + ))
42 + }
43 }
todo.md
-2
@@ -14,8 +14,6 @@
14 - archive only selected files
15 - https
16 - frontend: light/dark theme
17 -- frontend: load custom css
18 -- frontend: custom css should be able to access resource files
17 - webdav?
18 - vfs: ability to remove/hide/rename files deep in a source
19 - administration interface