diff --git a/nodefony/config/config.ts b/nodefony/config/config.ts index 28fdccc..361cf89 100644 --- a/nodefony/config/config.ts +++ b/nodefony/config/config.ts @@ -23,15 +23,8 @@ import path from "node:path"; import { Nodefony } from "nodefony"; const kernel = Nodefony.kernel; +import http from "./module-http-config"; -const certificats = { - options: { - rejectUnauthorized: true, - }, - key: "", - cert: "", - ca: "", -}; let CDN = null; let statics = true; let monitoring = true; @@ -43,27 +36,6 @@ switch (kernel?.environment) { case "production": case "development": default: - certificats.key = path.resolve( - "nodefony", - "config", - "certificates", - "server", - "privkey.pem" - ); - certificats.cert = path.resolve( - "nodefony", - "config", - "certificates", - "server", - "fullchain.pem" - ); - certificats.ca = path.resolve( - "nodefony", - "config", - "certificates", - "ca", - "nodefony-root-ca.crt.pem" - ); CDN = null; statics = true; documentation = true; @@ -76,11 +48,17 @@ export default { domain: "localhost", // "0.0.0.0" "selectAuto" domainAlias: ["^127.0.0.1$", "^localhost$"], domainCheck, + locale: "en_en", + App: { + projectYear: "2024", + locale: "en_en", + authorName: "Camensuli Christophe", + authorMail: "ccamensuli@gmail.com", + }, servers: { statics, http: { port: 5151, - protocol: "2.0", // 2.0 || 1.1 }, https: { port: 5152, @@ -89,18 +67,13 @@ export default { ws: {}, wss: {}, }, - certificats, - // httpPort: 5151, - // httpsPort: 5152, - - locale: "en_en", /** * SERVERS */ // servers: { // statics, - // protocol: "2.0", // 2.0 || 1.1 + // protocol: "2.0", // http: true, // https: true, // ws: true, @@ -179,4 +152,9 @@ export default { * pnpm */ packageManager: "yarn", + + /* + * OVERRIDE modules config + */ + "module-http": http, }; diff --git a/nodefony/config/module-http-config.ts b/nodefony/config/module-http-config.ts new file mode 100644 index 0000000..7800b2f --- /dev/null +++ b/nodefony/config/module-http-config.ts @@ -0,0 +1,52 @@ +import { Nodefony } from "nodefony"; +const kernel = Nodefony.kernel; +import path from "node:path"; + +const certificates = { + path: path.resolve(kernel?.path || ".", "nodefony", "config", "certificates"), + privateKeyPath: "", + certPath: "", + caPath: "", + key: "", + cert: "", + ca: "", + openssl: { + size: 2048, + attrs: [ + { name: "commonName", value: `${kernel?.domain}` || "nodefony.com" }, + { name: "organizationName", value: kernel?.projectName || "" }, + { name: "organizationalUnitName", value: "Development" }, + { name: "countryName", value: "FR" }, + { name: "stateOrProvinceName", value: "BDR" }, + { name: "localityName", value: "Marseille" }, + { name: "organizationName", value: "Nodefony Signing Authority" }, + //{ name: "emailAddress", value: `admin@${kernel?.domain}` }, + ], + }, +}; + +switch (kernel?.environment) { + case "production": + case "development": + default: + certificates.privateKeyPath = path.resolve( + certificates.path, + "server", + "privkey.pem" + ); + certificates.certPath = path.resolve( + certificates.path, + "server", + "cert.pem" + ); + certificates.caPath = path.resolve( + certificates.path, + "ca", + "nodefony-root-ca.crt.pem" + ); +} + +export default { + rejectUnauthorized: true, + certificates, +}; diff --git a/package-lock.json b/package-lock.json index 7a227d1..6b5bb2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1228,6 +1228,15 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -4755,6 +4764,14 @@ } } }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-gyp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", @@ -7439,6 +7456,7 @@ "moment": "2.30.1", "node-emoji": "2.1.3", "node-fetch": "3.3.2", + "node-forge": "1.3.1", "pug": "3.0.2", "rxjs": "7.8.1", "semver": "7.5.4", @@ -7465,6 +7483,7 @@ "@types/mocha": "10.0.6", "@types/node": "20.11.7", "@types/node-fetch": "2.6.11", + "@types/node-forge": "1.3.11", "@types/shelljs": "0.8.15", "@types/twig": "1.12.16", "@types/uuid": "9.0.8", @@ -7498,6 +7517,8 @@ }, "src/nodefony/node_modules/@babel/code-frame": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "license": "MIT", "dependencies": { @@ -7510,6 +7531,8 @@ }, "src/nodefony/node_modules/@babel/code-frame/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", "dependencies": { @@ -7521,6 +7544,8 @@ }, "src/nodefony/node_modules/@babel/code-frame/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7534,6 +7559,8 @@ }, "src/nodefony/node_modules/@babel/code-frame/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { @@ -7542,11 +7569,15 @@ }, "src/nodefony/node_modules/@babel/code-frame/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@babel/code-frame/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -7555,6 +7586,8 @@ }, "src/nodefony/node_modules/@babel/code-frame/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", "engines": { @@ -7563,6 +7596,8 @@ }, "src/nodefony/node_modules/@babel/code-frame/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { @@ -7574,6 +7609,8 @@ }, "src/nodefony/node_modules/@babel/helper-string-parser": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7581,6 +7618,8 @@ }, "src/nodefony/node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7588,6 +7627,8 @@ }, "src/nodefony/node_modules/@babel/highlight": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "license": "MIT", "dependencies": { @@ -7601,6 +7642,8 @@ }, "src/nodefony/node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", "dependencies": { @@ -7612,6 +7655,8 @@ }, "src/nodefony/node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7625,6 +7670,8 @@ }, "src/nodefony/node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { @@ -7633,11 +7680,15 @@ }, "src/nodefony/node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -7646,6 +7697,8 @@ }, "src/nodefony/node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", "engines": { @@ -7654,6 +7707,8 @@ }, "src/nodefony/node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { @@ -7665,6 +7720,8 @@ }, "src/nodefony/node_modules/@babel/parser": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "license": "MIT", "bin": { "parser": "bin/babel-parser.js" @@ -7675,6 +7732,8 @@ }, "src/nodefony/node_modules/@babel/runtime": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -7685,6 +7744,8 @@ }, "src/nodefony/node_modules/@babel/types": { "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -7697,6 +7758,8 @@ }, "src/nodefony/node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "license": "MIT", "optional": true, "engines": { @@ -7705,6 +7768,8 @@ }, "src/nodefony/node_modules/@cspotcode/source-map-support": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "license": "MIT", "dependencies": { @@ -7716,6 +7781,8 @@ }, "src/nodefony/node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7825,6 +7892,8 @@ }, "src/nodefony/node_modules/@inquirer/prompts": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-3.3.0.tgz", + "integrity": "sha512-BBCqdSnhNs+WziSIo4f/RNDu6HAj4R/Q5nMgJb5MNPFX8sJGCvj9BoALdmR0HTWXyDS7TO8euKj6W6vtqCQG7A==", "license": "MIT", "dependencies": { "@inquirer/checkbox": "^1.5.0", @@ -7876,6 +7945,8 @@ }, "src/nodefony/node_modules/@sindresorhus/is": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "license": "MIT", "engines": { "node": ">=10" @@ -7886,26 +7957,36 @@ }, "src/nodefony/node_modules/@tsconfig/node10": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@tsconfig/node12": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@tsconfig/node14": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@tsconfig/node16": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/asciify": { "version": "1.3.33", + "resolved": "https://registry.npmjs.org/@types/asciify/-/asciify-1.3.33.tgz", + "integrity": "sha512-DOYueByPNl8IZcE36lPZhLbOuZ1hgrTtoIuBTjE1Lx7YETeKnzUCXlfPl5WxPKDcxft/h+adInjFWl8wklvqSg==", "dev": true, "license": "MIT", "dependencies": { @@ -7914,16 +7995,22 @@ }, "src/nodefony/node_modules/@types/chai": { "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/cli-color": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/cli-color/-/cli-color-2.0.6.tgz", + "integrity": "sha512-uLK0/0dOYdkX8hNsezpYh1gc8eerbhf9bOKZ3e24sP67703mw9S14/yW6mSTatiaKO9v+mU/a1EVy4rOXXeZTA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/clui": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@types/clui/-/clui-0.3.4.tgz", + "integrity": "sha512-546l5CCaNQyg8OgFG84WINSW6J37/x2a+7uX650peQ7VscBKD6x4IlNn1syeK4EdixVzBpOG7H08XjmYs2MwQA==", "dev": true, "license": "MIT", "dependencies": { @@ -7932,27 +8019,37 @@ }, "src/nodefony/node_modules/@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, "license": "MIT", "optional": true }, "src/nodefony/node_modules/@types/lodash": { "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/mime-types": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/mocha": { "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/mute-stream": { "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -7960,6 +8057,8 @@ }, "src/nodefony/node_modules/@types/node": { "version": "20.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.7.tgz", + "integrity": "sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -7967,6 +8066,8 @@ }, "src/nodefony/node_modules/@types/node-fetch": { "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "license": "MIT", "dependencies": { @@ -7976,11 +8077,15 @@ }, "src/nodefony/node_modules/@types/normalize-package-data": { "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/shelljs": { "version": "0.8.15", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.15.tgz", + "integrity": "sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -7990,20 +8095,28 @@ }, "src/nodefony/node_modules/@types/twig": { "version": "1.12.16", + "resolved": "https://registry.npmjs.org/@types/twig/-/twig-1.12.16.tgz", + "integrity": "sha512-6kXSQwqxWxdHVITY6lur6pVpKbTk5D8R/ZUn2/7Y2AACKFlRqO4jbtHgWPDLe7JUc91sZQhkmopboYDABtZqlA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/uuid": { "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/@types/wrap-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "license": "MIT" }, "src/nodefony/node_modules/@typescript-eslint/eslint-plugin": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", + "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", "dev": true, "license": "MIT", "dependencies": { @@ -8038,6 +8151,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/parser": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz", + "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8065,6 +8180,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "license": "MIT", "engines": { @@ -8077,6 +8194,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8104,6 +8223,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -8112,6 +8233,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/parser/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -8126,6 +8249,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/scope-manager": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", + "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", "dev": true, "license": "MIT", "dependencies": { @@ -8142,6 +8267,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "license": "MIT", "engines": { @@ -8154,6 +8281,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/type-utils": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", + "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", "dev": true, "license": "MIT", "dependencies": { @@ -8180,6 +8309,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "license": "MIT", "engines": { @@ -8192,6 +8323,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8219,6 +8352,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -8227,6 +8362,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -8241,6 +8378,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/utils": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", "dev": true, "license": "MIT", "dependencies": { @@ -8265,6 +8404,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "license": "MIT", "engines": { @@ -8277,6 +8418,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8304,6 +8447,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -8312,6 +8457,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/utils/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -8326,6 +8473,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/visitor-keys": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", + "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8342,6 +8491,8 @@ }, "src/nodefony/node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "license": "MIT", "engines": { @@ -8354,11 +8505,15 @@ }, "src/nodefony/node_modules/abab": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true, "license": "BSD-3-Clause" }, "src/nodefony/node_modules/acorn-globals": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "license": "MIT", "dependencies": { @@ -8368,6 +8523,8 @@ }, "src/nodefony/node_modules/acorn-globals/node_modules/acorn": { "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, "license": "MIT", "bin": { @@ -8379,6 +8536,8 @@ }, "src/nodefony/node_modules/acorn-globals/node_modules/acorn-walk": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "dev": true, "license": "MIT", "engines": { @@ -8387,6 +8546,8 @@ }, "src/nodefony/node_modules/acorn-walk": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "license": "MIT", "engines": { @@ -8395,6 +8556,8 @@ }, "src/nodefony/node_modules/agent-base": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "license": "MIT", "dependencies": { @@ -8406,6 +8569,8 @@ }, "src/nodefony/node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "license": "MIT", "engines": { @@ -8414,6 +8579,8 @@ }, "src/nodefony/node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -8427,11 +8594,15 @@ }, "src/nodefony/node_modules/ansi-sequence-parser": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -8444,11 +8615,15 @@ }, "src/nodefony/node_modules/arg": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/array-equal": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.2.tgz", + "integrity": "sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==", "dev": true, "license": "MIT", "funding": { @@ -8457,6 +8632,8 @@ }, "src/nodefony/node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "license": "MIT", "engines": { @@ -8465,10 +8642,14 @@ }, "src/nodefony/node_modules/asap": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "license": "MIT" }, "src/nodefony/node_modules/asciify": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/asciify/-/asciify-1.3.5.tgz", + "integrity": "sha512-GCjN9oM767uDVxB8ObgFbjmiClKk7OdhtgspOZIviIPO3JkSSGT6o0V3EVUya/y1xMANrgo0hseBg01njhzNug==", "license": "BSD", "dependencies": { "chalk": "~0.3.0", @@ -8481,6 +8662,8 @@ }, "src/nodefony/node_modules/asciify/node_modules/ansi-styles": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-0.2.0.tgz", + "integrity": "sha512-YyQBeLj0juxUC9uUXRpQ1ZAzPT1dnsn5vVeJLHYFq4Ct1p0rymUSyvckKCXCH9I0bh3jWDIETA5nXIaZVKlDyA==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -8488,6 +8671,8 @@ }, "src/nodefony/node_modules/asciify/node_modules/chalk": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.3.0.tgz", + "integrity": "sha512-OcfgS16PHpCu2Q4TNMtk0aZNx8PyeNiiB+6AgGH91fhT9hJ3v6pIIJ3lxlaOEDHlTm8t3wDe6bDGamvtIokQTg==", "license": "MIT", "dependencies": { "ansi-styles": "~0.2.0", @@ -8499,10 +8684,14 @@ }, "src/nodefony/node_modules/assert-never": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", "license": "MIT" }, "src/nodefony/node_modules/assertion-error": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", "engines": { @@ -8511,20 +8700,28 @@ }, "src/nodefony/node_modules/async": { "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "license": "MIT" }, "src/nodefony/node_modules/async-limiter": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8533,11 +8730,15 @@ }, "src/nodefony/node_modules/aws4": { "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/babel-walk": { "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", "license": "MIT", "dependencies": { "@babel/types": "^7.9.6" @@ -8548,6 +8749,8 @@ }, "src/nodefony/node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8556,6 +8759,8 @@ }, "src/nodefony/node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "license": "MIT", "engines": { @@ -8564,6 +8769,8 @@ }, "src/nodefony/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -8572,16 +8779,22 @@ }, "src/nodefony/node_modules/browser-process-hrtime": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true, "license": "BSD-2-Clause" }, "src/nodefony/node_modules/browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, "license": "ISC" }, "src/nodefony/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { @@ -8593,11 +8806,15 @@ }, "src/nodefony/node_modules/caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true, "license": "Apache-2.0" }, "src/nodefony/node_modules/chai": { "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "license": "MIT", "dependencies": { @@ -8615,6 +8832,8 @@ }, "src/nodefony/node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "license": "MIT", "engines": { "node": ">=10" @@ -8622,6 +8841,8 @@ }, "src/nodefony/node_modules/character-parser": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", "license": "MIT", "dependencies": { "is-regex": "^1.0.3" @@ -8629,10 +8850,14 @@ }, "src/nodefony/node_modules/chardet": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "license": "MIT" }, "src/nodefony/node_modules/check-error": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "license": "MIT", "dependencies": { @@ -8644,6 +8869,8 @@ }, "src/nodefony/node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -8670,6 +8897,8 @@ }, "src/nodefony/node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { @@ -8691,6 +8920,8 @@ }, "src/nodefony/node_modules/cli-table3": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "license": "MIT", "dependencies": { "string-width": "^4.2.0" @@ -8704,6 +8935,8 @@ }, "src/nodefony/node_modules/cli-width": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "license": "ISC", "engines": { "node": ">= 12" @@ -8711,6 +8944,8 @@ }, "src/nodefony/node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "license": "ISC", "dependencies": { @@ -8721,6 +8956,8 @@ }, "src/nodefony/node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -8737,12 +8974,16 @@ }, "src/nodefony/node_modules/clui": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/clui/-/clui-0.3.6.tgz", + "integrity": "sha512-Z4UbgZILlIAjkEkZiDOa2aoYjohKx7fa6DxIh6cE9A6WNWZ61iXfQc6CmdC9SKdS5nO0P0UyQ+WfoXfB65e3HQ==", "dependencies": { "cli-color": "0.3.2" } }, "src/nodefony/node_modules/clui/node_modules/cli-color": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.2.tgz", + "integrity": "sha512-Ys/nDhHNRcxrS4EUI2RS/QCUE+61AMuEOj3sWDX+EIHkJWj+4XkRbOdwdxJteAJKjXYBbeFJMtfaEPd1MBF9pQ==", "dependencies": { "d": "~0.1.1", "es5-ext": "~0.10.2", @@ -8752,6 +8993,8 @@ }, "src/nodefony/node_modules/clui/node_modules/d": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "integrity": "sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==", "license": "MIT", "dependencies": { "es5-ext": "~0.10.2" @@ -8759,6 +9002,8 @@ }, "src/nodefony/node_modules/clui/node_modules/es6-iterator": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", + "integrity": "sha512-6TOmbFM6OPWkTe+bQ3ZuUkvqcWUjAnYjKUCLdbvRsAUz2Pr+fYIibwNXNkLNtIK9PPFbNMZZddaRNkyJhlGJhA==", "license": "MIT", "dependencies": { "d": "~0.1.1", @@ -8768,6 +9013,8 @@ }, "src/nodefony/node_modules/clui/node_modules/es6-symbol": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", + "integrity": "sha512-wjobO4zO8726HVU7mI2OA/B6QszqwHJuKab7gKHVx+uRfVVYGcWJkCIFxV2Madqb9/RUSrhJ/r6hPfG7FsWtow==", "license": "MIT", "dependencies": { "d": "~0.1.1", @@ -8776,6 +9023,8 @@ }, "src/nodefony/node_modules/clui/node_modules/es6-weak-map": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", + "integrity": "sha512-P+N5Cd2TXeb7G59euFiM7snORspgbInS29Nbf3KNO2JQp/DyhvMCDWd58nsVAXwYJ6W3Bx7qDdy6QQ3PCJ7jKQ==", "license": "MIT", "dependencies": { "d": "~0.1.1", @@ -8786,6 +9035,8 @@ }, "src/nodefony/node_modules/clui/node_modules/memoizee": { "version": "0.3.10", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", + "integrity": "sha512-LLzVUuWwGBKK188spgOK/ukrp5zvd9JGsiLDH41pH9vt5jvhZfsu5pxDuAnYAMG8YEGce72KO07sSBy9KkvOfw==", "license": "MIT", "dependencies": { "d": "~0.1.1", @@ -8799,10 +9050,14 @@ }, "src/nodefony/node_modules/clui/node_modules/next-tick": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "integrity": "sha512-f7h4svPtl+QidoBv4taKXUjJ70G2asaZ8G28nS0OkqaalX8dwwrtWtyxEDPK62AC00ur/+/E0pUwBwY5EPn15Q==", "license": "MIT" }, "src/nodefony/node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -8814,6 +9069,8 @@ }, "src/nodefony/node_modules/commander": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "license": "MIT", "engines": { "node": ">=16" @@ -8821,6 +9078,8 @@ }, "src/nodefony/node_modules/constantinople": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.6.0", @@ -8829,16 +9088,22 @@ }, "src/nodefony/node_modules/create-require": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/cssom": { "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/cssstyle": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8850,6 +9115,8 @@ }, "src/nodefony/node_modules/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "license": "MIT", "dependencies": { @@ -8861,6 +9128,8 @@ }, "src/nodefony/node_modules/data-uri-to-buffer": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "engines": { "node": ">= 12" @@ -8868,6 +9137,8 @@ }, "src/nodefony/node_modules/data-urls": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", "dependencies": { @@ -8880,6 +9151,8 @@ }, "src/nodefony/node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "license": "MIT", "engines": { @@ -8891,11 +9164,15 @@ }, "src/nodefony/node_modules/decimal.js": { "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/deep-eql": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, "license": "MIT", "dependencies": { @@ -8907,6 +9184,8 @@ }, "src/nodefony/node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -8915,6 +9194,8 @@ }, "src/nodefony/node_modules/diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -8923,10 +9204,14 @@ }, "src/nodefony/node_modules/doctypes": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", "license": "MIT" }, "src/nodefony/node_modules/domexception": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "license": "MIT", "dependencies": { @@ -8935,11 +9220,15 @@ }, "src/nodefony/node_modules/domexception/node_modules/webidl-conversions": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true, "license": "BSD-2-Clause" }, "src/nodefony/node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "license": "MIT", "dependencies": { @@ -8949,6 +9238,8 @@ }, "src/nodefony/node_modules/ejs": { "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" @@ -8962,14 +9253,20 @@ }, "src/nodefony/node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "src/nodefony/node_modules/emojilib": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", "license": "MIT" }, "src/nodefony/node_modules/entities": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -8981,6 +9278,8 @@ }, "src/nodefony/node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { @@ -8989,6 +9288,8 @@ }, "src/nodefony/node_modules/escodegen": { "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9010,6 +9311,8 @@ }, "src/nodefony/node_modules/escodegen/node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -9018,6 +9321,8 @@ }, "src/nodefony/node_modules/escodegen/node_modules/levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "license": "MIT", "dependencies": { @@ -9030,6 +9335,8 @@ }, "src/nodefony/node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "license": "MIT", "dependencies": { @@ -9046,6 +9353,8 @@ }, "src/nodefony/node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -9053,6 +9362,8 @@ }, "src/nodefony/node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "optional": true, @@ -9062,6 +9373,8 @@ }, "src/nodefony/node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "license": "MIT", "dependencies": { @@ -9073,6 +9386,8 @@ }, "src/nodefony/node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { @@ -9085,11 +9400,15 @@ }, "src/nodefony/node_modules/extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "license": "MIT", "dependencies": { "chardet": "^0.7.0", @@ -9102,6 +9421,8 @@ }, "src/nodefony/node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" @@ -9110,6 +9431,8 @@ }, "src/nodefony/node_modules/fetch-blob": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "funding": [ { "type": "github", @@ -9131,6 +9454,8 @@ }, "src/nodefony/node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" @@ -9144,6 +9469,8 @@ }, "src/nodefony/node_modules/figures/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -9151,6 +9478,8 @@ }, "src/nodefony/node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" @@ -9158,6 +9487,8 @@ }, "src/nodefony/node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -9165,6 +9496,8 @@ }, "src/nodefony/node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -9175,6 +9508,8 @@ }, "src/nodefony/node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { @@ -9183,10 +9518,14 @@ }, "src/nodefony/node_modules/foreachasync": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==", "license": "Apache2" }, "src/nodefony/node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -9195,6 +9534,8 @@ }, "src/nodefony/node_modules/form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "license": "MIT", "dependencies": { @@ -9208,6 +9549,8 @@ }, "src/nodefony/node_modules/formdata-polyfill": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -9218,6 +9561,8 @@ }, "src/nodefony/node_modules/get-func-name": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", "engines": { @@ -9226,6 +9571,8 @@ }, "src/nodefony/node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "license": "MIT", "dependencies": { @@ -9234,6 +9581,8 @@ }, "src/nodefony/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "license": "ISC", "dependencies": { @@ -9255,6 +9604,8 @@ }, "src/nodefony/node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -9263,6 +9614,8 @@ }, "src/nodefony/node_modules/glob/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -9277,6 +9630,8 @@ }, "src/nodefony/node_modules/handlebars": { "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9297,6 +9652,8 @@ }, "src/nodefony/node_modules/handlebars/node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -9305,6 +9662,8 @@ }, "src/nodefony/node_modules/handlebars/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -9313,11 +9672,15 @@ }, "src/nodefony/node_modules/handlebars/node_modules/wordwrap": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/har-schema": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, "license": "ISC", "engines": { @@ -9326,6 +9689,8 @@ }, "src/nodefony/node_modules/har-validator": { "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "license": "MIT", "dependencies": { @@ -9338,6 +9703,8 @@ }, "src/nodefony/node_modules/has-color": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9345,6 +9712,8 @@ }, "src/nodefony/node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", "bin": { @@ -9353,6 +9722,8 @@ }, "src/nodefony/node_modules/hosted-git-info": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dev": true, "license": "ISC", "dependencies": { @@ -9364,6 +9735,8 @@ }, "src/nodefony/node_modules/html-encoding-sniffer": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9375,6 +9748,8 @@ }, "src/nodefony/node_modules/http-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9387,6 +9762,8 @@ }, "src/nodefony/node_modules/http-signature": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9401,6 +9778,8 @@ }, "src/nodefony/node_modules/https-proxy-agent": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "license": "MIT", "dependencies": { @@ -9413,6 +9792,8 @@ }, "src/nodefony/node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -9423,6 +9804,8 @@ }, "src/nodefony/node_modules/interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -9430,11 +9813,15 @@ }, "src/nodefony/node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", "dependencies": { @@ -9446,6 +9833,8 @@ }, "src/nodefony/node_modules/is-expression": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", "license": "MIT", "dependencies": { "acorn": "^7.1.1", @@ -9454,6 +9843,8 @@ }, "src/nodefony/node_modules/is-expression/node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -9464,6 +9855,8 @@ }, "src/nodefony/node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", "engines": { @@ -9472,16 +9865,22 @@ }, "src/nodefony/node_modules/is-potential-custom-element-name": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -9493,11 +9892,15 @@ }, "src/nodefony/node_modules/isstream": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/jake": { "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", @@ -9514,20 +9917,28 @@ }, "src/nodefony/node_modules/js-stringify": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", "license": "MIT" }, "src/nodefony/node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/jsbn": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/jsdom": { "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz", + "integrity": "sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==", "dev": true, "license": "MIT", "dependencies": { @@ -9567,6 +9978,8 @@ }, "src/nodefony/node_modules/json-parse-even-better-errors": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true, "license": "MIT", "engines": { @@ -9575,16 +9988,22 @@ }, "src/nodefony/node_modules/json-schema": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true, "license": "(AFL-2.1 OR BSD-3-Clause)" }, "src/nodefony/node_modules/json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, "license": "ISC" }, "src/nodefony/node_modules/json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "optional": true, @@ -9597,6 +10016,8 @@ }, "src/nodefony/node_modules/json5/node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "optional": true, @@ -9606,11 +10027,15 @@ }, "src/nodefony/node_modules/jsonc-parser": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/jsprim": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "license": "MIT", "dependencies": { @@ -9625,6 +10050,8 @@ }, "src/nodefony/node_modules/jstransformer": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", "license": "MIT", "dependencies": { "is-promise": "^2.0.0", @@ -9633,11 +10060,15 @@ }, "src/nodefony/node_modules/left-pad": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true, "license": "WTFPL" }, "src/nodefony/node_modules/lines-and-columns": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", "engines": { @@ -9646,6 +10077,8 @@ }, "src/nodefony/node_modules/locutus": { "version": "2.0.16", + "resolved": "https://registry.npmjs.org/locutus/-/locutus-2.0.16.tgz", + "integrity": "sha512-pGfl6Hb/1mXLzrX5kl5lH7gz25ey0vwQssZp8Qo2CEF59di6KrAgdFm+0pW8ghLnvNzzJGj5tlWhhv2QbK3jeQ==", "license": "MIT", "engines": { "node": ">= 10" @@ -9653,11 +10086,15 @@ }, "src/nodefony/node_modules/lodash.sortby": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -9673,6 +10110,8 @@ }, "src/nodefony/node_modules/loupe": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "license": "MIT", "dependencies": { @@ -9681,6 +10120,8 @@ }, "src/nodefony/node_modules/lru-cache": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "license": "ISC", "engines": { @@ -9689,16 +10130,22 @@ }, "src/nodefony/node_modules/lunr": { "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/make-error": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, "license": "ISC" }, "src/nodefony/node_modules/marked": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, "license": "MIT", "bin": { @@ -9710,6 +10157,8 @@ }, "src/nodefony/node_modules/memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, "engines": { "node": ">= 0.10.0" @@ -9717,6 +10166,8 @@ }, "src/nodefony/node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -9724,6 +10175,8 @@ }, "src/nodefony/node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -9734,6 +10187,8 @@ }, "src/nodefony/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -9744,10 +10199,14 @@ }, "src/nodefony/node_modules/minimist": { "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", "license": "MIT" }, "src/nodefony/node_modules/mocha": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "license": "MIT", "dependencies": { @@ -9787,6 +10246,8 @@ }, "src/nodefony/node_modules/mocha-jsdom": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mocha-jsdom/-/mocha-jsdom-2.0.0.tgz", + "integrity": "sha512-+3D++FPXHXEesbBD7Q/r4dkc3XzVFMPLJVIECaQ685dj9qKQYzliqX8IXyIUbUL4x1QfgD9h8Zao8cn03NKKEA==", "dev": true, "license": "MIT", "dependencies": { @@ -9798,6 +10259,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/acorn": { "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true, "license": "MIT", "bin": { @@ -9809,6 +10272,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/cssstyle": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", "dev": true, "license": "MIT", "dependencies": { @@ -9817,6 +10282,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/data-urls": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9827,6 +10294,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/data-urls/node_modules/whatwg-url": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "license": "MIT", "dependencies": { @@ -9837,6 +10306,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/html-encoding-sniffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "license": "MIT", "dependencies": { @@ -9845,6 +10316,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/jsdom": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "license": "MIT", "dependencies": { @@ -9878,11 +10351,15 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/parse5": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/mocha-jsdom/node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9895,6 +10372,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/tr46": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "license": "MIT", "dependencies": { @@ -9903,11 +10382,15 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/webidl-conversions": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true, "license": "BSD-2-Clause" }, "src/nodefony/node_modules/mocha-jsdom/node_modules/whatwg-encoding": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, "license": "MIT", "dependencies": { @@ -9916,11 +10399,15 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/whatwg-mimetype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/mocha-jsdom/node_modules/whatwg-url": { "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9931,6 +10418,8 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/ws": { "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "dev": true, "license": "MIT", "dependencies": { @@ -9939,11 +10428,15 @@ }, "src/nodefony/node_modules/mocha-jsdom/node_modules/xml-name-validator": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true, "license": "Apache-2.0" }, "src/nodefony/node_modules/mocha/node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "license": "ISC", "dependencies": { @@ -9963,6 +10456,8 @@ }, "src/nodefony/node_modules/mocha/node_modules/glob/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -9974,6 +10469,8 @@ }, "src/nodefony/node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "license": "ISC", "dependencies": { @@ -9985,6 +10482,8 @@ }, "src/nodefony/node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -9993,11 +10492,15 @@ }, "src/nodefony/node_modules/mocha/node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/mocha/node_modules/serialize-javascript": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10006,6 +10509,8 @@ }, "src/nodefony/node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10020,6 +10525,8 @@ }, "src/nodefony/node_modules/mute-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -10027,6 +10534,8 @@ }, "src/nodefony/node_modules/nanoid": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "license": "MIT", "bin": { @@ -10038,11 +10547,15 @@ }, "src/nodefony/node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/node-domexception": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "funding": [ { "type": "github", @@ -10060,6 +10573,8 @@ }, "src/nodefony/node_modules/node-emoji": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.6.0", @@ -10073,6 +10588,8 @@ }, "src/nodefony/node_modules/node-fetch": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -10089,6 +10606,8 @@ }, "src/nodefony/node_modules/normalize-package-data": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10103,6 +10622,8 @@ }, "src/nodefony/node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -10111,6 +10632,8 @@ }, "src/nodefony/node_modules/npm-run-all2": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", "dev": true, "license": "MIT", "dependencies": { @@ -10135,6 +10658,8 @@ }, "src/nodefony/node_modules/npm-run-all2/node_modules/ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", "engines": { @@ -10146,6 +10671,8 @@ }, "src/nodefony/node_modules/npm-run-all2/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -10154,6 +10681,8 @@ }, "src/nodefony/node_modules/npm-run-all2/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -10168,11 +10697,15 @@ }, "src/nodefony/node_modules/nwsapi": { "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/oauth-sign": { "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -10181,6 +10714,8 @@ }, "src/nodefony/node_modules/optimist": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", "license": "MIT/X11", "dependencies": { "minimist": "~0.0.1", @@ -10189,6 +10724,8 @@ }, "src/nodefony/node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10196,12 +10733,16 @@ }, "src/nodefony/node_modules/pad": { "version": "0.0.4", + "resolved": "https://registry.npmjs.org/pad/-/pad-0.0.4.tgz", + "integrity": "sha512-xsxV/652KGKcwNDbqNh+zyy7DUCvoDhLXIB52DTjHgHwD8TmNcm85ry1wl4tDVpxXTaxhpS3rtow1Hxgll+img==", "engines": { "node": ">= 0.4.0" } }, "src/nodefony/node_modules/parse-json": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", "dependencies": { @@ -10220,6 +10761,8 @@ }, "src/nodefony/node_modules/parse-json/node_modules/type-fest": { "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -10231,6 +10774,8 @@ }, "src/nodefony/node_modules/parse5": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, "license": "MIT", "dependencies": { @@ -10242,6 +10787,8 @@ }, "src/nodefony/node_modules/pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "license": "MIT", "engines": { @@ -10250,11 +10797,15 @@ }, "src/nodefony/node_modules/performance-now": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/pidtree": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, "license": "MIT", "bin": { @@ -10266,11 +10817,15 @@ }, "src/nodefony/node_modules/pn": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/promise": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "license": "MIT", "dependencies": { "asap": "~2.0.3" @@ -10278,11 +10833,15 @@ }, "src/nodefony/node_modules/psl": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/pug": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", "license": "MIT", "dependencies": { "pug-code-gen": "^3.0.2", @@ -10297,6 +10856,8 @@ }, "src/nodefony/node_modules/pug-attrs": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", "license": "MIT", "dependencies": { "constantinople": "^4.0.1", @@ -10306,6 +10867,8 @@ }, "src/nodefony/node_modules/pug-code-gen": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", "license": "MIT", "dependencies": { "constantinople": "^4.0.1", @@ -10320,10 +10883,14 @@ }, "src/nodefony/node_modules/pug-error": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", "license": "MIT" }, "src/nodefony/node_modules/pug-filters": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", "license": "MIT", "dependencies": { "constantinople": "^4.0.1", @@ -10335,6 +10902,8 @@ }, "src/nodefony/node_modules/pug-lexer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", "license": "MIT", "dependencies": { "character-parser": "^2.2.0", @@ -10344,6 +10913,8 @@ }, "src/nodefony/node_modules/pug-linker": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", "license": "MIT", "dependencies": { "pug-error": "^2.0.0", @@ -10352,6 +10923,8 @@ }, "src/nodefony/node_modules/pug-load": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", "license": "MIT", "dependencies": { "object-assign": "^4.1.1", @@ -10360,6 +10933,8 @@ }, "src/nodefony/node_modules/pug-parser": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", "license": "MIT", "dependencies": { "pug-error": "^2.0.0", @@ -10368,10 +10943,14 @@ }, "src/nodefony/node_modules/pug-runtime": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", "license": "MIT" }, "src/nodefony/node_modules/pug-strip-comments": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", "license": "MIT", "dependencies": { "pug-error": "^2.0.0" @@ -10379,10 +10958,14 @@ }, "src/nodefony/node_modules/pug-walk": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "license": "MIT" }, "src/nodefony/node_modules/qs": { "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -10391,11 +10974,15 @@ }, "src/nodefony/node_modules/querystringify": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/read-pkg": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10413,6 +11000,8 @@ }, "src/nodefony/node_modules/read-pkg/node_modules/type-fest": { "version": "4.10.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz", + "integrity": "sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -10424,6 +11013,8 @@ }, "src/nodefony/node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { @@ -10435,6 +11026,8 @@ }, "src/nodefony/node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dependencies": { "resolve": "^1.1.6" }, @@ -10444,10 +11037,14 @@ }, "src/nodefony/node_modules/regenerator-runtime": { "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "license": "MIT" }, "src/nodefony/node_modules/request": { "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10478,6 +11075,8 @@ }, "src/nodefony/node_modules/request-promise-core": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", "dev": true, "license": "ISC", "dependencies": { @@ -10492,6 +11091,8 @@ }, "src/nodefony/node_modules/request-promise-native": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", "dev": true, "license": "ISC", "dependencies": { @@ -10508,6 +11109,8 @@ }, "src/nodefony/node_modules/request-promise-native/node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10520,6 +11123,8 @@ }, "src/nodefony/node_modules/request/node_modules/form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10533,6 +11138,8 @@ }, "src/nodefony/node_modules/request/node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10545,6 +11152,8 @@ }, "src/nodefony/node_modules/request/node_modules/uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true, "license": "MIT", "bin": { @@ -10553,11 +11162,15 @@ }, "src/nodefony/node_modules/requires-port": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/rollup-plugin-visualizer": { "version": "5.12.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", + "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10583,6 +11196,8 @@ }, "src/nodefony/node_modules/rollup-plugin-visualizer/node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -10596,6 +11211,8 @@ }, "src/nodefony/node_modules/rollup-plugin-visualizer/node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10612,6 +11229,8 @@ }, "src/nodefony/node_modules/rollup-plugin-visualizer/node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -10629,6 +11248,8 @@ }, "src/nodefony/node_modules/rollup-plugin-visualizer/node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -10637,11 +11258,15 @@ }, "src/nodefony/node_modules/rrweb-cssom": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/run-async": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -10649,6 +11274,8 @@ }, "src/nodefony/node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -10656,11 +11283,15 @@ }, "src/nodefony/node_modules/sax": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, "license": "ISC" }, "src/nodefony/node_modules/saxes": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "license": "ISC", "dependencies": { @@ -10672,6 +11303,8 @@ }, "src/nodefony/node_modules/shell-quote": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, "license": "MIT", "funding": { @@ -10680,6 +11313,8 @@ }, "src/nodefony/node_modules/shelljs": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", @@ -10695,6 +11330,8 @@ }, "src/nodefony/node_modules/shelljs/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -10713,6 +11350,8 @@ }, "src/nodefony/node_modules/shiki": { "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, "license": "MIT", "dependencies": { @@ -10724,6 +11363,8 @@ }, "src/nodefony/node_modules/skin-tone": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "license": "MIT", "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" @@ -10734,6 +11375,8 @@ }, "src/nodefony/node_modules/source-map": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -10742,6 +11385,8 @@ }, "src/nodefony/node_modules/spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10751,11 +11396,15 @@ }, "src/nodefony/node_modules/spdx-exceptions": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", "dev": true, "license": "CC-BY-3.0" }, "src/nodefony/node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10765,11 +11414,15 @@ }, "src/nodefony/node_modules/spdx-license-ids": { "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true, "license": "CC0-1.0" }, "src/nodefony/node_modules/sshpk": { "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10794,6 +11447,8 @@ }, "src/nodefony/node_modules/stealthy-require": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true, "license": "ISC", "engines": { @@ -10802,6 +11457,8 @@ }, "src/nodefony/node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -10814,6 +11471,8 @@ }, "src/nodefony/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", "optional": true, @@ -10823,11 +11482,15 @@ }, "src/nodefony/node_modules/symbol-tree": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" @@ -10838,6 +11501,8 @@ }, "src/nodefony/node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "license": "MIT", "engines": { "node": ">=4" @@ -10845,10 +11510,14 @@ }, "src/nodefony/node_modules/token-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", "license": "MIT" }, "src/nodefony/node_modules/tough-cookie": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10863,6 +11532,8 @@ }, "src/nodefony/node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "license": "MIT", "engines": { @@ -10871,6 +11542,8 @@ }, "src/nodefony/node_modules/tr46": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, "license": "MIT", "dependencies": { @@ -10882,6 +11555,8 @@ }, "src/nodefony/node_modules/ts-mocha": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10902,6 +11577,8 @@ }, "src/nodefony/node_modules/ts-mocha/node_modules/diff": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -10910,6 +11587,8 @@ }, "src/nodefony/node_modules/ts-mocha/node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -10918,6 +11597,8 @@ }, "src/nodefony/node_modules/ts-mocha/node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", "dependencies": { @@ -10929,6 +11610,8 @@ }, "src/nodefony/node_modules/ts-mocha/node_modules/ts-node": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, "license": "MIT", "dependencies": { @@ -10950,6 +11633,8 @@ }, "src/nodefony/node_modules/ts-mocha/node_modules/yn": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true, "license": "MIT", "engines": { @@ -10958,6 +11643,8 @@ }, "src/nodefony/node_modules/ts-node": { "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11000,6 +11687,8 @@ }, "src/nodefony/node_modules/ts-node/node_modules/diff": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -11008,6 +11697,8 @@ }, "src/nodefony/node_modules/tsconfig-paths": { "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", "optional": true, @@ -11020,6 +11711,8 @@ }, "src/nodefony/node_modules/tsconfig-paths/node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "optional": true, @@ -11029,11 +11722,15 @@ }, "src/nodefony/node_modules/tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true, "license": "Unlicense" }, "src/nodefony/node_modules/twig": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/twig/-/twig-1.17.1.tgz", + "integrity": "sha512-atxccyr/BHtb1gPMA7Lvki0OuU17XBqHsNH9lzDHt9Rr1293EVZOosSZabEXz/DPVikIW8ZDqSkEddwyJnQN2w==", "license": "BSD-2-Clause", "dependencies": { "@babel/runtime": "^7.8.4", @@ -11050,6 +11747,8 @@ }, "src/nodefony/node_modules/twig/node_modules/minimatch": { "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -11060,6 +11759,8 @@ }, "src/nodefony/node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { @@ -11068,6 +11769,8 @@ }, "src/nodefony/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -11078,6 +11781,8 @@ }, "src/nodefony/node_modules/typedoc": { "version": "0.25.7", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.7.tgz", + "integrity": "sha512-m6A6JjQRg39p2ZVRIN3NKXgrN8vzlHhOS+r9ymUYtcUP/TIQPvWSq7YgE5ZjASfv5Vd5BW5xrir6Gm2XNNcOow==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -11098,6 +11803,8 @@ }, "src/nodefony/node_modules/typedoc-plugin-markdown": { "version": "3.17.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.17.1.tgz", + "integrity": "sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw==", "dev": true, "license": "MIT", "dependencies": { @@ -11109,6 +11816,8 @@ }, "src/nodefony/node_modules/typedoc/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -11117,6 +11826,8 @@ }, "src/nodefony/node_modules/typedoc/node_modules/minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -11131,6 +11842,8 @@ }, "src/nodefony/node_modules/uglify-js": { "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -11143,6 +11856,8 @@ }, "src/nodefony/node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "license": "MIT", "engines": { "node": ">=4" @@ -11150,6 +11865,8 @@ }, "src/nodefony/node_modules/url-parse": { "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11159,6 +11876,8 @@ }, "src/nodefony/node_modules/uuid": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -11170,11 +11889,15 @@ }, "src/nodefony/node_modules/v8-compile-cache-lib": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -11184,6 +11907,8 @@ }, "src/nodefony/node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" @@ -11197,6 +11922,8 @@ }, "src/nodefony/node_modules/void-elements": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11204,16 +11931,22 @@ }, "src/nodefony/node_modules/vscode-oniguruma": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/vscode-textmate": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/w3c-hr-time": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11222,6 +11955,8 @@ }, "src/nodefony/node_modules/w3c-xmlserializer": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "license": "MIT", "dependencies": { @@ -11233,6 +11968,8 @@ }, "src/nodefony/node_modules/walk": { "version": "2.3.15", + "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", + "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", "license": "(MIT OR Apache-2.0)", "dependencies": { "foreachasync": "^3.0.0" @@ -11240,6 +11977,8 @@ }, "src/nodefony/node_modules/web-streams-polyfill": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz", + "integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==", "license": "MIT", "engines": { "node": ">= 8" @@ -11247,6 +11986,8 @@ }, "src/nodefony/node_modules/webidl-conversions": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -11255,6 +11996,8 @@ }, "src/nodefony/node_modules/whatwg-encoding": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11266,6 +12009,8 @@ }, "src/nodefony/node_modules/whatwg-encoding/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "dependencies": { @@ -11277,6 +12022,8 @@ }, "src/nodefony/node_modules/whatwg-mimetype": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "license": "MIT", "engines": { @@ -11285,6 +12032,8 @@ }, "src/nodefony/node_modules/whatwg-url": { "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dev": true, "license": "MIT", "dependencies": { @@ -11297,6 +12046,8 @@ }, "src/nodefony/node_modules/with": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", "license": "MIT", "dependencies": { "@babel/parser": "^7.9.6", @@ -11310,6 +12061,8 @@ }, "src/nodefony/node_modules/word-wrap": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -11318,6 +12071,8 @@ }, "src/nodefony/node_modules/wordwrap": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -11325,11 +12080,15 @@ }, "src/nodefony/node_modules/workerpool": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, "license": "Apache-2.0" }, "src/nodefony/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -11342,6 +12101,8 @@ }, "src/nodefony/node_modules/ws": { "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "license": "MIT", "engines": { @@ -11362,6 +12123,8 @@ }, "src/nodefony/node_modules/xml-name-validator": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -11370,11 +12133,15 @@ }, "src/nodefony/node_modules/xmlchars": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true, "license": "MIT" }, "src/nodefony/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { @@ -11392,6 +12159,8 @@ }, "src/nodefony/node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "license": "ISC", "engines": { @@ -11400,6 +12169,8 @@ }, "src/nodefony/node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "license": "MIT", "dependencies": { @@ -11414,6 +12185,8 @@ }, "src/nodefony/node_modules/yn": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "license": "MIT", "engines": { @@ -11453,10 +12226,14 @@ }, "src/packages/@nodefony/http/node_modules/asap": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/bufferutil": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -11468,10 +12245,14 @@ }, "src/packages/@nodefony/http/node_modules/connection-parse": { "version": "0.0.7", + "resolved": "https://registry.npmjs.org/connection-parse/-/connection-parse-0.0.7.tgz", + "integrity": "sha512-bTTG28diWg7R7/+qE5NZumwPbCiJOT8uPdZYu674brDjBWQctbaQbYlDKhalS+4i5HxIx+G8dZsnBHKzWpp01A==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/cookie": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -11479,6 +12260,8 @@ }, "src/packages/@nodefony/http/node_modules/data-uri-to-buffer": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "engines": { "node": ">= 12" @@ -11486,6 +12269,8 @@ }, "src/packages/@nodefony/http/node_modules/depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -11493,6 +12278,8 @@ }, "src/packages/@nodefony/http/node_modules/destroy": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "license": "MIT", "engines": { "node": ">= 0.8", @@ -11501,6 +12288,8 @@ }, "src/packages/@nodefony/http/node_modules/dezalgo": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "license": "ISC", "dependencies": { "asap": "^2.0.0", @@ -11509,10 +12298,14 @@ }, "src/packages/@nodefony/http/node_modules/ee-first": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/encodeurl": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -11520,10 +12313,14 @@ }, "src/packages/@nodefony/http/node_modules/escape-html": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/etag": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -11531,6 +12328,8 @@ }, "src/packages/@nodefony/http/node_modules/faye-websocket": { "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" @@ -11541,6 +12340,8 @@ }, "src/packages/@nodefony/http/node_modules/fetch-blob": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "funding": [ { "type": "github", @@ -11562,6 +12363,8 @@ }, "src/packages/@nodefony/http/node_modules/formdata-polyfill": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -11572,6 +12375,8 @@ }, "src/packages/@nodefony/http/node_modules/formidable": { "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", "license": "MIT", "dependencies": { "dezalgo": "^1.0.4", @@ -11584,6 +12389,8 @@ }, "src/packages/@nodefony/http/node_modules/fresh": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -11591,6 +12398,8 @@ }, "src/packages/@nodefony/http/node_modules/hashring": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/hashring/-/hashring-3.2.0.tgz", + "integrity": "sha512-xCMovURClsQZ+TR30icCZj+34Fq1hs0y6YCASD6ZqdRfYRybb5Iadws2WS+w09mGM/kf9xyA5FCdJQGcgcraSA==", "license": "MIT", "dependencies": { "connection-parse": "0.0.x", @@ -11599,6 +12408,8 @@ }, "src/packages/@nodefony/http/node_modules/hexoid": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "license": "MIT", "engines": { "node": ">=8" @@ -11606,6 +12417,8 @@ }, "src/packages/@nodefony/http/node_modules/http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", "dependencies": { "depd": "2.0.0", @@ -11620,20 +12433,28 @@ }, "src/packages/@nodefony/http/node_modules/http-parser-js": { "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/jackpot": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/jackpot/-/jackpot-0.0.6.tgz", + "integrity": "sha512-rbWXX+A9ooq03/dfavLg9OXQ8YB57Wa7PY5c4LfU3CgFpwEhhl3WyXTQVurkaT7zBM5I9SSOaiLyJ4I0DQmC0g==", "dependencies": { "retry": "0.6.0" } }, "src/packages/@nodefony/http/node_modules/memcached": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/memcached/-/memcached-2.2.2.tgz", + "integrity": "sha512-lHwUmqkT9WdUUgRsAvquO4xsKXYaBd644Orz31tuth+w/BIfFNuJMWwsG7sa7H3XXytaNfPTZ5R/yOG3d9zJMA==", "license": "MIT", "dependencies": { "hashring": "3.2.x", @@ -11642,6 +12463,8 @@ }, "src/packages/@nodefony/http/node_modules/mime": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", + "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", "funding": [ "https://github.com/sponsors/broofa" ], @@ -11655,10 +12478,14 @@ }, "src/packages/@nodefony/http/node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/node-domexception": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "funding": [ { "type": "github", @@ -11676,6 +12503,8 @@ }, "src/packages/@nodefony/http/node_modules/node-fetch": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -11692,6 +12521,8 @@ }, "src/packages/@nodefony/http/node_modules/node-gyp-build": { "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "license": "MIT", "bin": { "node-gyp-build": "bin.js", @@ -11701,6 +12532,8 @@ }, "src/packages/@nodefony/http/node_modules/on-finished": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "license": "MIT", "dependencies": { "ee-first": "1.1.1" @@ -11711,6 +12544,8 @@ }, "src/packages/@nodefony/http/node_modules/parseurl": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -11718,6 +12553,8 @@ }, "src/packages/@nodefony/http/node_modules/qs": { "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" @@ -11731,6 +12568,8 @@ }, "src/packages/@nodefony/http/node_modules/range-parser": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -11738,12 +12577,16 @@ }, "src/packages/@nodefony/http/node_modules/retry": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.6.0.tgz", + "integrity": "sha512-RgncoxLF1GqwAzTZs/K2YpZkWrdIYbXsmesdomi+iPilSzjUyr/wzNIuteoTVaWokzdwZIJ9NHRNQa/RUiOB2g==", "engines": { "node": "*" } }, "src/packages/@nodefony/http/node_modules/send": { "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -11766,6 +12609,8 @@ }, "src/packages/@nodefony/http/node_modules/send/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -11773,10 +12618,14 @@ }, "src/packages/@nodefony/http/node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/send/node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "license": "MIT", "bin": { "mime": "cli.js" @@ -11787,6 +12636,8 @@ }, "src/packages/@nodefony/http/node_modules/serve-static": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", @@ -11800,13 +12651,19 @@ }, "src/packages/@nodefony/http/node_modules/setprototypeof": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, "src/packages/@nodefony/http/node_modules/simple-lru-cache": { - "version": "0.0.2" + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", + "integrity": "sha512-uEv/AFO0ADI7d99OHDmh1QfYzQk/izT1vCmu/riQfh7qjBVUUgRT87E5s5h7CxWCA/+YoZerykpEthzVrW3LIw==" }, "src/packages/@nodefony/http/node_modules/sockjs": { "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", @@ -11816,6 +12673,8 @@ }, "src/packages/@nodefony/http/node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -11823,6 +12682,8 @@ }, "src/packages/@nodefony/http/node_modules/toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "license": "MIT", "engines": { "node": ">=0.6" @@ -11830,6 +12691,8 @@ }, "src/packages/@nodefony/http/node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" @@ -11837,6 +12700,8 @@ }, "src/packages/@nodefony/http/node_modules/utf-8-validate": { "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -11848,6 +12713,8 @@ }, "src/packages/@nodefony/http/node_modules/web-streams-polyfill": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz", + "integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==", "license": "MIT", "engines": { "node": ">= 8" @@ -11855,6 +12722,8 @@ }, "src/packages/@nodefony/http/node_modules/websocket": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", "license": "Apache-2.0", "dependencies": { "bufferutil": "^4.0.1", @@ -11870,6 +12739,8 @@ }, "src/packages/@nodefony/http/node_modules/websocket-driver": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", @@ -11882,6 +12753,8 @@ }, "src/packages/@nodefony/http/node_modules/websocket-extensions": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "license": "Apache-2.0", "engines": { "node": ">=0.8.0" @@ -11889,6 +12762,8 @@ }, "src/packages/@nodefony/http/node_modules/websocket/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -11896,10 +12771,14 @@ }, "src/packages/@nodefony/http/node_modules/websocket/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "src/packages/@nodefony/http/node_modules/yaeti": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", "license": "MIT", "engines": { "node": ">=0.10.32" diff --git a/package.json b/package.json index 6b28728..9beb063 100644 --- a/package.json +++ b/package.json @@ -34,9 +34,9 @@ "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "11.1.6", - "@types/node": "20.11.5", - "@typescript-eslint/eslint-plugin": "6.19.0", - "@typescript-eslint/parser": "6.19.0", + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..f514c6d Binary files /dev/null and b/public/favicon.ico differ diff --git a/src/nodefony/package-lock.json b/src/nodefony/package-lock.json index 0cf8d06..4079378 100644 --- a/src/nodefony/package-lock.json +++ b/src/nodefony/package-lock.json @@ -9,7 +9,10 @@ "version": "10.0.0", "license": "CECILL-B", "dependencies": { - "@inquirer/prompts": "3.3.0", + "@inquirer/prompts": "3.3.2", + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", "asciify": "1.3.5", "cli-color": "2.0.3", "cli-table3": "0.6.3", @@ -21,6 +24,7 @@ "moment": "2.30.1", "node-emoji": "2.1.3", "node-fetch": "3.3.2", + "npm-run-all2": "6.1.2", "pug": "3.0.2", "rxjs": "7.8.1", "semver": "7.5.4", @@ -47,6 +51,7 @@ "@types/mocha": "10.0.6", "@types/node": "20.11.7", "@types/node-fetch": "2.6.11", + "@types/node-forge": "1.3.11", "@types/shelljs": "0.8.15", "@types/twig": "1.12.16", "@types/uuid": "9.0.8", @@ -428,12 +433,12 @@ "dev": true }, "node_modules/@inquirer/checkbox": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-1.5.0.tgz", - "integrity": "sha512-3cKJkW1vIZAs4NaS0reFsnpAjP0azffYII4I2R7PTI7ZTMg5Y1at4vzXccOH3762b2c2L4drBhpJpf9uiaGNxA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-1.5.2.tgz", + "integrity": "sha512-CifrkgQjDkUkWexmgYYNyB5603HhTHI91vLFeQXh6qrTKiCMVASol01Rs1cv6LP/A2WccZSRlJKZhbaBIs/9ZA==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "figures": "^3.2.0" @@ -443,12 +448,12 @@ } }, "node_modules/@inquirer/confirm": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.15.tgz", - "integrity": "sha512-hj8Q/z7sQXsF0DSpLQZVDhWYGN6KLM/gNjjqGkpKwBzljbQofGjn0ueHADy4HUY+OqDHmXuwk/bY+tZyIuuB0w==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz", + "integrity": "sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "chalk": "^4.1.2" }, "engines": { @@ -456,17 +461,17 @@ } }, "node_modules/@inquirer/core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-5.1.1.tgz", - "integrity": "sha512-IuJyZQUg75+L5AmopgnzxYrgcU6PJKL0hoIs332G1Gv55CnmZrhG6BzNOeZ5sOsTi1YCGOopw4rYICv74ejMFg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-6.0.0.tgz", + "integrity": "sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==", "dependencies": { - "@inquirer/type": "^1.1.5", + "@inquirer/type": "^1.1.6", "@types/mute-stream": "^0.0.4", - "@types/node": "^20.9.0", + "@types/node": "^20.10.7", "@types/wrap-ansi": "^3.0.0", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", - "cli-spinners": "^2.9.1", + "cli-spinners": "^2.9.2", "cli-width": "^4.1.0", "figures": "^3.2.0", "mute-stream": "^1.0.0", @@ -480,12 +485,12 @@ } }, "node_modules/@inquirer/editor": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-1.2.13.tgz", - "integrity": "sha512-gBxjqt0B9GLN0j6M/tkEcmcIvB2fo9Cw0f5NRqDTkYyB9AaCzj7qvgG0onQ3GVPbMyMbbP4tWYxrBOaOdKpzNA==", + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-1.2.15.tgz", + "integrity": "sha512-gQ77Ls09x5vKLVNMH9q/7xvYPT6sIs5f7URksw+a2iJZ0j48tVS6crLqm2ugG33tgXHIwiEqkytY60Zyh5GkJQ==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "chalk": "^4.1.2", "external-editor": "^3.1.0" }, @@ -494,12 +499,12 @@ } }, "node_modules/@inquirer/expand": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-1.1.14.tgz", - "integrity": "sha512-yS6fJ8jZYAsxdxuw2c8XTFMTvMR1NxZAw3LxDaFnqh7BZ++wTQ6rSp/2gGJhMacdZ85osb+tHxjVgx7F+ilv5g==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-1.1.16.tgz", + "integrity": "sha512-TGLU9egcuo+s7PxphKUCnJnpCIVY32/EwPCLLuu+gTvYiD8hZgx8Z2niNQD36sa6xcfpdLY6xXDBiL/+g1r2XQ==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "chalk": "^4.1.2", "figures": "^3.2.0" }, @@ -508,12 +513,12 @@ } }, "node_modules/@inquirer/input": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-1.2.14.tgz", - "integrity": "sha512-tISLGpUKXixIQue7jypNEShrdzJoLvEvZOJ4QRsw5XTfrIYfoWFqAjMQLerGs9CzR86yAI89JR6snHmKwnNddw==", + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-1.2.16.tgz", + "integrity": "sha512-Ou0LaSWvj1ni+egnyQ+NBtfM1885UwhRCMtsRt2bBO47DoC1dwtCa+ZUNgrxlnCHHF0IXsbQHYtIIjFGAavI4g==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "chalk": "^4.1.2" }, "engines": { @@ -521,12 +526,12 @@ } }, "node_modules/@inquirer/password": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-1.1.14.tgz", - "integrity": "sha512-vL2BFxfMo8EvuGuZYlryiyAB3XsgtbxOcFs4H9WI9szAS/VZCAwdVqs8rqEeaAf/GV/eZOghIOYxvD91IsRWSg==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-1.1.16.tgz", + "integrity": "sha512-aZYZVHLUXZ2gbBot+i+zOJrks1WaiI95lvZCn1sKfcw6MtSSlYC8uDX8sTzQvAsQ8epHoP84UNvAIT0KVGOGqw==", "dependencies": { - "@inquirer/input": "^1.2.14", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2" }, @@ -535,31 +540,31 @@ } }, "node_modules/@inquirer/prompts": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-3.3.0.tgz", - "integrity": "sha512-BBCqdSnhNs+WziSIo4f/RNDu6HAj4R/Q5nMgJb5MNPFX8sJGCvj9BoALdmR0HTWXyDS7TO8euKj6W6vtqCQG7A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-3.3.2.tgz", + "integrity": "sha512-k52mOMRvTUejrqyF1h8Z07chC+sbaoaUYzzr1KrJXyj7yaX7Nrh0a9vktv8TuocRwIJOQMaj5oZEmkspEcJFYQ==", "dependencies": { - "@inquirer/checkbox": "^1.5.0", - "@inquirer/confirm": "^2.0.15", - "@inquirer/core": "^5.1.1", - "@inquirer/editor": "^1.2.13", - "@inquirer/expand": "^1.1.14", - "@inquirer/input": "^1.2.14", - "@inquirer/password": "^1.1.14", - "@inquirer/rawlist": "^1.2.14", - "@inquirer/select": "^1.3.1" + "@inquirer/checkbox": "^1.5.2", + "@inquirer/confirm": "^2.0.17", + "@inquirer/core": "^6.0.0", + "@inquirer/editor": "^1.2.15", + "@inquirer/expand": "^1.1.16", + "@inquirer/input": "^1.2.16", + "@inquirer/password": "^1.1.16", + "@inquirer/rawlist": "^1.2.16", + "@inquirer/select": "^1.3.3" }, "engines": { "node": ">=14.18.0" } }, "node_modules/@inquirer/rawlist": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-1.2.14.tgz", - "integrity": "sha512-xIYmDpYgfz2XGCKubSDLKEvadkIZAKbehHdWF082AyC2I4eHK44RUfXaoOAqnbqItZq4KHXS6jDJ78F2BmQvxg==", + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-1.2.16.tgz", + "integrity": "sha512-pZ6TRg2qMwZAOZAV6TvghCtkr53dGnK29GMNQ3vMZXSNguvGqtOVc4j/h1T8kqGJFagjyfBZhUPGwNS55O5qPQ==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "chalk": "^4.1.2" }, "engines": { @@ -567,12 +572,12 @@ } }, "node_modules/@inquirer/select": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-1.3.1.tgz", - "integrity": "sha512-EgOPHv7XOHEqiBwBJTyiMg9r57ySyW4oyYCumGp+pGyOaXQaLb2kTnccWI6NFd9HSi5kDJhF7YjA+3RfMQJ2JQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-1.3.3.tgz", + "integrity": "sha512-RzlRISXWqIKEf83FDC9ZtJ3JvuK1l7aGpretf41BCWYrvla2wU8W8MTRNMiPrPJ+1SIqrRC1nZdZ60hD9hRXLg==", "dependencies": { - "@inquirer/core": "^5.1.1", - "@inquirer/type": "^1.1.5", + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "figures": "^3.2.0" @@ -582,9 +587,9 @@ } }, "node_modules/@inquirer/type": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.1.5.tgz", - "integrity": "sha512-wmwHvHozpPo4IZkkNtbYenem/0wnfI6hvOcGKmPEa0DwuaH5XUQzFqy6OpEpjEegZMhYIk8HDYITI16BPLtrRA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.1.6.tgz", + "integrity": "sha512-OCKOpn0CrFDslR8s3who7hlr823zXTb1iShGCaaWgEJFfkIV0T9aLZV2QGnOuU78IrsPYLkr3oKx9dZwwCH3Rw==", "engines": { "node": ">=14.18.0" } @@ -1322,6 +1327,15 @@ "form-data": "^4.0.0" } }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", diff --git a/src/nodefony/package.json b/src/nodefony/package.json index 4c2b4c8..9592d2f 100644 --- a/src/nodefony/package.json +++ b/src/nodefony/package.json @@ -62,7 +62,10 @@ "doc": "typedoc" }, "dependencies": { - "@inquirer/prompts": "3.3.0", + "@inquirer/prompts": "3.3.2", + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", "asciify": "1.3.5", "cli-color": "2.0.3", "cli-table3": "0.6.3", @@ -74,6 +77,7 @@ "moment": "2.30.1", "node-emoji": "2.1.3", "node-fetch": "3.3.2", + "npm-run-all2": "6.1.2", "pug": "3.0.2", "rxjs": "7.8.1", "semver": "7.5.4", @@ -97,6 +101,7 @@ "@types/mocha": "10.0.6", "@types/node": "20.11.7", "@types/node-fetch": "2.6.11", + "@types/node-forge": "1.3.11", "@types/shelljs": "0.8.15", "@types/twig": "1.12.16", "@types/uuid": "9.0.8", diff --git a/src/nodefony/src/Nodefony.ts b/src/nodefony/src/Nodefony.ts index 028a94b..db917da 100644 --- a/src/nodefony/src/Nodefony.ts +++ b/src/nodefony/src/Nodefony.ts @@ -12,6 +12,7 @@ import { isArray, isPromise, } from "./Tools"; +import { v5 as uuidv5, v4 as uuidv4 } from "uuid"; import Kernel from "./kernel/Kernel"; import Module from "./kernel/Module"; @@ -31,6 +32,7 @@ import Result from "./finder/Result"; import FileClass from "./FileClass"; import FileResult from "./finder/FileResult"; import { version } from "../package.json"; + //import { createRequire } from "module"; //const require = createRequire(import.meta.url); //const {version} = require("../package.json"); @@ -98,6 +100,13 @@ class Nodefony { public static setKernel(kernel: Kernel): Kernel { return (Nodefony.kernel = kernel); } + + generateV5Id(name: string, namespace?: string): string { + return uuidv5(name, namespace || uuidv4()); + } + generateId(): string { + return uuidv4(); + } } const nodefony = Nodefony.getInstance(); @@ -105,6 +114,7 @@ const kernel = Nodefony.getKernel(); export default nodefony; export { + extend, Nodefony, kernel, Kernel, diff --git a/src/nodefony/src/kernel/Kernel.ts b/src/nodefony/src/kernel/Kernel.ts index c57efbe..8856add 100644 --- a/src/nodefony/src/kernel/Kernel.ts +++ b/src/nodefony/src/kernel/Kernel.ts @@ -400,6 +400,7 @@ class Kernel extends Service { this.initializeLog(); this.core = await this.isCore(); this.loadService(Fetch); + return this.app; } diff --git a/src/nodefony/src/kernel/Module.ts b/src/nodefony/src/kernel/Module.ts index ef94176..f1481ae 100644 --- a/src/nodefony/src/kernel/Module.ts +++ b/src/nodefony/src/kernel/Module.ts @@ -9,6 +9,7 @@ import Container from "../Container"; import * as fs from "fs/promises"; import { dirname, resolve, basename } from "node:path"; import CliKernel from "./CliKernel"; +import { extend } from "../Tools"; //import { rollup } from "rollup"; //console.log("pass", rollup); @@ -38,10 +39,10 @@ class Module extends Service { this.setParameters(`modules.${this.name}`, this.options); this.path = this.setPath(path); this.setEvents(); - // this.kernel?.once("onStart", this.onStart.bind(this)); - // this.kernel?.once("onRegister", this.onRegister.bind(this)); - // this.kernel?.once("onBoot", this.onBoot.bind(this)); - // this.kernel?.once("onReady", this.onReady.bind(this)); + this.kernel?.prependOnceListener( + "onStart", + this.readOverrideConfig.bind(this) + ); } setPath(myPath: string): string { @@ -72,6 +73,21 @@ class Module extends Service { }); } + readOverrideConfig(deep: boolean = true): DefaultOptionsService { + const index = `module-${this.name}`; + if (this.kernel?.options[index]) { + this.log(`Overrride Config module : ${index} by application`); + if (deep) + return (this.options = extend( + deep, + this.options, + this.kernel?.options[index] + )); + return (this.options = extend({}, this.kernel?.options[index])); + } + return this.options; + } + // watch(config: rollup.RollupWatchOptions): rollup.RollupWatcher { // const watcher = rollup.watch(config); // watcher.on("event", (event) => { @@ -113,15 +129,6 @@ class Module extends Service { return this.package.version; } - // public addCommand(cliCommand: typeof CliCommand): Command { - // if (this.kernel && this.kernel.cli) { - // const command = this.kernel.cli.addCommand(cliCommand); - // this.commands[command.name] = command; - // return command; - // } - // throw new Error(`Kernel not ready`); - // } - public addCommand(cliCommand: new (cli: CliKernel) => Command): Command { if (this.kernel && this.kernel.cli) { const command = new cliCommand(this.kernel.cli); @@ -131,39 +138,6 @@ class Module extends Service { throw new Error(`Kernel not ready`); } - // async onStart(): Promise { - // console.log("passs onStart", this.name); - // this.package = await this.getPackageJson(); - // return this.fireAsync("onStart", this).then(() => { - // this.log(`MODULE ${this.name} START`, "DEBUG"); - // return this; - // }); - // } - - // async onRegister(): Promise { - // console.log("passs onRegister", this.name); - // return this.fireAsync("onRegister", this).then(() => { - // this.log(`MODULE ${this.name} REGISTER`, "DEBUG"); - // return this; - // }); - // } - - // async onBoot(): Promise { - // console.log("passs onBoot", this.name); - // return this.fireAsync("onBoot", this).then(() => { - // this.log(`MODULE ${this.name} BOOT`, "DEBUG"); - // return this; - // }); - // } - - // async onReady(): Promise { - // console.log("passs onReady", this.name); - // return this.fireAsync("onReady", this).then(() => { - // this.log(`MODULE ${this.name} READY`, "DEBUG"); - // return this; - // }); - // } - async install(): Promise { return this; } diff --git a/src/packages/@nodefony/http/index.ts b/src/packages/@nodefony/http/index.ts index 7933547..4852790 100644 --- a/src/packages/@nodefony/http/index.ts +++ b/src/packages/@nodefony/http/index.ts @@ -1,9 +1,12 @@ import { Kernel, Module } from "nodefony"; import config from "./nodefony/config/config"; -import httpServer from "./nodefony/service/server-http"; import HttpKernel from "./nodefony/service/http-kernel"; +import HttpServer from "./nodefony/service/servers/server-http"; +import HttpsServer from "./nodefony/service/servers/server-https"; +import StaticServer from "./nodefony/service/servers/server-static"; import networkCommand from "./nodefony/command/networkCommand"; import { fileURLToPath } from "url"; +import Certificate from "./nodefony/service/certificates"; //console.log(path.resolve(__dirname)); class Http extends Module { @@ -13,14 +16,22 @@ class Http extends Module { this.httpKernel = null; this.addCommand(networkCommand); this.httpKernel = this.addService(HttpKernel) as HttpKernel; + this.addService(Certificate, this.httpKernel); + } + + async onStart(): Promise { + this.log(`MODULE ${this.name} START`, "DEBUG"); + this.addService(HttpServer, this.httpKernel); + this.addService(HttpsServer, this.httpKernel); + this.addService(StaticServer, this.httpKernel); + return this; } - // async onStart(): Promise { - // this.log(`MODULE ${this.name} START`, "DEBUG"); - // return this; - // } async onRegister(): Promise { - this.addService(httpServer, this.httpKernel); + try { + } catch (e) { + this.log(e, "ERROR"); + } this.log(`MODULE ${this.name} REGISTER`, "DEBUG"); return this; } diff --git a/src/packages/@nodefony/http/nodefony/config/config.ts b/src/packages/@nodefony/http/nodefony/config/config.ts index dde8381..19d9c71 100644 --- a/src/packages/@nodefony/http/nodefony/config/config.ts +++ b/src/packages/@nodefony/http/nodefony/config/config.ts @@ -20,24 +20,21 @@ const createSecret = function (cwd: string = process.cwd()): string { "nodefony", "config", "certificates", - "ca", - "private", - "ca.key.pem" + "server", + "private.key.pem" ); return createHash("sha512") .update(readFile(sercretPath)) .digest("base64") .substr(0, 32); }; -const secret = createSecret(); const createIv = function () { const sercretPath = path.resolve( "nodefony", "config", "certificates", - "ca", - "public", + "server", "public.key.pem" ); return createHash("sha512") @@ -45,7 +42,7 @@ const createIv = function () { .digest("base64") .substr(0, 16); }; -const iv = createIv(); + const tmpDir = kernel?.tmpDir.path || "/tmp"; export default { @@ -72,25 +69,47 @@ export default { * @see : https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_class_http_server */ http: { - maxHeadersCount: null, - timeout: null, // For Keep alive spec - responseTimeout: 30000, // In ms | 30 seconds by default + maxHeadersCount: 2000, + keepAliveTimeout: 5000, // For keep alive spec (5 secondes) + timeout: 120000, // (2 minutes) + requestTimeout: 30000, // In MS | 30 seconds by default headers: null, }, https: { - maxHeadersCount: null, - timeout: null, // For keep alive spec - responseTimeout: 30000, // In MS | 30 seconds by default + rejectUnauthorized: false, + maxHeadersCount: 2000, + keepAliveTimeout: 5000, // For keep alive spec (5 secondes) + timeout: 120000, // (2 minutes) + requestTimeout: 30000, // In MS | 30 seconds by default headers: null, - certificats: { - options: { - rejectUnauthorized: false, - }, - }, }, http2: { enablePush: true, }, + http3: {}, + + certificates: { + ca: "", + key: "", + cert: "", + openssl: { + size: 2048, + attrs: [ + { + name: "commonName", + value: kernel?.domain || "nodefony.com", + }, + { + name: "organizationName", + value: kernel?.projectName || "", + }, + { + name: "organizationalUnitName", + value: "Development", + }, + ], + }, + }, /** * SERVERS WEBSOCKET @@ -136,7 +155,7 @@ export default { maxAge: 96 * 60 * 60, }, web: { - path: "web", + path: "public", options: { maxAge: 30 * 24 * 60 * 60 * 1000, }, @@ -171,11 +190,11 @@ export default { secure: false, // https only signed: false, }, - encrypt: { - algorithm: "aes-256-ctr", - password: secret, - iv, - }, + // encrypt: { + // algorithm: "aes-256-ctr", + // password: createSecret(), + // iv: createIv(), + // }, /** * SERVICE memcached diff --git a/src/packages/@nodefony/http/nodefony/service/certificates.ts b/src/packages/@nodefony/http/nodefony/service/certificates.ts new file mode 100644 index 0000000..c7f0f15 --- /dev/null +++ b/src/packages/@nodefony/http/nodefony/service/certificates.ts @@ -0,0 +1,307 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import pkg from "node-forge"; +const { pki } = pkg; +import nodefony, { Service, Module, Container, Event } from "nodefony"; +import HttpKernel from "./http-kernel"; +import fs from "fs/promises"; +import path, { resolve } from "path"; +import { v4 as uuidv4 } from "uuid"; +import crypto from "node:crypto"; + +export interface OpensslOptions { + size: number; + attrs: pkg.pki.CertificateField[]; + serialNumber: string | number; +} + +export interface CertificateOptions { + openssl: OpensslOptions; + path?: string; + keyPath?: string; + certPath?: string; + caPath?: string; + key?: Buffer; + cert?: Buffer; + ca?: Buffer; +} + +interface filesCertType { + path: string; + variable: string | Buffer | null; +} + +const defaultOptions: CertificateOptions = { + path: resolve(".", "nodefony", "config", "certificates"), + openssl: { + size: 2048, + serialNumber: 1, + attrs: [], + }, +}; + +class Certificate extends Service { + module: Module; + files: filesCertType[] = []; + keysPair: pkg.pki.rsa.KeyPair | null = null; + certForge: pkg.pki.Certificate | null = null; + ca: Buffer | string | null = ""; + key: Buffer | string | null = ""; + cert: Buffer | string | null = ""; + fullchainPem: Buffer | string | null = ""; + publicKeyPem: Buffer | string | null = ""; + rootCertPem: Buffer | string | null = ""; + intermediateCertPem: Buffer | string | null = ""; + + path: string = resolve(".", "nodefony", "config", "certificates"); + clientPath: string = resolve(this.path, "client"); + serverParh: string = resolve(this.path, "server"); + caPath: string = resolve(this.path, "ca", "nodefony-root-ca.crt.pem"); + publicKeyPath: string = resolve(this.path, "server", "publickey.pem"); + privateKeyPath: string = resolve(this.path, "server", "privkey.pem"); + certPath: string = resolve(this.path, "server", "cert.pem"); + fullchainPath: string = resolve(this.path, "server", "fullchain.pem"); + intermediatePath: string = resolve(this.path, "ca_intermediate"); + constructor(module: Module, httpKernel: HttpKernel) { + super( + "certificates", + module.container as Container, + module.notificationsCenter as Event, + nodefony.extend( + true, + defaultOptions, + module.options.certificates || {} + ) as CertificateOptions + ); + this.module = module; + this.setFiles(); + + this.kernel?.once("onStart", async () => { + nodefony.extend( + true, + this.options, + module.options.certificates || {} + ) as CertificateOptions; + await this.ensureDirectoriesExist(); + this.options.openssl.serialNumber = Certificate.generateSerial(); + await this.generateServerCertificates(); + }); + } + + static generateSerial(): number { + // Générer un UUID + const unique_id = uuidv4().replace(/-/g, ""); + // Convertir l'UUID en un nombre binaire + const binaryNumber = parseInt(unique_id, 16).toString(2); + // Prendre les 34 premiers chiffres du nombre binaire + return parseInt(binaryNumber.substring(0, 34), 2); + } + + setFiles(): void { + this.files = [ + { path: this.privateKeyPath, variable: this.key }, + { path: this.publicKeyPath, variable: this.publicKeyPem }, + { path: this.caPath, variable: this.ca }, + { path: this.certPath, variable: this.cert }, + { path: this.fullchainPath, variable: this.fullchainPem }, + ]; + } + + private async checkCertificates(): Promise { + return await Promise.any( + this.files.map((file) => + fs + .access(file.path) + .then(() => true) + .catch(() => false) + ) + ); + } + + private async ensureDirectoriesExist(): Promise { + const directories = [ + this.path, + this.clientPath, + this.intermediatePath, + this.serverParh, + path.dirname(this.privateKeyPath), + path.dirname(this.publicKeyPath), + path.dirname(this.caPath), + path.dirname(this.certPath), + path.dirname(this.fullchainPath), + ]; + + for await (const directory of directories) { + try { + await fs.access(directory); + } catch (err) { + // Directory does not exist, create it + await fs.mkdir(directory, { recursive: true }); + this.log(`Directory created: ${directory}`); + } + } + } + + async generateServerCertificates(force: boolean = false): Promise { + // Check if any file exists + await this.ensureDirectoriesExist(); + const anyFileExists = await this.checkCertificates(); + + if (anyFileExists && !force) { + return this.readCerticates(); + } + this.keysPair = this.generateKeys(); + this.certForge = this.createCertificate(); + this.setExtension(); + this.sign(); + this.key = this.generatePrivateKeyPem(); + this.publicKeyPem = this.generatePublickeyPem(); + this.cert = this.generateCertPem(); + this.fullchainPem = this.createFullChain(); + this.setFiles(); + return this.writeCertificates(force).then(() => { + return this.readCerticates(); + }); + } + + createFullChain(): string { + return ( + this.cert?.toString() || + "" + this.intermediateCertPem?.toString() || + "" + this.rootCertPem?.toString() || + "" + ); + } + + async readCerticates(): Promise { + return new Promise(async (resolve, reject) => { + for await (const file of this.files) { + try { + await fs.access(file.path); + if (file.path === this.privateKeyPath) { + this.key = Buffer.from(await fs.readFile(file.path, "utf8")); + } + if (file.path === this.publicKeyPath) { + this.publicKeyPem = Buffer.from( + await fs.readFile(file.path, "utf8") + ); + } + if (file.path === this.caPath) { + this.ca = Buffer.from(await fs.readFile(file.path, "utf8")); + } + if (file.path === this.certPath) { + this.cert = Buffer.from(await fs.readFile(file.path, "utf8")); + } + if (file.path === this.fullchainPath) { + this.fullchainPem = Buffer.from( + await fs.readFile(file.path, "utf8") + ); + } + this.log(`Read Certificat file ${file.path}`); + } catch (err) { + //this.log(`Create file ${file.path}`); + this.log(err, "WARNING"); + } + } + return resolve(this); + }); + } + + async writeCertificates(force: boolean = false): Promise { + await this.ensureDirectoriesExist(); + for await (const file of this.files) { + try { + if (file.variable) { + const fileExists = await fs + .access(file.path) + .then(() => true) + .catch(() => false); + if (!force && fileExists) { + this.log(`File ${file.path} already exists, skipping.`); + continue; // Skip writing if force is false and file exists + } + if (force && fileExists) { + await fs.unlink(file.path); // Delete existing file if force is true and file exists + this.log(`Existing file ${file.path} deleted.`); + } + await fs.writeFile(file.path, file.variable.toString(), "utf8"); + this.log(`Certificate file ${file.path} written successfully.`); + } + } catch (err) { + this.log(`Error writing to file ${file.path}`, "ERROR"); + this.log(err, "ERROR"); + throw err; + } + } + return this; + } + + generateKeys(): pkg.pki.rsa.KeyPair { + // Générer une paire de clés + return pki.rsa.generateKeyPair(this.options.size); + } + generatePrivateKeyPem(): Buffer { + if (this.keysPair) { + return Buffer.from(pki.privateKeyToPem(this.keysPair.privateKey)); + } + throw new Error(`pki.rsa.KeyPair not found`); + } + generatePublickeyPem(): Buffer { + if (this.keysPair) + return Buffer.from(pki.publicKeyToPem(this.keysPair.publicKey)); + throw new Error(`pki.rsa.KeyPair not found`); + } + generateCertPem(): Buffer { + if (this.certForge) { + return Buffer.from(pki.certificateToPem(this.certForge)); + } + throw new Error(`pki.Certificate not found`); + } + + createCertificate(): pkg.pki.Certificate { + // Créer un certificat + if (this.keysPair) { + const cert = pki.createCertificate(); + cert.publicKey = this.keysPair.publicKey; + cert.serialNumber = "01"; //this.options.openssl.serialNumber; + cert.validity.notBefore = new Date(); + // Valide pour un an + cert.validity.notAfter.setFullYear( + cert.validity.notBefore.getFullYear() + 1 + ); + cert.setSubject(this.options.openssl.attrs); + cert.setIssuer(this.options.openssl.attrs); + return cert; + } + throw new Error(`KeyPair not found`); + } + + setExtension(): void { + if (this.certForge) { + return this.certForge.setExtensions([ + { + name: "basicConstraints", + cA: true, + }, + { + name: "keyUsage", + keyCertSign: true, + digitalSignature: true, + nonRepudiation: true, + keyEncipherment: true, + dataEncipherment: true, + }, + ]); + } + throw new Error(`pki.Certificate not found`); + } + + sign(): void { + if (this.certForge && this.keysPair) { + // Autosigner le certificat + return this.certForge.sign(this.keysPair.privateKey); + } + throw new Error(`pki.rsa.KeyPair or pki.Certificate not found`); + } +} + +export default Certificate; diff --git a/src/packages/@nodefony/http/nodefony/service/http-kernel.ts b/src/packages/@nodefony/http/nodefony/service/http-kernel.ts index 2b682f9..dd038b1 100644 --- a/src/packages/@nodefony/http/nodefony/service/http-kernel.ts +++ b/src/packages/@nodefony/http/nodefony/service/http-kernel.ts @@ -1,34 +1,70 @@ import { Service, Module, Container, Event, Scope } from "nodefony"; import http from "node:http"; - -import httpServer from "../service/server-http"; +import https from "node:http"; +import http2 from "node:http2"; +import httpServer from "../service/servers/server-http"; +import httpsServer from "../service/servers/server-https"; +import Statics from "./servers/server-static"; import clc from "cli-color"; +import Certicates from "./certificates"; +import websocket from "websocket"; -export type ProtocolType = "1.1" | "2.0"; +export type ProtocolType = "1.1" | "2.0" | "3.0"; export type ServerType = | "http" | "https" | "http2" + | "http3" | "websocket" | "websocket-secure"; const serviceName: string = "httpKernel"; class HttpKernel extends Service { + certificates: any; + serviceCerticats: Certicates | null = null; + key: string = ""; + cert: string = ""; + ca: string = ""; + serverStatic: Statics | null = null; constructor(module: Module) { const container: Container = module.container as Container; const event: Event = module.notificationsCenter as Event; super(serviceName, container, event, module.options); this.container?.addScope("request"); + this.kernel?.on("onStart", () => { + this.serviceCerticats = this.get("certificates"); + this.serverStatic = this.get("server-static"); + }); } - onHttpRequest( - request: http.IncomingMessage, - response: http.ServerResponse, + async onHttpRequest( + request: http.IncomingMessage | http2.Http2ServerRequest, + response: http.ServerResponse | http2.Http2ServerResponse, type: ServerType - ) { + ): Promise { response.setHeader("Server", this.options.headerServer); + if ( + (this.kernel?.options.servers.statics || this.kernel?.options.statics) && + this.serverStatic + ) { + return this.serverStatic + .handle(request, response) + .then((res) => { + if (res) { + this.fire("onServerRequest", request, response, type); + return this.handle(request, response, type); + } + throw new Error("Bad request"); + }) + .catch((e) => { + if (e) { + this.log(e, "ERROR", "STATICS SERVER"); + } + return e; + }); + } this.fire("onServerRequest", request, response, type); return this.handle(request, response, type); } @@ -37,17 +73,22 @@ class HttpKernel extends Service { let servers = []; const serverHttp: httpServer = this.get("server-http"); if (serverHttp) { - servers.push(serverHttp); await serverHttp.createServer(); + servers.push(serverHttp); + } + const serverHttps: httpsServer = this.get("server-https"); + if (serverHttps) { + await serverHttps.createServer(); + servers.push(serverHttps); } return servers; } - handle( - request: http.IncomingMessage, - response: http.ServerResponse, + async handle( + request: http.IncomingMessage | http2.Http2ServerRequest, + response: http.ServerResponse | http2.Http2ServerResponse, type: ServerType - ) { + ): Promise { // SCOPE REQUEST ; let log = null; const scope = this.container?.enterScope("request"); @@ -56,7 +97,7 @@ class HttpKernel extends Service { case "https": case "http2": log = clc.cyan.bgBlue(`${request.url}`); - this.log(`REQUEST HANDLE ${type} : ${log}`, "DEBUG"); + this.log(` ${log}`, "INFO", type); return this.handleHttp(scope as Scope, request, response, type); case "websocket": case "websocket-secure": @@ -66,22 +107,28 @@ class HttpKernel extends Service { } } - handleHttp( + async handleHttp( scope: Scope, - request: http.IncomingMessage, - response: http.ServerResponse, + request: http.IncomingMessage | http2.Http2ServerRequest, + response: http.ServerResponse | http2.Http2ServerResponse, type: ServerType - ) { + ): Promise { response.statusCode = 200; response.setHeader("Content-Type", "text/plain"); response.end("Hello, World!\n"); + return response; } handleWebsocket( scope: Scope, - request: http.IncomingMessage, + request: + | http.IncomingMessage + | https.IncomingMessage + | http2.Http2ServerRequest, type: ServerType - ) {} + ): Promise { + return Promise.resolve(); + } } export default HttpKernel; diff --git a/src/packages/@nodefony/http/nodefony/service/server-http.ts b/src/packages/@nodefony/http/nodefony/service/server-http.ts deleted file mode 100644 index 95da398..0000000 --- a/src/packages/@nodefony/http/nodefony/service/server-http.ts +++ /dev/null @@ -1,145 +0,0 @@ -import nodefony, { - Service, - Kernel, - Container, - Event, - Module, - FamilyType, -} from "nodefony"; -import HttpKernel, { ProtocolType, ServerType } from "./http-kernel"; - -import http from "node:http"; -import { AddressInfo } from "node:net"; -import { timingSafeEqual } from "node:crypto"; - -class ServerHttp extends Service { - httpKernel: HttpKernel | null = null; - module: Module; - server: http.Server | null = null; - port: number; - protocol: ProtocolType = "1.1"; - ready: boolean = false; - type: ServerType = "http"; - domain: string; - scheme: string = "http"; - address: string | null = null; - family: FamilyType | null = null; - active: boolean = false; - infos: AddressInfo | null = null; - - constructor(module: Module, httpKernel: HttpKernel) { - module: Module; - super( - "server-http", - module.container as Container, - module.notificationsCenter as Event, - module.options.http - ); - this.module = module; - this.httpKernel = httpKernel; - this.active = !!module.kernel?.options.servers.http; - this.port = this.setPort(); - this.domain = this.module.kernel?.domain as string; - } - - setPort(): number { - if (this.module.kernel?.options.servers?.http) { - return this.module.kernel?.options.servers?.http?.port || 0; - } - return 0; - } - - createServer(): Promise { - return new Promise((resolve, reject) => { - try { - if (!this.active) { - const e = new Error(`Server http is not allowed in config file `); - return reject(e); - } - this.server = http.createServer(); - this.module.fire("onCreateServer", this.type, this); - } catch (e) { - this.log(e, "CRITIC"); - return reject(e); - } - this.server.on("request", (request, response) => - this.httpKernel?.onHttpRequest(request, response, this.type) - ); - - if (this.options.timeout) { - this.server.timeout = this.options.timeout; - } - - if (this.options.maxHeadersCount) { - this.server.maxHeadersCount = this.options.maxHeadersCount; - } - // LISTEN ON PORT - this.server.listen(this.port, this.domain, () => { - this.ready = true; - this.module.fire("onServersReady", this.type, this); - this.infos = this.server?.address() as AddressInfo; - if (this.infos) { - this.port = this.infos.port; - this.address = this.infos.address; - this.family = this.infos.family as FamilyType; - } - resolve(this.server as http.Server); - }); - this.server.on("error", (error) => { - const myError = new nodefony.Error(error); - const txtError = - typeof error.code === "string" ? error.code : error.errno; - switch (txtError) { - case "ENOTFOUND": - this.log( - `CHECK DOMAIN IN /etc/hosts or config unable to connect to : ${this.domain}`, - "ERROR" - ); - this.log(myError, "CRITIC"); - break; - case "EADDRINUSE": - this.log( - `Domain : ${this.domain} Port : ${this.port} ==> ALREADY USE `, - "ERROR" - ); - this.log(myError, "CRITIC"); - this.server?.close(); - setTimeout(() => this.kernel?.terminate(1), 1000); - break; - default: - this.log(myError, "CRITIC"); - } - }); - this.kernel?.once("onTerminate", () => { - return new Promise((resolve, reject) => { - if (this.server) { - this.server.closeAllConnections(); - this.server.close(() => { - this.log( - `${this.type} SHUTDOWN Server is listening on DOMAIN : ${this.domain} PORT : ${this.port}`, - "INFO" - ); - return resolve(true); - }); - return; - } - return resolve(true); - }); - }); - - this.server.on("clientError", (e, socket) => { - this.fire("onClientError", e, socket); - }); - }); - } - - showBanner(): void { - if (this.infos) { - this.log( - `Server ${this.type} Family : ${this.infos.family} Ready on ${this.scheme}://${this.infos.address}:${this.infos.port}` - ); - } - } -} - -export default ServerHttp; diff --git a/src/packages/@nodefony/http/nodefony/service/servers/server-http.ts b/src/packages/@nodefony/http/nodefony/service/servers/server-http.ts new file mode 100644 index 0000000..105bf98 --- /dev/null +++ b/src/packages/@nodefony/http/nodefony/service/servers/server-http.ts @@ -0,0 +1,157 @@ +import nodefony, { + Service, + Kernel, + Container, + Event, + Module, + FamilyType, +} from "nodefony"; +import HttpKernel, { ProtocolType, ServerType } from "../http-kernel"; + +import http from "node:http"; +import http2 from "node:http2"; +import { AddressInfo } from "node:net"; + +class ServerHttp extends Service { + httpKernel: HttpKernel | null = null; + module: Module; + server: http.Server | http2.Http2Server | null = null; + port: number; + protocol: ProtocolType = "1.1"; + ready: boolean = false; + type: ServerType = "http"; + domain: string; + scheme: string = "http"; + address: string | null = null; + family: FamilyType | null = null; + active: boolean = false; + infos: AddressInfo | null = null; + + constructor(module: Module, httpKernel: HttpKernel) { + module: Module; + super( + "server-http", + module.container as Container, + module.notificationsCenter as Event, + module.options.http + ); + this.module = module; + this.httpKernel = httpKernel; + this.active = !!module.kernel?.options.servers.http; + this.port = this.setPort(); + this.domain = this.module.kernel?.domain as string; + } + + setPort(): number { + if (this.module.kernel?.options.servers?.http) { + return this.module.kernel?.options.servers?.http?.port || 0; + } + return 0; + } + + createServer(): Promise { + return new Promise((resolve, reject) => { + try { + if (!this.active) { + const e = new Error(`Server http is not allowed in config file `); + return reject(e); + } + const opt: http.ServerOptions = nodefony.extend({ + requestTimeout: this.options.requestTimeout, + }); + this.server = http.createServer(opt); + if (this.options.maxHeadersCount) { + if (this.server) { + this.server.maxHeadersCount = this.options.maxHeadersCount; + } + } + if (this.options.timeout) { + if (this.server) { + this.server.setTimeout(this.options.timeout, () => { + this.fire("onTimeout", this); + }); + this.server.timeout = this.options.timeout; + } + } + if (this.options.keepAliveTimeout) { + if (this.server) { + this.server.keepAliveTimeout = this.options.keepAliveTimeout; + } + } + this.server.on("request", (request, response) => + this.httpKernel?.onHttpRequest(request, response, this.type) + ); + // LISTEN ON PORT + this.server.listen(this.port, this.domain, () => { + this.ready = true; + this.module.fire("onServersReady", this.type, this); + this.infos = this.server?.address() as AddressInfo; + if (this.infos) { + this.port = this.infos.port; + this.address = this.infos.address; + this.family = this.infos.family as FamilyType; + } + resolve(this.server as http.Server); + }); + this.module.fire("onCreateServer", this.type, this); + this.server.on("error", (error) => { + const myError = new nodefony.Error(error); + const txtError = + typeof error.code === "string" ? error.code : error.errno; + switch (txtError) { + case "ENOTFOUND": + this.log( + `CHECK DOMAIN IN /etc/hosts or config unable to connect to : ${this.domain}`, + "ERROR" + ); + this.log(myError, "CRITIC"); + break; + case "EADDRINUSE": + this.log( + `Domain : ${this.domain} Port : ${this.port} ==> ALREADY USE `, + "ERROR" + ); + this.log(myError, "CRITIC"); + this.server?.close(); + setTimeout(() => this.kernel?.terminate(1), 1000); + break; + default: + this.log(myError, "CRITIC"); + } + }); + this.kernel?.once("onTerminate", () => { + return new Promise((resolve, reject) => { + if (this.server) { + (this.server as http.Server).closeAllConnections(); + return this.server.close(() => { + this.log( + `${this.type} SHUTDOWN Server is listening on DOMAIN : ${this.domain} PORT : ${this.port}`, + "INFO" + ); + return resolve(true); + }); + } + return resolve(true); + }); + }); + + this.server.on("clientError", (e, socket) => { + this.fire("onClientError", e, socket); + }); + } catch (e) { + this.log(e, "CRITIC"); + return reject(e); + } + }); + } + + showBanner(): void { + if (this.infos) { + this.log( + `Server Listen on ${this.scheme}://${this.infos.address}:${this.infos.port} Family: ${this.infos.family} Protocol : ${this.protocol}` + ); + } + } +} + +export default ServerHttp; diff --git a/src/packages/@nodefony/http/nodefony/service/servers/server-http3.ts b/src/packages/@nodefony/http/nodefony/service/servers/server-http3.ts new file mode 100644 index 0000000..9e65113 --- /dev/null +++ b/src/packages/@nodefony/http/nodefony/service/servers/server-http3.ts @@ -0,0 +1,17 @@ +import nodefony, { + Service, + Kernel, + Container, + Event, + Module, + FamilyType, + DefaultOptionsService, +} from "nodefony"; +import HttpKernel, { ProtocolType, ServerType } from "../http-kernel"; +import Certicates from "../certificates"; + +import { AddressInfo } from "node:net"; + +class Http3 {} + +export default Http3; diff --git a/src/packages/@nodefony/http/nodefony/service/servers/server-https.ts b/src/packages/@nodefony/http/nodefony/service/servers/server-https.ts new file mode 100644 index 0000000..481c865 --- /dev/null +++ b/src/packages/@nodefony/http/nodefony/service/servers/server-https.ts @@ -0,0 +1,294 @@ +import nodefony, { + Service, + Kernel, + Container, + Event, + Module, + FamilyType, + DefaultOptionsService, +} from "nodefony"; +import HttpKernel, { ProtocolType, ServerType } from "../http-kernel"; + +import http from "node:http"; +import https from "node:https"; +import http2 from "node:http2"; +import { createHttpTerminator, HttpTerminator } from "http-terminator"; +//import net from "node:net"; +import { AddressInfo } from "node:net"; +import { TLSSocket } from "node:tls"; + +class ServerHttps extends Service { + httpKernel: HttpKernel | null = null; + httpTerminator: HttpTerminator | null = null; + module: Module; + server: https.Server | http2.Http2SecureServer | null = null; + port: number; + protocol: ProtocolType = "1.1"; + ready: boolean = false; + type: ServerType = "https"; + domain: string; + scheme: string = "https"; + address: string | null = null; + family: FamilyType | null = null; + active: boolean = false; + infos: AddressInfo | null = null; + + constructor(module: Module, httpKernel: HttpKernel) { + module: Module; + super( + "server-https", + module.container as Container, + module.notificationsCenter as Event, + module.options.https + ); + this.module = module; + this.httpKernel = httpKernel; + this.active = !!module.kernel?.options.servers.https; + this.port = this.setPort(); + this.domain = this.module.kernel?.domain as string; + } + + terminator(): HttpTerminator { + if (this.server) { + return createHttpTerminator({ + server: this.server, + }); + } + throw new Error(`Server not found`); + } + + setPort(): number { + if (this.module.kernel?.options.servers?.https) { + return this.module.kernel?.options.servers?.https?.port || 0; + } + return 0; + } + + createServer(): Promise { + return new Promise((resolve, reject) => { + try { + if (!this.active) { + const e = new Error(`Server https is not allowed in config file `); + return reject(e); + } + this.protocol = this.kernel?.options.servers.https.protocol; + if (this.protocol === "2.0") { + return resolve(this.createServerH2()); + } + const opt: https.ServerOptions = nodefony.extend({ + requestTimeout: this.options.requestTimeout, + rejectUnauthorized: this.options.rejectUnauthorized, + key: this.httpKernel?.serviceCerticats?.key, + cert: this.httpKernel?.serviceCerticats?.cert, + ca: this.httpKernel?.serviceCerticats?.ca + ? this.httpKernel?.serviceCerticats?.ca + : undefined, + }); + + this.server = https.createServer(opt); + this.httpTerminator = this.terminator(); + if (this.options.timeout) { + if (this.server) { + this.server.setTimeout(this.options.timeout, () => { + this.fire("onTimeout", this); + }); + this.server.timeout = this.options.timeout; + } + } + if (this.options.maxHeadersCount) { + if (this.server) { + this.server.maxHeadersCount = this.options.maxHeadersCount; + } + } + if (this.options.keepAliveTimeout) { + if (this.server) { + this.server.keepAliveTimeout = this.options.keepAliveTimeout; + } + } + this.module.fire("onCreateServer", this.type, this); + + // LISTEN ON PORT + this.server?.listen(this.port, this.domain, () => { + this.ready = true; + this.module.fire("onServersReady", this.type, this); + this.infos = this.server?.address() as AddressInfo; + if (this.infos) { + this.port = this.infos.port; + this.address = this.infos.address; + this.family = this.infos.family as FamilyType; + } + resolve(this.server as https.Server); + }); + + this.server.on( + "request", + (request: http.IncomingMessage, response: http.ServerResponse) => { + this.httpKernel?.onHttpRequest(request, response, this.type); + } + ); + + this.server.on("error", (error) => { + const myError = new nodefony.Error(error); + const txtError = + typeof error.code === "string" ? error.code : error.errno; + switch (txtError) { + case "ENOTFOUND": + this.log( + `CHECK DOMAIN IN /etc/hosts or config unable to connect to : ${this.domain}`, + "ERROR" + ); + this.log(myError, "CRITIC"); + break; + case "EADDRINUSE": + this.log( + `Domain : ${this.domain} Port : ${this.port} ==> ALREADY USE `, + "ERROR" + ); + this.log(myError, "CRITIC"); + this.server?.close(); + setTimeout(() => this.kernel?.terminate(1), 1000); + break; + default: + this.log(myError, "CRITIC"); + } + }); + + this.kernel?.once("onTerminate", () => { + return new Promise((resolve, reject) => { + if (this.server) { + (this.server as https.Server).closeAllConnections(); + return this.server.close(() => { + this.log( + `${this.type} SHUTDOWN Server is listening on DOMAIN : ${this.domain} PORT : ${this.port}`, + "INFO" + ); + return resolve(true); + }); + } + return resolve(true); + }); + }); + this.server.on("clientError", (e, socket) => { + this.fire("onClientError", e, socket); + }); + } catch (e) { + this.log(e, "CRITIC"); + return reject(e); + } + }); + } + + createServerH2(): Promise { + return new Promise((resolve, reject) => { + try { + const opt: http2.SecureServerOptions = nodefony.extend({ + allowHTTP1: true, + rejectUnauthorized: this.options.rejectUnauthorized, + key: this.httpKernel?.serviceCerticats?.key, + cert: this.httpKernel?.serviceCerticats?.cert, + ca: this.httpKernel?.serviceCerticats?.ca + ? this.httpKernel?.serviceCerticats?.ca + : undefined, + }); + this.server = http2.createSecureServer(opt); + this.httpTerminator = this.terminator(); + // const buf = http2.getPackedSettings(this.options); + // const defaultSetting2 = nodefony.extend( + // {}, + // http2.getDefaultSettings(), + // http2.getUnpackedSettings(buf) || {} + // ); + this.server.on("request", (request, response) => { + let alpnProtocol: string | false | null = false; + if (request && request.stream && request.stream.session?.socket) { + if (request.stream.session.socket instanceof TLSSocket) { + alpnProtocol = request.stream.session.socket.alpnProtocol; + } + } + if (request.socket) { + if (request.socket instanceof TLSSocket) { + alpnProtocol = request.socket.alpnProtocol; + } + } + if (alpnProtocol === "h2") { + return this.httpKernel?.onHttpRequest(request, response, "http2"); + } else { + return this.httpKernel?.onHttpRequest(request, response, "https"); + } + }); + // LISTEN ON PORT + this.server?.listen(this.port, this.domain, () => { + this.ready = true; + this.module.fire("onServersReady", this.type, this); + this.infos = this.server?.address() as AddressInfo; + if (this.infos) { + this.port = this.infos.port; + this.address = this.infos.address; + this.family = this.infos.family as FamilyType; + } + return resolve(this.server as http2.Http2SecureServer); + }); + this.server.on("error", (error) => { + const myError = new nodefony.Error(error); + const txtError = + typeof error.code === "string" ? error.code : error.errno; + switch (txtError) { + case "ENOTFOUND": + this.log( + `CHECK DOMAIN IN /etc/hosts or config unable to connect to : ${this.domain}`, + "ERROR" + ); + this.log(myError, "CRITIC"); + break; + case "EADDRINUSE": + this.log( + `Domain : ${this.domain} Port : ${this.port} ==> ALREADY USE `, + "ERROR" + ); + this.log(myError, "CRITIC"); + this.server?.close(); + setTimeout(() => this.kernel?.terminate(1), 1000); + throw error; + break; + default: + this.log(myError, "CRITIC"); + } + }); + this.kernel?.once("onTerminate", () => { + return new Promise(async (resolve, reject) => { + if (this.server) { + await this.httpTerminator?.terminate(); + return this.server.close(() => { + this.log( + `${this.type} SHUTDOWN Server is listening on DOMAIN : ${this.domain} PORT : ${this.port}`, + "INFO" + ); + return resolve(true); + }); + } + return resolve(true); + }); + }); + + this.server.on("sessionError", (error) => { + this.log(error, "ERROR", "HTTP2 Server sessionError"); + }); + this.server.on("streamError", (error) => { + this.log(error, "ERROR", "HTTP2 Server streamError"); + }); + } catch (e) { + return reject(e); + } + }); + } + + showBanner(): void { + if (this.infos) { + this.log( + `Server Listen on ${this.scheme}://${this.infos.address}:${this.infos.port} Family: ${this.infos.family} Protocol : ${this.protocol}` + ); + } + } +} + +export default ServerHttps; diff --git a/src/packages/@nodefony/http/nodefony/service/servers/server-static.ts b/src/packages/@nodefony/http/nodefony/service/servers/server-static.ts new file mode 100644 index 0000000..f3698e5 --- /dev/null +++ b/src/packages/@nodefony/http/nodefony/service/servers/server-static.ts @@ -0,0 +1,158 @@ +import serveStatic from "serve-static"; +import mime from "mime-types"; +import { URL } from "node:url"; +import HttpKernel, { ProtocolType, ServerType } from "../http-kernel"; +import http from "node:http"; +import http2 from "node:http2"; +import tls from "tls"; +import nodefony, { + Service, + Kernel, + Container, + Event, + extend, + Module, + FamilyType, + DefaultOptionsService, +} from "nodefony"; + +type serveStaticType = serveStatic.RequestHandler; + +type ServersStatic = Record; + +const defaultOptions: serveStatic.ServeStaticOptions = { + cacheControl: true, + maxAge: 96 * 60 * 60, +}; + +class Statics extends Service { + module: Module; + httpKernel: HttpKernel | null = null; + servers: ServersStatic; + defaultOptions: serveStatic.ServeStaticOptions = defaultOptions; + constructor(module: Module, httpKernel: HttpKernel) { + const container = module.container || undefined; + const options: serveStatic.ServeStaticOptions = + module.options.statics || {}; + let event; + if (container) { + event = container.get("notificationsCenter"); + } + super("server-static", container, event, options); + this.module = module; + this.servers = {}; + this.defaultOptions = extend( + defaultOptions, + this.options.defaultOptions || {} + ); + if (this.options.defaultOptions) delete this.options.defaultOptions; + this.initStaticFiles(); + this.kernel?.on("onPostReady", () => { + for (const ele in this.servers) { + this.log(`Server Listen on ${ele}`, "INFO"); + } + }); + } + + initStaticFiles() { + for (const staticRoot in this.options) { + let Path = this.options[staticRoot].path; + Path = this.kernel?.checkPath(Path); + let setHeaders = null; + const opt: serveStatic.ServeStaticOptions = + this.options[staticRoot].options || {}; + if (opt.setHeaders) { + if (typeof opt.setHeaders === "function") { + setHeaders = opt.setHeaders; + delete opt.setHeaders; + } + } + opt.setHeaders = (res: http.ServerResponse, path: string) => { + this.log(`Render ${path}`, "DEBUG", `SERVE STATIC ${staticRoot}`); + this.fire("onServeStatic", res, path, staticRoot, this); + }; + if (setHeaders) { + this.on("onServeStatic", setHeaders); + } + this.addDirectory(Path, opt); + } + } + + addDirectory(Path: string, options: any) { + if (!Path) { + throw new Error("Static file path not Defined "); + } + const opt = nodefony.extend({}, this.defaultOptions, options); + /* if (typeof opt.maxAge === "string") { + //opt.maxAge = parseInt(eval(opt.maxAge), 10); + }*/ + const server = serveStatic(Path, opt); + this.servers[Path] = server; + return server; + } + + getStatic( + server: serveStaticType, + request: http.IncomingMessage | http2.Http2ServerRequest, + response: http.ServerResponse | http2.Http2ServerResponse + ): Promise { + return new Promise((resolve, reject) => { + server( + request as http.IncomingMessage, + response as http.ServerResponse, + (err) => { + // static not found 404 + if (err) { + return reject(err); + } + return resolve(response); + } + ); + }); + } + + getUrl(request: http.IncomingMessage | http2.Http2ServerRequest): string { + let scheme, host; + if (request instanceof http.IncomingMessage) { + // Pour http.IncomingMessage + scheme = + request.connection instanceof tls.TLSSocket && + request.connection.encrypted + ? "https" + : "http"; + host = request.headers.host; + } else if (request instanceof http2.Http2ServerRequest) { + // Pour http2.Http2ServerRequest + scheme = + request.socket instanceof tls.TLSSocket && request.socket.encrypted + ? "https" + : "http"; + host = request.headers[":authority"]; + } + return scheme + "://" + host; + } + + async handle( + request: http.IncomingMessage | http2.Http2ServerRequest, + response: http.ServerResponse | http2.Http2ServerResponse + ): Promise { + const baseURL = this.getUrl(request); + const { pathname } = new URL(request.url as string, baseURL); + if (!pathname) { + throw new Error(`Bad url ${request.url}`); + } + for (const server in this.servers) { + try { + let ele = this.servers[server]; + await this.getStatic(ele, request, response); + const type = mime.lookup(pathname); + response.setHeader("Content-Type", type as string); + } catch (e) { + return Promise.reject(e); + } + } + return Promise.resolve(response); + } +} + +export default Statics; diff --git a/src/packages/@nodefony/http/package-lock.json b/src/packages/@nodefony/http/package-lock.json index db128f9..7a1e0f8 100644 --- a/src/packages/@nodefony/http/package-lock.json +++ b/src/packages/@nodefony/http/package-lock.json @@ -8,13 +8,20 @@ "name": "@nodefony/http", "version": "10.0.0", "dependencies": { + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", + "cli-color": "2.0.3", "cookie": "0.6.0", "formidable": "3.5.1", + "http-terminator": "3.2.0", "memcached": "^2.2.2", "mime": "4.0.1", + "mime-types": "2.1.35", "mkdirp": "3.0.1", "ms": "^2.1.3", "node-fetch": "3.3.2", + "node-forge": "1.3.1", "qs": "6.11.2", "serve-static": "1.15.0", "sockjs": "^0.3.24", @@ -28,6 +35,8 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "11.1.6", "@types/node": "20.11.5", + "@types/serve-static": "1.15.5", + "@types/websocket": "1.0.10", "@typescript-eslint/eslint-plugin": "6.19.0", "@typescript-eslint/parser": "6.19.0", "rimraf": "5.0.5", @@ -690,12 +699,24 @@ "@types/node": "*" } }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, + "node_modules/@types/mime": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz", + "integrity": "sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==", + "dev": true + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -723,6 +744,26 @@ "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/websocket": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.10.tgz", + "integrity": "sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.19.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz", @@ -1009,6 +1050,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1099,6 +1145,21 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1234,6 +1295,17 @@ "node": ">= 0.4" } }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/depd": { "version": "2.0.0", "license": "MIT", @@ -1338,6 +1410,17 @@ "ext": "^1.1.2" } }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "node_modules/escape-html": { "version": "1.0.3", "license": "MIT" @@ -1541,6 +1624,15 @@ "node": ">= 0.6" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -1603,6 +1695,17 @@ "dev": true, "peer": true }, + "node_modules/fast-printf": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/fast-printf/-/fast-printf-1.6.9.tgz", + "integrity": "sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==", + "dependencies": { + "boolean": "^3.1.4" + }, + "engines": { + "node": ">=10.0" + } + }, "node_modules/fastq": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", @@ -2059,6 +2162,31 @@ "version": "0.5.8", "license": "MIT" }, + "node_modules/http-terminator": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/http-terminator/-/http-terminator-3.2.0.tgz", + "integrity": "sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==", + "dependencies": { + "delay": "^5.0.0", + "p-wait-for": "^3.2.0", + "roarr": "^7.0.4", + "type-fest": "^2.3.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/http-terminator/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ignore": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", @@ -2201,6 +2329,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", @@ -2346,6 +2479,14 @@ "node": ">=10" } }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, "node_modules/magic-string": { "version": "0.30.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", @@ -2366,6 +2507,21 @@ "jackpot": ">=0.0.6" } }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2401,6 +2557,25 @@ "node": ">=16" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -2487,6 +2662,14 @@ "url": "https://opencollective.com/node-fetch" } }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-gyp-build": { "version": "4.8.0", "license": "MIT", @@ -2540,6 +2723,14 @@ "node": ">= 0.8.0" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -2572,6 +2763,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dependencies": { + "p-timeout": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2824,6 +3040,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/roarr": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-7.21.0.tgz", + "integrity": "sha512-d1rPLcHmQID3GsA3p9d5vKSZYlvrTWhjbmeg9DT5DcPoLpH85VzPmkLkGKhQv376+dfkApaHwNbpYEwDB77Ibg==", + "dependencies": { + "fast-printf": "^1.6.9", + "safe-stable-stringify": "^2.4.3", + "semver-compare": "^1.0.0" + }, + "engines": { + "node": ">=18.0" + } + }, "node_modules/rollup": { "version": "4.9.6", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", @@ -2975,6 +3204,14 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -2990,6 +3227,11 @@ "node": ">=10" } }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + }, "node_modules/send": { "version": "0.18.0", "license": "MIT", @@ -3326,6 +3568,15 @@ "dev": true, "peer": true }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/src/packages/@nodefony/http/package.json b/src/packages/@nodefony/http/package.json index 98cd37d..ad0546e 100644 --- a/src/packages/@nodefony/http/package.json +++ b/src/packages/@nodefony/http/package.json @@ -20,13 +20,20 @@ ], "repository": {}, "dependencies": { + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", + "cli-color": "2.0.3", "cookie": "0.6.0", "formidable": "3.5.1", + "http-terminator": "3.2.0", "memcached": "^2.2.2", "mime": "4.0.1", + "mime-types": "2.1.35", "mkdirp": "3.0.1", "ms": "^2.1.3", "node-fetch": "3.3.2", + "node-forge": "1.3.1", "qs": "6.11.2", "serve-static": "1.15.0", "sockjs": "^0.3.24", @@ -40,12 +47,14 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "11.1.6", "@types/node": "20.11.5", + "@types/serve-static": "1.15.5", + "@types/websocket": "1.0.10", + "@typescript-eslint/eslint-plugin": "6.19.0", + "@typescript-eslint/parser": "6.19.0", "rimraf": "5.0.5", "rollup": "4.9.6", "rollup-plugin-copy": "3.5.0", - "typescript": "5.3.3", - "@typescript-eslint/eslint-plugin": "6.19.0", - "@typescript-eslint/parser": "6.19.0" + "typescript": "5.3.3" }, "license": "", "readmeFilename": "README.md", diff --git a/src/packages/@nodefony/http/rollup.config.ts b/src/packages/@nodefony/http/rollup.config.ts index 0f0feb0..2b4144b 100644 --- a/src/packages/@nodefony/http/rollup.config.ts +++ b/src/packages/@nodefony/http/rollup.config.ts @@ -7,7 +7,24 @@ import commonjs from "@rollup/plugin-commonjs"; import json from "@rollup/plugin-json"; import copy from "rollup-plugin-copy"; -const external: string[] = ["nodefony"]; +const external: string[] = [ + "nodefony", + "cli-color", + "cookie", + "formidable", + "memcached", + "mime", + "mkdirp", + "ms", + "node-fetch", + "qs", + "serve-static", + "sockjs", + "websocket", + "node-forge", + "http-terminator", + "mime-types", +]; const sharedNodeOptions = defineConfig({ treeshake: { diff --git a/src/packages/@nodefony/security/package.json b/src/packages/@nodefony/security/package.json index b3acfdf..115ef71 100644 --- a/src/packages/@nodefony/security/package.json +++ b/src/packages/@nodefony/security/package.json @@ -21,6 +21,9 @@ ], "repository": {}, "dependencies": { + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", "bcrypt": "5.1.1", "csrf": "^3.1.0", "jsonwebtoken": "9.0.2", @@ -41,12 +44,12 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "11.1.6", "@types/node": "20.11.5", + "@typescript-eslint/eslint-plugin": "6.19.0", + "@typescript-eslint/parser": "6.19.0", "rimraf": "5.0.5", "rollup": "4.9.6", "rollup-plugin-copy": "3.5.0", - "typescript": "5.3.3", - "@typescript-eslint/eslint-plugin": "6.19.0", - "@typescript-eslint/parser": "6.19.0" + "typescript": "5.3.3" }, "license": "", "readmeFilename": "README.md", diff --git a/src/packages/@nodefony/sequelize/package.json b/src/packages/@nodefony/sequelize/package.json index dd8b554..97d92cc 100755 --- a/src/packages/@nodefony/sequelize/package.json +++ b/src/packages/@nodefony/sequelize/package.json @@ -12,19 +12,21 @@ ], "dependencies": { "@alt3/sequelize-to-json-schemas": "^0.3.56", + "@types/node": "20.11.16", + "@typescript-eslint/eslint-plugin": "6.20.0", + "@typescript-eslint/parser": "6.20.0", "cls-hooked": "^4.2.2", "mariadb": "3.2.3", - "mysql2": "3.7.1", + "mysql2": "3.9.1", "pg": "8.11.3", "pg-hstore": "^2.3.4", "pgtools": "1.0.1", "sequelize": "6.35.2", "sqlite3": "5.1.7", "tedious": "16.6.1", - "umzug": "3.5.1" + "umzug": "3.6.1" }, "devDependencies": { - "sequelize-cli": "6.6.2", "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-json": "6.1.0", "@rollup/plugin-node-resolve": "15.2.3", @@ -32,11 +34,12 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "11.1.6", "@types/node": "20.11.5", + "@typescript-eslint/eslint-plugin": "6.19.0", + "@typescript-eslint/parser": "6.19.0", "rimraf": "5.0.5", "rollup": "4.9.6", - "typescript": "5.3.3", - "@typescript-eslint/eslint-plugin": "6.19.0", - "@typescript-eslint/parser": "6.19.0" + "sequelize-cli": "6.6.2", + "typescript": "5.3.3" }, "repository": { "type": "git", @@ -52,5 +55,4 @@ ], "author": "Christophe CAMENSULI ", "readmeFilename": "readme.md" - }