diff --git a/.gitignore b/.gitignore index 7684303..eceb711 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,12 @@ build/ .vscode/ .history .vscode -target \ No newline at end of file +target + +### Template Builder ### +templates-assets/templates/Mail_VerificationCodeBody/index.html +templates-assets/templates/PEC_ValidationContactsRejectBody/index.html +templates-assets/templates/PEC_ValidationContactsSuccessBody/index.html +templates-assets/templates/PEC_VerificationCodeBody/index.html +templates-assets/templates/NotificationAARForEMAIL/index.html +templates-assets/templates/NotificationAARForPEC/index.html \ No newline at end of file diff --git a/scripts/templates-builder/.gitignore b/scripts/templates-builder/.gitignore index c2658d7..f1ebb84 100644 --- a/scripts/templates-builder/.gitignore +++ b/scripts/templates-builder/.gitignore @@ -1 +1,3 @@ node_modules/ +test/mock/output/ +test/coverage/ \ No newline at end of file diff --git a/scripts/templates-builder/.nvmrc b/scripts/templates-builder/.nvmrc new file mode 100644 index 0000000..5edcff0 --- /dev/null +++ b/scripts/templates-builder/.nvmrc @@ -0,0 +1 @@ +v16 \ No newline at end of file diff --git a/scripts/templates-builder/README.md b/scripts/templates-builder/README.md new file mode 100644 index 0000000..2920483 --- /dev/null +++ b/scripts/templates-builder/README.md @@ -0,0 +1,28 @@ +# HTML Templates Generator + +## Requirements + +- Node.js v16 + +## Generate Script + +Install all the dependencies listed in the package.json file + +`npm ci` + +To generate the final templates in the output folder, run the command: + +`npm run generate` + +For debug logs: + +`npm run generate -- --debug` + +## Test + +Tests are executed using Jest (). + +`npm run test` + +The tests generate the templates in the `test/mock/output` folder starting from the test templates in the `test/mock/source` folder. +For a detailed test coverage report, open the file `test/coverage/lcov-report/index.html` in the browser. diff --git a/scripts/templates-builder/jest.config.js b/scripts/templates-builder/jest.config.js new file mode 100644 index 0000000..6c506f9 --- /dev/null +++ b/scripts/templates-builder/jest.config.js @@ -0,0 +1,7 @@ +/** @type {import('jest').Config} */ +const config = { + setupFilesAfterEnv: ["/test/setupTests.js", "jest-extended/all"], + coverageDirectory: "/test/coverage/", +}; + +module.exports = config; diff --git a/scripts/templates-builder/package-lock.json b/scripts/templates-builder/package-lock.json index 08e25ca..3b15b00 100644 --- a/scripts/templates-builder/package-lock.json +++ b/scripts/templates-builder/package-lock.json @@ -9,1719 +9,5752 @@ "version": "1.0.0", "license": "SEE LICENSE IN LICENSE", "devDependencies": { - "@eslint/js": "^9.14.0", - "chai": "^5.1.2", - "eslint": "^9.14.0", - "globals": "^15.12.0", - "mocha": "^10.8.2" + "@eslint/js": "^8.57.1", + "ejs": "^3.1.10", + "eslint": "^8.57.1", + "fs-extra": "^11.2.0", + "jest": "^29.7.0", + "jest-extended": "^4.0.2", + "mjml": "^4.15.3" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, - "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=6.0.0" } }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "node_modules/@babel/compat-data": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@eslint/config-array/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==", + "node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": "*" + "node": ">=6.9.0" } }, - "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, - "license": "Apache-2.0", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, - "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@eslint/eslintrc/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==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=6.9.0" } }, - "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, - "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, - "license": "Apache-2.0", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", - "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "levn": "^0.4.1" + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.0.0" } }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=18.18.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "license": "Apache-2.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=12.22" + "node": ">=6.9.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, - "license": "Apache-2.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18.18" + "node": ">=6.9.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "license": "MIT" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "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==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "ISC", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "regenerator-runtime": "^0.14.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, - "license": "ISC" + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, - "license": "MIT", "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "url": "https://opencollective.com/eslint" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 16" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 8.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.10.0" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "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==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "node_modules/@isaacs/cliui/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": "BSD-3-Clause", "engines": { - "node": ">=0.3.1" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "sprintf-js": "~1.0.2" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": "*" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "estraverse": "^5.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "estraverse": "^5.2.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, - "license": "ISC", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "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==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, "engines": { - "node": ">= 4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, "engines": { - "node": ">=0.8.19" + "node": ">=6.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=6.0.0" + } }, - "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==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "license": "MIT", + "optional": true, "engines": { - "node": ">=0.12.0" + "node": ">=14" } }, - "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==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "type-detect": "4.0.8" } }, - "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==", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "ISC" + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, - "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@babel/types": "^7.0.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, - "license": "MIT" + "dependencies": { + "@babel/types": "^7.20.7" + } }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/node": "*" + } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, - "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "@types/istanbul-lib-report": "*" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/@types/node": { + "version": "22.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz", + "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=6" + } }, - "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==", + "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==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "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": "MIT", "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">= 14.0.0" + "node": ">= 8" } }, - "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" + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, - "license": "MIT" + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } }, - "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==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "ISC", "dependencies": { - "wrappy": "1" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 0.8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, - "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "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==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "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, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", + "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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==", + "dev": true + }, + "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, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz", + "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dev": true, + "dependencies": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "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 + }, + "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, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-extended": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-4.0.2.tgz", + "integrity": "sha512-FH7aaPgtGYHc9mRjriS0ZEHYM5/W69tLrFTIdzm+yJgeoCmmrSB/luSfMSqWP9O29QWHPEmJ4qmU6EwsZideog==", + "dev": true, + "dependencies": { + "jest-diff": "^29.0.0", + "jest-get-type": "^29.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "jest": ">=27.2.5" + }, + "peerDependenciesMeta": { + "jest": { + "optional": true + } + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "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 + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/juice": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/juice/-/juice-10.0.1.tgz", + "integrity": "sha512-ZhJT1soxJCkOiO55/mz8yeBKTAJhRzX9WBO+16ZTqNTONnnVlUPyVBIzQ7lDRjaBdTbid+bAnyIon/GM3yp4cA==", + "dev": true, + "dependencies": { + "cheerio": "1.0.0-rc.12", + "commander": "^6.1.0", + "mensch": "^0.3.4", + "slick": "^1.12.2", + "web-resource-inliner": "^6.0.1" + }, + "bin": { + "juice": "bin/juice" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/juice/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mensch": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz", + "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mjml": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml/-/mjml-4.15.3.tgz", + "integrity": "sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "mjml-cli": "4.15.3", + "mjml-core": "4.15.3", + "mjml-migrate": "4.15.3", + "mjml-preset-core": "4.15.3", + "mjml-validator": "4.15.3" + }, + "bin": { + "mjml": "bin/mjml" + } + }, + "node_modules/mjml-accordion": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-accordion/-/mjml-accordion-4.15.3.tgz", + "integrity": "sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-body": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-body/-/mjml-body-4.15.3.tgz", + "integrity": "sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-button": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-button/-/mjml-button-4.15.3.tgz", + "integrity": "sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-carousel": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-carousel/-/mjml-carousel-4.15.3.tgz", + "integrity": "sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-cli": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-cli/-/mjml-cli-4.15.3.tgz", + "integrity": "sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "chokidar": "^3.0.0", + "glob": "^10.3.10", + "html-minifier": "^4.0.0", + "js-beautify": "^1.6.14", + "lodash": "^4.17.21", + "minimatch": "^9.0.3", + "mjml-core": "4.15.3", + "mjml-migrate": "4.15.3", + "mjml-parser-xml": "4.15.3", + "mjml-validator": "4.15.3", + "yargs": "^17.7.2" + }, + "bin": { + "mjml-cli": "bin/mjml" + } + }, + "node_modules/mjml-cli/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mjml-cli/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mjml-cli/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mjml-column": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-column/-/mjml-column-4.15.3.tgz", + "integrity": "sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-core": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-core/-/mjml-core-4.15.3.tgz", + "integrity": "sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "cheerio": "1.0.0-rc.12", + "detect-node": "^2.0.4", + "html-minifier": "^4.0.0", + "js-beautify": "^1.6.14", + "juice": "^10.0.0", + "lodash": "^4.17.21", + "mjml-migrate": "4.15.3", + "mjml-parser-xml": "4.15.3", + "mjml-validator": "4.15.3" + } + }, + "node_modules/mjml-divider": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-divider/-/mjml-divider-4.15.3.tgz", + "integrity": "sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-group": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-group/-/mjml-group-4.15.3.tgz", + "integrity": "sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head/-/mjml-head-4.15.3.tgz", + "integrity": "sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-attributes": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-attributes/-/mjml-head-attributes-4.15.3.tgz", + "integrity": "sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-breakpoint": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-breakpoint/-/mjml-head-breakpoint-4.15.3.tgz", + "integrity": "sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-font": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-font/-/mjml-head-font-4.15.3.tgz", + "integrity": "sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-html-attributes": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-html-attributes/-/mjml-head-html-attributes-4.15.3.tgz", + "integrity": "sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-preview": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-preview/-/mjml-head-preview-4.15.3.tgz", + "integrity": "sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-style": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-style/-/mjml-head-style-4.15.3.tgz", + "integrity": "sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-head-title": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-head-title/-/mjml-head-title-4.15.3.tgz", + "integrity": "sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-hero": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-hero/-/mjml-hero-4.15.3.tgz", + "integrity": "sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-image": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-image/-/mjml-image-4.15.3.tgz", + "integrity": "sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-migrate": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-migrate/-/mjml-migrate-4.15.3.tgz", + "integrity": "sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "js-beautify": "^1.6.14", + "lodash": "^4.17.21", + "mjml-core": "4.15.3", + "mjml-parser-xml": "4.15.3", + "yargs": "^17.7.2" + }, + "bin": { + "migrate": "lib/cli.js" + } + }, + "node_modules/mjml-navbar": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-navbar/-/mjml-navbar-4.15.3.tgz", + "integrity": "sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-parser-xml": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-parser-xml/-/mjml-parser-xml-4.15.3.tgz", + "integrity": "sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "detect-node": "2.1.0", + "htmlparser2": "^9.1.0", + "lodash": "^4.17.15" + } + }, + "node_modules/mjml-parser-xml/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/mjml-preset-core": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-preset-core/-/mjml-preset-core-4.15.3.tgz", + "integrity": "sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "mjml-accordion": "4.15.3", + "mjml-body": "4.15.3", + "mjml-button": "4.15.3", + "mjml-carousel": "4.15.3", + "mjml-column": "4.15.3", + "mjml-divider": "4.15.3", + "mjml-group": "4.15.3", + "mjml-head": "4.15.3", + "mjml-head-attributes": "4.15.3", + "mjml-head-breakpoint": "4.15.3", + "mjml-head-font": "4.15.3", + "mjml-head-html-attributes": "4.15.3", + "mjml-head-preview": "4.15.3", + "mjml-head-style": "4.15.3", + "mjml-head-title": "4.15.3", + "mjml-hero": "4.15.3", + "mjml-image": "4.15.3", + "mjml-navbar": "4.15.3", + "mjml-raw": "4.15.3", + "mjml-section": "4.15.3", + "mjml-social": "4.15.3", + "mjml-spacer": "4.15.3", + "mjml-table": "4.15.3", + "mjml-text": "4.15.3", + "mjml-wrapper": "4.15.3" + } + }, + "node_modules/mjml-raw": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-raw/-/mjml-raw-4.15.3.tgz", + "integrity": "sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-section": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-section/-/mjml-section-4.15.3.tgz", + "integrity": "sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-social": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-social/-/mjml-social-4.15.3.tgz", + "integrity": "sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-spacer": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-spacer/-/mjml-spacer-4.15.3.tgz", + "integrity": "sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-table": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-table/-/mjml-table-4.15.3.tgz", + "integrity": "sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-text": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-text/-/mjml-text-4.15.3.tgz", + "integrity": "sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3" + } + }, + "node_modules/mjml-validator": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-validator/-/mjml-validator-4.15.3.tgz", + "integrity": "sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9" + } + }, + "node_modules/mjml-wrapper": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/mjml-wrapper/-/mjml-wrapper-4.15.3.tgz", + "integrity": "sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "lodash": "^4.17.21", + "mjml-core": "4.15.3", + "mjml-section": "4.15.3" + } + }, + "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 + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slick": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz", + "integrity": "sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/path-exists": { + "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-key": { + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 14.16" + "node": ">=8" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "MIT", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8.0" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "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", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">=4" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "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==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, - "license": "MIT", + "bin": { + "uglifyjs": "bin/uglifyjs" + }, "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "github", + "url": "https://github.com/sponsors/ai" } ], - "license": "MIT" + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "randombytes": "^2.1.0" + "punycode": "^2.1.0" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, - "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.12.0" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/valid-data-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz", + "integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" } }, - "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==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "makeerror": "1.0.12" } }, - "node_modules/strip-ansi": { + "node_modules/web-resource-inliner": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz", + "integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-colors": "^4.1.1", + "escape-goat": "^3.0.0", + "htmlparser2": "^5.0.0", + "mime": "^2.4.6", + "node-fetch": "^2.6.0", + "valid-data-url": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/web-resource-inliner/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/web-resource-inliner/node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "MIT", + "dependencies": { + "domelementtype": "^2.2.0" + }, "engines": { - "node": ">=8" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "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==", + "node_modules/web-resource-inliner/node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", "dev": true, - "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "domelementtype": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">= 4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "node_modules/web-resource-inliner/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "MIT" + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=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", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/web-resource-inliner/node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=8.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/web-resource-inliner/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/web-resource-inliner/node_modules/htmlparser2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", + "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", "dev": true, - "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "domelementtype": "^2.0.1", + "domhandler": "^3.3.0", + "domutils": "^2.4.2", + "entities": "^2.0.0" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "url": "https://github.com/fb55/htmlparser2?sponsor=1" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "punycode": "^2.1.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which": { @@ -1729,7 +5762,6 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1745,24 +5777,33 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "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": "Apache-2.0" + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } }, - "node_modules/wrap-ansi": { + "node_modules/wrap-ansi-cjs": { + "name": "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": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1779,62 +5820,61 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC" + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "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==", + "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": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yocto-queue": { @@ -1842,7 +5882,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, diff --git a/scripts/templates-builder/package.json b/scripts/templates-builder/package.json index b418383..10121ca 100644 --- a/scripts/templates-builder/package.json +++ b/scripts/templates-builder/package.json @@ -2,19 +2,23 @@ "name": "templates-builder", "version": "1.0.0", "main": "src/index.js", - "type": "module", "scripts": { - "build": "node src/index.js", - "test": "mocha" + "generate": "node src/index.js", + "test": "jest -i --verbose --coverage" }, "author": "", "license": "SEE LICENSE IN LICENSE", "description": "", + "engines": { + "node": "16.x" + }, "devDependencies": { - "@eslint/js": "^9.14.0", - "chai": "^5.1.2", - "eslint": "^9.14.0", - "globals": "^15.12.0", - "mocha": "^10.8.2" + "@eslint/js": "^8.57.1", + "ejs": "^3.1.10", + "eslint": "^8.57.1", + "fs-extra": "^11.2.0", + "jest": "^29.7.0", + "jest-extended": "^4.0.2", + "mjml": "^4.15.3" } } diff --git a/scripts/templates-builder/src/buildMjml.js b/scripts/templates-builder/src/buildMjml.js new file mode 100644 index 0000000..13dc6b8 --- /dev/null +++ b/scripts/templates-builder/src/buildMjml.js @@ -0,0 +1,43 @@ +const path = require("node:path"); +const fs = require("fs-extra"); +const util = require("node:util"); +const { BASE_SOURCE_DIR } = require("./utils"); +const log = require("./logger"); +const execFile = util.promisify(require("node:child_process").execFile); + +const templatesDir = path.join(BASE_SOURCE_DIR, "templates"); + +async function processMJMLFiles(dir) { + try { + const entries = await fs.readdir(dir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory() && entry.name !== "partials") { + await processMJMLFiles(fullPath); + continue; + } + + if (entry.isFile() && entry.name === "index.mjml") { + const outputFile = path.join(dir, "index.html"); + + log.debug(`Processing ${fullPath}`); + await execFile("npx", ["mjml", fullPath, "-o", outputFile]); + } + } + } catch (err) { + log.error(err); + throw new Error("Error processing mjml"); + } +} + +async function buildMjml() { + log.info("...building email templates"); + + await processMJMLFiles(templatesDir); + + log.info("Email templates built!"); +} + +module.exports = buildMjml; diff --git a/scripts/templates-builder/src/copyAssets.js b/scripts/templates-builder/src/copyAssets.js new file mode 100644 index 0000000..7cc3ba1 --- /dev/null +++ b/scripts/templates-builder/src/copyAssets.js @@ -0,0 +1,25 @@ +const fs = require("fs-extra"); +const path = require("node:path"); +const { BASE_SOURCE_DIR, BASE_OUTPUT_DIR } = require("./utils"); +const log = require("./logger"); + +async function copyAssets() { + log.info("...copying assets folder"); + + try { + const fontDir = path.join(BASE_SOURCE_DIR, "fonts"); + const imagesDir = path.join(BASE_SOURCE_DIR, "images"); + const stylesDir = path.join(BASE_SOURCE_DIR, "styles"); + + await fs.copy(fontDir, path.join(BASE_OUTPUT_DIR, "fonts")); + await fs.copy(imagesDir, path.join(BASE_OUTPUT_DIR, "images")); + await fs.copy(stylesDir, path.join(BASE_OUTPUT_DIR, "styles")); + + log.info("Assets copied!"); + } catch (err) { + log.error(err); + throw new Error("Error copying assets"); + } +} + +module.exports = copyAssets; diff --git a/scripts/templates-builder/src/generateHtmlTemplates.js b/scripts/templates-builder/src/generateHtmlTemplates.js new file mode 100644 index 0000000..b38fd28 --- /dev/null +++ b/scripts/templates-builder/src/generateHtmlTemplates.js @@ -0,0 +1,136 @@ +const path = require("node:path"); +const ejs = require("ejs"); +const fs = require("fs-extra"); +const { + BASE_SOURCE_DIR, + loadTranslations, + BASE_OUTPUT_DIR, + getOutputFileName, +} = require("./utils"); +const log = require("./logger"); + +const templatesDir = path.join(BASE_SOURCE_DIR, "templates"); + +async function generateHtmlTemplate() { + log.info("...generating html templates"); + + try { + // clear the output directory + await fs.emptyDir(path.join(BASE_OUTPUT_DIR, "templates")); + + const entries = await fs.readdir(templatesDir, { withFileTypes: true }); + + for (const entry of entries) { + const templateName = entry.name; + + if (!entry.isDirectory() || entry.name === "partials") { + continue; + } + + const templateDir = path.join(templatesDir, templateName); + + // Copy index.txt if exists + if (fs.pathExistsSync(path.join(templateDir, "index.txt"))) { + const outputFile = path.join( + BASE_OUTPUT_DIR, + "templates", + templateName, + `${templateName}.txt` + ); + + log.debug(`Writing ${outputFile}`); + await fs.copy(path.join(templateDir, "index.txt"), outputFile); + continue; + } + + if (!fs.pathExistsSync(path.join(templateDir, "index.html"))) { + continue; + } + + const i18nDir = path.join(templateDir, "i18n"); + + const templateContent = await fs.readFile( + path.join(templateDir, "index.html"), + "utf8" + ); + + const hasLanguages = fs.existsSync(i18nDir); + + if (!hasLanguages) { + const outputFileName = getOutputFileName(templateName); + await renderAndWriteFile({ + templateName, + fileName: outputFileName, + content: templateContent, + }); + continue; + } + + const languages = (await fs.readdir(i18nDir)).map( + (entry) => entry.split(".")[0] + ); + + for (const lang of languages) { + const outputFileName = getOutputFileName(templateName, lang); + + // if it template exists, use it + if ( + lang === "it" && + fs.existsSync(path.join(templateDir, "index_it.html")) + ) { + const langContent = await fs.readFile( + path.join(templateDir, "index_it.html"), + "utf8" + ); + await renderAndWriteFile({ + templateName, + fileName: outputFileName, + content: langContent, + }); + continue; + } + + const translations = await loadTranslations(lang, templateDir); + + await renderAndWriteFile({ + templateName, + fileName: outputFileName, + content: templateContent, + renderData: { + ...translations, + noIta: lang !== "it", + }, + }); + } + } + + log.info("Html templates generated!"); + } catch (err) { + log.error(err); + throw new Error("Error generating html templates"); + } +} + +/** + * Render the template and write the output file + * @param {object} renderData: [OPTIONAL] data render ejs + */ +async function renderAndWriteFile({ + templateName, + fileName, + content, + renderData, +}) { + const outputFileName = fileName; + + const outputDir = path.join(BASE_OUTPUT_DIR, "templates", templateName); + await fs.ensureDir(outputDir); + + const outputFile = path.join(outputDir, `${outputFileName}.html`); + + log.debug(`Writing ${outputFile}`); + const renderedContent = ejs.render(content, renderData || {}); + await fs.writeFile(outputFile, renderedContent, "utf8"); +} + +module.exports = generateHtmlTemplate; diff --git a/scripts/templates-builder/src/index.js b/scripts/templates-builder/src/index.js index ad86b2e..c559c2a 100644 --- a/scripts/templates-builder/src/index.js +++ b/scripts/templates-builder/src/index.js @@ -1 +1,11 @@ -console.log("hello"); \ No newline at end of file +const build = require("./script"); +const log = require("./logger"); + +build() + .then(() => { + log.info("Build completed successfully!"); + }) + .catch((err) => { + log.error(err); + process.exit(1); + }); diff --git a/scripts/templates-builder/src/logger.js b/scripts/templates-builder/src/logger.js new file mode 100644 index 0000000..a2d4cff --- /dev/null +++ b/scripts/templates-builder/src/logger.js @@ -0,0 +1,27 @@ +const testing = process.env.NODE_ENV === "test"; +const debug = process.argv.includes("--debug"); + +const logger = { + error: (message) => { + if (testing) { + return; + } + console.error(`[ERROR] ${message}`); + }, + info: (message) => { + if (testing) { + return; + } + console.info(`[INFO] ${message}`); + }, + debug: (message) => { + if (testing) { + return; + } + if (debug) { + console.debug(`[DEBUG] ${message}`); + } + }, +}; + +module.exports = logger; diff --git a/scripts/templates-builder/src/script.js b/scripts/templates-builder/src/script.js new file mode 100644 index 0000000..5bbffb8 --- /dev/null +++ b/scripts/templates-builder/src/script.js @@ -0,0 +1,11 @@ +const buildMjml = require("./buildMjml.js"); +const copyAssets = require("./copyAssets.js"); +const generateHtmlTemplate = require("./generateHtmlTemplates.js"); + +async function build() { + await copyAssets(); + await buildMjml(); + await generateHtmlTemplate(); +} + +module.exports = build; \ No newline at end of file diff --git a/scripts/templates-builder/src/utils.js b/scripts/templates-builder/src/utils.js new file mode 100644 index 0000000..b9e9510 --- /dev/null +++ b/scripts/templates-builder/src/utils.js @@ -0,0 +1,32 @@ +const path = require("node:path"); +const fs = require("fs-extra"); + +const BASE_SOURCE_DIR = path.join(__dirname, "../../../templates-assets"); +const BASE_OUTPUT_DIR = path.join( + __dirname, + "../../../target/generated-templates-assets" +); + +async function loadTranslations(language, templateDir) { + const lngFile = path.join(templateDir, "i18n", `${language}.json`); + const itaFile = path.join(templateDir, "i18n", `it.json`); + + const lngContent = await fs.readJson(lngFile); + const itaContent = await fs.readJson(itaFile); + + return { ...itaContent, ...lngContent }; +} + +function getOutputFileName(templateName, language) { + if (!language || language === "it") { + return templateName; + } + return `${templateName}_${language}`; +} + +module.exports = { + BASE_SOURCE_DIR, + BASE_OUTPUT_DIR, + loadTranslations, + getOutputFileName, +}; diff --git a/scripts/templates-builder/test/buildMjml.test.js b/scripts/templates-builder/test/buildMjml.test.js new file mode 100644 index 0000000..6aff929 --- /dev/null +++ b/scripts/templates-builder/test/buildMjml.test.js @@ -0,0 +1,52 @@ +const path = require("node:path"); +const { BASE_SOURCE_DIR } = require("../src/utils"); +const buildMjml = require("../src/buildMjml"); +const fs = require("fs-extra"); + +describe("processMJMLFiles", () => { + beforeAll(async () => { + await buildMjml(); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + + it("should process MJML files and generate correct index.html", async () => { + const indexHtml = path.join( + BASE_SOURCE_DIR, + "templates/TemplateTestEmail", + "index.html" + ); + + // Check if the generated index.html file contains the expected content + const indexHtmlContent = fs.readFileSync(indexHtml, "utf8"); + expect(indexHtmlContent).toContain(""); + expect(indexHtmlContent).toContain("Title template email"); + expect(indexHtmlContent).toContain("

Paragraph template email

"); + }); + + it("should skip processing 'partials' directories", async () => { + const partialsHtml = path.join( + BASE_SOURCE_DIR, + "templates", + "partials.html" + ); + + const partialsHtmlExists = await fs.pathExists(partialsHtml); + expect(partialsHtmlExists).toEqual(false); + }); + + it("should throw an error if fs.readdir fails", async () => { + jest.spyOn(fs, "readdir").mockImplementationOnce(() => { + throw new Error("Mocked error"); + }); + + await expect(buildMjml()).rejects.toThrow( + "Error processing mjml" + ); + + fs.readdir.mockRestore(); + }); +}); \ No newline at end of file diff --git a/scripts/templates-builder/test/copyAssets.test.js b/scripts/templates-builder/test/copyAssets.test.js new file mode 100644 index 0000000..3dab795 --- /dev/null +++ b/scripts/templates-builder/test/copyAssets.test.js @@ -0,0 +1,40 @@ +const copyAssets = require("../src/copyAssets"); +const fs = require("fs-extra"); +const path = require("node:path"); +const { BASE_OUTPUT_DIR } = require("../src/utils"); + +const clearOutputAssets = () => { + fs.emptyDirSync(path.join(BASE_OUTPUT_DIR, "fonts")); + fs.emptyDirSync(path.join(BASE_OUTPUT_DIR, "styles")); + fs.emptyDirSync(path.join(BASE_OUTPUT_DIR, "images")); +}; + +describe("copyAssets", () => { + beforeAll(async () => { + clearOutputAssets(); + await copyAssets(); + }); + + it.each([["fonts"], ["images"], ["styles"]])( + "should copy assets %s with all files", + async (assetPath) => { + const assetExists = await fs.pathExists( + path.join(BASE_OUTPUT_DIR, assetPath) + ); + + const files = await fs.readdir(path.join(BASE_OUTPUT_DIR, assetPath)); + expect(files.length).toBeGreaterThan(0); + + expect(assetExists).toEqual(true); + } + ); + + it("should throw an error if copying fails", async () => { + const copySpy = jest.spyOn(fs, "copy").mockImplementation(() => { + throw new Error("Copy failed"); + }); + + await expect(copyAssets()).rejects.toThrow("Error copying assets"); + copySpy.mockRestore(); + }); +}); \ No newline at end of file diff --git a/scripts/templates-builder/test/generateHtmlTemplates.test.js b/scripts/templates-builder/test/generateHtmlTemplates.test.js new file mode 100644 index 0000000..d6373ab --- /dev/null +++ b/scripts/templates-builder/test/generateHtmlTemplates.test.js @@ -0,0 +1,128 @@ +const generateHtmlTemplates = require("../src/generateHtmlTemplates"); +const fs = require("fs-extra"); +const path = require("node:path"); +const { BASE_OUTPUT_DIR } = require("../src/utils"); + +const clearOutputTemplates = () => { + fs.emptyDirSync(path.join(BASE_OUTPUT_DIR, "templates")); +}; + +describe("generateHtmlTemplates", () => { + beforeAll(async () => { + clearOutputTemplates(); + await generateHtmlTemplates(); + }); + + it("should generate html templates WITHOUT additional languages", async () => { + const htmlPath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestEmail", + "TemplateTestEmail.html" + ); + + expect(fs.pathExistsSync(htmlPath)).toEqual(true); + + const indexHtmlContent = await fs.readFile(htmlPath, "utf8"); + expect(indexHtmlContent).toContain("Title template email"); + expect(indexHtmlContent).toContain("

Paragraph template email

"); + }); + + it("should generate html templates WITH additional languages", async () => { + // IT + const itPath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestI18n", + "TemplateTestI18n.html" + ); + + expect(fs.pathExistsSync(itPath)).toEqual(true); + + const itHtmlContent = await fs.readFile(itPath, "utf8"); + expect(itHtmlContent).toContain("Titolo"); + expect(itHtmlContent).toContain("

Corpo

"); + + // DE + const dePath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestI18n", + "TemplateTestI18n_de.html" + ); + + expect(fs.pathExistsSync(dePath)).toEqual(true); + + const deHtmlContent = await fs.readFile(dePath, "utf8"); + expect(deHtmlContent).toContain("Titel • Titolo"); + expect(deHtmlContent).toContain("

Körper • Corpo

"); + + // FR + const frPath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestI18n", + "TemplateTestI18n_fr.html" + ); + + expect(fs.pathExistsSync(frPath)).toEqual(true); + + const frHtmlContent = await fs.readFile(frPath, "utf8"); + expect(frHtmlContent).toContain("Titre • Titolo"); + expect(frHtmlContent).toContain("

Corps • Corpo

"); + }); + + it("should generate html templates WITH additional languages and specific for it", async () => { + const itPath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestI18nWithIt", + "TemplateTestI18nWithIt.html" + ); + + expect(fs.pathExistsSync(itPath)).toEqual(true); + + const itHtmlContent = await fs.readFile(itPath, "utf8"); + expect(itHtmlContent).toContain("Il mio titolo diverso"); + expect(itHtmlContent).toContain("

Il mio body diverso

"); + + const dePath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestI18nWithIt", + "TemplateTestI18nWithIt_de.html" + ); + + expect(fs.pathExistsSync(dePath)).toEqual(true); + + const deHtmlContent = await fs.readFile(dePath, "utf8"); + expect(deHtmlContent).toContain("Titel • Titolo"); + expect(deHtmlContent).toContain("

Körper • Corpo

"); + }); + + it("should generate template from .txt file", async () => { + const htmlPath = path.join( + BASE_OUTPUT_DIR, + "templates", + "TemplateTestTxt", + "TemplateTestTxt.txt" + ); + + expect(fs.pathExistsSync(htmlPath)).toEqual(true); + + const indexHtmlContent = await fs.readFile(htmlPath, "utf8"); + expect(indexHtmlContent).toContain("only test in .txt"); + }); + + it("should throw an error if fs.readdir fails", async () => { + jest.spyOn(fs, "readdir").mockImplementationOnce(() => { + throw new Error("Mocked error"); + }); + + await expect(generateHtmlTemplates()).rejects.toThrow( + "Error generating html templates" + ); + + fs.readdir.mockRestore(); + }); +}); \ No newline at end of file diff --git a/scripts/templates-builder/test/index.test.js b/scripts/templates-builder/test/index.test.js deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/templates-builder/test/mock/source/fonts/TitilliumSansPro-Regular.ttf b/scripts/templates-builder/test/mock/source/fonts/TitilliumSansPro-Regular.ttf new file mode 100644 index 0000000..216b314 Binary files /dev/null and b/scripts/templates-builder/test/mock/source/fonts/TitilliumSansPro-Regular.ttf differ diff --git a/scripts/templates-builder/test/mock/source/images/pn-logo-header.png b/scripts/templates-builder/test/mock/source/images/pn-logo-header.png new file mode 100644 index 0000000..671a8c3 Binary files /dev/null and b/scripts/templates-builder/test/mock/source/images/pn-logo-header.png differ diff --git a/scripts/templates-builder/test/mock/source/styles/index.css b/scripts/templates-builder/test/mock/source/styles/index.css new file mode 100644 index 0000000..b719c60 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/styles/index.css @@ -0,0 +1,3 @@ +body { + color: red; +} \ No newline at end of file diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestEmail/index.html b/scripts/templates-builder/test/mock/source/templates/TemplateTestEmail/index.html new file mode 100644 index 0000000..a2f2497 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestEmail/index.html @@ -0,0 +1,77 @@ + + + + + Title template email + + + + + + + + + + + + + + + +
+
+

Paragraph template email

+
+
+ + + diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestEmail/index.mjml b/scripts/templates-builder/test/mock/source/templates/TemplateTestEmail/index.mjml new file mode 100644 index 0000000..89db899 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestEmail/index.mjml @@ -0,0 +1,11 @@ + + + Title template email + + + + +

Paragraph template email

+
+
+
diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/de.json b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/de.json new file mode 100644 index 0000000..2201a96 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/de.json @@ -0,0 +1,4 @@ +{ + "title": "Titel", + "body": "Körper" +} diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/fr.json b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/fr.json new file mode 100644 index 0000000..11af573 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/fr.json @@ -0,0 +1,4 @@ +{ + "title": "Titre", + "body": "Corps" +} diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/it.json b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/it.json new file mode 100644 index 0000000..763dc35 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/i18n/it.json @@ -0,0 +1,4 @@ +{ + "it_title": "Titolo", + "it_body": "Corpo" +} diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/index.html b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/index.html new file mode 100644 index 0000000..10c54cc --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18n/index.html @@ -0,0 +1,17 @@ + + + + + <% if (noIta) { %><%-title%> • <% } %><%-it_title%> + + + +
+
+

<% if (noIta) { %><%-body%> • <% } %><%-it_body%>

+
+
+ + + \ No newline at end of file diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/i18n/de.json b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/i18n/de.json new file mode 100644 index 0000000..2201a96 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/i18n/de.json @@ -0,0 +1,4 @@ +{ + "title": "Titel", + "body": "Körper" +} diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/i18n/it.json b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/i18n/it.json new file mode 100644 index 0000000..763dc35 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/i18n/it.json @@ -0,0 +1,4 @@ +{ + "it_title": "Titolo", + "it_body": "Corpo" +} diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/index.html b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/index.html new file mode 100644 index 0000000..7aef653 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/index.html @@ -0,0 +1,16 @@ + + + + + <% if (noIta) { %><%-title%> • <% } %><%-it_title%> + + + +
+
+

<% if (noIta) { %><%-body%> • <% } %><%-it_body%>

+
+
+ + + diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/index_it.html b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/index_it.html new file mode 100644 index 0000000..62eddd2 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestI18nWithIt/index_it.html @@ -0,0 +1,16 @@ + + + + + Il mio titolo diverso + + + +
+
+

Il mio body diverso

+
+
+ + + diff --git a/scripts/templates-builder/test/mock/source/templates/TemplateTestTxt/index.txt b/scripts/templates-builder/test/mock/source/templates/TemplateTestTxt/index.txt new file mode 100644 index 0000000..3662d68 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/TemplateTestTxt/index.txt @@ -0,0 +1 @@ +only test in .txt \ No newline at end of file diff --git a/scripts/templates-builder/test/mock/source/templates/partials/logo.mjml b/scripts/templates-builder/test/mock/source/templates/partials/logo.mjml new file mode 100644 index 0000000..a9d3736 --- /dev/null +++ b/scripts/templates-builder/test/mock/source/templates/partials/logo.mjml @@ -0,0 +1,5 @@ + + + logo partials + + diff --git a/scripts/templates-builder/test/script.test.js b/scripts/templates-builder/test/script.test.js new file mode 100644 index 0000000..d51d9ef --- /dev/null +++ b/scripts/templates-builder/test/script.test.js @@ -0,0 +1,25 @@ +const build = require("../src/script"); +const buildMjml = require("../src/buildMjml"); +const copyAssets = require("../src/copyAssets"); +const generateHtmlTemplate = require("../src/generateHtmlTemplates"); + +jest.mock("./../src/buildMjml"); +jest.mock("./../src/copyAssets"); +jest.mock("./../src/generateHtmlTemplates"); + +describe("build", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should execute copyAssets, buildMjml, and generateHtmlTemplate in order", async () => { + await build(); + + expect(copyAssets).toHaveBeenCalledTimes(1); + expect(buildMjml).toHaveBeenCalledTimes(1); + expect(generateHtmlTemplate).toHaveBeenCalledTimes(1); + + expect(copyAssets).toHaveBeenCalledBefore(buildMjml); + expect(buildMjml).toHaveBeenCalledBefore(generateHtmlTemplate); + }); +}); \ No newline at end of file diff --git a/scripts/templates-builder/test/setupTests.js b/scripts/templates-builder/test/setupTests.js new file mode 100644 index 0000000..74b5f02 --- /dev/null +++ b/scripts/templates-builder/test/setupTests.js @@ -0,0 +1,8 @@ +const path = require("node:path"); +const utils = require("../src/utils"); + +const MOCK_OUTPUT_DIR = path.join(__dirname, "./mock/output"); +const MOCK_SOURCE_DIR = path.join(__dirname, "./mock/source"); + +jest.replaceProperty(utils, "BASE_SOURCE_DIR", MOCK_SOURCE_DIR); +jest.replaceProperty(utils, "BASE_OUTPUT_DIR", MOCK_OUTPUT_DIR); \ No newline at end of file diff --git a/scripts/templates-builder/test/utils.test.js b/scripts/templates-builder/test/utils.test.js new file mode 100644 index 0000000..d3b1b7c --- /dev/null +++ b/scripts/templates-builder/test/utils.test.js @@ -0,0 +1,42 @@ +const path = require("node:path"); +const { + getOutputFileName, + loadTranslations, + BASE_SOURCE_DIR, +} = require("../src/utils"); + +describe("getOutputFileName", () => { + it.each([ + ["TestTemplateName", undefined, "TestTemplateName"], + ["TestTemplateName", "it", "TestTemplateName"], + ["TestTemplateName", "en", "TestTemplateName_en"], + ["TestTemplateName", "fr", "TestTemplateName_fr"], + ])( + "should return the correct output file name for template %s with language %s", + (templateName, lang, expected) => { + expect(getOutputFileName(templateName, lang)).toBe(expected); + } + ); +}); + +describe("loadTranslations", () => { + it.each([ + [ + "de", + { it_title: "Titolo", it_body: "Corpo", title: "Titel", body: "Körper" }, + ], + [ + "fr", + { it_title: "Titolo", it_body: "Corpo", title: "Titre", body: "Corps" }, + ], + ])( + "should return right translations for a folder template for language %s", + async (lang, expectedTranslations) => { + const translations = await loadTranslations( + lang, + path.join(BASE_SOURCE_DIR, "templates", "TemplateTestI18n") + ); + expect(translations).toEqual(expectedTranslations); + } + ); +}); diff --git a/templates-assets/fonts/Montserrat/Montserrat-Italic-VariableFont_wght.ttf b/templates-assets/fonts/Montserrat/Montserrat-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..b6ac9f5 Binary files /dev/null and b/templates-assets/fonts/Montserrat/Montserrat-Italic-VariableFont_wght.ttf differ diff --git a/templates-assets/fonts/Montserrat/Montserrat-VariableFont_wght.ttf b/templates-assets/fonts/Montserrat/Montserrat-VariableFont_wght.ttf new file mode 100644 index 0000000..f0b2cb3 Binary files /dev/null and b/templates-assets/fonts/Montserrat/Montserrat-VariableFont_wght.ttf differ diff --git a/templates-assets/fonts/Montserrat/OFL.txt b/templates-assets/fonts/Montserrat/OFL.txt new file mode 100644 index 0000000..f435ed8 --- /dev/null +++ b/templates-assets/fonts/Montserrat/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/templates-assets/fonts/Montserrat/README.txt b/templates-assets/fonts/Montserrat/README.txt new file mode 100644 index 0000000..d1055c8 --- /dev/null +++ b/templates-assets/fonts/Montserrat/README.txt @@ -0,0 +1,81 @@ +Montserrat Variable Font +======================== + +This download contains Montserrat as both variable fonts and static fonts. + +Montserrat is a variable font with this axis: + wght + +This means all the styles are contained in these files: + Montserrat-VariableFont_wght.ttf + Montserrat-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Montserrat: + static/Montserrat-Thin.ttf + static/Montserrat-ExtraLight.ttf + static/Montserrat-Light.ttf + static/Montserrat-Regular.ttf + static/Montserrat-Medium.ttf + static/Montserrat-SemiBold.ttf + static/Montserrat-Bold.ttf + static/Montserrat-ExtraBold.ttf + static/Montserrat-Black.ttf + static/Montserrat-ThinItalic.ttf + static/Montserrat-ExtraLightItalic.ttf + static/Montserrat-LightItalic.ttf + static/Montserrat-Italic.ttf + static/Montserrat-MediumItalic.ttf + static/Montserrat-SemiBoldItalic.ttf + static/Montserrat-BoldItalic.ttf + static/Montserrat-ExtraBoldItalic.ttf + static/Montserrat-BlackItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects - print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Black.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Black.ttf new file mode 100644 index 0000000..93b8bab Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Black.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-BlackItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-BlackItalic.ttf new file mode 100644 index 0000000..438630e Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-BlackItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Bold.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Bold.ttf new file mode 100644 index 0000000..55e0b1a Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Bold.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-BoldItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-BoldItalic.ttf new file mode 100644 index 0000000..6b4541d Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-BoldItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-ExtraBold.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraBold.ttf new file mode 100644 index 0000000..7b4f267 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraBold.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-ExtraBoldItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraBoldItalic.ttf new file mode 100644 index 0000000..66ccd46 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraBoldItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-ExtraLight.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraLight.ttf new file mode 100644 index 0000000..532cbb5 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraLight.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-ExtraLightItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraLightItalic.ttf new file mode 100644 index 0000000..150591a Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-ExtraLightItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Italic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Italic.ttf new file mode 100644 index 0000000..be99e1c Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Italic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Light.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Light.ttf new file mode 100644 index 0000000..2c91484 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Light.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-LightItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-LightItalic.ttf new file mode 100644 index 0000000..7082e03 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-LightItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Medium.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Medium.ttf new file mode 100644 index 0000000..0f0fd1d Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Medium.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-MediumItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-MediumItalic.ttf new file mode 100644 index 0000000..5bd6dd2 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-MediumItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Regular.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Regular.ttf new file mode 100644 index 0000000..1cd0259 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Regular.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-SemiBold.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-SemiBold.ttf new file mode 100644 index 0000000..ccaba1a Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-SemiBold.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-SemiBoldItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-SemiBoldItalic.ttf new file mode 100644 index 0000000..b8278b9 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-SemiBoldItalic.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-Thin.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-Thin.ttf new file mode 100644 index 0000000..a6d0321 Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-Thin.ttf differ diff --git a/templates-assets/fonts/Montserrat/static/Montserrat-ThinItalic.ttf b/templates-assets/fonts/Montserrat/static/Montserrat-ThinItalic.ttf new file mode 100644 index 0000000..585c82b Binary files /dev/null and b/templates-assets/fonts/Montserrat/static/Montserrat-ThinItalic.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Black.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Black.ttf new file mode 100644 index 0000000..c84a53b Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Black.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-BlackItalic.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-BlackItalic.ttf new file mode 100644 index 0000000..f415d61 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-BlackItalic.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Bold.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Bold.ttf new file mode 100644 index 0000000..6a89db1 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Bold.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-BoldItalic.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-BoldItalic.ttf new file mode 100644 index 0000000..a67a7a4 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-BoldItalic.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Italic.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Italic.ttf new file mode 100644 index 0000000..cfa5967 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Italic.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Light.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Light.ttf new file mode 100644 index 0000000..345ae8d Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Light.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-LightItalic.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-LightItalic.ttf new file mode 100644 index 0000000..414e4a3 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-LightItalic.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Regular.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Regular.ttf new file mode 100644 index 0000000..216b314 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Regular.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Semibold.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Semibold.ttf new file mode 100644 index 0000000..a4bba11 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Semibold.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-SemiboldItalic.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-SemiboldItalic.ttf new file mode 100644 index 0000000..d7af1c6 Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-SemiboldItalic.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Thin.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Thin.ttf new file mode 100644 index 0000000..5a445fc Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-Thin.ttf differ diff --git a/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-ThinItalic.ttf b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-ThinItalic.ttf new file mode 100644 index 0000000..ee6ec5c Binary files /dev/null and b/templates-assets/fonts/Titillium_Pro/TitilliumSansPro-ThinItalic.ttf differ diff --git a/templates-assets/images/aar-logo-short-small.png b/templates-assets/images/aar-logo-short-small.png new file mode 100644 index 0000000..428779c Binary files /dev/null and b/templates-assets/images/aar-logo-short-small.png differ diff --git a/templates-assets/images/aar-logo.gif b/templates-assets/images/aar-logo.gif new file mode 100644 index 0000000..88735c0 Binary files /dev/null and b/templates-assets/images/aar-logo.gif differ diff --git a/templates-assets/images/aar-logo.png b/templates-assets/images/aar-logo.png new file mode 100644 index 0000000..850ca74 Binary files /dev/null and b/templates-assets/images/aar-logo.png differ diff --git a/templates-assets/images/appio-hand-vlq.jpg b/templates-assets/images/appio-hand-vlq.jpg new file mode 100644 index 0000000..6154e5e Binary files /dev/null and b/templates-assets/images/appio-hand-vlq.jpg differ diff --git a/templates-assets/images/arrow.jpg b/templates-assets/images/arrow.jpg new file mode 100644 index 0000000..db7362f Binary files /dev/null and b/templates-assets/images/arrow.jpg differ diff --git a/templates-assets/images/info.png b/templates-assets/images/info.png new file mode 100644 index 0000000..b755e57 Binary files /dev/null and b/templates-assets/images/info.png differ diff --git a/templates-assets/images/io-icon-bw.png b/templates-assets/images/io-icon-bw.png new file mode 100644 index 0000000..128369c Binary files /dev/null and b/templates-assets/images/io-icon-bw.png differ diff --git a/templates-assets/images/io-icon.png b/templates-assets/images/io-icon.png new file mode 100644 index 0000000..dd93f64 Binary files /dev/null and b/templates-assets/images/io-icon.png differ diff --git a/templates-assets/images/io-on-light.jpg b/templates-assets/images/io-on-light.jpg new file mode 100644 index 0000000..8e854d4 Binary files /dev/null and b/templates-assets/images/io-on-light.jpg differ diff --git a/templates-assets/images/io-on-light.png b/templates-assets/images/io-on-light.png new file mode 100644 index 0000000..bc15764 Binary files /dev/null and b/templates-assets/images/io-on-light.png differ diff --git a/templates-assets/images/io-sfondo-grigio.jpg b/templates-assets/images/io-sfondo-grigio.jpg new file mode 100644 index 0000000..9a9dbf4 Binary files /dev/null and b/templates-assets/images/io-sfondo-grigio.jpg differ diff --git a/templates-assets/images/logo_pagopa_white.png b/templates-assets/images/logo_pagopa_white.png new file mode 100644 index 0000000..ab669cb Binary files /dev/null and b/templates-assets/images/logo_pagopa_white.png differ diff --git a/templates-assets/images/logo_pagopacorp.png b/templates-assets/images/logo_pagopacorp.png new file mode 100644 index 0000000..3f84825 Binary files /dev/null and b/templates-assets/images/logo_pagopacorp.png differ diff --git a/templates-assets/images/moneypig.jpg b/templates-assets/images/moneypig.jpg new file mode 100644 index 0000000..7700eb5 Binary files /dev/null and b/templates-assets/images/moneypig.jpg differ diff --git a/templates-assets/images/notification.png b/templates-assets/images/notification.png new file mode 100644 index 0000000..c25f9c1 Binary files /dev/null and b/templates-assets/images/notification.png differ diff --git a/templates-assets/images/phone-io.png b/templates-assets/images/phone-io.png new file mode 100644 index 0000000..f0a4a6f Binary files /dev/null and b/templates-assets/images/phone-io.png differ diff --git a/templates-assets/images/piggybank.png b/templates-assets/images/piggybank.png new file mode 100644 index 0000000..5313192 Binary files /dev/null and b/templates-assets/images/piggybank.png differ diff --git a/templates-assets/images/pn-logo-footer.png b/templates-assets/images/pn-logo-footer.png new file mode 100644 index 0000000..da6dd5f Binary files /dev/null and b/templates-assets/images/pn-logo-footer.png differ diff --git a/templates-assets/images/pn-logo-header.png b/templates-assets/images/pn-logo-header.png new file mode 100644 index 0000000..671a8c3 Binary files /dev/null and b/templates-assets/images/pn-logo-header.png differ diff --git a/templates-assets/images/question.png b/templates-assets/images/question.png new file mode 100644 index 0000000..f2ae356 Binary files /dev/null and b/templates-assets/images/question.png differ diff --git a/templates-assets/images/send-logo.png b/templates-assets/images/send-logo.png new file mode 100644 index 0000000..a3bcfad Binary files /dev/null and b/templates-assets/images/send-logo.png differ diff --git a/templates-assets/images/sustainable.jpg b/templates-assets/images/sustainable.jpg new file mode 100644 index 0000000..349b0d5 Binary files /dev/null and b/templates-assets/images/sustainable.jpg differ diff --git a/templates-assets/images/time.jpg b/templates-assets/images/time.jpg new file mode 100644 index 0000000..07629f1 Binary files /dev/null and b/templates-assets/images/time.jpg differ diff --git a/templates-assets/images/veloce.jpg b/templates-assets/images/veloce.jpg new file mode 100644 index 0000000..1299ac0 Binary files /dev/null and b/templates-assets/images/veloce.jpg differ diff --git a/templates-assets/images/world.jpg b/templates-assets/images/world.jpg new file mode 100644 index 0000000..20684a4 Binary files /dev/null and b/templates-assets/images/world.jpg differ diff --git a/templates-assets/styles/index.css b/templates-assets/styles/index.css new file mode 100644 index 0000000..90bc2ac --- /dev/null +++ b/templates-assets/styles/index.css @@ -0,0 +1,163 @@ +@font-face { + font-family: 'Montserrat'; + src: url(../fonts/Montserrat/static/Montserrat-Regular.ttf); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Montserrat'; + src: url(../fonts/Montserrat/static/Montserrat-Bold.ttf); + font-weight: bold; + font-style: normal; +} + +@page { + size: A4; + margin: 36mm 10mm 32mm 10mm; + + @top-left { + content: element(header); + vertical-align: top; + } + + @bottom-center { + content: element(footer); + } +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-size: 12px; /* 12pt on Figma */ + font-family: "Montserrat", sans-serif; + font-weight: 400; + overflow: hidden; +} + +p { + margin: 0; + padding: 0; + line-height: 1.5em; +} + +a { + color: inherit; +} +a.faq-link-perfezionamento { + text-decoration: none; +} + +#header { + position: running(header); + font-size: 18.667px +} + +#header img { + margin-top: 15mm; + width: 119px; + height: 35px; + /* 85x25 */ +} + +#footer { + position: running(footer); + font-size: 9px; /* 8pt on Figma */ + color: #475A6D; + border-top: 1px solid #E3E7EB; + padding-top: 3mm; + margin-bottom: 10mm; +} + +#footer p { + margin: 0; + padding: 0; + line-height: 1.2em; +} + +#footer img { + width: 45px; + height: 45px; +} + +#disclaimer { + font-size: 10px; /* 10pt on Figma */ +} + +.row { + width: 100%; +} + +.row::after { + content: ""; + display: block; + clear: both; +} + +.left-col { + float: left; +} + +.right-col { + float: right; +} + +.col-1-10 { width: 10%; } +.col-2-10 { width: 20%; } +.col-3-10 { width: 30%; } +.col-4-10 { width: 40%; } +.col-5-10 { width: 50%; } +.col-6-10 { width: 60%; } +.col-7-10 { width: 70%; } +.col-8-10 { width: 80%; } +.col-9-10 { width: 90%; } + +.margin-top-medium { + margin-top: 10mm; +} + +.margin-top-large { + margin-top: 15mm; +} + +.margin-y-small { + margin: 5mm 0; +} + +.margin-y-medium { + margin: 10mm 0; +} + +.right { + text-align: right; +} + +.paragraph { + margin: 21.333px 0; +} + +.document-type { + margin: 0 0 7mm 0; + font-size: 14px; /* 14pt on Figma */ +} + +.hash-list li { + list-style-type: disc; + list-style-position: inside; +} + +.my-8 { + margin: 10.667px 0; +} + +.mb-0 { + margin-bottom: 0; +} + +.py-16 { + padding: 21.333px 0; +} \ No newline at end of file diff --git a/templates-assets/styles/style.css b/templates-assets/styles/style.css new file mode 100644 index 0000000..6971022 --- /dev/null +++ b/templates-assets/styles/style.css @@ -0,0 +1,145 @@ +:root { + color-scheme: light dark; + supported-color-schemes: light dark; +} +p { + font-size: 18px; + margin-top: 0px; +} +body, +.mail-body { + background-color: #FFFFFF; +} + +.header { + background-color: #FFFFFF; + /* border-top: 8px solid #0073E6; */ +} + +.section { + background-color: #FFFFFF; +} + +.title div { + /* Text Primary */ + color: #17324D !important; +} + + +.text div { + color: #17324D !important; +} + +.footer-text, +.footer-text div { + color: #5C6F82 !important; +} +.footer-pec-text { + color: #17324D !important; + font-size: 14px !important; + line-height: 20px !important +} + +h1 { + font-size: 32px; + line-height: 40px; +} +.link { + color: #0073E6 !important; +} + +.footer-text a, +.text a { + color: #0073E6 !important; +} + +.info-list { + list-style-type:none; + margin: 40px 0; +} +.section-logo-pec { + max-width: 116px; +} + +@media (prefers-color-scheme: light) { + + .dark-img, + [data-ogsc] .dark-img { + display: none !important; + mso-hide: all !important; + } + + .light-img, + [data-ogsc] .light-img { + display: block; + display: block !important; + } + .column-logo { + min-width: 116px; + width: auto !important; + } + .column-text { + width: auto !important; + } +} + +@media (prefers-color-scheme: dark) { + + body, + .mail-body { + background-color: #323232; + } + + .header { + background-color: #323232; + /* border-top: 8px solid #3da2ff; */ + } + + .section { + background-color: #323232; + } + + .title div { + color: #ffffff !important; + } + + .text div { + color: #eeeeee !important; + } + + .footer-text, + .footer-text div { + color: #CCD4DC !important; + } + + .footer-text a, + .text a { + color: #94C4F4 !important; + /* Primary Light in HSL - L = +25 */ + } + + /* IMAGES */ + /* Source: https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/ */ + + .dark-img, + [data-ogsc] .dark-img { + display: block !important; + overflow: visible !important; + float: none !important; + line-height: auto !important; + margin-top: 0px !important; + visibility: inherit !important; + } + .footer-pec-text, .footer-pec-text p{ + color: #ffffff !important; + } + + .column-logo { + min-width: 116px; + width: auto !important; + } + .column-text { + width: auto !important; + } + +} \ No newline at end of file diff --git a/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/de.json b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/de.json new file mode 100644 index 0000000..3e400ea --- /dev/null +++ b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/de.json @@ -0,0 +1,8 @@ +{ + "language": "de", + "subject": "Hinterlegung der Empfangsbestätigung", + "body1": "Unter Bezugnahme auf die Zustellung mit IUN ${iun}, gemäß Art. 26, Absatz 7, des DgV 76/2020, da der Empfänger ${recipient.denomination}
STEUERNUMMER: ${recipient.taxId}, aus anderen Gründen als vorübergehender Abwesenheit oder Weigerung seitens seiner selbst oder anderer Personen, denen der Umschlag mit der Empfangsbestätigung der betreffenden Zustellung übergeben werden kann, am ${endWorkflowDate} um ${endWorkflowTime}
Uhr nicht erreichbar ist, wird die Empfangsbestätigung vom Betreiber auf der Plattform hinterlegt und dem Empfänger zur Verfügung gestellt.", + "body2": "Laut Art. 26, Absatz 7, des DgV 76/2020 wird die Zustellung am zehnten Tag nach der vorgenannten Hinterlegung auf der Plattform vervollständigt, es sei denn, der Empfänger oder sein Bevollmächtigter hat die Zustellung über die Plattform an einem Tag und zu einer Uhrzeit vor Ablauf dieser Frist abgerufen.", + "signature": "Von PagoPA S.p.A. digital signiert", + "disclaimer_lang": "Der Originaltext dieser Dokumente ist auf Italienisch. Bei Abweichungen zwischen der italienischen Fassung und den Übersetzungen in andere Sprachen sind die Bedeutung und die Bestimmungen der italienischen Sprache maßgebend." +} \ No newline at end of file diff --git a/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/fr.json b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/fr.json new file mode 100644 index 0000000..3c93aca --- /dev/null +++ b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/fr.json @@ -0,0 +1,8 @@ +{ + "language": "fr", + "subject": "Dépôt de l'accusé de réception", + "body1": "En ce qui concerne la notification comportant IUN ${iun}, conformément à l'article 26, alinéa 7, du décret législatif 76/2020, le destinataire étant ${recipient.denomination}
Code fiscale: ${recipient.taxId}, introuvable pour des raisons autres que sa propre absence temporaire ou son refus ou celui des autres personnes auxquelles l'enveloppe contenant l'accusé de réception de la notification concernée peut être remise, le ${endWorkflowDate} à ${endWorkflowTime}
l'accusé de réception a été déposé par le Gestionnaire sur la Plateforme et mis à la disposition du destinataire.", + "body2": "En vertu de l'article 26, alinéa 7, du décret législatif 76/2020, la notification est achevée le dixième jour suivant la date de dépôt sur la plate-forme comme indiqué ci-dessus, à moins que le destinataire ou la personne désignée pour la procuration n'ait accédé à la notification via la plate-forme à une date et une heure antérieures à l'expiration de ce délai.", + "signature": "Signé numériquement par PagoPA S.p.A.", + "disclaimer_lang": "Le texte original de ces documents est en italien. En cas de différences entre la version italienne et ses traductions, le sens et les conditions de la langue italienne feront foi." +} \ No newline at end of file diff --git a/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/it.json b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/it.json new file mode 100644 index 0000000..a27e9d5 --- /dev/null +++ b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/it.json @@ -0,0 +1,8 @@ +{ + "it_language": "it", + "it_subject":"Deposito di avvenuta ricezione", + "it_body1":"Con riferimento alla notifica avente IUN ${iun}, ai sensi dell’art. 26, comma 7, del D.L. 76/2020, essendo risultato il destinatario ${recipient.denomination}
CF: ${recipient.taxId}, irreperibile per cause diverse dalla temporanea assenza o dal rifiuto proprio o delle altre persone alle quali può essere consegnato il plico contenente
l’avviso di avvenuta ricezione della relativa notifica, in data ${endWorkflowDate} alle ore ${endWorkflowTime}
l’avviso di avvenuta ricezione è stato depositato dal Gestore sulla Piattaforma e reso disponibile al destinatario.", + "it_body2":"Ai sensi dell’art. 26, comma 7, del D.L. 76/2020 la notifica si perfeziona nel decimo giorno successivo alla data del deposito sulla piattaforma come sopra riportata, salvo che il destinatario o suo delegato abbia acceduto alla notifica tramite la piattaforma in data e ora antecedente rispetto alla scadenza di tale termine.", + "it_signature":"Firmato digitalmente da PagoPA S.p.A.", + "it_disclaimer_lang":"Il testo originario di questi documenti è in lingua italiana. In caso di contrasto tra la versione italiana e le traduzioni in altre lingue, prevarranno il significato e le condizioni della lingua italiana." +} diff --git a/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/sl.json b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/sl.json new file mode 100644 index 0000000..197edd7 --- /dev/null +++ b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/i18n/sl.json @@ -0,0 +1,8 @@ +{ + "language": "sl", + "subject": "Predložitev obvestila o prejemu", + "body1": "V zvezi z obvestilom, ki vsebuje IUN ${iun}, v skladu s členom 26, sedmi odstavek, zakonodajnega odloka št. 76/2020, je prejemnik ${recipient.denomination}
DŠ: ${recipient.taxId}, nedosegljiv iz razlogov, ki niso začasna odsotnost ali zavrnitev prejema z njegove strani ali drugih oseb, ki jim je mogoče dostaviti dokument z obvestilom o prejemu ustreznega obvestila, z dne ${endWorkflowDate} ob ${endWorkflowTime}
Upravitelj je obvestilo o prejemu odložil na platformo in ga dal na voljo prejemniku.", + "body2": "V skladu s členom 26, sedmi odstavek, zakonodajnega odloka št. 76/2020, je obvestilo zaključeno deseti dan po datumu vložitve na platformo, kot je navedeno zgoraj, razen če je prejemnik ali njegov pooblaščenec do obvestila dostopil prek platforme na datum in uro pred iztekom tega roka.", + "signature": "Digitalno podpisano s strani PagoPA S.p.A.", + "disclaimer_lang": "Izvirno besedilo dokumentov je v italijanskem jeziku. V primeru neskladja med italijansko različico in prevodi v druge jezike bodo prevladali pomen in pogoji v italijanskem jeziku." +} \ No newline at end of file diff --git a/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/index.html b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/index.html new file mode 100644 index 0000000..ead7a9e --- /dev/null +++ b/templates-assets/templates/AnalogDeliveryWorkflowFailureLegalFact/index.html @@ -0,0 +1,72 @@ + + + + + + Attestazione opponibile a terzi + + + + + +
+
+ + + + + <% if (noIta) { %>

+ <%=subject%> +

<% } %> +

+ <%=it_subject%> +

+ + <% if (noIta) { %>

+ <%-body1%> +

<% } %> +

+ <%-it_body1%> +

+ + <% if (noIta) { %>

+ <%-body2%> +

<% } %> +

+ <%-it_body2%> +

+ +
+

<% if (noIta) { %><%-signature%> • <% } %><%-it_signature%>

+
+
+
+

 

+
+
+ <% if (noIta) { %>

<%-disclaimer_lang%>

+

<%-it_disclaimer_lang%>

<% } %> +
+
+
+ + + \ No newline at end of file diff --git a/templates-assets/templates/Mail_VerificationCodeBody/index.mjml b/templates-assets/templates/Mail_VerificationCodeBody/index.mjml new file mode 100644 index 0000000..81bd1a8 --- /dev/null +++ b/templates-assets/templates/Mail_VerificationCodeBody/index.mjml @@ -0,0 +1,99 @@ + + + SEND - Conferma la tua e-mail + + + + + + + + + + + + + + + + + + + + + +

+ SEND - Conferma la tua e-mail +

+
+ + + +

Ciao,

+
+ +

+ Per confermare questo indirizzo e-mail come recapito digitale a + cui ricevere gli avvisi di cortesia, inserisci su + SEND - Servizio Notifiche Digitali + il codice +

+
+ ${verificationCode} +
+
+ +

A presto,

+

SEND - Servizio Notifiche Digitali

+
+
+
+ + + + +
+
+
diff --git a/templates-assets/templates/Mail_VerificationCodeSubject/index.txt b/templates-assets/templates/Mail_VerificationCodeSubject/index.txt new file mode 100644 index 0000000..4e3be1e --- /dev/null +++ b/templates-assets/templates/Mail_VerificationCodeSubject/index.txt @@ -0,0 +1 @@ +SEND - Conferma la tua e-mail \ No newline at end of file diff --git a/templates-assets/templates/MalfuctionLegalFact/i18n/de.json b/templates-assets/templates/MalfuctionLegalFact/i18n/de.json new file mode 100644 index 0000000..ab0ea07 --- /dev/null +++ b/templates-assets/templates/MalfuctionLegalFact/i18n/de.json @@ -0,0 +1,8 @@ +{ + "language": "de", + "subject":"Die Bescheinigung kann von Dritten beanstandet werden: Störung und Wiederherstellung", + "body1":"Gemäß Artikel 26, Absatz 11 des Gesetzesdekrets 76/2020 in seiner geänderten und ergänzten Fassung BESCHEINIGT PagoPA S.p.A. als rechtmäßiger Verwalter der im selben Artikel 26 genannten Plattform für digitale Zustellungen (auch bekannt als SEND - Servizio Notifiche Digitali), mit aller rechtlichen Befugnis, diese Dritten gegenüber zu vertreten, HIERMIT, dass:", + "body2":"ab DD/MM/YYYY HH:MM, und bis zum DD/MM/YYYY HH:MM, eine Störung der Plattform mit allen in Artikel 26 Absatz 13 Buchstaben a) und b) des Gesetzesdekrets 76/2020 genannten Auswirkungen hinsichtlich der für Absender oder Empfänger geltenden Fristen vorgelegen hat.", + "signature":"Von PagoPA S.p.A. digital signiert", + "disclaimer_lang": "Der Originaltext dieser Dokumente ist auf Italienisch. Bei Abweichungen zwischen der italienischen Fassung und den Übersetzungen in andere Sprachen sind die Bedeutung und die Bestimmungen der italienischen Sprache maßgebend." +} diff --git a/templates-assets/templates/MalfuctionLegalFact/i18n/fr.json b/templates-assets/templates/MalfuctionLegalFact/i18n/fr.json new file mode 100644 index 0000000..d962f4e --- /dev/null +++ b/templates-assets/templates/MalfuctionLegalFact/i18n/fr.json @@ -0,0 +1,8 @@ +{ + "language": "fr", + "subject":"Attestation opposable aux tiers : dysfonctionnement et remise en service", + "body1":"Conformément à l’art. 26, paragraphe 11, du décret-loi italien 76/2020 tel que modifié et complété, la société PagoPA S.p.A., en sa qualité d’opérateur ex lege de la Plateforme Notifications Numériques visée au même article 26 (également connue sous le nom de SEND - Servizio Notifiche Digitali), avec plein effet juridique quant à l’opposabilité aux tiers, CERTIFIE QUE:", + "body2":"à compter du DD/MM/YYYY HH:MM, et jusqu’au DD/MM/YYYY HH:MM, le fonctionnement de la plateforme a été défectueux avec tous les effets visés à l’article 26, paragraphe 13, lett. a) et b), du décret-loi 76/2020, pour les délais incombant à l’expéditeur ou au destinataire.", + "signature":"Signé numériquement par PagoPA S.p.A.", + "disclaimer_lang":"Le texte original de ces documents est en italien. En cas de différences entre la version italienne et ses traductions, le sens et les conditions de la langue italienne feront foi." +} \ No newline at end of file diff --git a/templates-assets/templates/MalfuctionLegalFact/i18n/it.json b/templates-assets/templates/MalfuctionLegalFact/i18n/it.json new file mode 100644 index 0000000..b6b993f --- /dev/null +++ b/templates-assets/templates/MalfuctionLegalFact/i18n/it.json @@ -0,0 +1,8 @@ +{ + "it_language": "it", + "it_subject":"Attestazione opponibile a terzi: malfunzionamento e ripristino", + "it_body1":"Ai sensi dell’art. 26, comma 11, del decreto-legge 76/2020 s.m.i., la PagoPA S.p.A. nella sua qualità di gestore ex lege della Piattaforma Notifiche Digitali di cui allo stesso art. 26 (anche nota come SEND - Servizio Notifiche Digitali), con ogni valore legale per l'opponibilità a terzi, ATTESTA CHE:", + "it_body2":"a decorrere dalla data del ${startDate} ${timeReferenceStartDate}, e sino alla data ${endDate} ${timeReferenceEndDate}, la piattaforma ha avuto un malfunzionamento con ogni effetto di cui all'art. 26, comma 13, lett. a) e b), del decreto-legge 76/2020, per i termini in capo al mittente o al destinatario.", + "it_signature":"Firmato digitalmente da PagoPA S.p.A.", + "it_disclaimer_lang":"Il testo originario di questi documenti è in lingua italiana. In caso di contrasto tra la versione italiana e le traduzioni in altre lingue, prevarranno il significato e le condizioni della lingua italiana." +} diff --git a/templates-assets/templates/MalfuctionLegalFact/i18n/sl.json b/templates-assets/templates/MalfuctionLegalFact/i18n/sl.json new file mode 100644 index 0000000..8918715 --- /dev/null +++ b/templates-assets/templates/MalfuctionLegalFact/i18n/sl.json @@ -0,0 +1,8 @@ +{ + "language": "sl", + "subject":"Zavezujoče potrdilo za tretje osebe: nepravilno delovanje in obnovitev", + "body1":"V skladu z 11. odstavkom 26. člena zakonskega odloka 76/2020 s spremembami, družba PagoPA S.p.A. kot zakoniti upravljavec Platforme za digitalno obveščanje, opredeljene v istem 26. členu (znana tudi kot SEND - Servizio Notifiche Digitali), z vsemi pravnimi učinki za veljavnost do tretjih oseb, POTRJUJE, DA:", + "body2":"je bila od datuma DD/MM/YYYY HH:MM, do datuma DD/MM/YYYY HH:MM, v okvari z vsemi učinki, opredeljenimi v točkah a in b 13. odstavka 26. člena zakonskega odloka 76/2020 v zvezi z roki pošiljatelja ali prejemnika.", + "signature":"Digitalno podpisano s strani PagoPA S.p.A.", + "disclaimer_lang":"Izvirno besedilo dokumentov je v italijanskem jeziku. V primeru neskladja med italijansko različico in prevodi v druge jezike bodo prevladali pomen in pogoji v italijanskem jeziku." +} \ No newline at end of file diff --git a/templates-assets/templates/MalfuctionLegalFact/index.html b/templates-assets/templates/MalfuctionLegalFact/index.html new file mode 100644 index 0000000..9038262 --- /dev/null +++ b/templates-assets/templates/MalfuctionLegalFact/index.html @@ -0,0 +1,72 @@ + + + + + + + Attestazione opponibile a terzi + + + + +
+ + + + <% if (noIta) { %>

+ <%=subject%> +

<% } %> +

+ <%=it_subject%> +

+ + <% if (noIta) { %>

+ <%=body1%> +

<% } %> + <% if (noIta) { %>

+ <%-body2%> +

<% } %> + +

+ <%=it_body1%> +

+

+ <%-it_body2%> +

+ +
+
+

<% if (noIta) { %><%-signature%> • <% } %><%-it_signature%>

+
+
+
+

 

+
+
+ <% if (noIta) { %>

<%-disclaimer_lang%>

+

<%-it_disclaimer_lang%>

<% } %> +
+
+ + + \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR/i18n/de.json b/templates-assets/templates/NotificationAAR/i18n/de.json new file mode 100644 index 0000000..973bd2d --- /dev/null +++ b/templates-assets/templates/NotificationAAR/i18n/de.json @@ -0,0 +1,13 @@ +{ + "language": "de", + "aar_label": "EMPFANGSBESTÄTIGUNG", + "notification_subject": "Empfangsbestätigung Feststellungs", + "aar_subtitles_1": "Du hast eine rechtsgültige Mitteilung von ${notification.sender.paDenomination}: siehe die zugestellten Dokumente. Wenn sie nicht in diesem Bescheid enthalten sind, kannst du die Dokumente online auf SEND. Ist eine Zahlung vorgesehen, so findest du das Fälligkeitsdatum und den Termin für etwaige Einsprüche in den Dokumenten.", + "access_to_document_title": "GREIFE AUF DIE ONLINE-DOKUMENTE ZU - KOSTENLOS", + "access_to_document_1": "Scanne den QR-Code oder öffne", + "access_to_document_1_link":"${piattaformaNotificheURLLabel}", + "access_to_document_2": "Melde dich mit SPID oder CIE an (elektronischer Personalausweis)", + "access_to_document_3": "Ruf die zugestellten Dokumente ab", + "send_refinement": "Die zugestellten Dokumente sind 120 Tage nach dem Vervollständigungsdatum der Zustellung (dem Datum, an dem sie für alle Zwecke rechtsgültig wird) online einsehbar. Mehr hierzu auf", + "send_refinement_link": "${perfezionamentoURLLabel}" +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR/i18n/fr.json b/templates-assets/templates/NotificationAAR/i18n/fr.json new file mode 100644 index 0000000..81a07f3 --- /dev/null +++ b/templates-assets/templates/NotificationAAR/i18n/fr.json @@ -0,0 +1,13 @@ +{ + "language": "fr", + "aar_label": "ACCUSÉ DE RÉCEPTION", + "notification_subject": "Accusé de réception", + "aar_subtitles_1": "Vous avez reçu une communication ayant une valeur juridique de ${notification.sender.paDenomination}: voir les documents notifiés.. S'ils ne figurent pas dans le présent avis, vous pouvez consulter les documents en ligne sur le site SEND. Si un paiement est dû, vous trouverez la date d'échéance et la date d'éventuelles contestations dans les documents.", + "access_to_document_title": "ACCÉDER AUX DOCUMENTS EN LIGNE - GRATUIT", + "access_to_document_1": "Scannez le code QR ou rendez-vous sur", + "access_to_document_1_link":"${piattaformaNotificheURLLabel}", + "access_to_document_2": "Accédez avec SPID ou CIE (carte d'identité électronique)", + "access_to_document_3": "Accédez aux documents notifiés", + "send_refinement": "Les documents notifiés peuvent être consultés en ligne pendant 120 jours à compter de la date de prise d’effet de la notification (date à laquelle elle devient légalement valide à toutes fins). Pour en savoir plus, consultez le site", + "send_refinement_link": "${perfezionamentoURLLabel}" +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR/i18n/it.json b/templates-assets/templates/NotificationAAR/i18n/it.json new file mode 100644 index 0000000..2bf2c8a --- /dev/null +++ b/templates-assets/templates/NotificationAAR/i18n/it.json @@ -0,0 +1,13 @@ +{ + "it_language": "it", + "it_aar_label": "Avviso di Avvenuta Ricezione", + "it_notification_subject": "Avviso di Avvenuta Ricezione", + "it_aar_subtitles_1": "Hai ricevuto una comunicazione a valore legale da ${notification.sender.paDenomination}: prendi visione dei documenti notificati. Se non sono inclusi in questo avviso, accedi ai documenti online su SEND. Se è previsto un pagamento, nei documenti troverai la data di scadenza e quella per eventuali ricorsi.", + "it_access_to_document_title": "Accedi ai documenti online - gratis", + "it_access_to_document_1": "Inquadra il codice QR o vai su", + "it_access_to_document_1_link":"${piattaformaNotificheURLLabel}", + "it_access_to_document_2": "Entra con SPID o CIE (Carta d'Identità Elettronica);", + "it_access_to_document_3": "Accedi ai documenti notificati.", + "it_send_refinement": "I documenti sono disponibili su SEND per 120 giorni dalla data di perfezionamento della notifica (data in cui assume valore di legge per tutte le diverse finalità). Scopri di più su", + "it_send_refinement_link": "${perfezionamentoURLLabel}" +} diff --git a/templates-assets/templates/NotificationAAR/i18n/sl.json b/templates-assets/templates/NotificationAAR/i18n/sl.json new file mode 100644 index 0000000..b524ee9 --- /dev/null +++ b/templates-assets/templates/NotificationAAR/i18n/sl.json @@ -0,0 +1,13 @@ +{ + "language": "sl", + "aar_label": "POTRDILO O PREJEMU", + "notification_subject": "Obvestilo o prejemu:", + "aar_subtitles_1": "Prejeli ste uradno sporočilo od ${notification.sender.paDenomination}: Prejeli ste uradno sporočilo od. Če niso vključeni v to obvestilo, do dokumentov lahko dostopate na spletu na platformi SEND. ki jo že uporabljate. Če je predvideno plačilo, bo v dokumentih naveden datum poteka in datum za morebitne pritožbe.", + "access_to_document_title": "DOSTOP DO DOKUMENTOV NA SPLETU - BREZPLAČNO", + "access_to_document_1": "Optično preberite kodo QR ali pojdite na", + "access_to_document_1_link": "${piattaformaNotificheURLLabel}", + "access_to_document_2": "Vstopite s SPID ali CIE (elektronska osebna izkaznica)", + "access_to_document_3": "Dostop do vročenih dokumentov", + "send_refinement": "Priglašeni dokumenti so na voljo na spletu 120 dni od datuma zaključka obvestila (datum, ko začne pravno veljati za vse različne namene). Izvedite več na", + "send_refinement_link": "${perfezionamentoURLLabel}" +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR/index.html b/templates-assets/templates/NotificationAAR/index.html new file mode 100644 index 0000000..a6d53d5 --- /dev/null +++ b/templates-assets/templates/NotificationAAR/index.html @@ -0,0 +1,626 @@ + + + + + + + + <% if (noIta) { %><%-aar_label%> • <% } %><%-it_aar_label%> + + + + + +
+
+
+ +
+ <%-it_aar_label%> +
+
+ +
+
+
Codice univoco:
+
${notification.iun} +
+
+
Codice fiscale - Persona <#if recipient.recipientType=="PF"> + fisica: + <#else> + giuridica: +
+
${recipient.taxId} +
+
+
+ +
+
+
+
+
+
+ +
+ +
+
+
+

<% if (noIta) { %><%-notification_subject%> • <% } %><%-it_notification_subject%> (AAR): ${notification.subject}

+
+
+

<% if (noIta) { %><%-aar_subtitles_1%><% } %>

+

<%-it_aar_subtitles_1%>

+
+ +
+
+ + +
+
+
<% if (noIta) { %><%-access_to_document_title%> • <% } %><%-it_access_to_document_title%>
+
+
+
    +
  1. + <% if (noIta) { %>

    <%-access_to_document_1%> <%-access_to_document_1_link%>

    <% } %> +

    <%-it_access_to_document_1%> + <%-it_access_to_document_1_link%> +

    +
  2. +
  3. + <% if (noIta) { %>

    <%-access_to_document_2%>

    <% } %> +

    <%-it_access_to_document_2%>

    +
  4. +
  5. + <% if (noIta) { %>

    <%-access_to_document_3%>

    <% } %> +

    <%-it_access_to_document_3%>

    +
  6. +
+
+
+
+ qr-code +
+
+
+
+ <% if (noIta) { %>

<%-send_refinement%> <%-send_refinement_link%>

<% } %> +

<%-it_send_refinement%> <%-it_send_refinement_link%>

+
+ +
+
+
+ + + + + \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR/index_it.html b/templates-assets/templates/NotificationAAR/index_it.html new file mode 100644 index 0000000..1941cd1 --- /dev/null +++ b/templates-assets/templates/NotificationAAR/index_it.html @@ -0,0 +1,720 @@ + + + + + + + + Avviso di Avvenuta Ricezione + + + + + +
+
+
+ +
+ Avviso di Avvenuta Ricezione +
+
+ +
+
+
Codice univoco:
+
${notification.iun} +
+
+
Codice fiscale - Persona <#if recipient.recipientType=="PF"> + fisica: + <#else> + giuridica: +
+
${recipient.taxId} +
+
+
+ +
+
+
+
+
+
+ +
+ +
+
+
+ Avviso di Avvenuta Ricezione: ${notification.subject} +
+
+

Hai ricevuto una comunicazione a valore legale da ${notification.sender.paDenomination}: + prendi visione dei documenti notificati. Se non sono inclusi in questo avviso, accedi + ai documenti online su SEND. Se è previsto un pagamento, nei documenti troverai la data + di scadenza e + quella per eventuali ricorsi. +

+
+
+
+
Accedi ai documenti online - gratis
+
+
+
    +
  1. Inquadra il codice QR o vai su ${piattaformaNotificheURLLabel} +
  2. +
  3. Entra con SPID o CIE (Carta d'Identità Elettronica);
  4. +
  5. Accedi ai documenti notificati.
  6. +
+
+
+ I documenti sono disponibili online su SEND per 120 giorni dalla + data di + perfezionamento della notifica (data in cui assume valore di legge per tutte le diverse + finalità).
+ Scopri di più su ${perfezionamentoURLLabel} +
+
+
+ qr-code +
+
+
+
+
+ + +
+
+
+ DELEGA QUALCUNO A RICEVERE LE TUE NOTIFICHE +
+
+
+
    +
  1. + Vai su ${piattaformaNotificheURLLabel} + e accedi con SPID o CIE (Carta d'Identità Elettronica); +
  2. +
  3. Seleziona “Deleghe“;
  4. +
  5. Premi “Aggiungi una delega” e inserisci i dati della persona che vuoi delegare;
  6. +
  7. Questa dovrà accedere a SEND con SPID o CIE e accettare la richiesta di delega. A + partire da quel momento, riceverà su SEND le notifiche destinate a te.
  8. +
+
+
+
+ <#if recipient.recipientType=="PF"> +
+

Scopri di più

+ +
+ +
+ +
+ + <#if recipient.recipientType=="PF"> + +
+
+

Con SEND - Servizio notifiche digitali ricevi le comunicazioni a valore + legale della Pubblica Amministrazione in digitale, dove ti è più comodo e senza raccomandata + cartacea

+
+
+

I VANTAGGI DELLE NOTIFICHE DIGITALI

+
+
+ +
+ Ti costa meno:
+ diminuiscono i costi di notificazione +
+
+
+ +
+ Risparmi tempo:
+ niente più attese per il ritiro della raccomandata +
+
+
+ +
+ Non importa dove sei:
+ trovi le tue notifiche e documenti online o su IO +
+
+
+ +
+ Proteggi l'ambiente:
+ meno emissioni per il trasporto e meno carta +
+
+
+
+
+
+
+
+

COSA CAMBIA PER TE

+ +
+
+

Quando un ente ti invia una comunicazione a valore legale tramite SEND, puoi venirne a + conoscenza:

+
    +
  • con un messaggio sull'app IO, se attivi il servizio SEND - Notifiche digitali + in app;
  • +
  • con una PEC, se la inserisci su SEND, se l’hai comunicata all’ente in + precedenza o se è presente nei registri pubblici;
  • +
  • con una e-mail o un SMS, se inserisci i recapiti su SEND.
  • +
+

Se SEND non riesce a raggiungerti via PEC o se non apri la notifica online o sull’app IO + entro i termini previsti dal servizio, continuerai a ricevere la raccomandata cartacea. +

+

Poiché SEND è in corso di adozione da parte degli enti sul territorio nazionale, potresti + ricevere ancora alcune comunicazioni a valore legale com'è avvenuto finora.

+
+
+
+
+
+

CON L'APP IO CONVIENE

+
+
+

Attiva il servizio SEND - Notifiche digitali su app IO per ricevere le + prossime comunicazioni a valore legale direttamente sul tuo dispositivo. +

+

Se non hai IO, scaricala gratuitamente dallo store.

+
+
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForEMAIL/i18n/de.json b/templates-assets/templates/NotificationAARForEMAIL/i18n/de.json new file mode 100644 index 0000000..e8c1e7b --- /dev/null +++ b/templates-assets/templates/NotificationAARForEMAIL/i18n/de.json @@ -0,0 +1,13 @@ +{ + "language": "de", + "subject":"SEND - Neue Zustellung von ${notification.sender.paDenomination}", + "hello":"Hallo", + "body1":"Du hast auf SEND - Servizio Notifiche Digitali eine Zustellung von ${notification.sender.paDenomination} mit IUN-Code ${notification.iun} erhalten. Eine Zustellung ist eine rechtsgültige Mitteilung , die aus einer Empfangsbestätigung und einem oder mehreren Dokumenten besteht.", + "body2":"Du hast bis zu 120 Tage ab dem Datum der Vervollständigung der Zustellung Zeit, auf die Dokumente zuzugreifen. Die Frist für eine etwaige Zahlung und für die Einlegung von Rechtsmitteln ist in den Dokumenten vermerkt.", + "perfection":"Solltest du keine PEC-Adresse haben und die Dokumente innerhalb von 5 Tagen (120 Stunden) nach Versand der Nachricht einsehen, erhältst du keine Zustellung mittels Einschreibebrief.", + "read_more":"SEND ist ein Tool, das den Versand von Zustellungen durch die öffentliche Verwaltung sicherer, effizienter und kostengünstiger macht. Mehr hierzu", + "button":"Zugang zu den Dokumenten", + "greetings":"Bis bald", + "avviso_cortesia":"INFORMELLE BENACHRICHTIGUNG", + "footer":"Du erhältst diese Mitteilung, weil du deine E-Mail-Adresse unter den informellen SEND-Adressen angegeben hast. Um Adressen zu bearbeiten oder weitere hinzuzufügen, gehe bitte auf deine Adressen." +} diff --git a/templates-assets/templates/NotificationAARForEMAIL/i18n/fr.json b/templates-assets/templates/NotificationAARForEMAIL/i18n/fr.json new file mode 100644 index 0000000..afcb2f5 --- /dev/null +++ b/templates-assets/templates/NotificationAARForEMAIL/i18n/fr.json @@ -0,0 +1,13 @@ +{ + "language": "fr", + "subject":"SEND - Nouvelle notification de la part de ${notification.sender.paDenomination}", + "hello":"Bonjour", + "body1":"Vous avez reçu sur SEND - Servizio Notifiche Digitali une notification de la part de ${notification.sender.paDenomination} con Codice IUN ${notification.iun}. Une notification est une communication ayant une valeur juridique composée d'un accusé de réception et d'un ou plusieurs documents.", + "body2":"Vous disposez d'un délai de 120 jours à compter de la date de finalisation de la notification pour accéder aux documents. Le délai éventuel pour le paiement et, le cas échéant, pour toute contestation est indiqué dans les documents.", + "perfection":"Si vous n'avez pas d'adresse de courrier électronique certifié (PEC) et que vous consultez les documents dans les 5 jours (120 heures) suivant l'envoi du message, vous ne recevrez pas la notification par courrier recommandé.", + "read_more":"SEND est un outil qui rend l'envoi de notifications par l'administration publique plus sûr, plus efficace et plus économique. En savoir plus", + "button":"Accéder aux documents", + "greetings":"À bientôt", + "avviso_cortesia":"AVIS DE COURTOISIE", + "footer":"Vous recevez cette communication parce que vous avez indiqué votre adresse e-mail dans les coordonnées de courtoisie de SEND. Pour modifier les coordonnées ou en ajouter d'autres, accédez à vos coordonnées." +} diff --git a/templates-assets/templates/NotificationAARForEMAIL/i18n/it.json b/templates-assets/templates/NotificationAARForEMAIL/i18n/it.json new file mode 100644 index 0000000..3d8a35c --- /dev/null +++ b/templates-assets/templates/NotificationAARForEMAIL/i18n/it.json @@ -0,0 +1,13 @@ +{ + "it_language": "it", + "it_subject":"SEND - Nuova notifica da ${notification.sender.paDenomination}", + "it_hello":"Ciao", + "it_body1":"Hai ricevuto su SEND - Servizio Notifiche Digitali una notifica da parte di ${notification.sender.paDenomination} con Codice IUN ${notification.iun}. Una notifica è una comunicazione a valore legale composta da un avviso di avvenuta ricezione e da uno o più documenti.", + "it_body2":"Hai fino a 120 giorni dalla data di perfezionamento della notifica per accedere ai documenti. Il termine per il pagamento, se previsto, e per eventuali impugnazioni è indicato nei documenti.", + "it_perfection":"Se non hai una PEC e visualizzi i documenti entro 5 giorni (120 ore) dall'invio del messaggio, non riceverai la notifica tramite raccomandata.", + "it_read_more":"SEND è uno strumento che rende l'invio di notifiche da parte della Pubblica Amministrazione più sicuro, efficiente ed economico. Scopri di più", + "it_button":"Accedi ai documenti su SEND", + "it_greetings":"A presto", + "it_avviso_cortesia":"AVVISO DI CORTESIA", + "it_footer":"Ricevi questa comunicazione perché hai inserito il tuo indirizzo e-mail tra i recapiti di cortesia di SEND. Per modificare i recapiti o aggiungerne altri, vai ai tuoi recapiti." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForEMAIL/i18n/sl.json b/templates-assets/templates/NotificationAARForEMAIL/i18n/sl.json new file mode 100644 index 0000000..2653a79 --- /dev/null +++ b/templates-assets/templates/NotificationAARForEMAIL/i18n/sl.json @@ -0,0 +1,13 @@ +{ + "language": "sl", + "subject":"SEND - Novo obvestilo od ${notification.sender.paDenomination}", + "hello":"Pozdravljeni", + "body1":"prek storitve SEND - Servizio Notifiche Digitali ste prejeli obvestilo od ${notification.sender.paDenomination} s kodo IUN ${notification.iun}. Obvestilo je pravno veljavna komunikacija sestavljena iz potrdila o prejemu in enega ali več dokumentov.", + "body2":"Za dostop do dokumentov imate na voljo največ 120 dni od datuma vročitve obvestila. Če je predvideno, je rok za plačilo in morebitne pritožbe naveden v dokumentih.", + "perfection":"Če nimate certificiranega elektronskega naslova PEC in si dokumente ogledate v roku 5 dni (120 ur) od pošiljanja sporočila, ne boste prejeli obvestila po priporočeni pošti.", + "read_more":"SEND je orodje, ki omogoča varnejše, bolj učinkovito in gospodarno pošiljanje obvestil javne uprave. Izvedite več", + "button":"Dostop do dokumentov", + "greetings":"Lep pozdrav", + "avviso_cortesia":"PRIJAZNO OBVESTILO", + "footer":"To sporočilo prejemate, ker ste svoj elektronski naslov vnesli med kontaktne podatke za obvestila storitve SEND. Za spremembo kontaktnih podatkov ali dodajanje novih obiščite svoje kontakte." +} diff --git a/templates-assets/templates/NotificationAARForEMAIL/index.mjml b/templates-assets/templates/NotificationAARForEMAIL/index.mjml new file mode 100644 index 0000000..6dd8a47 --- /dev/null +++ b/templates-assets/templates/NotificationAARForEMAIL/index.mjml @@ -0,0 +1,182 @@ + + + SEND - Nuova notifica da ${notification.sender.paDenomination} + + + + + + + + + + + @media screen and (max-width: 600px) { .column-logo { min-width: 116px; + width: auto !important; } .column-text { width: auto !important; } } + + + + + + + + + + + + + + + + + <% if (noIta) { %>

+ <%-avviso_cortesia%> +

<% } %> +

+ <%-it_avviso_cortesia%> +

+
+
+
+
+ + + + + + + <% if (noIta) { %>

+ <%-subject%> +

<% } %> +

+ <%-it_subject%> +

+
+ + + +

<% if (noIta) { %><%-hello%> • <% } %><%-it_hello%>,

+
+ + <% if (noIta) { %>

+ <%-body1%> +

<% } %> + + <% if (noIta) { %>

+ <%-body2%> +

<% } %> + +

+ <%-it_body1%> +

+ +

+ <%-it_body2%> +

+ +

+ <% if (noIta) { %><%-button%> • <% } %><%-it_button%> +

+ + + <% if (noIta) { %>

+ <%-perfection%> +

<% } %> + <% if (noIta) { %>

+ <%-read_more%> +

<% } %> +

+ <%-it_perfection%> +

+

+ <%-it_read_more%> +

+
+ +

+ <% if (noIta) { %><%-greetings%> • <% } %> <%-it_greetings%>,

+ +

SEND - Servizio Notifiche Digitali

+
+
+
+ + + + + + + + <% if (noIta) { %>

+ <%-footer%> +

<% } %> +

+ <%-it_footer%> +

+
+
+
+
+
+
diff --git a/templates-assets/templates/NotificationAARForPEC/i18n/de.json b/templates-assets/templates/NotificationAARForPEC/i18n/de.json new file mode 100644 index 0000000..88954a7 --- /dev/null +++ b/templates-assets/templates/NotificationAARForPEC/i18n/de.json @@ -0,0 +1,15 @@ +{ + "language": "de", + "subject":"SEND - Neue Zustellung von ${notification.sender.paDenomination}", + "hello":"Hallo", + "body1":"Du hast eine Zustellung auf SEND - Servizio Notifiche Digitali.", + "sender_label":"Absender", + "subject_label":"Betreff", + "iun_label":"IUN-Code", + "body2":"Eine Zustellung ist eine rechtsgültige Mitteilung die aus einer Empfangsbestätigung und einem oder mehreren Dokumenten besteht.", + "body3":"Du hast bis zu 120 Tage ab dem Datum der Vervollständigung der Zustellung Zeit, auf die Dokumente zuzugreifen. Die Frist für eine etwaige Zahlung und für die Einlegung von Rechtsmitteln ist in den Dokumenten vermerkt.", + "read_more":"Du erhältst diese Empfangsbestätigung als ${recipientType} mit der Steuernummer ${recipient.taxId}. SEND ist ein Tool, das den Versand von Zustellungen durch die öffentliche Verwaltung sicherer, effizienter und kostengünstiger macht. Mehr hierzu", + "button":"Zugang zu den Dokumenten", + "greetings":"Bis bald", + "footer":"L'ente mittente conosce questo indirizzo PEC perché l'hai inserito nei tuoi recapiti di SEND, perché fa parte di uno dei registri previsti dal Codice Amministrazione Digitale o perché gliel'hai comunicato in passato. Per modificare i recapiti o aggiungerne altri, vai ai tuoi recapiti." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForPEC/i18n/fr.json b/templates-assets/templates/NotificationAARForPEC/i18n/fr.json new file mode 100644 index 0000000..79fbffe --- /dev/null +++ b/templates-assets/templates/NotificationAARForPEC/i18n/fr.json @@ -0,0 +1,15 @@ +{ + "language": "fr", + "subject":"SEND - Nouvelle notification de la part de ${notification.sender.paDenomination}", + "hello":"Bonjour", + "body1":"Vous avez reçu une notification sur SEND - Servizio Notifiche Digitali.", + "sender_label":"Expéditeur", + "subject_label":"Objet", + "iun_label":"Code IUN", + "body2":"Une notification est une communication ayant une valeur juridique composée dun accusé de réception et d'un ou plusieurs documents.", + "body3":"Vous disposez d'un délai de 120 jours à compter de la date de finalisation de la notification pour accéder aux documents. Le délai éventuel pour le paiement et, le cas échéant, pour toute contestation est indiqué dans les documents.", + "read_more":"Vous recevez cet accusé de réception en tant que ${recipientType} avec Code Fiscal ${recipient.taxId}. SEND est un outil qui rend l'envoi de notifications par l'administration publique plus sûr, plus efficace et plus économique. En savoir plus", + "button":"Accéder aux documents", + "greetings":"À bientôt", + "footer":"L'ente mittente conosce questo indirizzo PEC perché l'hai inserito nei tuoi recapiti di SEND, perché fa parte di uno dei registri previsti dal Codice Amministrazione Digitale o perché gliel'hai comunicato in passato. Per modificare i recapiti o aggiungerne altri, vai ai tuoi recapiti." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForPEC/i18n/it.json b/templates-assets/templates/NotificationAARForPEC/i18n/it.json new file mode 100644 index 0000000..488ee51 --- /dev/null +++ b/templates-assets/templates/NotificationAARForPEC/i18n/it.json @@ -0,0 +1,16 @@ +{ + "it_language": "it", + "it_subject":"SEND - Nuova notifica da ${notification.sender.paDenomination}", + "it_hello":"Ciao", + "it_body1":"Hai ricevuto una notifica su SEND - Servizio Notifiche Digitali.", + "it_sender_label":"Mittente", + "it_subject_label":"Oggetto", + "it_iun_label":"Codice IUN", + "it_body2":"Una notifica è una comunicazione a valore legale composta da un avviso di avvenuta ricezione e da uno o più documenti.", + "it_body3":"Hai fino a 120 giorni dalla data di perfezionamento della notifica per accedere ai documenti. Il termine per il pagamento, se previsto, e per eventuali impugnazioni è indicato nei documenti.", + "it_read_more":"Ricevi questo avviso di avvenuta ricezione in qualità di persona ${recipientType} con Codice Fiscale ${recipient.taxId}. SEND è uno strumento che rende l'invio di notifiche da parte della Pubblica Amministrazione più sicuro, efficiente ed economico. Scopri di più", + "it_button":"Accedi ai documenti su SEND", + "it_greetings":"A presto", + "it_avviso_cortesia":"AVVISO DI CORTESIA", + "it_footer":"L'ente mittente conosce questo indirizzo PEC perché l'hai inserito nei tuoi recapiti di SEND, perché fa parte di uno dei registri previsti dal Codice Amministrazione Digitale o perché gliel'hai comunicato in passato. Per modificare i recapiti o aggiungerne altri, vai ai tuoi recapiti." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForPEC/i18n/sl.json b/templates-assets/templates/NotificationAARForPEC/i18n/sl.json new file mode 100644 index 0000000..b9139a6 --- /dev/null +++ b/templates-assets/templates/NotificationAARForPEC/i18n/sl.json @@ -0,0 +1,15 @@ +{ + "language": "sl", + "subject":"SEND - Novo obvestilo od ${notification.sender.paDenomination}", + "hello":"Pozdravljeni", + "body1":"prejeli ste obvestilo prek storitve SEND - Servizio Notifiche Digitali.", + "sender_label":"Pošiljatelj", + "subject_label":"Zadeva", + "iun_label":"IUN (Edinstvena identifikacijska oznaka obvestila)", + "body2":"Obvestilo je pravno veljavna komunikacija sestavljena iz potrdila o prejemu in enega ali več dokumentov.", + "body3":"Za dostop do dokumentov imate na voljo do 120 dni od datuma vročitve obvestila Če je predvideno, je rok za plačilo in morebitne pritožbe naveden v dokumentih.", + "read_more":"To obvestilo prejemate kot ${recipientType} z davčno številko ${recipient.taxId}. SEND je orodje, ki omogoča varnejše, bolj učinkovito in gospodarno pošiljanje obvestil javne uprave. Izvedite več", + "button":"Dostop do dokumentov", + "greetings":"Lep pozdrav", + "footer":"L'ente mittente conosce questo indirizzo PEC perché l'hai inserito nei tuoi recapiti di SEND, perché fa parte di uno dei registri previsti dal Codice Amministrazione Digitale o perché gliel'hai comunicato in passato. Per modificare i recapiti o aggiungerne altri, vai ai tuoi recapiti." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForPEC/index.mjml b/templates-assets/templates/NotificationAARForPEC/index.mjml new file mode 100644 index 0000000..0fa8181 --- /dev/null +++ b/templates-assets/templates/NotificationAARForPEC/index.mjml @@ -0,0 +1,167 @@ + + + SEND - Nuova notifica da ${notification.sender.paDenomination} + + + + + + + + + + + + + + + + + + + + + + + <% if (noIta) { %>

+ <%-subject%> +

<% } %> +

+ <%-it_subject%> +

+
+ + + +

<% if (noIta) { %> + <%-hello%> • <% } %> + <%-it_hello%>,

+
+ + <% if (noIta) { %>

+ <%-body1%> +

<% } %> +

+ <%-it_body1%> +

+
    +
  • + <% if (noIta) { %> + <%-sender_label%> • <% } %> + <%-it_sender_label%>: ${notification.sender.paDenomination} +
  • +
  • + <% if (noIta) { %> + <%-subject_label%> • <% } %> + <%-it_subject_label%>: ${notification.subject} +
  • +
  • + <% if (noIta) { %> + <%-iun_label%> • <% } %> + <%-it_iun_label%>: ${notification.iun} +
  • +
+ <% if (noIta) { %>

+ <%-body2%> +

<% } %> +

+ <%-it_body2%> +

+ <% if (noIta) { %>

+ <%-body3%> +

<% } %> +

+ <%-it_body3%> +

+

+ <% if (noIta) { %> + <%-button%> • <% } %> + <%-it_button%> +

+ + + <% if (noIta) { %>

+ <%-read_more%> +

<% } %> +

+ <%-it_read_more%> +

+
+ +

+ <% if (noIta) { %> + <%-greetings%> • <% } %> + <%-it_greetings%>, +

+

SEND - Servizio Notifiche Digitali

+
+
+
+ + + + + + + <% if (noIta) { %>

+ <%-footer%> +

<% } %> +

+ <%-it_footer%> +

+
+
+
+
+
+
\ No newline at end of file diff --git a/templates-assets/templates/NotificationAARForSMS/index.txt b/templates-assets/templates/NotificationAARForSMS/index.txt new file mode 100644 index 0000000..105d304 --- /dev/null +++ b/templates-assets/templates/NotificationAARForSMS/index.txt @@ -0,0 +1 @@ +Hai ricevuto una notifica da ${notification.sender.paDenomination} con Codice IUN ${notification.iun}. Per leggerla, accedi con SPID o CIE al sito di SEND - Servizio Notifiche Digitali. \ No newline at end of file diff --git a/templates-assets/templates/NotificationAARFor_Subject/index.txt b/templates-assets/templates/NotificationAARFor_Subject/index.txt new file mode 100644 index 0000000..de2758b --- /dev/null +++ b/templates-assets/templates/NotificationAARFor_Subject/index.txt @@ -0,0 +1 @@ +SEND - Nuova notifica da ${notification.sender.paDenomination} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR_RADDalt/i18n/de.json b/templates-assets/templates/NotificationAAR_RADDalt/i18n/de.json new file mode 100644 index 0000000..78b38e4 --- /dev/null +++ b/templates-assets/templates/NotificationAAR_RADDalt/i18n/de.json @@ -0,0 +1,36 @@ +{ + "language": "de", + "aar_label": "EMPFANGSBESTÄTIGUNG", + "notification_subject": "Empfangsbestätigung Feststellungs", + "aar_subtitles_1": "Du hast eine rechtsgültige Mitteilung von ${notification.sender.paDenomination}: siehe die zugestellten Dokumente. Wenn sie nicht in diesem Bescheid enthalten sind, kannst du die Dokumente online auf SEND. Ist eine Zahlung vorgesehen, so findest du das Fälligkeitsdatum und den Termin für etwaige Einsprüche in den Dokumenten.", + "access_to_document_title": "GREIFE AUF DIE ONLINE-DOKUMENTE ZU - KOSTENLOS", + "access_to_document_1": "Scanne den QR-Code oder öffne", + "access_to_document_1_link":"${piattaformaNotificheURLLabel}", + "access_to_document_2": "Melde dich mit SPID oder CIE an (elektronischer Personalausweis)", + "access_to_document_3": "Ruf die zugestellten Dokumente ab", + "send_refinement": "Die Dokumente sind online und an den Abholstellen SEND für 120 Tage ab dem Vervollständigungsdatum der Zustellung (dem Datum, an dem sie für alle Zwecke rechtsgültig wird) verfügbar. Mehr hierzu auf", + "send_refinement_link": "${perfezionamentoURLLabel}", + "read_more":"Mehr hierzu", + "retrieve_copy":"HOL EINE KOPIE VOR ORT AB - GEGEN BEZAHLUNG", + "retrieve_copy_1":"Fordere die zugestellten Dokumente auch ohne SPID oder CIE bei den Abholstellen SEND (Steuerbeistandsstellen und andere vertragsgebundene Händler) an. Suche nach Abholstellen in deiner Nähe unter", + "retrieve_copy_1_link":"${sendURLLAbel}/punti-di-ritiro", + "retrieve_copy_2":"oder oder ${raddPhoneNumber} an", + "retrieve_copy_title_list":"Nimm mit:", + "retrieve_copy_list_1":"diesen Bescheid;", + "retrieve_copy_list_2":"dein Ausweisdokument;", + "retrieve_copy_list_3":"deine Steuernummer.", + "retrieve_copy_3":"Bezahle die Kosten des Dienstes und hol die zugestellten Dokumente ab.", + "delegate_title":"MÖCHTEST DU JEMANDEN ZUR ABHOLUNG BEVOLLMÄCHTIGEN?", + "io":"Ich", + "delego":"bevollmächtige", + "name":"Vor- und Nachname", + "fiscalcode":"Steuernummer", + "delegate_body":"die zugestellten Dokumente abzuholen.", + "signature":"Unterschrift", + "delegate_title_list":"Die bevollmächtigte Person muss Folgendes mitnehmen:", + "delegate_list_1":"diese Empfangsbestätigung mit der ausgefüllten und unterzeichneten Vollmacht;", + "delegate_list_2":"ihr Ausweisdokument;", + "delegate_list_3":"ihre Steuernummer;", + "delegate_list_4":"eine Kopie oder das Original der Steuernummer und des Ausweisdokuments des Bevollmächtigenden", + "delegate_list_5":"un documento che attesti il tuo ruolo di legale rappresentante." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR_RADDalt/i18n/fr.json b/templates-assets/templates/NotificationAAR_RADDalt/i18n/fr.json new file mode 100644 index 0000000..87656ab --- /dev/null +++ b/templates-assets/templates/NotificationAAR_RADDalt/i18n/fr.json @@ -0,0 +1,36 @@ +{ + "language": "fr", + "aar_label": "ACCUSÉ DE RÉCEPTION", + "notification_subject": "Accusé de réception", + "aar_subtitles_1": "Vous avez reçu une communication ayant une valeur juridique de ${notification.sender.paDenomination}: voir les documents notifiés.. S'ils ne figurent pas dans le présent avis, vous pouvez consulter les documents en ligne sur le site SEND. Si un paiement est dû, vous trouverez la date d'échéance et la date d'éventuelles contestations dans les documents.", + "access_to_document_title": "ACCÉDER AUX DOCUMENTS EN LIGNE - GRATUIT", + "access_to_document_1": "Scannez le code QR ou rendez-vous sur", + "access_to_document_1_link":"${piattaformaNotificheURLLabel}", + "access_to_document_2": "Accédez avec SPID ou CIE (carte d'identité électronique)", + "access_to_document_3": "Accédez aux documents notifiés", + "send_refinement": "Les documents sont disponibles en ligne et dans les Points de retrait SEND pendant 120 jours à compter de la date de prise d’effet de la notification (date à laquelle elle devient légalement valide à toutes fins). Pour en savoir plus, consultez le site", + "send_refinement_link": "${perfezionamentoURLLabel}", + "read_more":"En savoir plus", + "retrieve_copy":"RETIRER UN EXEMPLAIRE SUR LE TERRITOIRE - CONTRE PAIEMENT", + "retrieve_copy_1":"Demandez les documents notifiés même sans SPID ou CIE aux Points de retrait SEND (CAF et autres services autorisés). Recherchez les points de retrait près de chez vous sur", + "retrieve_copy_1_link":"${sendURLLAbel}/punti-di-ritiro", + "retrieve_copy_2":"ou appelez le ${raddPhoneNumber}", + "retrieve_copy_title_list":"Apportez avec vous:", + "retrieve_copy_list_1":"cet accusé de réception;", + "retrieve_copy_list_2":"votre pièce d'identité;", + "retrieve_copy_list_3":"votre code fiscal.", + "retrieve_copy_3":"Payez les frais de service et retirez les documents notifiés.", + "delegate_title":"Souhaitez-vous désigner un délégué?", + "io":"Je", + "delego":"délègue par la présente", + "name":"Prénom et nom", + "fiscalcode":"Code fiscale", + "delegate_body":"pour retirer les documents notifiés.", + "signature":"Signature", + "delegate_title_list":"La personne désignée doit apporter:", + "delegate_list_1":"le présent accusé de réception avec la procuration remplie et signée;", + "delegate_list_2":"sa pièce d'identité;", + "delegate_list_3":"son numéro d’identification fiscale;", + "delegate_list_4":"une copie ou l'original du code fiscal et une pièce d'identité de la personne délégante", + "delegate_list_5":"un documento che attesti il tuo ruolo di legale rappresentante." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR_RADDalt/i18n/it.json b/templates-assets/templates/NotificationAAR_RADDalt/i18n/it.json new file mode 100644 index 0000000..30593e0 --- /dev/null +++ b/templates-assets/templates/NotificationAAR_RADDalt/i18n/it.json @@ -0,0 +1,36 @@ +{ + "it_language": "it", + "it_aar_label": "Avviso di Avvenuta Ricezione", + "it_notification_subject": "Avviso di Avvenuta Ricezione", + "it_aar_subtitles_1": "Hai ricevuto una comunicazione a valore legale da ${notification.sender.paDenomination}: prendi visione dei documenti notificati. Se non sono inclusi in questo avviso, accedi ai documenti online su SEND o richiedine una copia presso i Punti di ritiro SEND, in corso di attivazione. Se è previsto un pagamento, nei documenti troverai la data di scadenza e quella per eventuali ricorsi.", + "it_access_to_document_title": "Accedi ai documenti online - gratis", + "it_access_to_document_1": "Inquadra il codice QR o vai su", + "it_access_to_document_1_link":"${piattaformaNotificheURLLabel}", + "it_access_to_document_2": "Entra con SPID o CIE (Carta d'Identità Elettronica);", + "it_access_to_document_3": "Accedi ai documenti notificati.", + "it_send_refinement": "I documenti sono disponibili online e presso i Punti di ritiro SEND per 120 giorni dalla data di perfezionamento della notifica (data in cui assume valore di legge per tutte le diverse finalità). Scopri di più su", + "it_send_refinement_link": "${perfezionamentoURLLabel}", + "it_read_more":"Continua", + "it_retrieve_copy":"RITIRA una copia SUL TERRITORIO - A PAGAMENTO", + "it_retrieve_copy_1":"Richiedi i documenti notificati anche senza SPID o CIE presso i Punti di ritiro SEND (CAF e altri esercenti convenzionati). Cerca i punti di ritiro più vicini a te su", + "it_retrieve_copy_1_link":"${sendURLLAbel}/punti-di-ritiro", + "it_retrieve_copy_2":"oppure chiama il numero ${raddPhoneNumber}", + "it_retrieve_copy_title_list":"Porta con te:", + "it_retrieve_copy_list_1":"questo avviso;", + "it_retrieve_copy_list_2":"un tuo documento di riconoscimento;", + "it_retrieve_copy_list_3":"il tuo codice fiscale.", + "it_retrieve_copy_3":"Paga il costo del servizio e ritira i documenti notificati.", + "it_delegate_title":"VUOI DELEGARE QUALCUNO?", + "it_io":"Io", + "it_delego":"delego", + "it_name":"Nome e Cognome", + "it_fiscalcode":"Codice Fiscale", + "it_delegate_body":"a ritirare i documenti notificati.", + "it_signature":"Firma", + "it_delegate_title_list":"La persona delegata dovrà portare con sé:", + "it_delegate_list_1":"questo avviso con la delega compilata e firmata;", + "it_delegate_list_2":"un suo documento di riconoscimento;", + "it_delegate_list_3":"il suo codice fiscale;", + "it_delegate_list_4":"una copia o l’originale del codice fiscale e di un documento di riconoscimento del delegante", + "it_delegate_list_5":"un documento che attesti il tuo ruolo di legale rappresentante" +} diff --git a/templates-assets/templates/NotificationAAR_RADDalt/i18n/sl.json b/templates-assets/templates/NotificationAAR_RADDalt/i18n/sl.json new file mode 100644 index 0000000..1b9c194 --- /dev/null +++ b/templates-assets/templates/NotificationAAR_RADDalt/i18n/sl.json @@ -0,0 +1,36 @@ +{ + "language": "sl", + "aar_label": "POTRDILO O PREJEMU", + "notification_subject": "Obvestilo o prejemu:", + "aar_subtitles_1": "Prejeli ste uradno sporočilo od ${notification.sender.paDenomination}: Prejeli ste uradno sporočilo od. Če niso vključeni v to obvestilo, do dokumentov lahko dostopate na spletu na platformi SEND. ki jo že uporabljate. Če je predvideno plačilo, bo v dokumentih naveden datum poteka in datum za morebitne pritožbe.", + "access_to_document_title": "DOSTOP DO DOKUMENTOV NA SPLETU - BREZPLAČNO", + "access_to_document_1": "Optično preberite kodo QR ali pojdite na", + "access_to_document_1_link": "${piattaformaNotificheURLLabel}", + "access_to_document_2": "Vstopite s SPID ali CIE (elektronska osebna izkaznica)", + "access_to_document_3": "Dostop do vročenih dokumentov", + "send_refinement": "Dokumenti so na voljo na spletu in na točkah prevzema SEND 120 dni od datuma zaključka obvestila (datum, ko začne pravno veljati za vse različne namene). Izvedite več na", + "send_refinement_link": "${perfezionamentoURLLabel}", + "read_more":"Izvedite več", + "retrieve_copy":"PREVZEMITE IZVOD NA OBMOČJU – PROTI PLAČILU", + "retrieve_copy_1":"Zahtevajte vročene dokumente tudi brez SPID ali CIE na točkah prevzema SEND (CAF in drugi povezani izvajalci). Poiščite najbližje točke prevzema na", + "retrieve_copy_1_link":"${sendURLLAbel}/punti-di-ritiro", + "retrieve_copy_2":"ali pokličite številko ${raddPhoneNumber}", + "retrieve_copy_title_list":"S seboj prinesite:", + "retrieve_copy_list_1":"to obvestilo;", + "retrieve_copy_list_2":"vaš osebni dokument;", + "retrieve_copy_list_3":"vašo davčno številko.", + "retrieve_copy_3":"Plačajte stroške storitve in prevzamete vročene dokumente.", + "delegate_title":"ALI ŽELITE KOGA POOBLASTITI OB PREVZEMU?", + "io":"Jaz", + "delego":"pooblaščam", + "name":"Ime in priimek", + "fiscalcode":"Davčna številka", + "delegate_body":"za prevzem vročenih dokumentov.", + "signature":"Podpis", + "delegate_title_list":"Pooblaščena oseba mora s seboj prinesti:", + "delegate_list_1":"to obvestilo z izpolnjenim in podpisanim pooblastilom;", + "delegate_list_2":"svoj osebni dokument;", + "delegate_list_3":"svojo davčno številko;", + "delegate_list_4":"kopijo ali izvirnik davčne številke in identifikacijski dokument osebe, ki je podala pooblastilo.", + "delegate_list_5":"un documento che attesti il tuo ruolo di legale rappresentante." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR_RADDalt/index.html b/templates-assets/templates/NotificationAAR_RADDalt/index.html new file mode 100644 index 0000000..1b016ba --- /dev/null +++ b/templates-assets/templates/NotificationAAR_RADDalt/index.html @@ -0,0 +1,734 @@ + + + + + + + + <% if (noIta) { %><%-aar_label%> • <% } %><%-it_aar_label%> + + + + + +
+
+
+ +
+ Avviso di Avvenuta Ricezione +
+
+ +
+
+
Codice univoco:
+
${notification.iun} +
+
+
Codice fiscale - Persona <#if recipient.recipientType=="PF"> + fisica: + <#else> + giuridica: +
+
${recipient.taxId} +
+
+
+ +
+
+
+
+
+
+ +
+ +
+
+
+

<% if (noIta) { %><%-notification_subject%> • <% } %><%-it_notification_subject%> (AAR): + ${notification.subject}

+
+
+

<% if (noIta) { %><%-aar_subtitles_1%><% } %>

+

<%-it_aar_subtitles_1%>

+
+ +
+
+ + +
+
+
<% if (noIta) { %><%-access_to_document_title%> • + <% } %><%-it_access_to_document_title%>
+
+
+
    +
  1. + <% if (noIta) { %>

    <%-access_to_document_1%> + <%-access_to_document_1_link%> +

    <% } %> +

    <%-it_access_to_document_1%> + <%-it_access_to_document_1_link%> +

    +
  2. +
  3. + <% if (noIta) { %>

    <%-access_to_document_2%>

    <% } %> +

    <%-it_access_to_document_2%>

    +
  4. +
  5. + <% if (noIta) { %>

    <%-access_to_document_3%>

    <% } %> +

    <%-it_access_to_document_3%>

    +
  6. +
+
+
+
+ qr-code +
+
+
+
+ <% if (noIta) { %>

<%-send_refinement%> <%-send_refinement_link%>

<% } %> +

<%-it_send_refinement%> <%-it_send_refinement_link%>

+
+
+

<% if (noIta) { %><%-read_more%> • <% } %><%-it_read_more%>

+ +
+
+
+
+ + <#if recipient.recipientType=="PF"> + + +
+
+
+ <% if (noIta) { %><%-retrieve_copy%> • <% } %><%-it_retrieve_copy%> +
+
+
    +
  1. + <% if (noIta) { %>

    <%-retrieve_copy_1%> <%-retrieve_copy_1_link%> + <%-retrieve_copy_2%>

    <% } %> +

    <%-it_retrieve_copy_1%> <%-it_retrieve_copy_1_link%> + <%-it_retrieve_copy_2%>

    +
  2. +
  3. + <% if (noIta) { %>

    <%-retrieve_copy_title_list%> +

      +
    • <%-retrieve_copy_list_1%>
    • +
    • <%-retrieve_copy_list_2%>
    • +
    • <%-retrieve_copy_list_3%>
    • +
    +

    <% } %> +

    <%-it_retrieve_copy_title_list%> +

      +
    • <%-it_retrieve_copy_list_1%>
    • +
    • <%-it_retrieve_copy_list_2%>
    • +
    • <%-it_retrieve_copy_list_3%>
    • +
    +

    +
  4. +
  5. + <% if (noIta) { %>

    <%-retrieve_copy_3%> +

    <% } %> +

    <%-it_retrieve_copy_3%> +

    +
  6. +
+
+
+
+ <% if (noIta) { %><%-delegate_title%> • <% } %><%-it_delegate_title%> +
+
+ <% if (noIta) { %><%-io%> • <% } %><%-it_io%>, ${recipient.denomination} + ${recipient.taxId}, <% if (noIta) { %><%-delego%> • <% } %><%-it_delego%> +
+ <% if (noIta) { %>

<%-name%>

<% } %> +

<%-it_name%>

+
+
+ <% if (noIta) { %>

<%-fiscalcode%>

<% } %> +

<%-it_fiscalcode%>

+
+ <% if (noIta) { %>

<%-delegate_body%>

<% } %> +

<%-it_delegate_body%>

+
+ <% if (noIta) { %>

<%-signature%>

<% } %> +

<%-it_signature%>

+
+
+
+ <% if (noIta) { %>
+ <%-delegate_title_list%> +
    +
  • <%-delegate_list_1%>
  • +
  • <%-delegate_list_2%>
  • +
  • <%-delegate_list_3%>
  • +
  • <%-delegate_list_4%> + <#if recipient.recipientType=="PF">.
  • + <#else>; +
  • <%-delegate_list_5%>
  • + +
+
<% } %> + +
+ <%-it_delegate_title_list%> +
    +
  • <%-it_delegate_list_1%>
  • +
  • <%-it_delegate_list_2%>
  • +
  • <%-it_delegate_list_3%>
  • +
  • <%-it_delegate_list_4%> + <#if recipient.recipientType=="PF">.
  • + <#else>; +
  • <%-it_delegate_list_5%>
  • + +
+
+ +
+
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/templates-assets/templates/NotificationAAR_RADDalt/index_it.html b/templates-assets/templates/NotificationAAR_RADDalt/index_it.html new file mode 100644 index 0000000..7641542 --- /dev/null +++ b/templates-assets/templates/NotificationAAR_RADDalt/index_it.html @@ -0,0 +1,688 @@ + + + + + + + + Avviso di Avvenuta Ricezione + + + + + +
+
+
+ +
+ Avviso di Avvenuta Ricezione +
+
+ +
+
+
Codice univoco:
+
${notification.iun} +
+
+
Codice fiscale - Persona <#if recipient.recipientType=="PF"> + fisica: + <#else> + giuridica: +
+
${recipient.taxId} +
+
+
+ +
+
+
+
+
+
+ +
+ +
+
+
+ Avviso di Avvenuta Ricezione: ${notification.subject} +
+
+

Hai ricevuto una comunicazione a valore legale da ${notification.sender.paDenomination}: prendi visione dei documenti notificati. Se non sono inclusi in questo avviso, accedi ai documenti online su SEND o richiedine una copia presso i Punti di ritiro SEND, in corso di attivazione. Se è previsto un pagamento, nei documenti troverai la data di scadenza e quella per eventuali ricorsi.

+
+
+
+
Accedi ai documenti online - gratis
+ qr-code +
+
+
+ Ritira una copia sul territorio - A Pagamento +
+
+
    +
  1. Richiedi i documenti notificati anche senza SPID o CIE presso i Punti di ritiro SEND (CAF e altri esercenti convenzionati). Cerca i punti di ritiro più vicini a te su ${sendURLLAbel}/punti-di-ritiro oppure chiama il numero ${raddPhoneNumber}
  2. +
  3. Porta con te: +
      +
    • questo avviso;
    • +
    • un tuo documento di riconoscimento;
    • +
    • il tuo codice fiscale<#if recipient.recipientType=="PF">.
    • <#else>; +
    • un documento che attesti il tuo + ruolo + di legale rappresentante.
    • + +
    +
  4. +
  5. Paga il costo del servizio e ritira i documenti notificati.
  6. +
+
+
+
+
+
+ + +
+
+
+
    +
  1. Inquadra il codice QR o vai su ${piattaformaNotificheURLLabel}
  2. +
  3. Entra con SPID o CIE (Carta d'Identità Elettronica);
  4. +
  5. Accedi ai documenti notificati.
  6. +
+
+
+
+ I documenti sono disponibili online e presso i Punti di ritiro SEND per 120 giorni dalla data di perfezionamento della notifica (data in cui assume valore di legge per tutte le diverse finalità). Scopri di più su ${perfezionamentoURLLabel} +
+
+
+ Vuoi delegare qualcuno al ritiro? +
+
+ <#if recipient.recipientType=="PF"> + Io, ${recipient.denomination} ${recipient.taxId}, delego + <#else> +
+ Io, + + Nome e Cognome + + in qualità di legale rappresentante di ${recipient.denomination} ${recipient.taxId}, delego +
+ +
+ Nome e Cognome +
+
+ Codice Fiscale +
+ a ritirare i documenti notificati. +
+ Firma +
+
+
+ La persona delegata dovrà portare con sé: +
    +
  • questo avviso con la delega compilata e firmata;
  • +
  • un suo documento di riconoscimento;
  • +
  • il suo codice fiscale;
  • +
  • una copia o l’originale del codice fiscale e di un documento di riconoscimento del delegante<#if recipient.recipientType=="PF">.
  • + <#else>; +
  • un documento che attesti il tuo ruolo + di + legale rappresentante.
  • + +
+ <#if recipient.recipientType=="PF"> +
+

Scopri di più

+ +
+ +
+
+
+
+ + <#if recipient.recipientType=="PF"> + +
+
+

Con SEND - Servizio notifiche digitali ricevi le comunicazioni a valore legale della Pubblica Amministrazione in digitale, dove ti è più comodo e senza raccomandata cartacea

+
+
+

I VANTAGGI DELLE NOTIFICHE DIGITALI

+
+
+ +
+ Ti costa meno:
+ diminuiscono i costi di notificazione +
+
+
+ +
+ Risparmi tempo:
+ niente più attese per il ritiro della raccomandata +
+
+
+ +
+ Non importa dove sei:
+ trovi le tue notifiche e documenti online o su IO +
+
+
+ +
+ Proteggi l'ambiente:
+ meno emissioni per il trasporto e meno carta +
+
+
+
+
+
+
+
+

COSA CAMBIA PER TE

+ +
+
+

Quando un ente ti invia una comunicazione a valore legale tramite SEND, puoi venirne a conoscenza:

+
    +
  • con un messaggio sull'app IO, se attivi il servizio SEND - Notifiche digitali in app;
  • +
  • con una PEC, se la inserisci su SEND, se l’hai comunicata all’ente in precedenza o se è presente nei registri pubblici;
  • +
  • con una e-mail o un SMS, se inserisci i recapiti su SEND.
  • +
+

Se SEND non riesce a raggiungerti via PEC o se non apri la notifica online o sull’app IO entro i termini previsti dal servizio, continuerai a ricevere la raccomandata cartacea.

+

Poiché SEND è in corso di adozione da parte degli enti sul territorio nazionale, potresti ricevere ancora alcune comunicazioni a valore legale com'è avvenuto finora.

+
+
+
+
+
+

CON L'APP IO CONVIENE

+
+
+

Attiva il servizio SEND - Notifiche digitali su app IO per ricevere le prossime comunicazioni a valore legale direttamente sul tuo dispositivo.

+

Se non hai IO, scaricala gratuitamente dallo store.

+
+
+ +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/templates-assets/templates/NotificationCancelledLegalFact/i18n/de.json b/templates-assets/templates/NotificationCancelledLegalFact/i18n/de.json new file mode 100644 index 0000000..319eb5a --- /dev/null +++ b/templates-assets/templates/NotificationCancelledLegalFact/i18n/de.json @@ -0,0 +1,12 @@ +{ + "language": "de", + "subject": "Erklärung zur Stornierung der Zustellung auf der Plattform SEND", + "body1": "Mit diesem Dokument, das dem Empfänger ausschließlich auf der Plattform SEND zur Verfügung steht, wird erklärt, dass die Zustellung mit IUN ${notification.getIun()}an den Empfänger:", + "denomination": "Vor- und Nachname / Firmenbezeichnung", + "fiscalcode": "Steuernummer", + "body2": ", auf ausdrückliches Ersuchen des Absenders ${notification.sender.paDenomination} am ${notificationCancelledDate}.", + "disclaimer1": "Die Stornierung auf SEND, die Gegenstand dieser Erklärung ist, bedeutet nicht notwendigerweise, dass die Voraussetzung für die Zustellung nicht eingetreten ist oder dass Zustellungen hinsichtlich der gleichen Dokumenten, die auf anderen Kanälen als der Plattform SEND ausgeführt werden, ebenfalls storniert werden.", + "disclaimer2": "Für Informationen über die Gründe für die Stornierung, auf die in dieser Erklärung Bezug genommen wird, und über die Abwicklung von Zahlungen, die bereits vor der Stornierung erfolgt sind, hat sich der Empfänger ausschließlich an den Absender zu wenden.", + "signature": "Von PagoPA S.p.A. digital signiert", + "disclaimer_lang": "Der Originaltext dieser Dokumente ist auf Italienisch. Bei Abweichungen zwischen der italienischen Fassung und den Übersetzungen in andere Sprachen sind die Bedeutung und die Bestimmungen der italienischen Sprache maßgebend." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationCancelledLegalFact/i18n/fr.json b/templates-assets/templates/NotificationCancelledLegalFact/i18n/fr.json new file mode 100644 index 0000000..6b6e882 --- /dev/null +++ b/templates-assets/templates/NotificationCancelledLegalFact/i18n/fr.json @@ -0,0 +1,12 @@ +{ + "language": "fr", + "subject": "Déclaration d'annulation de la notification sur la plate-forme SEND", + "body1": "Il est déclaré par la présente, mise à la disposition du destinataire exclusivement sur la plate-forme SEND, que la notification comportant IUN ${notification.getIun()}, exécutée à l'encontre de:", + "denomination":"Prénom et Nom / Raison Sociale", + "fiscalcode": "Code fiscale", + "body2": "a été annulée à la demande expresse de l'expéditeur ${notification.sender.paDenomination} à ${notificationCancelledDate}.", + "disclaimer1": "L'annulation sur SEND qui fait l'objet de la présente déclaration n'implique pas nécessairement que la condition préalable au service ait cessé d'exister ou que les notifications concernant les mêmes documents exécutées sur d'autres canaux que la plate-forme SEND soient également annulées.", + "disclaimer2": "Pour toute information sur les raisons de l'annulation mentionnée dans la présente déclaration, et sur le traitement de tout paiement y afférent s'il a déjà été effectué avant l'annulation, le destinataire doit s'adresser exclusivement à l'expéditeur.", + "signature":"Signé numériquement par PagoPA S.p.A.", + "disclaimer_lang":"Le texte original de ces documents est en italien. En cas de différences entre la version italienne et ses traductions, le sens et les conditions de la langue italienne feront foi." +} diff --git a/templates-assets/templates/NotificationCancelledLegalFact/i18n/it.json b/templates-assets/templates/NotificationCancelledLegalFact/i18n/it.json new file mode 100644 index 0000000..fe7be3e --- /dev/null +++ b/templates-assets/templates/NotificationCancelledLegalFact/i18n/it.json @@ -0,0 +1,12 @@ +{ + "it_language": "it", + "it_subject": "Dichiarazione annullamento notifica sulla piattaforma SEND", + "it_body1": "Con il presente documento, reso disponibile al destinatario esclusivamente sulla Piattaforma SEND, si dichiara che la notifica avente IUN ${notification.getIun()}, eseguita nei confronti di:", + "it_denomination": "Nome e Cognome / Ragione Sociale", + "it_fiscalcode": "Codice fiscale", + "it_body2": "è stata annullata su specifica istanza del Mittente ${notification.sender.paDenomination} in data ${notificationCancelledDate}.", + "it_disclaimer1": "L’annullamento su SEND oggetto della presente dichiarazione non implica necessariamente che il presupposto della notifica sia venuto meno ovvero che siano annullate parimenti notifiche aventi ad oggetto i medesimi atti eseguite su canali diversi dalla Piattaforma SEND.", + "it_disclaimer2": "Per ogni informazione sulle ragioni dell’annullamento di cui alla presente dichiarazione, e sulla gestione dell’eventuale relativo pagamento ove già effettuato precedentemente all’annullamento, il destinatario deve rivolgersi esclusivamente al Mittente.", + "it_signature": "Firmato digitalmente da PagoPA S.p.A.", + "it_disclaimer_lang": "Il testo originario di questi documenti è in lingua italiana. In caso di contrasto tra la versione italiana e le traduzioni in altre lingue, prevarranno il significato e le condizioni della lingua italiana." +} diff --git a/templates-assets/templates/NotificationCancelledLegalFact/i18n/sl.json b/templates-assets/templates/NotificationCancelledLegalFact/i18n/sl.json new file mode 100644 index 0000000..e48c45f --- /dev/null +++ b/templates-assets/templates/NotificationCancelledLegalFact/i18n/sl.json @@ -0,0 +1,12 @@ +{ + "language": "sl", + "subject": "Obvestilo o preklicu obvestila na platformi SEND", + "body1": "S tem dokumentom, ki je prejemniku na voljo izključno na platformi SEND, se izjavlja, da je obvestilo z IUN ${notification.getIun()}za prejemnik:", + "denomination":"Ime in priimek / Pravna oseba", + "fiscalcode":"Davčna številka", + "body2": ", in je bilo preklicano na posebno zahtevo Pošiljatelj ${notification.sender.paDenomination} na dan ${notificationCancelledDate}.", + "disclaimer1": "Preklic v storitvi SEND iz te izjave, ne pomeni nujno, da je zahteva po obveščanju prenehala obstajati ali da je preklicano tudi obveščanje glede dotičnih dokumentov, ki je bilo izvedena prek kanalov, ki niso platforma SEND.", + "disclaimer2": "Za kakršne koli informacije o razlogih za odpoved, navedene v tej izjavi, in o upravljanju katerega koli povezanega plačila, če je že bilo izvedeno pred preklicem, se mora prejemnik obrniti izključno na pošiljatelja.", + "signature":"Digitalno podpisano s strani PagoPA S.p.A.", + "disclaimer_lang":"Izvirno besedilo dokumentov je v italijanskem jeziku. V primeru neskladja med italijansko različico in prevodi v druge jezike bodo prevladali pomen in pogoji v italijanskem jeziku." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationCancelledLegalFact/index.html b/templates-assets/templates/NotificationCancelledLegalFact/index.html new file mode 100644 index 0000000..9674f7d --- /dev/null +++ b/templates-assets/templates/NotificationCancelledLegalFact/index.html @@ -0,0 +1,103 @@ + + + + + + Attestazione opponibile a terzi + + + + +
+ + + + + <% if (noIta) { %>

<%=subject%>

<% } %> +

<%=it_subject%>

+ + <% if (noIta) { %>

<%-body1%>

<% } %> +

<%-it_body1%>

+ + <#list notification.recipients as recipient> +
+
+
+

<% if (noIta) { %><%-denomination%> • <% } %><%-it_denomination%>

+
+
+

${recipient.denomination}

+
+
+ +
+
+

<% if (noIta) { %><%-fiscalcode%> • <% } %><%-it_fiscalcode%>

+
+
+

${recipient.taxId}

+
+
+
+ + + <% if (noIta) { %>

<%-body2%>

<% } %> +

<%-it_body2%>

+ + <% if (noIta) { %>

+ <%-disclaimer1%> +

<% } %> + <% if (noIta) { %>

+ <%-disclaimer2%> +

<% } %> + +

+ <%-it_disclaimer1%> +

+

+ <%-it_disclaimer2%> +

+ + +
+

<% if (noIta) { %><%=signature%> • <% } %><%=it_signature%>

+
+ +
+
+

 

+
+
+ <% if (noIta) { %>

<%=disclaimer_lang%>

<% } %> + <% if (noIta) { %>

<%=it_disclaimer_lang%>

<% } %> +
+
+
+ + diff --git a/templates-assets/templates/NotificationReceivedLegalFact/i18n/de.json b/templates-assets/templates/NotificationReceivedLegalFact/i18n/de.json new file mode 100644 index 0000000..99fedd5 --- /dev/null +++ b/templates-assets/templates/NotificationReceivedLegalFact/i18n/de.json @@ -0,0 +1,15 @@ +{ + "language": "de", + "subject": "Die Bescheinigung kann von Dritten beanstandet werden: Übernahme der Zustellung", + "body1": "Gemäß Artikel 26, Absatz 11 des Gesetzesdekrets 76/2020 in seiner geänderten und ergänzten Fassung BESCHEINIGT PagoPA S.p.A. als rechtmäßiger Verwalter der im selben Artikel 26 genannten Plattform für digitale Zustellungen (auch bekannt als SEND - Servizio Notifiche Digitali), mit aller rechtlichen Befugnis, diese Dritten gegenüber zu vertreten, HIERMIT, dass:", + "body2": "am ${sendDate} die sendende Person ${notification.getSender().getPaDenomination()}, Steuernummer ${notification.getSender().getPaTaxId()} dem Betreiber die in IUN ${notification.getIun()} genannten und mit den folgenden Hashes eindeutig identifizierten IT-Dokumente zur Verfügung gestellt hat:", + "body3": "die sendende Person beantragt hat, dass die Zustellung dieser Dokumente mit dem Betreff ${subject} an die nachstehend aufgeführten Empfänger mit ihrem etwaigen speziellen digitalen Domizil und ihrer von der sendenden Person angegebenen physischen Adresse erfolgt.", + "body4": "Es wird auch bescheinigt, dass für die Zwecke der Identifizierung des digitalen Domizils, das vorrangig für die Zustellung zu verwenden ist, die Ergebnisse der Überprüfungen laut Art. 7 Abs. 1 und 2 des Dekrets des Ministers für die Digitalisierung digitale Transformation 58/2022 gelten.", + "denomination": "Vor- und Nachname / Firmenbezeichnung", + "fiscalcode": "Steuernummer", + "digitaldomicile": "Digitales Domizil", + "digitaldomicile_type": "Art des digitalen Domizils", + "address": "Physische Adresse", + "signature": "Von PagoPA S.p.A. digital signiert", + "disclaimer_lang": "Der Originaltext dieser Dokumente ist auf Italienisch. Bei Abweichungen zwischen der italienischen Fassung und den Übersetzungen in andere Sprachen sind die Bedeutung und die Bestimmungen der italienischen Sprache maßgebend." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationReceivedLegalFact/i18n/fr.json b/templates-assets/templates/NotificationReceivedLegalFact/i18n/fr.json new file mode 100644 index 0000000..d98056c --- /dev/null +++ b/templates-assets/templates/NotificationReceivedLegalFact/i18n/fr.json @@ -0,0 +1,15 @@ +{ + "language": "fr", + "subject":"Attestation opposable aux tiers : notification prise en charge", + "body1":"Conformément à l’art. 26, paragraphe 11, du décret-loi italien 76/2020 tel que modifié et complété, la société PagoPA S.p.A., en sa qualité d’opérateur ex lege de la Plateforme Notifications Numériques visée audit article 26 (également connue sous le nom de SEND - Servizio Notifiche Digitali), avec plein effet juridique quant à l’opposabilité aux tiers, CERTIFIE QUE:", + "body2":"le ${sendDate}, l’expéditeur ${notification.getSender().getPaDenomination()}, C.F. ${notification.getSender().getPaTaxId()} a mis à la disposition de l’opérateur les documents informatiques visés à l’IUN ${notification.getIun()} et identifiés de manière univoque par les hachs suivants:", + "body3":"l’expéditeur a demandé que la notification de ces documents ait pour objet ${subject} et qu’elle soit signifiée aux destinataires énumérés ci-dessous, ainsi qu’à leur éventuel domicile numérique spécial et à leur adresse physique, tels qu’ils ont été fournis par l’expéditeur lui-même.", + "body4":"Il est également certifié qu’aux fins de l’identification du domicile numérique à utiliser en premier pour la notification, les résultats des vérifications visées à l’article 7, paragraphes 1 et 2, du décret du ministre italien chargé de la transformation numérique 58/2022, restent inchangés.", + "denomination":"Prénom et Nom / Raison Sociale", + "fiscalcode":"Code Fiscal", + "digitaldomicile":"Domicile numérique", + "digitaldomicile_type":"Type de domicile numérique", + "address":"Adresse physique", + "signature":"Signé numériquement par PagoPA S.p.A.", + "disclaimer_lang":"Le texte original de ces documents est en italien. En cas de différences entre la version italienne et ses traductions, le sens et les conditions de la langue italienne feront foi." +} diff --git a/templates-assets/templates/NotificationReceivedLegalFact/i18n/it.json b/templates-assets/templates/NotificationReceivedLegalFact/i18n/it.json new file mode 100644 index 0000000..da4a05e --- /dev/null +++ b/templates-assets/templates/NotificationReceivedLegalFact/i18n/it.json @@ -0,0 +1,15 @@ +{ + "it_language": "it", + "it_subject":"Attestazione opponibile a terzi: notifica presa in carico", + "it_body1":"Ai sensi dell’art. 26, comma 11, del decreto-legge 76/2020 s.m.i., la PagoPA S.p.A. nella sua qualità di gestore ex lege della Piattaforma Notifiche Digitali di cui allo stesso art. 26 (anche nota come SEND - Servizio Notifiche Digitali), con ogni valore legale per l'opponibilità a terzi, ATTESTA CHE:", + "it_body2":"in data ${sendDate} il soggetto mittente ${notification.getSender().getPaDenomination()}, C.F. ${notification.getSender().getPaTaxId()} ha messo a disposizione del gestore i documenti informatici di cui allo IUN ${notification.getIun()} e identificati in modo univoco con i seguenti hash:", + "it_body3":"il soggetto mittente ha richiesto che la notificazione di tali documenti riporti come oggetto ${subject} e che venga eseguita nei confronti dei destinatari che si riportano di seguito unitamente all'eventuale domicilio digitale speciale e al loro indirizzo fisico, come forniti dal soggetto mittente stesso.", + "it_body4":"Si attesta, altresì, che ai fini dell'individuazione del domicilio digitale da utilizzare in via prioritaria per la notificazione, restano ferme le risultanze delle verifiche di cui all'art. 7, commi 1 e 2, del Decreto del Ministro per la Trasformazione Digitale 58/2022.", + "it_denomination":"Nome e Cognome / Ragione Sociale", + "it_fiscalcode":"Codice Fiscale", + "it_digitaldomicile":"Domicilio digitale", + "it_digitaldomicile_type":"Tipologia di domicilio digitale", + "it_address":"Indirizzo fisico", + "it_signature":"Firmato digitalmente da PagoPA S.p.A.", + "it_disclaimer_lang":"Il testo originario di questi documenti è in lingua italiana. In caso di contrasto tra la versione italiana e le traduzioni in altre lingue, prevarranno il significato e le condizioni della lingua italiana." +} diff --git a/templates-assets/templates/NotificationReceivedLegalFact/i18n/sl.json b/templates-assets/templates/NotificationReceivedLegalFact/i18n/sl.json new file mode 100644 index 0000000..3c259f3 --- /dev/null +++ b/templates-assets/templates/NotificationReceivedLegalFact/i18n/sl.json @@ -0,0 +1,15 @@ +{ + "language": "sl", + "subject":"Zavezujoče potrdilo za tretje osebe: prevzem obvestila", + "body1":"V skladu z 11. odstavkom 26. člena zakonskega odloka 76/2020 s spremembami, družba PagoPA S.p.A. kot zakoniti upravljavec Platforme za digitalno obveščanje, opredeljene v istem 26. členu (znana tudi kot SEND - Servizio Notifiche Digitali), z vsemi pravnimi učinki za veljavnost do tretjih oseb, POTRJUJE, DA:", + "body2":"je ${notification.getSender().getPaDenomination()}, davčna številka ${notification.getSender().getPaTaxId()}, dne ${sendDate} dal upravljavcu na voljo elektronske dokumente, navedene v IUN ${notification.getIun()}, ki so identificirani z naslednjimi zgoščenimi vrednostmi (hash):", + "body3":"Pošiljatelj je zahteval, da obvestilo o teh dokumentih vsebuje zadevo ${subject} in da se pošlje spodaj navedenim prejemnikom skupaj z morebitnim posebnim digitalnim naslovom in njihovim fizičnim naslovom, kot jih je posredoval pošiljatelj.", + "body4":"Prav tako se potrjuje, da v zvezi z določanjem digitalnega naslova, ki se bo uporabljal prednostno za obvestila, ostajajo v veljavi ugotovitve iz preverjanj v skladu z odstavki 1 in 2 7. člena uredbe ministra za digitalno preobrazbo št. 58/2022.", + "denomination":"Ime in priimek / Pravna oseba", + "fiscalcode":"Davčna številka", + "digitaldomicile":"Digitalni naslov", + "digitaldomicile_type":"Vrsta digitalnega naslova", + "address":"Fizični naslov", + "signature":"Digitalno podpisano s strani PagoPA S.p.A.", + "disclaimer_lang":"Izvirno besedilo dokumentov je v italijanskem jeziku. V primeru neskladja med italijansko različico in prevodi v druge jezike bodo prevladali pomen in pogoji v italijanskem jeziku." +} diff --git a/templates-assets/templates/NotificationReceivedLegalFact/index.html b/templates-assets/templates/NotificationReceivedLegalFact/index.html new file mode 100644 index 0000000..149caed --- /dev/null +++ b/templates-assets/templates/NotificationReceivedLegalFact/index.html @@ -0,0 +1,178 @@ + + + + + + Attestazione opponibile a terzi + + + + + +
+ + + + + <% if (noIta) { %>

+ <%=subject%> +

<% } %> +

+ <%=it_subject%> +

+ + + + <% if (noIta) { %>

+ <%=body1%> +

<% } %> + <% if (noIta) { %>

+ <%-body2%> +

<% } %> +

+ <%=it_body1%> +

+

+ <%-it_body2%> +

+ +

+

    + <#list digests as digest> +
  • + ${digest} +
  • + +
+

+ <% if (noIta) { %>

+ <%-body3%> +

<% } %> + <% if (noIta) { %>

+ <%-body4%> +

<% } %> +

+ <%-it_body3%> +

+

+ <%-it_body4%> +

+ + + <#list notification.recipients as recipient> +
+ +
+
+

<% if (noIta) { %><%-denomination%> • <% } %><%-it_denomination%>

+
+
+

${recipient.denomination}

+
+
+ +
+
+

<% if (noIta) { %><%-fiscalcode%> • <% } %><%-it_fiscalcode%>

+
+
+

${recipient.taxId}

+
+
+ +
+
+

<% if (noIta) { %><%-digitaldomicile%> • <% } %><%-it_digitaldomicile%>

+
+
+

+ + <#if (recipient.getDigitalDomicile().getAddress())??> + ${recipient.getDigitalDomicile().getAddress()} + <#else> + non fornito dalla PA + + +

+
+
+ +
+
+

<% if (noIta) { %><%-digitaldomicile_type%> • <% } %><%-it_digitaldomicile_type%>

+
+
+

+ + <#if (recipient.getDigitalDomicile().getAddress())??> + Domicilio eletto presso la Pubblica Amministrazione mittente ex art.26, comma 5 lettera b del D.L. + 76/2020 + <#else> + non fornito dalla PA + + +

+
+
+ +
+
+

<% if (noIta) { %><%-address%> • <% } %><%-it_address%>

+
+
+

+ + <#if addressWriter.nullSafePhysicalAddressToString( recipient.physicalAddress, + recipient.denomination, '
' )??> + ${addressWriter.nullSafePhysicalAddressToString( recipient.physicalAddress, + recipient.denomination, '
')} + <#else> + non presente + +
+

+
+
+ +
+ + +
+
+

 

+
+
+

<% if (noIta) { %><%-signature%> • <% } %><%-it_signature%>

+
+
+
+
+

 

+
+
+ <% if (noIta) { %>

<%-disclaimer_lang%>

<% } %> + <% if (noIta) { %>

<%-it_disclaimer_lang%>

<% } %> +
+
+
+ + + \ No newline at end of file diff --git a/templates-assets/templates/NotificationViewedLegalFact/i18n/de.json b/templates-assets/templates/NotificationViewedLegalFact/i18n/de.json new file mode 100644 index 0000000..e6d7cf2 --- /dev/null +++ b/templates-assets/templates/NotificationViewedLegalFact/i18n/de.json @@ -0,0 +1,14 @@ +{ + "language": "de", + "subject": "Die Bescheinigung kann von Dritten beanstandet werden: Zugang erfolgt", + "body1": "Gemäß Artikel 26, Absatz 11 des Gesetzesdekrets 76/2020 in seiner geänderten und ergänzten Fassung BESCHEINIGT PagoPA S.p.A. als rechtmäßiger Verwalter der im selben Artikel 26 genannten Plattform für digitale Zustellungen (auch bekannt als SEND - Servizio Notifiche Digitali), mit aller rechtlichen Befugnis, diese Dritten gegenüber zu vertreten, HIERMIT, dass:", + "body2": "die in der durch IUN ${iun} identifizierten Zustellung genannten Akte wie folgt verwaltet wurden:", + "recipient": "Empfänger", + "delegate": "Delegierter", + "denomination": "Vor- und Nachname / Firmenbezeichnung", + "fiscalcode": "Steuernummer", + "body3": "am ${when}, le <#if delegate??> Empfänger <#else> Delegierte Zugang zu den benachrichtigungspflichtigen und mit der bereits angegebenen IUN verbundenen IT-Dokumenten hatte.", + "signature": "Von PagoPA S.p.A. digital signiert", + "disclaimer_lang": "Der Originaltext dieser Dokumente ist auf Italienisch. Bei Abweichungen zwischen der italienischen Fassung und den Übersetzungen in andere Sprachen sind die Bedeutung und die Bestimmungen der italienischen Sprache maßgebend.", + "disclaimer": "In dem Nachweis wird das Datum angegeben, an dem der Empfänger (oder sein Delegierter) erstmals über die Plattform Zugang zu dem zustellungspflichtigen Dokument hatte. Dieses Datum entspricht nicht unbedingt dem Datum der Vervollständigung der Zustellung, das aufgrund des Fristablaufs auch früher liegen kann. Um das korrekte Datum der Vervollständigung der Zustellung zu ermitteln, wird der Empfänger (oder sein Delegierter) gebeten, in diesen FAQ zu prüfen, wie das Datum der Vervollständigung zu berechnen ist." +} \ No newline at end of file diff --git a/templates-assets/templates/NotificationViewedLegalFact/i18n/fr.json b/templates-assets/templates/NotificationViewedLegalFact/i18n/fr.json new file mode 100644 index 0000000..45f6dd8 --- /dev/null +++ b/templates-assets/templates/NotificationViewedLegalFact/i18n/fr.json @@ -0,0 +1,14 @@ +{ + "language": "fr", + "subject":"Attestation opposable aux tiers: accès survenu", + "body1":"Conformément à l’art. 26, paragraphe 11, du décret-loi italien 76/2020 tel que modifié et complété, la société PagoPA S.p.A., en sa qualité d’opérateur ex lege de la Plateforme Notifications Numériques visée audit article 26 (également connue sous le nom de SEND - Servizio Notifiche Digitali), avec plein effet juridique quant à l’opposabilité aux tiers, CERTIFIE QUE:", + "body2":"les actes visés à la notification identifiée par IUN ${iun} ont été traités comme suit:", + "recipient":"Destinataire", + "delegate":"Délégué", + "denomination":"Prénom et Nom / Raison Sociale", + "fiscalcode":"Code Fiscal", + "body3":"le ${when}, le <#if delegate??> délégué <#else> destinataire a eu accès aux documents informatiques faisant l’objet de la notification et associés à l’IUN déjà indiqué.", + "signature":"Signé numériquement par PagoPA S.p.A.", + "disclaimer_lang":"Le texte original de ces documents est en italien. En cas de différences entre la version italienne et ses traductions, le sens et les conditions de la langue italienne feront foi.", + "disclaimer":"L’attestation indique la date à laquelle le destinataire (ou son délégué) a eu accès pour la première fois, via la plateforme, à l’acte à notifier. Cette date ne correspond pas nécessairement à la date de finalisation de la notification, qui peut également être antérieure en raison de l'expiration du délai. Afin d’identifier la date correcte de réception de la notification, le destinataire (ou son délégué) est invité à vérifier dans cette FAQ comment doit être calculée la date de réception." +} diff --git a/templates-assets/templates/NotificationViewedLegalFact/i18n/it.json b/templates-assets/templates/NotificationViewedLegalFact/i18n/it.json new file mode 100644 index 0000000..72dc031 --- /dev/null +++ b/templates-assets/templates/NotificationViewedLegalFact/i18n/it.json @@ -0,0 +1,14 @@ +{ + "it_language": "it", + "it_subject":"Attestazione opponibile a terzi: avvenuto accesso", + "it_body1":"Ai sensi dell’art. 26, comma 11, del decreto-legge 76/2020 s.m.i., la PagoPA S.p.A. nella sua qualità di gestore ex lege della Piattaforma Notifiche Digitali di cui allo stesso art. 26 (anche nota come SEND - Servizio Notifiche Digitali), con ogni valore legale per l'opponibilità a terzi, ATTESTA CHE:", + "it_body2":"gli atti di cui alla notifica identificata con IUN ${iun} sono stati gestiti come segue:", + "it_recipient":"Destinatario", + "it_delegate":"Delegato", + "it_denomination":"Nome e Cognome / Ragione Sociale", + "it_fiscalcode":"Codice Fiscale", + "it_body3":"in data ${when} il <#if delegate??> delegato <#else> destinatario ha avuto accesso ai documenti informatici oggetto di notifica e associati allo IUN già indicato.", + "it_signature":"Firmato digitalmente da PagoPA S.p.A.", + "it_disclaimer_lang":"Il testo originario di questi documenti è in lingua italiana. In caso di contrasto tra la versione italiana e le traduzioni in altre lingue, prevarranno il significato e le condizioni della lingua italiana.", + "it_disclaimer":"L’attestazione riporta la data in cui il destinatario (o il suo delegato) per la prima volta ha avuto accesso tramite la piattaforma al documento oggetto di notificazione. Tale data non necessariamente corrisponde alla data di perfezionamento della notifica, che può anche essere antecedente per decorrenza termini. Ai fini di individuare la giusta data di perfezionamento della notifica, si invita il destinatario (o il suo delegato) a verificare in questa FAQ come deve essere calcolata la data di perfezionamento." +} diff --git a/templates-assets/templates/NotificationViewedLegalFact/i18n/sl.json b/templates-assets/templates/NotificationViewedLegalFact/i18n/sl.json new file mode 100644 index 0000000..ab65d0f --- /dev/null +++ b/templates-assets/templates/NotificationViewedLegalFact/i18n/sl.json @@ -0,0 +1,14 @@ +{ + "language": "sl", + "subject":"Zavezujoče potrdilo za tretje osebe: opravljen dostop", + "body1":"V skladu z 11. odstavkom 26. člena zakonskega odloka 76/2020 s spremembami, družba PagoPA S.p.A. kot zakoniti upravljavec Platforme za digitalno obveščanje, opredeljene v istem 26. členu (znana tudi kot SEND – Servizio Notifiche Digitali), z vsemi pravnimi učinki za veljavnost do tretjih oseb, POTRJUJE, DA:", + "body2":"les actes visés à la notification identifiée par IUN ${iun} ont été traités comme suit:", + "recipient":"Prejemnik", + "delegate":"Delegat", + "denomination":"Ime in priimek / Pravna oseba", + "fiscalcode":"Davčna številka", + "body3":"dne ${when}, le <#if delegate??> délégué <#else> prejemnik je pooblaščenec dostopal do zadevnih elektronskih dokumentov, povezanih z zgoraj navedenim IUN.", + "signature":"Digitalno podpisano s strani PagoPA S.p.A.", + "disclaimer_lang":"Izvirno besedilo dokumentov je v italijanskem jeziku. V primeru neskladja med italijansko različico in prevodi v druge jezike bodo prevladali pomen in pogoji v italijanskem jeziku.", + "disclaimer":"Potrdilo vsebuje datum, ko je prejemnik (ali njegov pooblaščenec) na platformi prvič dostopal do dokumenta, ki je predmet obvestila. Ta datum ni nujno enak datumu popolne prijave, ki je lahko zaradi izteka roka tudi zgodnejši. Da bi ugotovili pravilen datum popolnosti vročitve, naj prejemnik (ali njegov pooblaščenec) v teh pogostih vprašanjih preveri, kako se izračuna datum popolnosti." +} diff --git a/templates-assets/templates/NotificationViewedLegalFact/index.html b/templates-assets/templates/NotificationViewedLegalFact/index.html new file mode 100644 index 0000000..6f3b4ee --- /dev/null +++ b/templates-assets/templates/NotificationViewedLegalFact/index.html @@ -0,0 +1,134 @@ + + + + + + Attestazione opponibile a terzi + + + + + +
+ + + + + <% if (noIta) { %>

+ <%=subject%> +

<% } %> +

+ <%=it_subject%> +

+ + <% if (noIta) { %>

+ <%=body1%> +

<% } %> + <% if (noIta) { %>

+ <%-body2%> +

<% } %> + +

+ <%=it_body1%> +

+

+ <%-it_body2%> +

+ + +
+
+
+

<% if (noIta) { %><%-recipient%> • <% } %><%-it_recipient%>

+
+
+
+
+

<% if (noIta) { %><%-denomination%> • <% } %><%-it_denomination%>

+
+
+

${recipient.denomination}

+
+
+
+
+

<% if (noIta) { %><%-fiscalcode%> • <% } %><%-it_fiscalcode%>

+
+
+

${recipient.taxId}

+
+
+
+ + <#if delegate??> +
+
+
+

<% if (noIta) { %><%-delegate%> • <% } %><%-it_delegate%> +

+
+
+
+
+

<% if (noIta) { %><%-denomination%> • <% } %><%-it_denomination%>

+
+
+

${delegate.denomination}

+
+
+
+
+

<% if (noIta) { %><%-fiscalcode%> • <% } %><%-it_fiscalcode%>

+
+
+

${delegate.taxId}

+
+
+
+ + + <% if (noIta) { %>

+ <%-body3%> +

<% } %> +

+ <%-it_body3%> +

+ +
+

<% if (noIta) { %><%-signature%> • <% } %><%-it_signature%>

+
+
+
+

 

+
+
+ <% if (noIta) { %>

<%-disclaimer_lang%>

<% } %> + <% if (noIta) { %>

<%-it_disclaimer_lang%>

<% } %> +
+
+
+
+ <% if (noIta) { %>

<%-disclaimer%>

<% } %> +

<%-it_disclaimer%>

+
+ + + \ No newline at end of file diff --git a/templates-assets/templates/PEC_ValidationContactsRejectBody/index.mjml b/templates-assets/templates/PEC_ValidationContactsRejectBody/index.mjml new file mode 100644 index 0000000..dca02de --- /dev/null +++ b/templates-assets/templates/PEC_ValidationContactsRejectBody/index.mjml @@ -0,0 +1,113 @@ + + + SEND - La PEC che hai inserito non è valida + + + + + + + + + + + + + + + + + + + + + + +

+ SEND - La PEC che hai inserito non è valida +

+
+ + + +

+ Ciao, +

+

+ L'indirizzo PEC che hai inserito su SEND come recapito legale + non è formalmente valido. +

+

+ Per ricevere gli avvisi di avvenuta ricezione in digitale e + risparmiare tempo e denaro, + vai ai tuoi recapiti + e inserisci nuovamente l’indirizzo assicurandoti che si tratti di + una PEC e non di un indirizzo email ordinario e che non siano + presenti errori di digitazione. +

+
+ +
+
+ + + +
+
+
diff --git a/templates-assets/templates/PEC_ValidationContactsRejectSubject/index.txt b/templates-assets/templates/PEC_ValidationContactsRejectSubject/index.txt new file mode 100644 index 0000000..fe5c20f --- /dev/null +++ b/templates-assets/templates/PEC_ValidationContactsRejectSubject/index.txt @@ -0,0 +1 @@ +SEND - La PEC che hai inserito non è valida \ No newline at end of file diff --git a/templates-assets/templates/PEC_ValidationContactsSuccessBody/index.mjml b/templates-assets/templates/PEC_ValidationContactsSuccessBody/index.mjml new file mode 100644 index 0000000..9868a1e --- /dev/null +++ b/templates-assets/templates/PEC_ValidationContactsSuccessBody/index.mjml @@ -0,0 +1,106 @@ + + + SEND - Recapito legale PEC confermato + + + + + + + + + + + + + + + + + + + + + + +

+ SEND - Recapito legale PEC confermato +

+
+ + + +

+ Ciao, +

+

+ L'indirizzo PEC che hai indicato su SEND come recapito legale + è confermato. +

+

+ A partire da questo momento, lo useremo come + indirizzo principale per inviarti gli avvisi di + avvenuta ricezione.
Per maggiori informazioni, + leggi le FAQ. +

+
+ + +
+
+ + + +
+
+
diff --git a/templates-assets/templates/PEC_ValidationContactsSuccessSubject/index.txt b/templates-assets/templates/PEC_ValidationContactsSuccessSubject/index.txt new file mode 100644 index 0000000..d8a86a9 --- /dev/null +++ b/templates-assets/templates/PEC_ValidationContactsSuccessSubject/index.txt @@ -0,0 +1 @@ +SEND - Recapito legale PEC confermato \ No newline at end of file diff --git a/templates-assets/templates/PEC_VerificationCodeBody/index.mjml b/templates-assets/templates/PEC_VerificationCodeBody/index.mjml new file mode 100644 index 0000000..d7c04c9 --- /dev/null +++ b/templates-assets/templates/PEC_VerificationCodeBody/index.mjml @@ -0,0 +1,104 @@ + + + SEND - Conferma la tua PEC + + + + + + + + + + + + + + + + + + + + + + + +

+ SEND - Conferma la tua PEC +

+
+ + + + +

+ Ciao, +

+ +

+ Per confermare la volontà di registrare questo indirizzo PEC, come + recapito legale utilizzato da SEND quale indirizzo principale per + l'invio di avvisi di avvenuta ricezione, inserisci su + SEND - Servizio Notifiche Digitali + il codice +

+
+ ${verificationCode} +
+
+ +
+
+ + + + +
+
+
diff --git a/templates-assets/templates/PEC_VerificationCodeSubject/index.txt b/templates-assets/templates/PEC_VerificationCodeSubject/index.txt new file mode 100644 index 0000000..a6f25de --- /dev/null +++ b/templates-assets/templates/PEC_VerificationCodeSubject/index.txt @@ -0,0 +1 @@ +SEND - Conferma la tua PEC \ No newline at end of file diff --git a/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/de.json b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/de.json new file mode 100644 index 0000000..5ad61f4 --- /dev/null +++ b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/de.json @@ -0,0 +1,17 @@ +{ + "language": "de", + "subject_success":"Die Bescheinigung kann von Dritten beanstandet werden: digitale Zustellung", + "subject_failure":"Die Bescheinigung kann von Dritten beanstandet werden: digitale Unzustellbarkeit", + "body1":"Gemäß Artikel 26, Absatz 11 des Gesetzesdekrets 76/2020 in seiner geänderten und ergänzten Fassung BESCHEINIGT PagoPA S.p.A. als rechtmäßiger Verwalter der im selben Artikel 26 genannten Plattform für digitale Zustellungen (auch bekannt als SEND - Servizio Notifiche Digitali), mit aller rechtlichen Befugnis, diese Dritten gegenüber zu vertreten, HIERMIT, dass:", + "body2":"die in der durch IUN ${iun} identifizierten Zustellung genannten Akte wie folgt verwaltet wurden:", + "body3_success":"die entsprechende Empfangsbestätigung in elektronischem Format wurde am ${delivery.responseDate} an das unmittelbar über diesem Datum angegebene digitale Domizil übermittelt.", + "body3_failure":"Am ${delivery.responseDate}, ging die entsprechende Benachrichtigung über die Unzustellbarkeit an das angegebene digitale Domizil ein.", + "body4_failure":"Am ${endWorkflowDate}, hat der Betreiber der Plattform die Benachrichtigung über die Unzustellbarkeit der Nachricht gemäß Art. 26, Absatz 6 des Gesetzesdekrets 76 vom 16. Juli 2020 bereitgestellt.", + "denomination": "Vor- und Nachname / Firmenbezeichnung", + "fiscalcode": "Steuernummer", + "digitaldomicile": "Digitales Domizil", + "digitaldomicile_type": "Art des digitalen Domizils", + "address": "Physische Adresse", + "signature": "Von PagoPA S.p.A. digital signiert", + "disclaimer_lang": "Der Originaltext dieser Dokumente ist auf Italienisch. Bei Abweichungen zwischen der italienischen Fassung und den Übersetzungen in andere Sprachen sind die Bedeutung und die Bestimmungen der italienischen Sprache maßgebend." +} diff --git a/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/fr.json b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/fr.json new file mode 100644 index 0000000..c59d7aa --- /dev/null +++ b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/fr.json @@ -0,0 +1,17 @@ +{ + "language": "fr", + "subject_success":"Attestation opposable aux tiers: notification numérique", + "subject_failure":"Attestation opposable aux tiers : échec de remise numérique", + "body1":"Conformément à l’art. 26, paragraphe 11, du décret-loi italien 76/2020 tel que modifié et complété, la société PagoPA S.p.A., en sa qualité d’opérateur ex lege de la Plateforme Notifications Numériques visée audit article 26 (également connue sous le nom de SEND - Servizio Notifiche Digitali), avec plein effet juridique quant à l’opposabilité aux tiers, CERTIFIE QUE:", + "body2":"les actes visés à la notification identifiée par IUN ${iun} ont été traités comme suit:", + "body3_success":"l’accusé de réception au format électronique a été délivré le ${delivery.responseDate} au domicile numérique indiqué immédiatement au-dessus de cette date.", + "body3_failure":"Le ${delivery.responseDate}, le message d’échec de remise a été reçu à l’adresse numérique indiquée.", + "body4_failure":"Le ${endWorkflowDate}, l’opérateur de la plateforme a mis à disposition la notification d’échec de remise du message conformément à l’article 26, paragraphe 6 du décret-loi italien 76 du 16 juillet 2020.", + "denomination":"Prénom et Nom / Raison Sociale", + "fiscalcode":"Code Fiscal", + "digitaldomicile":"Domicile numérique", + "digitaldomicile_type":"Type de domicile numérique", + "address":"Adresse physique", + "signature":"Signé numériquement par PagoPA S.p.A.", + "disclaimer_lang":"Le texte original de ces documents est en italien. En cas de différences entre la version italienne et ses traductions, le sens et les conditions de la langue italienne feront foi." +} diff --git a/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/it.json b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/it.json new file mode 100644 index 0000000..e4cadf1 --- /dev/null +++ b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/it.json @@ -0,0 +1,17 @@ +{ + "it_language": "it", + "it_subject_success":"Attestazione opponibile a terzi: notifica digitale", + "it_subject_failure":"Attestazione opponibile a terzi: mancato recapito digitale", + "it_body1":"Ai sensi dell’art. 26, comma 11, del decreto-legge 76/2020 s.m.i., la PagoPA S.p.A. nella sua qualità di gestore ex lege della Piattaforma Notifiche Digitali di cui allo stesso art. 26 (anche nota come SEND - Servizio Notifiche Digitali), con ogni valore legale per l'opponibilità a terzi, ATTESTA CHE:", + "it_body2":"gli atti di cui alla notifica identificata con IUN ${iun} sono stati gestiti come segue:", + "it_body3_success":"il relativo avviso di avvenuta ricezione in formato elettronico è stato consegnato in data ${delivery.responseDate} al domicilio digitale indicato immediatamente sopra la presente data.", + "it_body3_failure":"in data ${delivery.responseDate} è stato ricevuto il relativo messaggio di mancato recapito al domicilio digitale indicato immediatamente sopra la presente data.", + "it_body4_failure":"In data ${endWorkflowDate} il gestore della piattaforma ha reso disponibile l’avviso di mancato recapito del messaggio ai sensi dell’art. 26, comma 6 del D.L. 76 del 16 luglio 2020.", + "it_denomination":"Nome e Cognome / Ragione Sociale", + "it_fiscalcode":"Codice Fiscale", + "it_digitaldomicile":"Domicilio digitale", + "it_digitaldomicile_type":"Tipologia di domicilio digitale", + "it_address":"Indirizzo fisico", + "it_signature":"Firmato digitalmente da PagoPA S.p.A.", + "it_disclaimer_lang":"Il testo originario di questi documenti è in lingua italiana. In caso di contrasto tra la versione italiana e le traduzioni in altre lingue, prevarranno il significato e le condizioni della lingua italiana." +} diff --git a/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/sl.json b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/sl.json new file mode 100644 index 0000000..468e848 --- /dev/null +++ b/templates-assets/templates/PecDeliveryWorkflowLegalFact/i18n/sl.json @@ -0,0 +1,17 @@ +{ + "language": "sl", + "subject_success":"Zavezujoče potrdilo za tretje osebe: digitalno obvestilo", + "subject_failure":"Zavezujoče potrdilo za tretje osebe: neuspešna digitalna dostava", + "body1":"V skladu z 11. odstavkom 26. člena zakonskega odloka 76/2020 s spremembami, družba PagoPA S.p.A. kot zakoniti upravljavec Platforme za digitalno obveščanje, opredeljene v istem 26. členu (znana tudi kot SEND - Servizio Notifiche Digitali), z vsemi pravnimi učinki za veljavnost do tretjih oseb, POTRJUJE, DA:", + "body2":"so bili akti, opredeljeni v obvestilu IUN ${iun}, obravnavani, kot sledi:", + "body3_success":"Ustrezno obvestilo o prejemu v elektronski obliki je bilo dostavljeno dne ${delivery.responseDate} na zgornji digitalni naslov.", + "body3_failure":"Dne ${delivery.responseDate} e bilo prejeto sporočilo o neuspešni dostavi na navedeni digitalni naslov.", + "body4_failure":"Dne ${endWorkflowDate} je upravljavec platforme dal na voljo obvestilo o neuspešni dostavi sporočila v skladu s 6. odstavkom 26. člena zakona št. 76 z dne 16. julija 2020.", + "denomination":"Ime in priimek / Pravna oseba", + "fiscalcode":"Davčna številka", + "digitaldomicile":"Digitalni naslov", + "digitaldomicile_type":"Vrsta digitalnega naslova", + "address":"Fizični naslov", + "signature":"Digitalno podpisano s strani PagoPA S.p.A.", + "disclaimer_lang":"Izvirno besedilo dokumentov je v italijanskem jeziku. V primeru neskladja med italijansko različico in prevodi v druge jezike bodo prevladali pomen in pogoji v italijanskem jeziku." +} diff --git a/templates-assets/templates/PecDeliveryWorkflowLegalFact/index.html b/templates-assets/templates/PecDeliveryWorkflowLegalFact/index.html new file mode 100644 index 0000000..c646331 --- /dev/null +++ b/templates-assets/templates/PecDeliveryWorkflowLegalFact/index.html @@ -0,0 +1,172 @@ + + + + + + Attestazione opponibile a terzi + + + + + +
+ + + + + <#if endWorkflowStatus=="SUCCESS"> + <% if (noIta) { %>

+ <%=subject_success%> +

<% } %> +

+ <%=it_subject_success%> +

+ <#else> + <% if (noIta) { %>

+ <%=subject_failure%> +

<% } %> +

+ <%=it_subject_failure%> +

+ + + <% if (noIta) { %>

+ <%=body1%> +

<% } %> + <% if (noIta) { %>

+ <%-body2%> +

<% } %> + +

+ <%=it_body1%> +

+

+ <%-it_body2%> +

+ + <#list deliveries as delivery> +
+
+
+

<% if (noIta) { %><%-denomination%> • <% } %><%-it_denomination%>

+
+
+

${delivery.denomination}

+
+
+ +
+
+

<% if (noIta) { %><%-fiscalcode%> • <% } %><%-it_fiscalcode%>

+
+
+

${delivery.taxId}

+
+
+ +
+
+

<% if (noIta) { %><%-digitaldomicile%> • <% } %><%-it_digitaldomicile%>

+
+
+

+ <#if delivery.address??> + <#if delivery.type=="SERCQ"> + Domicilio Digitale SEND + <#else> + ${delivery.address} + + <#else> + non presente + +

+
+
+ +
+
+

<% if (noIta) { %><%-digitaldomicile_type%> • <% } %><%-it_digitaldomicile_type%>

+
+
+

+ <#if delivery.addressSource??> + <#if delivery.addressSource=="PLATFORM"> + Domicilio di Piattaforma ex art.26, comma 5 lettera c del D.L. + 76/2020 + <#elseif delivery.addressSource=="SPECIAL"> + Domicilio eletto presso la Pubblica Amministrazione mittente ex art.26, + comma 5 lettera b del D.L. 76/2020 + <#elseif delivery.addressSource=="GENERAL"> + Domicilio generale inserito nei registri pubblici ex art.26, comma 5 + lettera a del D.L. 76/2020 + + <#else> + non presente + +

+
+
+ +
+ <#if delivery.ok> + <% if (noIta) { %>

+ <%-body3_success%> +

<% } %> +

+ <%-it_body3_success%> +

+ <#else> + <% if (noIta) { %>

+ <%-body3_failure%> +

<% } %> +

+ <%-it_body3_failure%> +

+ + + + + <#if endWorkflowStatus !="SUCCESS"> + <% if (noIta) { %>

+ <%-body4_failure%> +

<% } %> +

+ <%-it_body4_failure%> +

+ + +
+

<% if (noIta) { %><%-signature%> • <% } %><%-it_signature%>

+
+
+
+

 

+
+
+ <% if (noIta) { %>

<%-disclaimer_lang%>

<% } %> + <% if (noIta) { %>

<%-it_disclaimer_lang%>

<% } %> +
+
+ +
+ + + \ No newline at end of file diff --git a/templates-assets/templates/SMS_VerificationCodeBody/index.txt b/templates-assets/templates/SMS_VerificationCodeBody/index.txt new file mode 100644 index 0000000..ac95c1e --- /dev/null +++ b/templates-assets/templates/SMS_VerificationCodeBody/index.txt @@ -0,0 +1 @@ +Conferma questo numero di cellulare come recapito digitale a cui ricevere gli avvisi di cortesia inserendo su SEND il codice %s. \ No newline at end of file diff --git a/templates-assets/templates/partials/divider.mjml b/templates-assets/templates/partials/divider.mjml new file mode 100644 index 0000000..877fd4c --- /dev/null +++ b/templates-assets/templates/partials/divider.mjml @@ -0,0 +1,11 @@ + + + + + diff --git a/templates-assets/templates/partials/footer-mail-verification.mjml b/templates-assets/templates/partials/footer-mail-verification.mjml new file mode 100644 index 0000000..eac58c3 --- /dev/null +++ b/templates-assets/templates/partials/footer-mail-verification.mjml @@ -0,0 +1,23 @@ + + + +

+ Ricevi questa comunicazione perché hai inserito questo indirizzo + e-mail come recapito di cortesia di SEND. Per modificare i recapiti o + aggiungerne altri, + vai ai tuoi recapiti. +

+
+
+
diff --git a/templates-assets/templates/partials/footer-mail.mjml b/templates-assets/templates/partials/footer-mail.mjml new file mode 100644 index 0000000..d77dfef --- /dev/null +++ b/templates-assets/templates/partials/footer-mail.mjml @@ -0,0 +1,23 @@ + + + +

+ Ricevi questa comunicazione perché hai inserito il tuo indirizzo + e-mail tra i recapiti di cortesia di SEND. Per modificare i recapiti o + aggiungerne altri, + vai ai tuoi recapiti. +

+
+
+
diff --git a/templates-assets/templates/partials/footer-pec-verification.mjml b/templates-assets/templates/partials/footer-pec-verification.mjml new file mode 100644 index 0000000..fbbca8e --- /dev/null +++ b/templates-assets/templates/partials/footer-pec-verification.mjml @@ -0,0 +1,23 @@ + + + +

+ Ricevi questa comunicazione perché hai inserito il tuo indirizzo + PEC come recapito legale di SEND. Per modificare i recapiti o + aggiungerne altri, + vai ai tuoi recapiti. +

+
+
+
diff --git a/templates-assets/templates/partials/footer-pec.mjml b/templates-assets/templates/partials/footer-pec.mjml new file mode 100644 index 0000000..70980e6 --- /dev/null +++ b/templates-assets/templates/partials/footer-pec.mjml @@ -0,0 +1,20 @@ + + + +

+ L'ente mittente conosce questo indirizzo PEC perché + l'hai inserito nei tuoi recapiti di SEND, perché fa parte di + uno dei registri previsti dal Codice Amministrazione Digitale o + perché gliel'hai comunicato in passato. Per modificare i + recapiti o aggiungerne altri, + vai ai tuoi recapiti. +

+
+
+
diff --git a/templates-assets/templates/partials/main-logo-verification.mjml b/templates-assets/templates/partials/main-logo-verification.mjml new file mode 100644 index 0000000..3447639 --- /dev/null +++ b/templates-assets/templates/partials/main-logo-verification.mjml @@ -0,0 +1,12 @@ + + + + + diff --git a/templates-assets/templates/partials/main-logo.mjml b/templates-assets/templates/partials/main-logo.mjml new file mode 100644 index 0000000..bb0c9e1 --- /dev/null +++ b/templates-assets/templates/partials/main-logo.mjml @@ -0,0 +1,12 @@ + + + + + diff --git a/templates-assets/templates/partials/main-pec-logo.mjml b/templates-assets/templates/partials/main-pec-logo.mjml new file mode 100644 index 0000000..ea9dd6e --- /dev/null +++ b/templates-assets/templates/partials/main-pec-logo.mjml @@ -0,0 +1,7 @@ + + +
+ SEND - Servizio Notifiche Digitali +
+
diff --git a/templates-assets/templates/partials/signature.mjml b/templates-assets/templates/partials/signature.mjml new file mode 100644 index 0000000..7346402 --- /dev/null +++ b/templates-assets/templates/partials/signature.mjml @@ -0,0 +1,11 @@ + +

+ A presto, +

+

SEND - Servizio Notifiche Digitali

+