From 3cd8138b5c0e354ff72ec06b5fd4db5392200bdd Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 10:14:23 +0100 Subject: [PATCH 01/55] chore(deps): add deps for newly added libs --- .commitlintrc.yml | 4 - README.md | 13 + commitlint.config.js | 12 + package-lock.json | 899 +++++++++++++++++++++++++++++-------------- package.json | 14 +- 5 files changed, 648 insertions(+), 294 deletions(-) delete mode 100644 .commitlintrc.yml create mode 100644 commitlint.config.js diff --git a/.commitlintrc.yml b/.commitlintrc.yml deleted file mode 100644 index 9f17590..0000000 --- a/.commitlintrc.yml +++ /dev/null @@ -1,4 +0,0 @@ -extends: - - '@commitlint/config-angular' -rules: - 'header-max-length': [2, 'always', 100] diff --git a/README.md b/README.md index 1a0e7ee..d3bd78f 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ Public helper packages with commonly used utilities / helpers. +
+ shiftcode logo +
+ > [![@shiftcode/branch-utilities](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fbranch-utilities%2Fpackage.json&label=%40shiftcode%2Fbranch-utilities)](packages/branch-utilities) \ > functions to read information about the current branch either locally or inside Github actions. @@ -11,6 +15,15 @@ Public helper packages with commonly used utilities / helpers. > [![@shiftcode/eslint-plugin-rules](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Feslint-plugin-rules%2Fpackage.json&label=%40shiftcode%2Feslint-plugin-rules)](packages/eslint-plugin-rules) \ > Contains some custom es lint rules. Those are used in our recommended eslint config. +> [![@shiftcode/logger](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Flogger%2Fpackage.json&label=%40shiftcode%2Flogger)](packages/logger)\ +> A logging library configurable with different/multiple transports for your needs. + +> [![@shiftcode/inversify-logger](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Finversify-logger%2Fpackage.json&label=%40shiftcode%2Finversify-logger)](packages/inversify-logger)\ +> Inversify LogTransport to use with the @shiftcode/logger package. + +> [![@shiftcode/nest-logger](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fnest-logger%2Fpackage.json&label=%40shiftcode%2Fnest-logger)](packages/nest-logger)\ +> NestJS LogTransport to use with the @shiftcode/logger package. + > [![@shiftcode/publish-helper](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fpublish-helper%2Fpackage.json&label=%40shiftcode%2Fpublish-helper)](packages/publish-helper)\ > scripts to prepare and publish libs inside mono-repos with lerna diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..6c3657c --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,12 @@ +/** + * @see https://commitlint.js.org/reference/configuration.html + * @type { import('@commitlint/types').UserConfig } + */ +const config = { + extends: ['@commitlint/config-conventional'], + rules: { + 'header-max-length': [2, 'always', 100], + }, +} + +export default config diff --git a/package-lock.json b/package-lock.json index 1901087..54a7a04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,19 +10,25 @@ "packages/*" ], "dependencies": { - "lerna": "^9.0.3", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/testing": "^11.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.1.0", "tslib": "^2.3.0" }, "devDependencies": { - "@commitlint/cli": "^19.3.0", - "@commitlint/config-angular": "^19.3.0", - "@commitlint/prompt-cli": "^19.3.1", + "@commitlint/cli": "^20.4.1", + "@commitlint/config-conventional": "^20.4.1", + "@commitlint/prompt-cli": "^20.4.1", "@jest/globals": "^29.5.0", "@types/jest": "^29.5.12", "@types/node": "^22.15.0", "eslint": "^9.36.0", "husky": "^9.0.11", "jest": "^29.7.0", + "lerna": "^9.0.3", "lint-staged": "^15.2.7", "prettier": "^3.3.2", "sort-package-json": "^2.10.0", @@ -885,17 +891,28 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@borewit/text-codec": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@commitlint/cli": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", - "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.4.1.tgz", + "integrity": "sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/format": "^19.8.1", - "@commitlint/lint": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/read": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/format": "^20.4.0", + "@commitlint/lint": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/read": "^20.4.0", + "@commitlint/types": "^20.4.0", "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, @@ -906,34 +923,28 @@ "node": ">=v18" } }, - "node_modules/@commitlint/config-angular": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-angular/-/config-angular-19.8.1.tgz", - "integrity": "sha512-5OAVgqwg6m4iXP2FkrswKZjrgzyQetR5Jkyt5SajlxLfKzZOzdB3hSqVJQdtvF/AxiMwz9Ey5BIXTCfSIrvZGg==", + "node_modules/@commitlint/config-conventional": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.4.1.tgz", + "integrity": "sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-angular-type-enum": "^19.8.1" + "@commitlint/types": "^20.4.0", + "conventional-changelog-conventionalcommits": "^9.1.0" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/config-angular-type-enum": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-angular-type-enum/-/config-angular-type-enum-19.8.1.tgz", - "integrity": "sha512-JKEINTDQcH5+qSq0Fcp/gzT7SQ3RvY74SNXiMABNTsseocB33TKMzPwDJHZbl/hyRemWEE97Qbxz+ILnJ+9AZQ==", - "dev": true, - "engines": { - "node": ">=v18" - } - }, "node_modules/@commitlint/config-validator": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", - "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.4.0.tgz", + "integrity": "sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.4.0", "ajv": "^8.11.0" }, "engines": { @@ -941,12 +952,13 @@ } }, "node_modules/@commitlint/ensure": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", - "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.4.1.tgz", + "integrity": "sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.4.0", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", @@ -958,34 +970,37 @@ } }, "node_modules/@commitlint/execute-rule": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", - "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", + "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=v18" } }, "node_modules/@commitlint/format": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", - "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.4.0.tgz", + "integrity": "sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "chalk": "^5.3.0" + "@commitlint/types": "^20.4.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/is-ignored": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", - "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.4.1.tgz", + "integrity": "sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.4.0", "semver": "^7.6.0" }, "engines": { @@ -993,87 +1008,105 @@ } }, "node_modules/@commitlint/lint": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", - "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.4.1.tgz", + "integrity": "sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/is-ignored": "^19.8.1", - "@commitlint/parse": "^19.8.1", - "@commitlint/rules": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@commitlint/is-ignored": "^20.4.1", + "@commitlint/parse": "^20.4.1", + "@commitlint/rules": "^20.4.1", + "@commitlint/types": "^20.4.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/load": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", - "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.4.0.tgz", + "integrity": "sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/execute-rule": "^19.8.1", - "@commitlint/resolve-extends": "^19.8.1", - "@commitlint/types": "^19.8.1", - "chalk": "^5.3.0", + "@commitlint/config-validator": "^20.4.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.4.0", + "@commitlint/types": "^20.4.0", "cosmiconfig": "^9.0.0", "cosmiconfig-typescript-loader": "^6.1.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" + "is-plain-obj": "^4.1.0", + "lodash.mergewith": "^4.6.2", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/message": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", - "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.0.tgz", + "integrity": "sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==", "dev": true, + "license": "MIT", "engines": { "node": ">=v18" } }, "node_modules/@commitlint/parse": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", - "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.4.1.tgz", + "integrity": "sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-parser": "^5.0.0" + "@commitlint/types": "^20.4.0", + "conventional-changelog-angular": "^8.1.0", + "conventional-commits-parser": "^6.2.1" }, "engines": { "node": ">=v18" } }, + "node_modules/@commitlint/parse/node_modules/conventional-changelog-angular": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", + "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@commitlint/prompt": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/prompt/-/prompt-19.8.1.tgz", - "integrity": "sha512-IH3zJBJ2GSffgAJtW5EklK72skEAa3PZsbWQ5+Ybumd9QjKMnI9vagz5lprGRImdysaFREsMCOVpmcWjxpxPxg==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/prompt/-/prompt-20.4.1.tgz", + "integrity": "sha512-dLXTdNnXiWyYPHM9a5gMpZrDTbjrwoJJGICD1aS4eCviw9yc8vNKoTytxR+oNb3xXS9i/0b4Ajhr1ALy996dMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/types": "^19.8.1", - "chalk": "^5.3.0", - "inquirer": "^9.2.15" + "@commitlint/ensure": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/types": "^20.4.0", + "inquirer": "^9.2.15", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/prompt-cli": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/prompt-cli/-/prompt-cli-19.8.1.tgz", - "integrity": "sha512-rK92LywMpGKpBg730sRVRujUF3yP+xSLdfYpYSPK6jCbhVvTRPcBYVi3plIBR1VETto97+hN1HHTTpZsN8jSUA==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/prompt-cli/-/prompt-cli-20.4.1.tgz", + "integrity": "sha512-5kivMX7Sq5PkxwTqhk/KmhKG52BHIoWvt2a6qY3g+9ZCls/lNjLw1HxMV+raeGk79K+eD/g/Tj+XWWkkzZkivA==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/prompt": "^19.8.1", + "@commitlint/prompt": "^20.4.1", "inquirer": "^9.2.15", "tinyexec": "^1.0.0" }, @@ -1085,13 +1118,14 @@ } }, "node_modules/@commitlint/read": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", - "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.4.0.tgz", + "integrity": "sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/top-level": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/top-level": "^20.4.0", + "@commitlint/types": "^20.4.0", "git-raw-commits": "^4.0.0", "minimist": "^1.2.8", "tinyexec": "^1.0.0" @@ -1101,13 +1135,14 @@ } }, "node_modules/@commitlint/resolve-extends": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", - "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.4.0.tgz", + "integrity": "sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/config-validator": "^20.4.0", + "@commitlint/types": "^20.4.0", "global-directory": "^4.0.1", "import-meta-resolve": "^4.0.0", "lodash.mergewith": "^4.6.2", @@ -1118,49 +1153,53 @@ } }, "node_modules/@commitlint/rules": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", - "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.4.1.tgz", + "integrity": "sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/message": "^19.8.1", - "@commitlint/to-lines": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@commitlint/ensure": "^20.4.1", + "@commitlint/message": "^20.4.0", + "@commitlint/to-lines": "^20.0.0", + "@commitlint/types": "^20.4.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/to-lines": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", - "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", + "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=v18" } }, "node_modules/@commitlint/top-level": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", - "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.0.tgz", + "integrity": "sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^7.0.0" + "escalade": "^3.2.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/types": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", - "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.4.0.tgz", + "integrity": "sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" + "conventional-commits-parser": "^6.2.1", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" @@ -1770,6 +1809,62 @@ } } }, + "node_modules/@inversifyjs/common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.5.2.tgz", + "integrity": "sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==", + "license": "MIT" + }, + "node_modules/@inversifyjs/container": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/container/-/container-1.15.0.tgz", + "integrity": "sha512-U2xYsPrJTz5za2TExi5lg8qOWf8TEVBpN+pQM7B8BVA2rajtbRE9A66SLRHk8c1eGXmg+0K4Hdki6tWAsSQBUA==", + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/core": "9.2.0", + "@inversifyjs/plugin": "0.2.0", + "@inversifyjs/reflect-metadata-utils": "1.4.1" + }, + "peerDependencies": { + "reflect-metadata": "~0.2.2" + } + }, + "node_modules/@inversifyjs/core": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-9.2.0.tgz", + "integrity": "sha512-Nm7BR6KmpgshIHpVQWuEDehqRVb6GBm8LFEuhc2s4kSZWrArZ15RmXQzROLk4m+hkj4kMXgvMm5Qbopot/D6Sg==", + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/prototype-utils": "0.1.3", + "@inversifyjs/reflect-metadata-utils": "1.4.1" + } + }, + "node_modules/@inversifyjs/plugin": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/plugin/-/plugin-0.2.0.tgz", + "integrity": "sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==", + "license": "MIT" + }, + "node_modules/@inversifyjs/prototype-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@inversifyjs/prototype-utils/-/prototype-utils-0.1.3.tgz", + "integrity": "sha512-EzRamZzNgE9Sn3QtZ8NncNa2lpPMZfspqbK6BWFguWnOpK8ymp2TUuH46ruFHZhrHKnknPd7fG22ZV7iF517TQ==", + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2" + } + }, + "node_modules/@inversifyjs/reflect-metadata-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-1.4.1.tgz", + "integrity": "sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==", + "license": "MIT", + "peerDependencies": { + "reflect-metadata": "~0.2.2" + } + }, "node_modules/@isaacs/balanced-match": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", @@ -2824,6 +2919,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -2835,6 +2939,105 @@ "@tybys/wasm-util": "^0.9.0" } }, + "node_modules/@nestjs/common": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", + "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", + "license": "MIT", + "dependencies": { + "file-type": "21.3.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", + "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/testing": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.13.tgz", + "integrity": "sha512-bOWP8nLEZAOEEX8jAZGBCc1yU0+nv4g2ipc+QEzkVUe3eEEUKHKaeGafJ3GtDuGavlZKfkXEqflZuICdavu5dQ==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3464,6 +3667,22 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, "node_modules/@nx/devkit": { "version": "22.1.3", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", @@ -3824,10 +4043,18 @@ "resolved": "packages/eslint-plugin-rules", "link": true }, + "node_modules/@shiftcode/inversify-logger": { + "resolved": "packages/inversify-logger", + "link": true + }, "node_modules/@shiftcode/logger": { "resolved": "packages/logger", "link": true }, + "node_modules/@shiftcode/nest-logger": { + "resolved": "packages/nest-logger", + "link": true + }, "node_modules/@shiftcode/publish-helper": { "resolved": "packages/publish-helper", "link": true @@ -3934,6 +4161,29 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", @@ -4030,15 +4280,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", - "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -5798,6 +6039,15 @@ "typedarray": "^0.0.6" } }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -5815,6 +6065,19 @@ "node": ">=16" } }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-9.1.0.tgz", + "integrity": "sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/conventional-changelog-core": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", @@ -6323,21 +6586,19 @@ } }, "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", + "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", "dev": true, + "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" + "meow": "^13.0.0" }, "bin": { - "conventional-commits-parser": "cli.mjs" + "conventional-commits-parser": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-recommended-bump": { @@ -6657,12 +6918,13 @@ } }, "node_modules/cosmiconfig-typescript-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz", + "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==", "dev": true, + "license": "MIT", "dependencies": { - "jiti": "^2.4.1" + "jiti": "^2.6.1" }, "engines": { "node": ">=v18" @@ -6755,6 +7017,7 @@ "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7883,6 +8146,12 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", @@ -7952,6 +8221,24 @@ "node": ">=16.0.0" } }, + "node_modules/file-type": { + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", + "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -7991,23 +8278,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", - "dev": true, - "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -8487,6 +8757,7 @@ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, + "license": "MIT", "dependencies": { "dargs": "^8.0.0", "meow": "^12.0.1", @@ -8499,6 +8770,19 @@ "node": ">=16" } }, + "node_modules/git-raw-commits/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/git-remote-origin-url": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", @@ -8792,6 +9076,7 @@ "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", "dependencies": { "ini": "4.1.1" }, @@ -9145,10 +9430,11 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9192,6 +9478,7 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9251,6 +9538,17 @@ "node": ">= 0.4" } }, + "node_modules/inversify": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", + "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/container": "1.15.0", + "@inversifyjs/core": "9.2.0" + } + }, "node_modules/ip-address": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", @@ -9650,18 +9948,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dev": true, - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", @@ -9816,6 +10102,15 @@ "node": ">=8" } }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, "node_modules/jackspeak": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", @@ -10867,10 +11162,11 @@ } }, "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "devOptional": true, + "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -11795,6 +12091,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, "node_modules/load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -11810,26 +12125,12 @@ "node": ">=8" } }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.ismatch": { "version": "4.4.0", @@ -11837,17 +12138,12 @@ "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", "license": "MIT" }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -11864,31 +12160,29 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.upperfirst": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", @@ -12169,12 +12463,13 @@ } }, "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16.10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12495,6 +12790,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -13398,6 +13694,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -13421,6 +13718,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13436,6 +13734,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13452,6 +13751,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -13464,6 +13764,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -13511,48 +13812,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -13914,15 +14173,6 @@ "parse-path": "^7.0.0" } }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -13970,6 +14220,16 @@ "node": "20 || >=22" } }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -14537,6 +14797,12 @@ "node": ">=8" } }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -14812,6 +15078,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -15304,6 +15571,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10.x" } @@ -15564,6 +15832,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15706,18 +15990,6 @@ "node": ">=8" } }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -15825,6 +16097,24 @@ "node": ">=8.0" } }, + "node_modules/token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -16119,6 +16409,30 @@ "node": ">=0.8.0" } }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -16143,18 +16457,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unique-filename": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz", @@ -16751,13 +17053,23 @@ "eslint": "^9.37.0" } }, + "packages/inversify-logger": { + "name": "@shiftcode/inversify-logger", + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": "^22.0.0 || ^24.0.0" + }, + "peerDependencies": { + "@shiftcode/logger": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0" + } + }, "packages/logger": { "name": "@shiftcode/logger", "version": "4.0.0", "license": "UNLICENSED", - "devDependencies": { - "@shiftcode/utilities": "^4.3.1" - }, "engines": { "node": "^22.0.0 || ^24.0.0" }, @@ -16765,6 +17077,21 @@ "@shiftcode/utilities": "^4.0.0" } }, + "packages/nest-logger": { + "name": "@shiftcode/nest-logger", + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": "^22.0.0 || ^24.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@shiftcode/logger": "^4.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.1.0" + } + }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", "version": "5.0.0", diff --git a/package.json b/package.json index 2ab7317..718845a 100644 --- a/package.json +++ b/package.json @@ -20,19 +20,25 @@ "test:ci": "lerna run test:ci" }, "dependencies": { - "lerna": "^9.0.3", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/testing": "^11.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.1.0", "tslib": "^2.3.0" }, "devDependencies": { - "@commitlint/cli": "^19.3.0", - "@commitlint/config-angular": "^19.3.0", - "@commitlint/prompt-cli": "^19.3.1", + "@commitlint/cli": "^20.4.1", + "@commitlint/config-conventional": "^20.4.1", + "@commitlint/prompt-cli": "^20.4.1", "@jest/globals": "^29.5.0", "@types/jest": "^29.5.12", "@types/node": "^22.15.0", "eslint": "^9.36.0", "husky": "^9.0.11", "jest": "^29.7.0", + "lerna": "^9.0.3", "lint-staged": "^15.2.7", "prettier": "^3.3.2", "sort-package-json": "^2.10.0", From f246a8237cb406f4b53317fc60a2e7f3db3165a1 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 10:18:30 +0100 Subject: [PATCH 02/55] build: add postbuild script to make the scripts executable --- packages/publish-helper/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index c5811b9..c61f3ae 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -13,6 +13,7 @@ "scripts": { "prebuild": "rm -rf ./dist", "build": "tsc", + "postbuild": "chmod +x ./dist/prepare-dist.js ./dist/publish-lib.js", "format": "npm run format:base -- --write", "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", "format:ci": "npm run format:base -- --check", From 2355173213ed740b29abe1c143afddacc1ea93d1 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 10:21:01 +0100 Subject: [PATCH 03/55] build: use `npx prepare-dist` --- packages/branch-utilities/package.json | 2 +- packages/eslint-config-recommended/package.json | 2 +- packages/eslint-plugin-rules/package.json | 2 +- packages/logger/package.json | 2 +- packages/utilities/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index bcd12af..bc48252 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -23,7 +23,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "prepublish": "prepare-dist", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", "test:watch": "npm run test -- --watch" diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index bc5e68e..ff56f35 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -28,7 +28,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "prepublish": "prepare-dist", "test": "echo 'Error: no test specificed'", "test:ci": "npm run test" }, diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index ab1d51f..c50764c 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -24,7 +24,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "prepublish": "prepare-dist", "test": "jest", "test:ci": "npm run test" }, diff --git a/packages/logger/package.json b/packages/logger/package.json index 13cac62..9c13294 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -31,7 +31,7 @@ "lint": "eslint --fix --cache ./src ./test", "lint:ci": "eslint ./src ./test", "lint:staged": "eslint --fix --cache", - "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "prepublish": "prepare-dist", "test": "NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", "test:watch": "npm run test -- --watch" diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 9cab75a..da9b463 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -23,7 +23,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "prepublish": "prepare-dist", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", "test:watch": "npm run test -- --watch" From 51b0baeb6263b464adea8f7622e394a18ad050c8 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 10:46:47 +0100 Subject: [PATCH 04/55] chore: install vitest --- package-lock.json | 2593 +++++++++++++++++++++++++++++++++++---------- package.json | 3 +- 2 files changed, 2016 insertions(+), 580 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54a7a04..231448a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,8 @@ "prettier": "^3.3.2", "sort-package-json": "^2.10.0", "ts-jest": "^29.2.0", - "typescript": "^5.5.3" + "typescript": "^5.5.3", + "vitest": "^4.0.18" }, "engines": { "node": "^22.15.0" @@ -1233,411 +1234,667 @@ "tslib": "^2.4.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, + "optional": true, + "os": [ + "aix" + ], "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": ">=18" } }, - "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/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", - "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.16.0" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "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" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/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/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/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==", - "license": "MIT" - }, - "node_modules/@eslint/js": { - "version": "9.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", - "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" + "node": ">=18" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "license": "Apache-2.0", + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.16.0", - "levn": "^0.4.1" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "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==", - "license": "Apache-2.0", + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18.0" + "node": ">=18" } }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18.0" + "node": ">=18" } }, - "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/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=18" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "license": "Apache-2.0", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=18" } }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "license": "Apache-2.0", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/core/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "license": "ISC", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18" } }, - "node_modules/@inquirer/core/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==", - "license": "ISC", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, + "optional": true, + "os": [ + "openharmony" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/external-editor/node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "license": "MIT" - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=18" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" } }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "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_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==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "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" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/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==", + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.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==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.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==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "license": "MIT", "dependencies": { + "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -1651,10 +1908,10 @@ } } }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", @@ -1672,15 +1929,20 @@ } } }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -1694,7 +1956,188 @@ } } }, - "node_modules/@inquirer/prompts": { + "node_modules/@inquirer/core/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@inquirer/core/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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor/node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "license": "MIT" + }, + "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { "version": "7.10.1", "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", @@ -2593,10 +3036,11 @@ } }, "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 + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -3652,379 +4096,729 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "license": "ISC", + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@nx/devkit": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", + "integrity": "sha512-ACwmelqurupbuvvTUA+hWw978H2odLGvnYtlSut3qmw/TzS7bkptd4CmPpks6dGPTOSQbJGzbwLo9OEMs36BBA==", + "license": "MIT", + "dependencies": { + "@zkochan/js-yaml": "0.0.7", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "minimatch": "9.0.3", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 21 <= 23 || ^22.0.0-0" + } + }, + "node_modules/@nx/devkit/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.1.3.tgz", + "integrity": "sha512-4D/jXGsr3jcQ0vBo8aXXZMdfmC3n4OsZ1zjFaOXlF62Ujug+RqI/IvKxycT9r7Lr09PmW2OqBC01NfIWKoBLhg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.1.3.tgz", + "integrity": "sha512-XmdccOBp1Lx9DXUzYDX65mkFqFvXaxUKm1d63bfA43vxIYUpR59SASB81KRQ/Q4dgvvU27C0EJuxSJbXsSkSYw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.1.3.tgz", + "integrity": "sha512-O+o4mqPwhKxfdsri4KxDbXbjwIwr04GfTSfA0TwgXs6hFf68qmc45FAmPGrPSvxIJg9+mUVDeFirdS8GcUE0jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.1.3.tgz", + "integrity": "sha512-ZIPDgzLq8qmvrZ3Bp+bWXam5uKwahjcChBNtORVtrHQfm4mxov2RMUMKTg2ZsVAWVP64zK+gmzG5LuoZjPMm4Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.1.3.tgz", + "integrity": "sha512-wgpPaTpQKl+cCkSuE5zamTVrg14mRvT+bLAeN/yHSUgMztvGxwl3Ll+K9DgEcktBo1PLECTWNkVaW8IAsJm4Rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.1.3.tgz", + "integrity": "sha512-o9XmQehSPR2y0RD4evD+Ob3lNFuwsFOL5upVJqZ3rcE6GkJIFPg8SwEP5FaRIS5MwS04fxnek20NZ18BHjjV/g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.1.3.tgz", + "integrity": "sha512-ekcinyDNTa2huVe02T2SFMR8oArohozRbMGO19zftbObXXI4dLdoAuLNb3vK9Pe4vYOpkhfxBVkZvcWMmx7JdA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.1.3.tgz", + "integrity": "sha512-CqpRIJeIgELCqIgjtSsYnnLi6G0uqjbp/Pw9d7w4im4/NmJXqaE9gxpdHA1eowXLgAy9W1LkfzCPS8Q2IScPuQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.1.3.tgz", + "integrity": "sha512-YbuWb8KQsAR9G0+7b4HA16GV962/VWtRcdS7WY2yaScmPT2W5rObl528Y2j4DuB0j/MVZj12qJKrYfUyjL+UJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.1.3.tgz", + "integrity": "sha512-G90Sp409ypeOUbmj6nmEbdy043KJUKaZ7pffxmM6i63yEe2F2WdmMgdi525vUEgmq+pfB9zQQOX1sDR/rPFvtg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "11.4.4-cjs.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", + "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.7.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "13.3.2-cjs.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", + "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.8.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5" + } + }, + "node_modules/@octokit/request": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">= 18" } }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "node_modules/@octokit/request-error": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", "license": "MIT", "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" }, "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" + "node": ">= 18" } }, - "node_modules/@nx/devkit": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", - "integrity": "sha512-ACwmelqurupbuvvTUA+hWw978H2odLGvnYtlSut3qmw/TzS7bkptd4CmPpks6dGPTOSQbJGzbwLo9OEMs36BBA==", + "node_modules/@octokit/rest": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", + "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", "license": "MIT", "dependencies": { - "@zkochan/js-yaml": "0.0.7", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "minimatch": "9.0.3", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "@octokit/core": "^5.0.2", + "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" }, - "peerDependencies": { - "nx": ">= 21 <= 23 || ^22.0.0-0" + "engines": { + "node": ">= 18" } }, - "node_modules/@nx/devkit/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@octokit/openapi-types": "^24.2.0" } }, - "node_modules/@nx/devkit/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "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==", + "license": "MIT", + "optional": true, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=14" } }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.1.3.tgz", - "integrity": "sha512-4D/jXGsr3jcQ0vBo8aXXZMdfmC3n4OsZ1zjFaOXlF62Ujug+RqI/IvKxycT9r7Lr09PmW2OqBC01NfIWKoBLhg==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, - "node_modules/@nx/nx-darwin-x64": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.1.3.tgz", - "integrity": "sha512-XmdccOBp1Lx9DXUzYDX65mkFqFvXaxUKm1d63bfA43vxIYUpR59SASB81KRQ/Q4dgvvU27C0EJuxSJbXsSkSYw==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.1.3.tgz", - "integrity": "sha512-O+o4mqPwhKxfdsri4KxDbXbjwIwr04GfTSfA0TwgXs6hFf68qmc45FAmPGrPSvxIJg9+mUVDeFirdS8GcUE0jQ==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ] }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.1.3.tgz", - "integrity": "sha512-ZIPDgzLq8qmvrZ3Bp+bWXam5uKwahjcChBNtORVtrHQfm4mxov2RMUMKTg2ZsVAWVP64zK+gmzG5LuoZjPMm4Q==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.1.3.tgz", - "integrity": "sha512-wgpPaTpQKl+cCkSuE5zamTVrg14mRvT+bLAeN/yHSUgMztvGxwl3Ll+K9DgEcktBo1PLECTWNkVaW8IAsJm4Rg==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", "cpu": [ - "arm64" + "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.1.3.tgz", - "integrity": "sha512-o9XmQehSPR2y0RD4evD+Ob3lNFuwsFOL5upVJqZ3rcE6GkJIFPg8SwEP5FaRIS5MwS04fxnek20NZ18BHjjV/g==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.1.3.tgz", - "integrity": "sha512-ekcinyDNTa2huVe02T2SFMR8oArohozRbMGO19zftbObXXI4dLdoAuLNb3vK9Pe4vYOpkhfxBVkZvcWMmx7JdA==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", "cpu": [ - "x64" + "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.1.3.tgz", - "integrity": "sha512-CqpRIJeIgELCqIgjtSsYnnLi6G0uqjbp/Pw9d7w4im4/NmJXqaE9gxpdHA1eowXLgAy9W1LkfzCPS8Q2IScPuQ==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", "cpu": [ - "x64" + "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.1.3.tgz", - "integrity": "sha512-YbuWb8KQsAR9G0+7b4HA16GV962/VWtRcdS7WY2yaScmPT2W5rObl528Y2j4DuB0j/MVZj12qJKrYfUyjL+UJA==", + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", "cpu": [ - "arm64" + "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.1.3.tgz", - "integrity": "sha512-G90Sp409ypeOUbmj6nmEbdy043KJUKaZ7pffxmM6i63yEe2F2WdmMgdi525vUEgmq+pfB9zQQOX1sDR/rPFvtg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", "cpu": [ - "x64" + "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", - "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.4.1", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@octokit/endpoint": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", - "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@octokit/graphql": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", - "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/request": "^8.4.1", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", - "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", - "license": "MIT" + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", - "license": "MIT" + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.4.4-cjs.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", - "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.7.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@octokit/plugin-request-log": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", - "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.3.2-cjs.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", - "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.8.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "^5" - } + "optional": true, + "os": [ + "openbsd" + ] }, - "node_modules/@octokit/request": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", - "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^9.0.6", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } + "optional": true, + "os": [ + "openharmony" + ] }, - "node_modules/@octokit/request-error": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", - "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@octokit/rest": { - "version": "20.1.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", - "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/core": "^5.0.2", - "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", - "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" - }, - "engines": { - "node": ">= 18" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@octokit/types": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", - "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^24.2.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "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==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=14" - } + "os": [ + "win32" + ] }, "node_modules/@rtsao/scc": { "version": "1.1.0", @@ -4161,6 +4955,13 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@tokenizer/inflate": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", @@ -4280,6 +5081,24 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -4693,6 +5512,137 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -5094,6 +6044,16 @@ "node": ">=8" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -5704,6 +6664,16 @@ } ] }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/chalk": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", @@ -7522,6 +8492,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -7574,6 +8551,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -8037,6 +9056,16 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -8099,6 +9128,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/exponential-backoff": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", @@ -12795,6 +13834,25 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -13634,6 +14692,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -14251,6 +15320,13 @@ "node": ">=4" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -14375,6 +15451,35 @@ "node": ">= 0.4" } }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", @@ -15073,6 +16178,51 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, "node_modules/run-async": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", @@ -15344,6 +16494,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -15512,6 +16669,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "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", @@ -15615,6 +16782,20 @@ "node": ">=8" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, "node_modules/stdin-discarder": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", @@ -16035,19 +17216,31 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyexec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -16057,9 +17250,13 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -16070,9 +17267,10 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -16080,6 +17278,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -16595,6 +17803,213 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/walk-up-path": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", @@ -16721,6 +18136,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -17070,6 +18502,9 @@ "name": "@shiftcode/logger", "version": "4.0.0", "license": "UNLICENSED", + "devDependencies": { + "@shiftcode/utilities": "^4.3.1" + }, "engines": { "node": "^22.0.0 || ^24.0.0" }, diff --git a/package.json b/package.json index 718845a..d1694ff 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,8 @@ "prettier": "^3.3.2", "sort-package-json": "^2.10.0", "ts-jest": "^29.2.0", - "typescript": "^5.5.3" + "typescript": "^5.5.3", + "vitest": "^4.0.18" }, "engines": { "node": "^22.15.0" From 3ea3d6598dd2b6e287aea57911df59f894aea7d8 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 10:47:37 +0100 Subject: [PATCH 05/55] feat: introduce nest-logger in sc-commons-public --- packages/nest-logger/.lintstagedrc.yml | 8 ++ packages/nest-logger/CHANGELOG.md | 35 ++++++++ packages/nest-logger/README.md | 82 ++++++++++++++++++ packages/nest-logger/eslint.config.mjs | 5 ++ packages/nest-logger/package.json | 44 ++++++++++ packages/nest-logger/src/index.ts | 2 + packages/nest-logger/src/model/nest-logger.ts | 30 +++++++ .../nest-logger/src/module/logger.module.ts | 52 ++++++++++++ .../src/services/logger.service.spec.ts | 85 +++++++++++++++++++ .../src/services/logger.service.ts | 21 +++++ .../nest-logger/test/mock-log.transport.ts | 19 +++++ packages/nest-logger/tsconfig.json | 13 +++ packages/nest-logger/tsconfig.lint.json | 12 +++ packages/nest-logger/tsconfig.spec.json | 12 +++ packages/nest-logger/vitest.config.js | 16 ++++ 15 files changed, 436 insertions(+) create mode 100644 packages/nest-logger/.lintstagedrc.yml create mode 100644 packages/nest-logger/CHANGELOG.md create mode 100644 packages/nest-logger/README.md create mode 100644 packages/nest-logger/eslint.config.mjs create mode 100644 packages/nest-logger/package.json create mode 100644 packages/nest-logger/src/index.ts create mode 100644 packages/nest-logger/src/model/nest-logger.ts create mode 100644 packages/nest-logger/src/module/logger.module.ts create mode 100644 packages/nest-logger/src/services/logger.service.spec.ts create mode 100644 packages/nest-logger/src/services/logger.service.ts create mode 100644 packages/nest-logger/test/mock-log.transport.ts create mode 100644 packages/nest-logger/tsconfig.json create mode 100644 packages/nest-logger/tsconfig.lint.json create mode 100644 packages/nest-logger/tsconfig.spec.json create mode 100644 packages/nest-logger/vitest.config.js diff --git a/packages/nest-logger/.lintstagedrc.yml b/packages/nest-logger/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/nest-logger/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/nest-logger/CHANGELOG.md b/packages/nest-logger/CHANGELOG.md new file mode 100644 index 0000000..01d930d --- /dev/null +++ b/packages/nest-logger/CHANGELOG.md @@ -0,0 +1,35 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/logger-nest@1.1.0...@shiftcode/logger-nest@2.0.0) (2025-05-19) + +### Features + +- update @shiftcode/logger to version ^3.0.0 and @shiftcode/utilities to version ^4.0.0 ([2e5f2d1](https://github.com/shiftcode/sc-commons/commit/2e5f2d1a78882b8885aacd7bab56b8733a13b7d6)) + +### BREAKING CHANGES + +- requires @shiftcode/logger ^3.0.0, + requires @shiftcode/utilities ^4.0.0 + +# 1.1.0 (2025-05-14) + +### Bug Fixes + +- **build:** update @shiftcode/logger to use caret versioning ([99a86c7](https://github.com/shiftcode/sc-commons/commit/99a86c78d916688964566ed9a116518ebb051e26)) +- **logger-nest/inversify:** include packages into ci ([a997895](https://github.com/shiftcode/sc-commons/commit/a9978954d28a24fe1393b9f754ea109b5d5e1253)) +- **logger-nest:** add test for injected instances ([88d4585](https://github.com/shiftcode/sc-commons/commit/88d4585ab3c012f3e7c736f71ab82565f3c07472)) +- **logger-nest:** define Logger provider scope as transient ([45e8739](https://github.com/shiftcode/sc-commons/commit/45e8739285ee1806dd9dd8caa04cafdc46456c97)) + +### Features + +- **log-transports:** update ConsoleJsonLogTransport to extend json log transport from base logger ([dd7566d](https://github.com/shiftcode/sc-commons/commit/dd7566dff1a728f7b5dc72d89dd77b2e57defcb1)) +- **logger-nest:** change rxjs peer dependency to the lowest necessary ([80f120f](https://github.com/shiftcode/sc-commons/commit/80f120f1f065a7eafd58d1a5c954dd85bcd28733)) +- **logger-nest:** define LoggerModule as global module ([e524465](https://github.com/shiftcode/sc-commons/commit/e524465e729e17eb8f184846bcd6af01e368d3da)) +- **logger-nest:** enhance transport configuration with type safety ([4476cca](https://github.com/shiftcode/sc-commons/commit/4476ccaf0195e7789f7f27856afca7e8ae70b790)) +- **logger-nest:** implemented NestLogger to support providing logger to NestApplication ([ace0501](https://github.com/shiftcode/sc-commons/commit/ace050117b1408d1d755c881b13ed6a7cf647cce)) +- **logger:** add package to support the usage of nest for the new logger ([d4798b0](https://github.com/shiftcode/sc-commons/commit/d4798b07422709cd51f1f2ed13ebd20b77232de1)) +- **logger:** move logger to public repo and rename to log transports package ([1eea87c](https://github.com/shiftcode/sc-commons/commit/1eea87c237033bc734a74ad75c3b87f8419c5dec)) +- update @shiftcode/logger to version 1.1.0 ([b196b95](https://github.com/shiftcode/sc-commons/commit/b196b95dbe3757d2b6efd9d5203e21aa82a7891e)) diff --git a/packages/nest-logger/README.md b/packages/nest-logger/README.md new file mode 100644 index 0000000..c88abc2 --- /dev/null +++ b/packages/nest-logger/README.md @@ -0,0 +1,82 @@ +# nest-logger + +> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023)) + +This package provides [@shiftcode/logger](https://github.com/shiftcode/sc-commons/pkgs/npm/logger) support for NestJS, allowing you to inject loggers with context-aware naming and configure log transports using the NestJS DI system. + +# 🚀 Features + +- Auto-named logger instances per class +- Supports multiple log transports +- Logger service injection for custom logger creation + +# Usage + +## 1. Set up the module + +```typescript +import { Module } from '@nestjs/common' +import { LoggerModule } from '@shiftcode/nest-logger' +import { LogLevel, NodeConsoleLogTransport, NodeConsoleLogTransportConfig } from '@shiftcode/logger' + +@Module({ + imports: [ + // Bind transports (you can bind multiple) + LoggerModule.withTransports([ + { + transportClass: NodeConsoleLogTransport, + config: { logLevel: LogLevel.DEBUG }, + }, + ]), + ], +}) +export class AppModule {} +``` + +## 2. Inject the logger + +**Option A: Directly inject the logger (auto-named)** + +```typescript +import { Injectable, Inject } from '@nestjs/common' +import { Logger } from '@shiftcode/logger' + +@Injectable() +class MyService { + constructor(@Inject(Logger) private logger: Logger) { + this.logger.info('Initialized!') + } +} +``` + +**Option B: Inject the logger service for custom naming** + +```typescript +import { Injectable, Inject } from '@nestjs/common' +import { LoggerService } from '@shiftcode/nest-logger' + +@Injectable() +class MyService { + constructor(@Inject(LoggerService) private loggerService: LoggerService) { + const logger = this.loggerService.getInstance('CustomService') + logger.debug('Custom-named logger') + } +} +``` + +## NestLogger + +**You can also pass a NestLogger to the NestApplication in a bootstrap function** + +```typescript +import { NestFactory } from '@nestjs/core' +import { AppModule } from './app.module' +import { LoggerService } from '@shiftcode/nest-logger' + +async function bootstrap() { + const app = await NestFactory.create(AppModule) + const loggerService = app.get(LoggerService) + app.useLogger(loggerService.getInstanceNest('MyService')) + await app.listen(3000) +} +``` diff --git a/packages/nest-logger/eslint.config.mjs b/packages/nest-logger/eslint.config.mjs new file mode 100644 index 0000000..834468a --- /dev/null +++ b/packages/nest-logger/eslint.config.mjs @@ -0,0 +1,5 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig({ + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, +}) diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json new file mode 100644 index 0000000..3fa39e4 --- /dev/null +++ b/packages/nest-logger/package.json @@ -0,0 +1,44 @@ +{ + "name": "@shiftcode/nest-logger", + "version": "2.0.0", + "description": "NestJS support for the logger package", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./test/*.js": { + "types": "./dist/test/*.d.ts", + "default": "./dist/test/*.js" + } + }, + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src ./test", + "lint:ci": "eslint ./src ./test", + "lint:staged": "eslint --fix --cache", + "prepublish": "prepare-dist", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@shiftcode/logger": "^4.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "engines": { + "node": "^22.0.0 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/nest-logger/src/index.ts b/packages/nest-logger/src/index.ts new file mode 100644 index 0000000..c7fe8e7 --- /dev/null +++ b/packages/nest-logger/src/index.ts @@ -0,0 +1,2 @@ +export * from './module/logger.module.js' +export * from './services/logger.service.js' diff --git a/packages/nest-logger/src/model/nest-logger.ts b/packages/nest-logger/src/model/nest-logger.ts new file mode 100644 index 0000000..64accf1 --- /dev/null +++ b/packages/nest-logger/src/model/nest-logger.ts @@ -0,0 +1,30 @@ +import { LoggerService } from '@nestjs/common' +import { Logger } from '@shiftcode/logger' + +/** + * A custom logger implementation designed to integrate seamlessly with NestJS applications. + * This logger implements the LoggerService interface required by NestApplication. + */ +export class NestLogger implements LoggerService { + constructor(private readonly logger: Logger) {} + + error(message: any, trace?: string) { + this.logger.error([message, trace]) + } + + warn(message: any) { + this.logger.warn([message]) + } + + debug(message: any) { + this.logger.debug([message]) + } + + verbose(message: any) { + this.debug([message]) + } + + log(message: any) { + this.logger.info([message]) + } +} diff --git a/packages/nest-logger/src/module/logger.module.ts b/packages/nest-logger/src/module/logger.module.ts new file mode 100644 index 0000000..3084c9e --- /dev/null +++ b/packages/nest-logger/src/module/logger.module.ts @@ -0,0 +1,52 @@ +import { DynamicModule, Global, Module, Provider, Scope, Type } from '@nestjs/common' +import { INQUIRER } from '@nestjs/core' +import { Logger, LogTransport } from '@shiftcode/logger' + +import { LoggerService } from '../services/logger.service.js' + +export type TransportConfig> = { + transportClass: T + config: ConstructorParameters[0] +} + +export type TransportConfigArray>> = { + [K in keyof T]: TransportConfig +} + +@Global() +@Module({ + providers: [ + LoggerService, + { + provide: Logger, + scope: Scope.TRANSIENT, + inject: [LoggerService, INQUIRER], + useFactory: (loggerService: LoggerService, inquirer: string | object | undefined) => { + const injectionPoint = typeof inquirer === 'string' ? inquirer : inquirer?.constructor?.name + return loggerService.getInstance(injectionPoint ?? 'ROOT') + }, + }, + ], + exports: [LoggerService, Logger], +}) +export class LoggerModule { + static withTransports>>(transports: TransportConfigArray): DynamicModule { + const transportProviders: Provider[] = transports.map(({ transportClass, config }) => ({ + provide: transportClass, + useFactory: () => new transportClass(config), + })) + + return { + module: LoggerModule, + providers: [ + ...transportProviders, + { + provide: LogTransport, + useFactory: (...instances: LogTransport[]) => instances, + inject: transports.map(({ transportClass }) => transportClass), + }, + ], + exports: [LogTransport], + } + } +} diff --git a/packages/nest-logger/src/services/logger.service.spec.ts b/packages/nest-logger/src/services/logger.service.spec.ts new file mode 100644 index 0000000..be4de62 --- /dev/null +++ b/packages/nest-logger/src/services/logger.service.spec.ts @@ -0,0 +1,85 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import { Inject, Injectable } from '@nestjs/common' +import { Test, TestingModule } from '@nestjs/testing' +import { Logger, LogLevel } from '@shiftcode/logger' +import { beforeEach, describe, expect, it } from 'vitest' + +import { MockLogTransport } from '../../test/mock-log.transport.js' +import { LoggerModule } from '../module/logger.module.js' +import { LoggerService } from './logger.service.js' + +@Injectable() +class CustomService { + logger: Logger + constructor(@Inject(LoggerService) public loggerService: LoggerService) { + this.logger = this.loggerService.getInstance('MyCustomService') + } +} + +@Injectable() +class SimpleService { + constructor(@Inject(Logger) public logger: Logger) {} +} + +@Injectable() +class OtherSimpleService { + constructor(@Inject(Logger) public logger: Logger) {} +} + +describe('LoggerService with Mock Transport', () => { + let testingModule: TestingModule + + beforeEach(async () => { + testingModule = await Test.createTestingModule({ + imports: [ + LoggerModule.withTransports([ + { + transportClass: MockLogTransport, + config: { logLevel: LogLevel.DEBUG, mockAttribute: 'test' }, + }, + ]), + ], + providers: [CustomService, SimpleService, OtherSimpleService], + }).compile() + }) + + it('should use the mock log transport', () => { + const createdLogger = testingModule.get(CustomService).logger + + expect(createdLogger['loggerTransports'][0]).toBeInstanceOf(MockLogTransport) + // @ts-expect-error + expect(createdLogger['loggerTransports'][0].logLevel).toBe(LogLevel.DEBUG) + + const injectedLogger = testingModule.get(SimpleService).logger + expect(injectedLogger['loggerTransports'][0]).toBeInstanceOf(MockLogTransport) + // @ts-expect-error + expect(injectedLogger['loggerTransports'][0].logLevel).toBe(LogLevel.DEBUG) + }) + + it('should have the custom name passed to the logger service', () => { + const logger = testingModule.get(CustomService).logger + expect(logger['name']).toBe('MyCustomService') + }) + + it('should have the name of the requesting service', () => { + const logger = testingModule.get(SimpleService).logger + expect(logger['name']).toBe('SimpleService') + }) + + it('should use the same LoggerService instance across the application', () => { + const loggerService1 = testingModule.get(LoggerService) + const loggerService2 = testingModule.get(LoggerService) + const loggerService3 = testingModule.get(CustomService).loggerService + expect(loggerService1).toBe(loggerService2) + expect(loggerService1).toBe(loggerService3) + expect(loggerService2).toBe(loggerService3) + }) + + it('should create a new instance for every directly injected logger', () => { + const logger = testingModule.get(OtherSimpleService).logger + expect(logger['name']).toBe('OtherSimpleService') + + const logger2 = testingModule.get(SimpleService).logger + expect(logger !== logger2).toBeTruthy() + }) +}) diff --git a/packages/nest-logger/src/services/logger.service.ts b/packages/nest-logger/src/services/logger.service.ts new file mode 100644 index 0000000..123cbd0 --- /dev/null +++ b/packages/nest-logger/src/services/logger.service.ts @@ -0,0 +1,21 @@ +import { Inject, Injectable } from '@nestjs/common' +import { BaseLoggerService, Logger, LogTransport } from '@shiftcode/logger' + +import { NestLogger } from '../model/nest-logger.js' + +@Injectable() +export class LoggerService { + private baseService: BaseLoggerService + + constructor(@Inject(LogTransport) private logTransports: LogTransport[]) { + this.baseService = new BaseLoggerService(logTransports) + } + + getInstance(name: string, hexColor?: string): Logger { + return this.baseService.getInstance(name, hexColor) + } + + getInstanceNest(name: string, hexColor?: string): NestLogger { + return new NestLogger(this.baseService.getInstance(name, hexColor)) + } +} diff --git a/packages/nest-logger/test/mock-log.transport.ts b/packages/nest-logger/test/mock-log.transport.ts new file mode 100644 index 0000000..45dbf66 --- /dev/null +++ b/packages/nest-logger/test/mock-log.transport.ts @@ -0,0 +1,19 @@ +import { LogLevel, LogTransport } from '@shiftcode/logger' + +export interface MockLogTransportConfig { + logLevel: LogLevel + mockAttribute: string +} + +export class MockLogTransport extends LogTransport { + logArgs: any + + constructor(config: MockLogTransportConfig) { + super(config.logLevel) + } + + log(level: LogLevel, clazzName: string, hexColor: string, timestamp: Date, args: any[]) { + // Mock the log method to simply store arguments for testing + this.logArgs = { level, clazzName, hexColor, timestamp, args } + } +} diff --git a/packages/nest-logger/tsconfig.json b/packages/nest-logger/tsconfig.json new file mode 100644 index 0000000..3c226a5 --- /dev/null +++ b/packages/nest-logger/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "declarationDir": "./dist", + "strictPropertyInitialization": false, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/nest-logger/tsconfig.lint.json b/packages/nest-logger/tsconfig.lint.json new file mode 100644 index 0000000..595ed1e --- /dev/null +++ b/packages/nest-logger/tsconfig.lint.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": "./", + "types": ["node"], + "paths": { + "@shiftcode/logger": ["../logger/src/public-api.ts"] + } + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/nest-logger/tsconfig.spec.json b/packages/nest-logger/tsconfig.spec.json new file mode 100644 index 0000000..089a164 --- /dev/null +++ b/packages/nest-logger/tsconfig.spec.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@shiftcode/logger": ["../logger/src/public-api.ts"] + }, + "experimentalDecorators": true, + "emitDecoratorMetadata": true + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} diff --git a/packages/nest-logger/vitest.config.js b/packages/nest-logger/vitest.config.js new file mode 100644 index 0000000..fb26931 --- /dev/null +++ b/packages/nest-logger/vitest.config.js @@ -0,0 +1,16 @@ +import path from 'node:path' + +import { defineConfig } from 'vitest/config' + +import tsconfig from './tsconfig.spec.json' + +const alias = Object.fromEntries( + Object.entries(tsconfig.compilerOptions.paths).map(([key, [value]]) => [ + key.replace('/*', ''), + path.resolve(import.meta.dirname, value.replace('/*', '')), + ]), +) + +export default defineConfig({ + test: { alias }, +}) From 7371a88d1c3d082f70caaae162201e8c4dae6f71 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 10:54:15 +0100 Subject: [PATCH 06/55] feat: introduce inversify-logger in sc-commons-public --- packages/inversify-logger/.lintstagedrc.yml | 8 +++ packages/inversify-logger/CHANGELOG.md | 33 ++++++++++++ packages/inversify-logger/README.md | 50 +++++++++++++++++++ packages/inversify-logger/eslint.config.mjs | 5 ++ packages/inversify-logger/package.json | 45 +++++++++++++++++ packages/inversify-logger/src/index.ts | 3 ++ .../src/module/logger.module.ts | 7 +++ .../src/services/logger.service.spec.ts | 40 +++++++++++++++ .../src/services/logger.service.ts | 15 ++++++ .../src/utils/log-transport-helper.spec.ts | 37 ++++++++++++++ .../src/utils/log-transport-helper.ts | 21 ++++++++ .../test/mock-log.transport.ts | 19 +++++++ packages/inversify-logger/tsconfig.json | 12 +++++ packages/inversify-logger/tsconfig.lint.json | 12 +++++ packages/inversify-logger/tsconfig.spec.json | 12 +++++ 15 files changed, 319 insertions(+) create mode 100644 packages/inversify-logger/.lintstagedrc.yml create mode 100644 packages/inversify-logger/CHANGELOG.md create mode 100644 packages/inversify-logger/README.md create mode 100644 packages/inversify-logger/eslint.config.mjs create mode 100644 packages/inversify-logger/package.json create mode 100644 packages/inversify-logger/src/index.ts create mode 100644 packages/inversify-logger/src/module/logger.module.ts create mode 100644 packages/inversify-logger/src/services/logger.service.spec.ts create mode 100644 packages/inversify-logger/src/services/logger.service.ts create mode 100644 packages/inversify-logger/src/utils/log-transport-helper.spec.ts create mode 100644 packages/inversify-logger/src/utils/log-transport-helper.ts create mode 100644 packages/inversify-logger/test/mock-log.transport.ts create mode 100644 packages/inversify-logger/tsconfig.json create mode 100644 packages/inversify-logger/tsconfig.lint.json create mode 100644 packages/inversify-logger/tsconfig.spec.json diff --git a/packages/inversify-logger/.lintstagedrc.yml b/packages/inversify-logger/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/inversify-logger/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/inversify-logger/CHANGELOG.md b/packages/inversify-logger/CHANGELOG.md new file mode 100644 index 0000000..cdcf32b --- /dev/null +++ b/packages/inversify-logger/CHANGELOG.md @@ -0,0 +1,33 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/logger-inversify@1.1.0...@shiftcode/logger-inversify@2.0.0) (2025-05-19) + +### Features + +- update @shiftcode/logger to version ^3.0.0 and @shiftcode/utilities to version ^4.0.0 ([2e5f2d1](https://github.com/shiftcode/sc-commons/commit/2e5f2d1a78882b8885aacd7bab56b8733a13b7d6)) + +### BREAKING CHANGES + +- requires @shiftcode/logger ^3.0.0, + requires @shiftcode/utilities ^4.0.0 + +# 1.1.0 (2025-05-14) + +### Bug Fixes + +- **build:** update @shiftcode/logger to use caret versioning ([99a86c7](https://github.com/shiftcode/sc-commons/commit/99a86c78d916688964566ed9a116518ebb051e26)) +- **logger-inversify:** remove logger factory due to its support being removed in inversify^7.0.0 ([89cc94b](https://github.com/shiftcode/sc-commons/commit/89cc94b1b660523b6e9b094fddbbb92af7359756)) +- **logger-inversify:** resolve issues related to inversify^7.0.0 update ([720aff0](https://github.com/shiftcode/sc-commons/commit/720aff09dcec5f167934f7d929cde1ce1bb88111)) +- **logger-inversify:** use mock log transport for tests ([20b7841](https://github.com/shiftcode/sc-commons/commit/20b7841b38b71b842beb00cdd590ff7474516bb8)) +- **nest-logger/inversify:** include packages into ci ([a997895](https://github.com/shiftcode/sc-commons/commit/a9978954d28a24fe1393b9f754ea109b5d5e1253)) + +### Features + +- **log-transports:** update ConsoleJsonLogTransport to extend json log transport from base logger ([dd7566d](https://github.com/shiftcode/sc-commons/commit/dd7566dff1a728f7b5dc72d89dd77b2e57defcb1)) +- **logger:** add package to support the usage of inversify for the new logger ([a1967a3](https://github.com/shiftcode/sc-commons/commit/a1967a3308bb7c4078958650839b107adfaae121)) +- **logger:** add package to support the usage of nest for the new logger ([d4798b0](https://github.com/shiftcode/sc-commons/commit/d4798b07422709cd51f1f2ed13ebd20b77232de1)) +- **logger:** move logger to public repo and rename to log transports package ([1eea87c](https://github.com/shiftcode/sc-commons/commit/1eea87c237033bc734a74ad75c3b87f8419c5dec)) +- update @shiftcode/logger to version 1.1.0 ([b196b95](https://github.com/shiftcode/sc-commons/commit/b196b95dbe3757d2b6efd9d5203e21aa82a7891e)) diff --git a/packages/inversify-logger/README.md b/packages/inversify-logger/README.md new file mode 100644 index 0000000..98909b8 --- /dev/null +++ b/packages/inversify-logger/README.md @@ -0,0 +1,50 @@ +# inversify-logger + +> 🎯 Target runtime: es2023 ([Node >= 22](https://node.green/#ES2023)) + +This package provides [@shiftcode/logger](https://github.com/shiftcode/sc-commons/pkgs/npm/logger) support for InversifyJS, +allowing you to inject loggers with context-aware naming, and configure log transports using Inversify DI. + +# 🚀 Features + +- Auto-named logger instances per class +- Supports multiple transports +- Logger service injection for custom logger creation + +# Usage + +## 1. Set up your Inversify container + +```typescript +import { Container } from 'inversify' +import { loggerModule, bindLogTransport } from '@shiftcode/inversify-logger' +import { NodeConsoleLogTransport, NodeConsoleLogTransportConfig } from '@shiftcode/log-transpports' +import { LogLevel, LogTransport } from '@shiftcode/logger' + +const container = new Container() + +const consoleLogTransportConfig: NodeConsoleLogTransportConfig = { logLevel: LogLevel.DEBUG } +// Bind transports (you can bind multiple) +container.bind(LogTransport).toConstantValue(new NodeConsoleLogTransport(consoleLogTransportConfig)) + +//You can use the bindLogTransport helper +bindLogTransport(container, consoleLogTransportConfig, NodeConsoleLogTransport) + +// Load logger module (auto-wires everything) +container.load(loggerModule) +``` + +## 2. Inject the logger + +```typescript +import { injectable, inject } from 'inversify' +import { LoggerService } from '@shiftcode/inversify-logger' + +@injectable() +class MyService { + constructor(@inject(LoggerService) loggerService: LoggerService) { + const logger = this.loggerService.getInstance('CustomService') + logger.debug('Custom-named logger') + } +} +``` diff --git a/packages/inversify-logger/eslint.config.mjs b/packages/inversify-logger/eslint.config.mjs new file mode 100644 index 0000000..834468a --- /dev/null +++ b/packages/inversify-logger/eslint.config.mjs @@ -0,0 +1,5 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig({ + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, +}) diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json new file mode 100644 index 0000000..1a4ce57 --- /dev/null +++ b/packages/inversify-logger/package.json @@ -0,0 +1,45 @@ +{ + "name": "@shiftcode/inversify-logger", + "version": "2.0.0", + "description": "InversifyJS support for the logger package", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./test/*.js": { + "types": "./dist/test/*.d.ts", + "default": "./dist/test/*.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src ./test", + "lint:ci": "eslint ./src ./test", + "lint:staged": "eslint --fix --cache", + "prepublish": "prepare-dist", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" + }, + "peerDependencies": { + "@shiftcode/logger": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0" + }, + "engines": { + "node": "^22.0.0 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/inversify-logger/src/index.ts b/packages/inversify-logger/src/index.ts new file mode 100644 index 0000000..a84a7b9 --- /dev/null +++ b/packages/inversify-logger/src/index.ts @@ -0,0 +1,3 @@ +export * from './module/logger.module.js' +export * from './services/logger.service.js' +export * from './utils/log-transport-helper.js' diff --git a/packages/inversify-logger/src/module/logger.module.ts b/packages/inversify-logger/src/module/logger.module.ts new file mode 100644 index 0000000..bd1bd3f --- /dev/null +++ b/packages/inversify-logger/src/module/logger.module.ts @@ -0,0 +1,7 @@ +import { ContainerModule } from 'inversify' + +import { LoggerService } from '../services/logger.service.js' + +export const loggerModule = new ContainerModule((options) => { + options.bind(LoggerService).toSelf().inSingletonScope() +}) diff --git a/packages/inversify-logger/src/services/logger.service.spec.ts b/packages/inversify-logger/src/services/logger.service.spec.ts new file mode 100644 index 0000000..b50334c --- /dev/null +++ b/packages/inversify-logger/src/services/logger.service.spec.ts @@ -0,0 +1,40 @@ +import { Logger, LogLevel } from '@shiftcode/logger' +import { Container, inject, injectable } from 'inversify' +import { beforeEach, describe, expect, test } from 'vitest' + +import { MockLogTransport, MockLogTransportConfig } from '../../test/mock-log.transport.js' +import { loggerModule } from '../module/logger.module.js' +import { bindLogTransport } from '../utils/log-transport-helper.js' +import { LoggerService } from './logger.service.js' + +@injectable() +class SimpleService { + logger: Logger + constructor(@inject(LoggerService) public loggerService: LoggerService) { + this.logger = this.loggerService.getInstance('MyCustomService') + } +} + +describe('creates logger via logger service', () => { + let container: Container + + beforeEach(() => { + container = new Container() + + const mockLogTransportConfig: MockLogTransportConfig = { logLevel: LogLevel.DEBUG, mockAttribute: 'test' } + bindLogTransport(container, mockLogTransportConfig, MockLogTransport) + container.loadSync(loggerModule) + + container.bind(SimpleService).toSelf().inSingletonScope() + }) + + test('Logger should use MockLogTransport', () => { + const logger = container.get(SimpleService).logger + expect(logger['loggerTransports'][0] instanceof MockLogTransport).toBeTruthy() + }) + + test('logger instance requested from container has passed name', () => { + const logger = container.get(SimpleService).logger + expect(logger['name']).toBe('MyCustomService') + }) +}) diff --git a/packages/inversify-logger/src/services/logger.service.ts b/packages/inversify-logger/src/services/logger.service.ts new file mode 100644 index 0000000..fbed5c1 --- /dev/null +++ b/packages/inversify-logger/src/services/logger.service.ts @@ -0,0 +1,15 @@ +import { BaseLoggerService, Logger, LogTransport } from '@shiftcode/logger' +import { injectable, multiInject } from 'inversify' + +@injectable() +export class LoggerService { + private baseService: BaseLoggerService + + constructor(@multiInject(LogTransport) logTransports: LogTransport[]) { + this.baseService = new BaseLoggerService(logTransports) + } + + getInstance(name: string, hexColor?: string): Logger { + return this.baseService.getInstance(name, hexColor) + } +} diff --git a/packages/inversify-logger/src/utils/log-transport-helper.spec.ts b/packages/inversify-logger/src/utils/log-transport-helper.spec.ts new file mode 100644 index 0000000..bda5539 --- /dev/null +++ b/packages/inversify-logger/src/utils/log-transport-helper.spec.ts @@ -0,0 +1,37 @@ +import { LogLevel, LogTransport } from '@shiftcode/logger' +import { Container } from 'inversify' +import { beforeEach, describe, expect, it } from 'vitest' + +import { MockLogTransport, MockLogTransportConfig } from '../../test/mock-log.transport.js' +import { bindLogTransport } from './log-transport-helper.js' + +describe('bindLogTransport Helper Function', () => { + let container: Container + let transportConfig: MockLogTransportConfig + let transportInstance: MockLogTransport + + beforeEach(() => { + container = new Container() + transportConfig = { logLevel: LogLevel.DEBUG, mockAttribute: 'test' } + bindLogTransport(container, transportConfig, MockLogTransport) + transportInstance = container.get(LogTransport) + }) + + it('should bind and retrieve the transport instance correctly', () => { + expect(transportInstance).toBeInstanceOf(MockLogTransport) + expect(transportInstance['logLevel']).toBe(LogLevel.DEBUG) + }) + + it('should correctly call the transport instance log method', () => { + const timestamp = new Date() + const args = ['Test message'] + transportInstance.log(LogLevel.INFO, 'TestService', '#FF0000', timestamp, args) + expect(transportInstance.logArgs).toEqual({ + level: LogLevel.INFO, + clazzName: 'TestService', + hexColor: '#FF0000', + timestamp, + args: ['Test message'], + }) + }) +}) diff --git a/packages/inversify-logger/src/utils/log-transport-helper.ts b/packages/inversify-logger/src/utils/log-transport-helper.ts new file mode 100644 index 0000000..f7ba65b --- /dev/null +++ b/packages/inversify-logger/src/utils/log-transport-helper.ts @@ -0,0 +1,21 @@ +import { LogTransport } from '@shiftcode/logger' +import { Container } from 'inversify' + +/** + * A helper function to bind log transports to the container with the provided configuration. + * + * @param container - The Inversify container. + * @param transportConfig - The configuration for the transport. + * @param transportClass - The transport class to bind (e.g., NodeConsoleLogTransport). + */ +export function bindLogTransport( + container: Container, + transportConfig: ConstructorParameters[0], + transportClass: C, +): void { + // Create the transport instance using the provided config + const transportInstance = new transportClass(transportConfig) + + // Bind the transport instance to the container (hardcoded LogTransport as the service identifier) + container.bind(LogTransport).toConstantValue(transportInstance) +} diff --git a/packages/inversify-logger/test/mock-log.transport.ts b/packages/inversify-logger/test/mock-log.transport.ts new file mode 100644 index 0000000..45dbf66 --- /dev/null +++ b/packages/inversify-logger/test/mock-log.transport.ts @@ -0,0 +1,19 @@ +import { LogLevel, LogTransport } from '@shiftcode/logger' + +export interface MockLogTransportConfig { + logLevel: LogLevel + mockAttribute: string +} + +export class MockLogTransport extends LogTransport { + logArgs: any + + constructor(config: MockLogTransportConfig) { + super(config.logLevel) + } + + log(level: LogLevel, clazzName: string, hexColor: string, timestamp: Date, args: any[]) { + // Mock the log method to simply store arguments for testing + this.logArgs = { level, clazzName, hexColor, timestamp, args } + } +} diff --git a/packages/inversify-logger/tsconfig.json b/packages/inversify-logger/tsconfig.json new file mode 100644 index 0000000..a5cb0cd --- /dev/null +++ b/packages/inversify-logger/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "declarationDir": "./dist", + "strictPropertyInitialization": false, + "experimentalDecorators": true, + "emitDecoratorMetadata": true + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/inversify-logger/tsconfig.lint.json b/packages/inversify-logger/tsconfig.lint.json new file mode 100644 index 0000000..595ed1e --- /dev/null +++ b/packages/inversify-logger/tsconfig.lint.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": "./", + "types": ["node"], + "paths": { + "@shiftcode/logger": ["../logger/src/public-api.ts"] + } + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/inversify-logger/tsconfig.spec.json b/packages/inversify-logger/tsconfig.spec.json new file mode 100644 index 0000000..089a164 --- /dev/null +++ b/packages/inversify-logger/tsconfig.spec.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@shiftcode/logger": ["../logger/src/public-api.ts"] + }, + "experimentalDecorators": true, + "emitDecoratorMetadata": true + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} From cb124d486c8f227bd279392ea8555bcd1982af75 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 11:11:30 +0100 Subject: [PATCH 07/55] build: let tests run --- packages/inversify-logger/tsconfig.lint.json | 3 ++- packages/inversify-logger/tsconfig.spec.json | 3 ++- packages/inversify-logger/vitest.config.js | 16 ++++++++++++++++ packages/nest-logger/tsconfig.lint.json | 3 ++- packages/nest-logger/tsconfig.spec.json | 3 ++- 5 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 packages/inversify-logger/vitest.config.js diff --git a/packages/inversify-logger/tsconfig.lint.json b/packages/inversify-logger/tsconfig.lint.json index 595ed1e..8c8be89 100644 --- a/packages/inversify-logger/tsconfig.lint.json +++ b/packages/inversify-logger/tsconfig.lint.json @@ -4,7 +4,8 @@ "baseUrl": "./", "types": ["node"], "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"] + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] } }, "include": ["src/**/*.ts", "test/**/*.ts"], diff --git a/packages/inversify-logger/tsconfig.spec.json b/packages/inversify-logger/tsconfig.spec.json index 089a164..75097cd 100644 --- a/packages/inversify-logger/tsconfig.spec.json +++ b/packages/inversify-logger/tsconfig.spec.json @@ -3,7 +3,8 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"] + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true diff --git a/packages/inversify-logger/vitest.config.js b/packages/inversify-logger/vitest.config.js new file mode 100644 index 0000000..fb26931 --- /dev/null +++ b/packages/inversify-logger/vitest.config.js @@ -0,0 +1,16 @@ +import path from 'node:path' + +import { defineConfig } from 'vitest/config' + +import tsconfig from './tsconfig.spec.json' + +const alias = Object.fromEntries( + Object.entries(tsconfig.compilerOptions.paths).map(([key, [value]]) => [ + key.replace('/*', ''), + path.resolve(import.meta.dirname, value.replace('/*', '')), + ]), +) + +export default defineConfig({ + test: { alias }, +}) diff --git a/packages/nest-logger/tsconfig.lint.json b/packages/nest-logger/tsconfig.lint.json index 595ed1e..8c8be89 100644 --- a/packages/nest-logger/tsconfig.lint.json +++ b/packages/nest-logger/tsconfig.lint.json @@ -4,7 +4,8 @@ "baseUrl": "./", "types": ["node"], "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"] + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] } }, "include": ["src/**/*.ts", "test/**/*.ts"], diff --git a/packages/nest-logger/tsconfig.spec.json b/packages/nest-logger/tsconfig.spec.json index 089a164..75097cd 100644 --- a/packages/nest-logger/tsconfig.spec.json +++ b/packages/nest-logger/tsconfig.spec.json @@ -3,7 +3,8 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"] + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true From 091fe66960266d2c07bbef83abbe087ec89a858f Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 11:13:33 +0100 Subject: [PATCH 08/55] ci: test node 24 --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e52ddc2..987df5e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,6 +45,7 @@ jobs: node: - 20 - 22 + - 24 name: Node.js v${{ matrix.node }} steps: # checkout branch From aa8367511b5628f94fb73c1e5bf1370fdff34a3d Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 11:32:04 +0100 Subject: [PATCH 09/55] ci: use GITHUB_TOKEN for publish --- .github/workflows/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 987df5e..9b64f1c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -70,6 +70,9 @@ jobs: run: npm run test:ci build: runs-on: ubuntu-latest + permissions: + contents: read + packages: write needs: [checkExecution, test] # only execute if not skipped by commit message if: needs.checkExecution.outputs.shouldExecute == 'true' @@ -113,4 +116,4 @@ jobs: env: GITHUB_CONTEXT: ${{ toJson(github) }} REGISTRY_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GH_TOKEN: ${{ secrets.GH_TOKEN_PUBLIC_REPO }} # necessary for publish-libs script + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # necessary for publish-libs script From cf35881311aa788a979fede418b52169312f3118 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 11:40:17 +0100 Subject: [PATCH 10/55] build: add peer deps as dev deps as well --- packages/inversify-logger/package.json | 5 +++++ packages/nest-logger/package.json | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 1a4ce57..46c64f8 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -31,6 +31,11 @@ "test:ci": "vitest --no-cache --run", "test:watch": "vitest --cache" }, + "devDependencies": { + "@shiftcode/logger": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.2.0" + }, "peerDependencies": { "@shiftcode/logger": "^4.0.0", "inversify": "^7.0.0", diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 3fa39e4..605f9dd 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -28,6 +28,13 @@ "test:ci": "vitest --no-cache --run", "test:watch": "vitest --cache" }, + "devDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@shiftcode/logger": "^4.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.1.0" + }, "peerDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", From 0995a52ac555aa566b5e5fe403002e00678acebe Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 11:48:47 +0100 Subject: [PATCH 11/55] build: fix prepublish step --- packages/branch-utilities/package.json | 2 +- packages/eslint-config-recommended/package.json | 2 +- packages/eslint-plugin-rules/package.json | 2 +- packages/inversify-logger/package.json | 2 +- packages/logger/package.json | 2 +- packages/nest-logger/package.json | 2 +- packages/publish-helper/package.json | 1 - packages/utilities/package.json | 2 +- 8 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index bc48252..bcd12af 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -23,7 +23,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", "test:watch": "npm run test -- --watch" diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index ff56f35..bc5e68e 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -28,7 +28,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "echo 'Error: no test specificed'", "test:ci": "npm run test" }, diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index c50764c..ab1d51f 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -24,7 +24,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "jest", "test:ci": "npm run test" }, diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 46c64f8..f54181f 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -26,7 +26,7 @@ "lint": "eslint --fix --cache ./src ./test", "lint:ci": "eslint ./src ./test", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run", "test:watch": "vitest --cache" diff --git a/packages/logger/package.json b/packages/logger/package.json index 9c13294..13cac62 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -31,7 +31,7 @@ "lint": "eslint --fix --cache ./src ./test", "lint:ci": "eslint ./src ./test", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", "test:watch": "npm run test -- --watch" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 605f9dd..4f86f6d 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -23,7 +23,7 @@ "lint": "eslint --fix --cache ./src ./test", "lint:ci": "eslint ./src ./test", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run", "test:watch": "vitest --cache" diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index c61f3ae..c5811b9 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -13,7 +13,6 @@ "scripts": { "prebuild": "rm -rf ./dist", "build": "tsc", - "postbuild": "chmod +x ./dist/prepare-dist.js ./dist/publish-lib.js", "format": "npm run format:base -- --write", "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", "format:ci": "npm run format:base -- --check", diff --git a/packages/utilities/package.json b/packages/utilities/package.json index da9b463..9cab75a 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -23,7 +23,7 @@ "lint": "eslint --fix --cache ./src", "lint:ci": "eslint ./src", "lint:staged": "eslint --fix --cache", - "prepublish": "prepare-dist", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", "test:watch": "npm run test -- --watch" From 59bbf69d882b346fb52ad330de1d9151c6f981e1 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 5 Feb 2026 10:51:09 +0000 Subject: [PATCH 12/55] build(release): next version [skip_build] - @shiftcode/inversify-logger@2.1.0-pr254.0 - @shiftcode/nest-logger@2.1.0-pr254.0 --- package-lock.json | 16 ++++++++++++++-- packages/inversify-logger/package.json | 2 +- packages/nest-logger/package.json | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 231448a..58f7b56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18487,8 +18487,13 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "2.0.0", + "version": "2.1.0-pr254.0", "license": "MIT", + "devDependencies": { + "@shiftcode/logger": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.2.0" + }, "engines": { "node": "^22.0.0 || ^24.0.0" }, @@ -18514,8 +18519,15 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "2.0.0", + "version": "2.1.0-pr254.0", "license": "MIT", + "devDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@shiftcode/logger": "^4.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.1.0" + }, "engines": { "node": "^22.0.0 || ^24.0.0" }, diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index f54181f..e42f3a9 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "2.0.0", + "version": "2.1.0-pr254.0", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 4f86f6d..7cf4ba2 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "2.0.0", + "version": "2.1.0-pr254.0", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 23777c2588966bbbb2d1edf1b27c06b558204f1b Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 13:42:49 +0100 Subject: [PATCH 13/55] chore: add deps for newly added libs --- package-lock.json | 9897 +++++++++++++++++++++++++++++---------------- package.json | 10 +- 2 files changed, 6376 insertions(+), 3531 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58f7b56..1b34bde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,8 @@ "packages/*" ], "dependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/testing": "^11.0.0", - "inversify": "^7.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0", - "rxjs": "^7.1.0", - "tslib": "^2.3.0" + "audit": "^0.0.6", + "fix": "^0.0.6" }, "devDependencies": { "@commitlint/cli": "^20.4.1", @@ -33,6 +28,7 @@ "prettier": "^3.3.2", "sort-package-json": "^2.10.0", "ts-jest": "^29.2.0", + "tslib": "^2.3.0", "typescript": "^5.5.3", "vitest": "^4.0.18" }, @@ -415,2837 +411,3143 @@ "typescript": "*" } }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "node_modules/@aws-cdk/asset-awscli-v1": { + "version": "2.2.263", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.263.tgz", + "integrity": "sha512-X9JvcJhYcb7PHs8R7m4zMablO5C9PGb/hYfLnxds9h/rKJu6l7MiXE/SabCibuehxPnuO/vk+sVVJiUWrccarQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz", + "integrity": "sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@aws-cdk/cloud-assembly-schema": { + "version": "48.20.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-48.20.0.tgz", + "integrity": "sha512-+eeiav9LY4wbF/EFuCt/vfvi/Zoxo8bf94PW5clbMraChEliq83w4TbRVy0jB9jE0v1ooFTtIjSQkowSPkfISg==", + "bundleDependencies": [ + "jsonschema", + "semver" + ], + "license": "Apache-2.0", + "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "jsonschema": "~1.4.1", + "semver": "^7.7.2" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node": ">= 18.0.0" } }, - "node_modules/@babel/core": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", - "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, + "node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": "*" } }, - "node_modules/@babel/core/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, + "node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver": { + "version": "7.7.2", + "inBundle": true, + "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", - "dev": true, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/helper-compilation-targets/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/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", - "dev": true, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", - "dev": true, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", - "dev": true, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.1" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, - "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, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.6.2" } }, - "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, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "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, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=14.0.0" } }, - "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, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "node_modules/@aws-sdk/client-cloudformation": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.983.0.tgz", + "integrity": "sha512-zFdhkU24dqmFUL/fM+PhfQ8eWziMCVyHOQqFeJ1Kr20Yovl/h0CZoztNkdHVkGaXndMeHcMpsvb/pF1fAmW/ag==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-cloudfront": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.983.0.tgz", + "integrity": "sha512-XrI3yyFrsRUMTsBGSxaATh9DQcoAtlt1i4EQLtkuxNVLKFOyyA3tvwf7hR2LKcgmwr5304/QBvgSQa5U+/4MKQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.10", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.983.0.tgz", + "integrity": "sha512-ZbDx0koMsnj6wDH1BGKcbsO5DB34XfJB8/u/WNIyqQp04LXqXTcLCV1TgflRIyJ6RwYxsssic2mQ8HfZPGRqEg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.983.0.tgz", + "integrity": "sha512-V40PT2irPh3lj+Z95tZI6batVrjaTrWEOXRNVBuoZSgpM3Ak1jiE9ZXwVLkMcbb9/GH4xVpB3EsGM7gbxmgFLQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.3", + "@aws-sdk/middleware-expect-continue": "^3.972.3", + "@aws-sdk/middleware-flexible-checksums": "^3.972.4", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-location-constraint": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-sdk-s3": "^3.972.6", + "@aws-sdk/middleware-ssec": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/signature-v4-multi-region": "3.983.0", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/eventstream-serde-config-resolver": "^4.3.8", + "@smithy/eventstream-serde-node": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-blob-browser": "^4.2.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/hash-stream-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/md5-js": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.10", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.983.0.tgz", + "integrity": "sha512-5EO2C6axdxWHbH+gxa4dw3Q2gWAxFDkrzW1tZ2r80uvXVPIiosaUjmhY+tkkVcNSGNtv1gDgXbtcXkUTQ8WcgA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.982.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.982.0.tgz", + "integrity": "sha512-qJrIiivmvujdGqJ0ldSUvhN3k3N7GtPesoOI1BSt0fNXovVnMz4C/JmnkhZihU7hJhDvxJaBROLYTU+lpild4w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.982.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints": { + "version": "3.982.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.982.0.tgz", + "integrity": "sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.6.tgz", + "integrity": "sha512-pz4ZOw3BLG0NdF25HoB9ymSYyPbMiIjwQJ2aROXRhAzt+b+EOxStfFv8s5iZyP6Kiw7aYhyWxj5G3NhmkoOTKw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/crc64-nvme": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.0.tgz", + "integrity": "sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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==", + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.3.tgz", + "integrity": "sha512-dW/DqTk90XW7hIngqntAVtJJyrkS51wcLhGz39lOMe0TlSmZl+5R/UGnAZqNbXmWuJHLzxe+MLgagxH41aTsAQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws-sdk/client-cognito-identity": "3.980.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.980.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.980.0.tgz", + "integrity": "sha512-nLgMW2drTzv+dTo3ORCcotQPcrUaTQ+xoaDTdSaUXdZO7zbbVyk7ysE5GDTnJdZWcUjHOSB8xfNQhOTTNVPhFw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.5", + "@aws-sdk/credential-provider-node": "^3.972.4", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.5", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.980.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.3", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@aws-sdk/util-endpoints": { + "version": "3.980.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.980.0.tgz", + "integrity": "sha512-AjKBNEc+rjOZQE1HwcD9aCELqg1GmUj1rtICKuY8cgwB73xJ4U/kNyqKKpN2k9emGqlfDY2D8itIp/vDc6OKpw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.4.tgz", + "integrity": "sha512-/8dnc7+XNMmViEom2xsNdArQxQPSgy4Z/lm6qaFPTrMFesT1bV3PsBhb19n09nmxHdrtQskYmViddUIjUQElXg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.6.tgz", + "integrity": "sha512-5ERWqRljiZv44AIdvIRQ3k+EAV0Sq2WeJHvXuK7gL7bovSxOf8Al7MLH7Eh3rdovH4KHFnlIty7J71mzvQBl5Q==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.4.tgz", + "integrity": "sha512-eRUg+3HaUKuXWn/lEMirdiA5HOKmEl8hEHVuszIDt2MMBUKgVX5XNGmb3XmbgU17h6DZ+RtjbxQpjhz3SbTjZg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-env": "^3.972.4", + "@aws-sdk/credential-provider-http": "^3.972.6", + "@aws-sdk/credential-provider-login": "^3.972.4", + "@aws-sdk/credential-provider-process": "^3.972.4", + "@aws-sdk/credential-provider-sso": "^3.972.4", + "@aws-sdk/credential-provider-web-identity": "^3.972.4", + "@aws-sdk/nested-clients": "3.982.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.4.tgz", + "integrity": "sha512-nLGjXuvWWDlQAp505xIONI7Gam0vw2p7Qu3P6on/W2q7rjJXtYjtpHbcsaOjJ/pAju3eTvEQuSuRedcRHVQIAQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/nested-clients": "3.982.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.5.tgz", + "integrity": "sha512-VWXKgSISQCI2GKN3zakTNHSiZ0+mux7v6YHmmbLQp/o3fvYUQJmKGcLZZzg2GFA+tGGBStplra9VFNf/WwxpYg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aws-sdk/credential-provider-env": "^3.972.4", + "@aws-sdk/credential-provider-http": "^3.972.6", + "@aws-sdk/credential-provider-ini": "^3.972.4", + "@aws-sdk/credential-provider-process": "^3.972.4", + "@aws-sdk/credential-provider-sso": "^3.972.4", + "@aws-sdk/credential-provider-web-identity": "^3.972.4", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.4.tgz", + "integrity": "sha512-TCZpWUnBQN1YPk6grvd5x419OfXjHvhj5Oj44GYb84dOVChpg/+2VoEj+YVA4F4E/6huQPNnX7UYbTtxJqgihw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.4.tgz", + "integrity": "sha512-wzsGwv9mKlwJ3vHLyembBvGE/5nPUIwRR2I51B1cBV4Cb4ql9nIIfpmHzm050XYTY5fqTOKJQnhLj7zj89VG8g==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws-sdk/client-sso": "3.982.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/token-providers": "3.982.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.4.tgz", + "integrity": "sha512-hIzw2XzrG8jzsUSEatehmpkd5rWzASg5IHUfA+m01k/RtvfAML7ZJVVohuKdhAYx+wV2AThLiQJVzqn7F0khrw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/nested-clients": "3.982.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "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==", + "node_modules/@aws-sdk/credential-providers": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.983.0.tgz", + "integrity": "sha512-G2nmPoHdEhLJMae0Y4CpkR5OlsQKUXAi7LNLUOZfNMFCstPQfI6uEHqTmKT9EyrbQkD3Y+rAbRTxTt3FMm+B4A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aws-sdk/client-cognito-identity": "3.983.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.3", + "@aws-sdk/credential-provider-env": "^3.972.4", + "@aws-sdk/credential-provider-http": "^3.972.6", + "@aws-sdk/credential-provider-ini": "^3.972.4", + "@aws-sdk/credential-provider-login": "^3.972.4", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.4", + "@aws-sdk/credential-provider-sso": "^3.972.4", + "@aws-sdk/credential-provider-web-identity": "^3.972.4", + "@aws-sdk/nested-clients": "3.983.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/nested-clients": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.983.0.tgz", + "integrity": "sha512-4bUzDkJlSPwfegO23ZSBrheuTI8UyAgNzptm1K6fZAIOIc1vnFl12TonecbssAfmM0/UdyTn5QDomwEfIdmJkQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.3.tgz", + "integrity": "sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-arn-parser": "^3.972.2", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.3.tgz", + "integrity": "sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.972.4.tgz", + "integrity": "sha512-xOxsUkF3O3BtIe3tf54OpPo94eZepjFm3z0Dd2TZKbsPxMiRTFXurC04wJ58o/wPW9YHVO9VqZik3MfoPfrKlw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/crc64-nvme": "3.972.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.3.tgz", + "integrity": "sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", - "dev": true, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.6.tgz", + "integrity": "sha512-Xq7wM6kbgJN1UO++8dvH/efPb1nTwWqFCpZCR7RCLOETP7xAUAhVo7JmsCnML5Di/iC4Oo5VrJ4QmkYcMZniLw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-arn-parser": "^3.972.2", + "@smithy/core": "^3.22.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.3.tgz", + "integrity": "sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "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, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.6.tgz", + "integrity": "sha512-TehLN8W/kivl0U9HcS+keryElEWORROpghDXZBLfnb40DXM7hx/i+7OOjkogXQOF3QtUraJVRkHQ07bPhrWKlw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.982.0", + "@smithy/core": "^3.22.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=4" + "node": ">=20.0.0" } }, - "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", - "dev": true, + "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/util-endpoints": { + "version": "3.982.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.982.0.tgz", + "integrity": "sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "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/@borewit/text-codec": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@commitlint/cli": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.4.1.tgz", - "integrity": "sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/nested-clients": { + "version": "3.982.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.982.0.tgz", + "integrity": "sha512-VVkaH27digrJfdVrT64rjkllvOp4oRiZuuJvrylLXAKl18ujToJR7AqpDldL/LS63RVne3QWIpkygIymxFtliQ==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/format": "^20.4.0", - "@commitlint/lint": "^20.4.1", - "@commitlint/load": "^20.4.0", - "@commitlint/read": "^20.4.0", - "@commitlint/types": "^20.4.0", - "tinyexec": "^1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.982.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": { + "version": "3.982.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.982.0.tgz", + "integrity": "sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/config-conventional": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.4.1.tgz", - "integrity": "sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/types": "^20.4.0", - "conventional-changelog-conventionalcommits": "^9.1.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/config-validator": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.4.0.tgz", - "integrity": "sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.983.0.tgz", + "integrity": "sha512-11FCcxI/WKRufKDdPgKPXtrhjDArhkOPb4mf66rICZUnPHlD8Cb7cjZZS/eFC+iuwoHBosrxo0hYsvK3s7DxGw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/types": "^20.4.0", - "ajv": "^8.11.0" + "@aws-sdk/middleware-sdk-s3": "^3.972.6", + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/ensure": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.4.1.tgz", - "integrity": "sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/token-providers": { + "version": "3.982.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.982.0.tgz", + "integrity": "sha512-v3M0KYp2TVHYHNBT7jHD9lLTWAdS9CaWJ2jboRKt0WAB65bA7iUEpR+k4VqKYtpQN4+8kKSc4w+K6kUNZkHKQw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/types": "^20.4.0", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/nested-clients": "3.982.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/execute-rule": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", - "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/format": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.4.0.tgz", - "integrity": "sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/types": "^20.4.0", - "picocolors": "^1.1.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/is-ignored": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.4.1.tgz", - "integrity": "sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz", + "integrity": "sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/types": "^20.4.0", - "semver": "^7.6.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/lint": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.4.1.tgz", - "integrity": "sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.983.0.tgz", + "integrity": "sha512-t/VbL2X3gvDEjC4gdySOeFFOZGQEBKwa23pRHeB7hBLBZ119BB/2OEFtTFWKyp3bnMQgxpeVeGS7/hxk6wpKJw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/is-ignored": "^20.4.1", - "@commitlint/parse": "^20.4.1", - "@commitlint/rules": "^20.4.1", - "@commitlint/types": "^20.4.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/load": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.4.0.tgz", - "integrity": "sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.4.tgz", + "integrity": "sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/config-validator": "^20.4.0", - "@commitlint/execute-rule": "^20.0.0", - "@commitlint/resolve-extends": "^20.4.0", - "@commitlint/types": "^20.4.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^6.1.0", - "is-plain-obj": "^4.1.0", - "lodash.mergewith": "^4.6.2", - "picocolors": "^1.1.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/message": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.0.tgz", - "integrity": "sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v18" + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@commitlint/parse": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.4.1.tgz", - "integrity": "sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.4.tgz", + "integrity": "sha512-3WFCBLiM8QiHDfosQq3Py+lIMgWlFWwFQliUHUqwEiRqLnKyhgbU3AKa7AWJF7lW2Oc/2kFNY4MlAYVnVc0i8A==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@commitlint/types": "^20.4.0", - "conventional-changelog-angular": "^8.1.0", - "conventional-commits-parser": "^6.2.1" + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v18" + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@commitlint/parse/node_modules/conventional-changelog-angular": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", - "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", - "dev": true, - "license": "ISC", + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.4.tgz", + "integrity": "sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "compare-func": "^2.0.0" + "@smithy/types": "^4.12.0", + "fast-xml-parser": "5.3.4", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" + "node": ">=20.0.0" } }, - "node_modules/@commitlint/prompt": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/prompt/-/prompt-20.4.1.tgz", - "integrity": "sha512-dLXTdNnXiWyYPHM9a5gMpZrDTbjrwoJJGICD1aS4eCviw9yc8vNKoTytxR+oNb3xXS9i/0b4Ajhr1ALy996dMQ==", - "dev": true, - "license": "MIT", + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", + "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dependencies": { - "@commitlint/ensure": "^20.4.1", - "@commitlint/load": "^20.4.0", - "@commitlint/types": "^20.4.0", - "inquirer": "^9.2.15", + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/prompt-cli": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/prompt-cli/-/prompt-cli-20.4.1.tgz", - "integrity": "sha512-5kivMX7Sq5PkxwTqhk/KmhKG52BHIoWvt2a6qY3g+9ZCls/lNjLw1HxMV+raeGk79K+eD/g/Tj+XWWkkzZkivA==", + "node_modules/@babel/compat-data": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", + "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/prompt": "^20.4.1", - "inquirer": "^9.2.15", - "tinyexec": "^1.0.0" - }, - "bin": { - "commit": "cli.js" - }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/read": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.4.0.tgz", - "integrity": "sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==", + "node_modules/@babel/core": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", "dev": true, - "license": "MIT", "dependencies": { - "@commitlint/top-level": "^20.4.0", - "@commitlint/types": "^20.4.0", - "git-raw-commits": "^4.0.0", - "minimist": "^1.2.8", - "tinyexec": "^1.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", + "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": ">=v18" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.4.0.tgz", - "integrity": "sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==", + "node_modules/@babel/core/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/@babel/generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", "dev": true, - "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^20.4.0", - "@commitlint/types": "^20.4.0", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/rules": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.4.1.tgz", - "integrity": "sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, - "license": "MIT", "dependencies": { - "@commitlint/ensure": "^20.4.1", - "@commitlint/message": "^20.4.0", - "@commitlint/to-lines": "^20.0.0", - "@commitlint/types": "^20.4.0" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/to-lines": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", - "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", + "node_modules/@babel/helper-compilation-targets/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, - "license": "MIT", - "engines": { - "node": ">=v18" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@commitlint/top-level": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.0.tgz", - "integrity": "sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, - "license": "MIT", "dependencies": { - "escalade": "^3.2.0" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/types": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.4.0.tgz", - "integrity": "sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", "dev": true, - "license": "MIT", "dependencies": { - "conventional-commits-parser": "^6.2.1", - "picocolors": "^1.1.1" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=v18" - } - }, - "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", - "license": "MIT", - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helpers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/parser": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", + "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=18" + "node": ">=6.0.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], + "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": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], + "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": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], + "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": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], + "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": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], + "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", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], + "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", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], + "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", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], + "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", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], + "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", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], + "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", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "cpu": [ - "arm64" - ], + "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", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], + "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": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], + "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", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], + "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", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "@babel/core": "^7.0.0-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/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "license": "Apache-2.0", + "node_modules/@babel/traverse": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "dev": true, "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "globals": "^11.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", - "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.16.0" - }, + "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, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=4" } }, - "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", - "license": "Apache-2.0", + "node_modules/@babel/types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "dev": true, "dependencies": { - "@types/json-schema": "^7.0.15" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "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/@borewit/text-codec": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "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" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/@eslint/eslintrc/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/@commitlint/cli": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.4.1.tgz", + "integrity": "sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==", + "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" + "@commitlint/format": "^20.4.0", + "@commitlint/lint": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/read": "^20.4.0", + "@commitlint/types": "^20.4.0", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" } }, - "node_modules/@eslint/eslintrc/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==", - "license": "MIT" - }, - "node_modules/@eslint/js": { - "version": "9.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", - "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "node_modules/@commitlint/config-conventional": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.4.1.tgz", + "integrity": "sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==", + "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "dependencies": { + "@commitlint/types": "^20.4.0", + "conventional-changelog-conventionalcommits": "^9.1.0" }, - "funding": { - "url": "https://eslint.org/donate" + "engines": { + "node": ">=v18" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "license": "Apache-2.0", + "node_modules/@commitlint/config-validator": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.4.0.tgz", + "integrity": "sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^20.4.0", + "ajv": "^8.11.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=v18" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", - "license": "Apache-2.0", + "node_modules/@commitlint/ensure": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.4.1.tgz", + "integrity": "sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==", + "dev": true, + "license": "MIT", "dependencies": { - "@eslint/core": "^0.16.0", - "levn": "^0.4.1" + "@commitlint/types": "^20.4.0", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=v18" } }, - "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==", - "license": "Apache-2.0", + "node_modules/@commitlint/execute-rule": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", + "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.18.0" + "node": ">=v18" } }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "license": "Apache-2.0", + "node_modules/@commitlint/format": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.4.0.tgz", + "integrity": "sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" + "@commitlint/types": "^20.4.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=18.18.0" + "node": ">=v18" } }, - "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==", - "engines": { - "node": ">=12.22" + "node_modules/@commitlint/is-ignored": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.4.1.tgz", + "integrity": "sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^20.4.0", + "semver": "^7.6.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": ">=v18" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node_modules/@commitlint/lint": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.4.1.tgz", + "integrity": "sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^20.4.1", + "@commitlint/parse": "^20.4.1", + "@commitlint/rules": "^20.4.1", + "@commitlint/types": "^20.4.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": ">=v18" } }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "license": "Apache-2.0", + "node_modules/@commitlint/load": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.4.0.tgz", + "integrity": "sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^20.4.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.4.0", + "@commitlint/types": "^20.4.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "is-plain-obj": "^4.1.0", + "lodash.mergewith": "^4.6.2", + "picocolors": "^1.1.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">=v18" } }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "node_modules/@commitlint/message": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.0.tgz", + "integrity": "sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "node_modules/@commitlint/parse": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.4.1.tgz", + "integrity": "sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@commitlint/types": "^20.4.0", + "conventional-changelog-angular": "^8.1.0", + "conventional-commits-parser": "^6.2.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=v18" } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "license": "MIT", + "node_modules/@commitlint/parse/node_modules/conventional-changelog-angular": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", + "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", + "dev": true, + "license": "ISC", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "compare-func": "^2.0.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "node_modules/@commitlint/prompt": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/prompt/-/prompt-20.4.1.tgz", + "integrity": "sha512-dLXTdNnXiWyYPHM9a5gMpZrDTbjrwoJJGICD1aS4eCviw9yc8vNKoTytxR+oNb3xXS9i/0b4Ajhr1ALy996dMQ==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "@commitlint/ensure": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/types": "^20.4.0", + "inquirer": "^9.2.15", + "picocolors": "^1.1.1" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/core/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==", - "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=v18" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "node_modules/@commitlint/prompt-cli": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/prompt-cli/-/prompt-cli-20.4.1.tgz", + "integrity": "sha512-5kivMX7Sq5PkxwTqhk/KmhKG52BHIoWvt2a6qY3g+9ZCls/lNjLw1HxMV+raeGk79K+eD/g/Tj+XWWkkzZkivA==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" + "@commitlint/prompt": "^20.4.1", + "inquirer": "^9.2.15", + "tinyexec": "^1.0.0" }, - "peerDependencies": { - "@types/node": ">=18" + "bin": { + "commit": "cli.js" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": ">=v18" } }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "node_modules/@commitlint/read": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.4.0.tgz", + "integrity": "sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@commitlint/top-level": "^20.4.0", + "@commitlint/types": "^20.4.0", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=v18" } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "node_modules/@commitlint/resolve-extends": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.4.0.tgz", + "integrity": "sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==", + "dev": true, "license": "MIT", "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "@commitlint/config-validator": "^20.4.0", + "@commitlint/types": "^20.4.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=v18" } }, - "node_modules/@inquirer/external-editor/node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "license": "MIT" - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "node_modules/@commitlint/rules": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.4.1.tgz", + "integrity": "sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@commitlint/ensure": "^20.4.1", + "@commitlint/message": "^20.4.0", + "@commitlint/to-lines": "^20.0.0", + "@commitlint/types": "^20.4.0" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=v18" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "node_modules/@commitlint/to-lines": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", + "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "node_modules/@commitlint/top-level": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.0.tgz", + "integrity": "sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "escalade": "^3.2.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=v18" } }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "node_modules/@commitlint/types": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.4.0.tgz", + "integrity": "sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "conventional-commits-parser": "^6.2.1", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=v18" } }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "tslib": "^2.4.0" } }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "tslib": "^2.4.0" } }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, + "optional": true, + "os": [ + "android" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inversifyjs/common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.5.2.tgz", - "integrity": "sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==", - "license": "MIT" - }, - "node_modules/@inversifyjs/container": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@inversifyjs/container/-/container-1.15.0.tgz", - "integrity": "sha512-U2xYsPrJTz5za2TExi5lg8qOWf8TEVBpN+pQM7B8BVA2rajtbRE9A66SLRHk8c1eGXmg+0K4Hdki6tWAsSQBUA==", - "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2", - "@inversifyjs/core": "9.2.0", - "@inversifyjs/plugin": "0.2.0", - "@inversifyjs/reflect-metadata-utils": "1.4.1" - }, - "peerDependencies": { - "reflect-metadata": "~0.2.2" } }, - "node_modules/@inversifyjs/core": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-9.2.0.tgz", - "integrity": "sha512-Nm7BR6KmpgshIHpVQWuEDehqRVb6GBm8LFEuhc2s4kSZWrArZ15RmXQzROLk4m+hkj4kMXgvMm5Qbopot/D6Sg==", + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2", - "@inversifyjs/prototype-utils": "0.1.3", - "@inversifyjs/reflect-metadata-utils": "1.4.1" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@inversifyjs/plugin": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@inversifyjs/plugin/-/plugin-0.2.0.tgz", - "integrity": "sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==", - "license": "MIT" - }, - "node_modules/@inversifyjs/prototype-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@inversifyjs/prototype-utils/-/prototype-utils-0.1.3.tgz", - "integrity": "sha512-EzRamZzNgE9Sn3QtZ8NncNa2lpPMZfspqbK6BWFguWnOpK8ymp2TUuH46ruFHZhrHKnknPd7fG22ZV7iF517TQ==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@inversifyjs/reflect-metadata-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-1.4.1.tgz", - "integrity": "sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "peerDependencies": { - "reflect-metadata": "~0.2.2" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "20 || >=22" + "node": ">=18" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "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==", - "license": "ISC", - "dependencies": { - "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" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "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==", - "license": "MIT" - }, - "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==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.0.0" + "node": ">=18" } }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "license": "ISC" - }, - "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==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], "dev": true, - "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" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config/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==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@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" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/console/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/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@jest/console/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/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18" } }, - "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, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "license": "MIT", "dependencies": { - "@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" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "funding": { + "url": "https://opencollective.com/eslint" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@jest/core/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "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==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@jest/core/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, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "license": "Apache-2.0", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "@eslint/core": "^0.16.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "license": "Apache-2.0", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "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" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "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" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "node_modules/@eslint/eslintrc/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==", + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "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, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "license": "Apache-2.0", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "license": "Apache-2.0", "dependencies": { - "@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" + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" }, "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": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@jest/reporters/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "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==", + "license": "Apache-2.0", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18.18.0" } }, - "node_modules/@jest/reporters/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, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=10" + "node": ">=18.18.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==", + "engines": { + "node": ">=12.22" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "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, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "license": "Apache-2.0", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "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, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "license": "Apache-2.0", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.9.0" } }, - "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, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "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, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "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, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "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" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/transform/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, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=8" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/transform/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" - }, + "node_modules/@inquirer/core/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", "engines": { - "node": ">=10" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@inquirer/core/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==", + "license": "ISC", + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "license": "MIT", "dependencies": { - "@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" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/types/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, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=8" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/types/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, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "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, - "engines": { - "node": ">=6.0.0" - } - }, - "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, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, + "node_modules/@inquirer/external-editor/node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "license": "MIT" }, - "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, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@lerna/create": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-9.0.3.tgz", - "integrity": "sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g==", + "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", "license": "MIT", "dependencies": { - "@npmcli/arborist": "9.1.6", - "@npmcli/package-json": "7.0.2", - "@npmcli/run-script": "10.0.2", - "@nx/devkit": ">=21.5.2 < 23.0.0", - "@octokit/plugin-enterprise-rest": "6.0.1", - "@octokit/rest": "20.1.2", - "aproba": "2.0.0", - "byte-size": "8.1.1", - "chalk": "4.1.0", - "cmd-shim": "6.0.3", - "color-support": "1.1.3", - "columnify": "1.6.0", - "console-control-strings": "^1.1.0", - "conventional-changelog-core": "5.0.1", - "conventional-recommended-bump": "7.0.1", - "cosmiconfig": "9.0.0", - "dedent": "1.5.3", - "execa": "5.0.0", - "fs-extra": "^11.2.0", - "get-stream": "6.0.0", - "git-url-parse": "14.0.0", - "glob-parent": "6.0.2", - "has-unicode": "2.0.1", - "ini": "^1.3.8", - "init-package-json": "8.2.2", - "inquirer": "12.9.6", - "is-ci": "3.0.1", - "is-stream": "2.0.0", - "js-yaml": "4.1.1", - "libnpmpublish": "11.1.2", - "load-json-file": "6.2.0", - "make-dir": "4.0.0", - "make-fetch-happen": "15.0.2", - "minimatch": "3.0.5", - "multimatch": "5.0.0", - "npm-package-arg": "13.0.1", - "npm-packlist": "10.0.3", - "npm-registry-fetch": "19.1.0", - "nx": ">=21.5.3 < 23.0.0", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-queue": "6.6.2", - "p-reduce": "^2.1.0", - "pacote": "21.0.1", - "pify": "5.0.0", - "read-cmd-shim": "4.0.0", - "resolve-from": "5.0.0", - "rimraf": "^4.4.1", - "semver": "7.7.2", - "set-blocking": "^2.0.0", - "signal-exit": "3.0.7", - "slash": "^3.0.0", - "ssri": "12.0.0", - "string-width": "^4.2.3", - "tar": "6.2.1", - "temp-dir": "1.0.0", - "through": "2.3.8", - "tinyglobby": "0.2.12", - "upath": "2.0.1", - "uuid": "^11.1.0", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "6.0.2", - "wide-align": "1.1.5", - "write-file-atomic": "5.0.1", - "write-pkg": "4.0.0", - "yargs": "17.7.2", - "yargs-parser": "21.1.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@lerna/create/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/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@lerna/create/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@lerna/create/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "license": "MIT", "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "babel-plugin-macros": { + "@types/node": { "optional": true } } }, - "node_modules/@lerna/create/node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "license": "MIT", "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" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@lerna/create/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=18" }, "peerDependencies": { - "picomatch": "^3 || ^4" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "picomatch": { + "@types/node": { "optional": true } } }, - "node_modules/@lerna/create/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/create/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/@lerna/create/node_modules/inquirer": { - "version": "12.9.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.6.tgz", - "integrity": "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/prompts": "^7.8.6", - "@inquirer/type": "^3.0.8", - "mute-stream": "^2.0.0", - "run-async": "^4.0.5", - "rxjs": "^7.8.2" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -3259,1700 +3561,3600 @@ } } }, - "node_modules/@lerna/create/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@lerna/create/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" }, "engines": { - "node": "*" - } - }, - "node_modules/@lerna/create/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@lerna/create/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@lerna/create/node_modules/run-async": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", - "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@lerna/create/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "peerDependencies": { + "@types/node": ">=18" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@lerna/create/node_modules/tinyglobby": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", - "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "license": "MIT", "dependencies": { - "fdir": "^6.4.3", - "picomatch": "^4.0.2" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/@lerna/create/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "node": ">=18" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@lerna/create/node_modules/write-file-atomic/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==", - "license": "ISC", - "engines": { - "node": ">=14" + "peerDependencies": { + "@types/node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", - "license": "MIT", - "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@nestjs/common": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", - "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "license": "MIT", "dependencies": { - "file-type": "21.3.0", - "iterare": "1.2.1", - "load-esm": "1.0.3", - "tslib": "2.8.1", - "uid": "2.0.2" + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "engines": { + "node": ">=18" }, "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { + "@types/node": { "optional": true } } }, - "node_modules/@nestjs/core": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", - "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", - "hasInstallScript": true, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "license": "MIT", "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1", - "uid": "2.0.2" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "node": ">=18" }, "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { + "@types/node": { "optional": true } } }, - "node_modules/@nestjs/testing": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.13.tgz", - "integrity": "sha512-bOWP8nLEZAOEEX8jAZGBCc1yU0+nv4g2ipc+QEzkVUe3eEEUKHKaeGafJ3GtDuGavlZKfkXEqflZuICdavu5dQ==", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "engines": { + "node": ">=18" }, "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { + "@types/node": { "optional": true } } }, - "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==", + "node_modules/@inversifyjs/common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.5.2.tgz", + "integrity": "sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@inversifyjs/container": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/container/-/container-1.15.0.tgz", + "integrity": "sha512-U2xYsPrJTz5za2TExi5lg8qOWf8TEVBpN+pQM7B8BVA2rajtbRE9A66SLRHk8c1eGXmg+0K4Hdki6tWAsSQBUA==", + "devOptional": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@inversifyjs/common": "1.5.2", + "@inversifyjs/core": "9.2.0", + "@inversifyjs/plugin": "0.2.0", + "@inversifyjs/reflect-metadata-utils": "1.4.1" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "reflect-metadata": "~0.2.2" } }, - "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==", - "engines": { - "node": ">= 8" + "node_modules/@inversifyjs/core": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-9.2.0.tgz", + "integrity": "sha512-Nm7BR6KmpgshIHpVQWuEDehqRVb6GBm8LFEuhc2s4kSZWrArZ15RmXQzROLk4m+hkj4kMXgvMm5Qbopot/D6Sg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/prototype-utils": "0.1.3", + "@inversifyjs/reflect-metadata-utils": "1.4.1" } }, - "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==", + "node_modules/@inversifyjs/plugin": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/plugin/-/plugin-0.2.0.tgz", + "integrity": "sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@inversifyjs/prototype-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@inversifyjs/prototype-utils/-/prototype-utils-0.1.3.tgz", + "integrity": "sha512-EzRamZzNgE9Sn3QtZ8NncNa2lpPMZfspqbK6BWFguWnOpK8ymp2TUuH46ruFHZhrHKnknPd7fG22ZV7iF517TQ==", + "devOptional": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@inversifyjs/common": "1.5.2" } }, - "node_modules/@npmcli/agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", - "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^11.2.1", - "socks-proxy-agent": "^8.0.3" - }, + "node_modules/@inversifyjs/reflect-metadata-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-1.4.1.tgz", + "integrity": "sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "reflect-metadata": "~0.2.2" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "20 || >=22" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, "engines": { "node": "20 || >=22" } }, - "node_modules/@npmcli/arborist": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.6.tgz", - "integrity": "sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ==", + "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==", "license": "ISC", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^4.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/map-workspaces": "^5.0.0", - "@npmcli/metavuln-calculator": "^9.0.2", - "@npmcli/name-from-folder": "^3.0.0", - "@npmcli/node-gyp": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/query": "^4.0.0", - "@npmcli/redact": "^3.0.0", - "@npmcli/run-script": "^10.0.0", - "bin-links": "^5.0.0", - "cacache": "^20.0.1", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^9.0.0", - "json-stringify-nice": "^1.1.4", - "lru-cache": "^11.2.1", - "minimatch": "^10.0.3", - "nopt": "^8.0.0", - "npm-install-checks": "^7.1.0", - "npm-package-arg": "^13.0.0", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "pacote": "^21.0.2", - "parse-conflict-json": "^4.0.0", - "proc-log": "^5.0.0", - "proggy": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "semver": "^7.3.7", - "ssri": "^12.0.0", - "treeverse": "^3.0.0", - "walk-up-path": "^4.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "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": "^20.17.0 || >=22.9.0" + "node": ">=12" } }, - "node_modules/@npmcli/arborist/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@npmcli/arborist/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/arborist/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@npmcli/arborist/node_modules/npm-bundled": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", - "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", - "license": "ISC", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", "dependencies": { - "npm-normalize-package-bin": "^5.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", - "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", - "license": "ISC", + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@npmcli/arborist/node_modules/pacote": { - "version": "21.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", - "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "license": "ISC", "dependencies": { - "@npmcli/git": "^7.0.0", - "@npmcli/installed-package-contents": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "@npmcli/run-script": "^10.0.0", - "cacache": "^20.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^13.0.0", - "npm-packlist": "^10.0.1", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^4.0.0", - "ssri": "^13.0.0", - "tar": "^7.4.3" - }, - "bin": { - "pacote": "bin/index.js" + "minipass": "^7.0.4" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/@npmcli/installed-package-contents": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", - "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", - "license": "ISC", - "dependencies": { - "npm-bundled": "^5.0.0", - "npm-normalize-package-bin": "^5.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "license": "ISC" + }, + "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, + "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" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=8" } }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "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, + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/ssri": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", - "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", - "license": "ISC", + "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, "dependencies": { - "minipass": "^7.0.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=8" } }, - "node_modules/@npmcli/arborist/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", - "license": "BlueOak-1.0.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=18" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@npmcli/arborist/node_modules/yallist": { + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@npmcli/fs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", - "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", - "license": "ISC", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "semver": "^7.3.5" + "p-locate": "^4.1.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=8" } }, - "node_modules/@npmcli/git": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", - "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", - "license": "ISC", + "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, "dependencies": { - "@npmcli/promise-spawn": "^9.0.0", - "ini": "^6.0.0", - "lru-cache": "^11.2.1", - "npm-pick-manifest": "^11.0.1", - "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^6.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "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, + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", + "node_modules/@istanbuljs/load-nyc-config/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": "20 || >=22" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", + "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, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "license": "ISC", + "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, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@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": "^20.17.0 || >=22.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", - "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", - "license": "ISC", + "node_modules/@jest/console/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, "dependencies": { - "npm-bundled": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" + "color-convert": "^2.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/map-workspaces": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-5.0.3.tgz", - "integrity": "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==", - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "glob": "^13.0.0", - "minimatch": "^10.0.3" + "node": ">=8" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/@npmcli/name-from-folder": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", - "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "license": "BlueOak-1.0.0", + "node_modules/@jest/console/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": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "20 || >=22" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", + "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, "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@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": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz", - "integrity": "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==", - "license": "ISC", - "dependencies": { - "cacache": "^20.0.0", - "json-parse-even-better-errors": "^5.0.0", - "pacote": "^21.0.0", - "proc-log": "^6.0.0", - "semver": "^7.3.5" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/name-from-folder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz", - "integrity": "sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", - "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.2.tgz", - "integrity": "sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==", - "license": "ISC", - "dependencies": { - "@npmcli/git": "^7.0.0", - "glob": "^11.0.3", - "hosted-git-info": "^9.0.0", - "json-parse-even-better-errors": "^5.0.0", - "proc-log": "^6.0.0", - "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "license": "BlueOak-1.0.0", + "node_modules/@jest/core/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, "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "color-convert": "^2.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", + "node_modules/@jest/core/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": { - "@isaacs/brace-expansion": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "20 || >=22" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", - "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", - "license": "ISC", + "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, "dependencies": { - "which": "^6.0.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "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, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "license": "ISC", + "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, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "jest-get-type": "^29.6.3" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/query": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-4.0.1.tgz", - "integrity": "sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw==", - "license": "ISC", + "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, "dependencies": { - "postcss-selector-parser": "^7.0.0" + "@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": "^18.17.0 || >=20.5.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/redact": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", - "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", - "license": "ISC", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@npmcli/run-script": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.2.tgz", - "integrity": "sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==", - "license": "ISC", + "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, "dependencies": { - "@npmcli/node-gyp": "^5.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "node-gyp": "^11.0.0", - "proc-log": "^6.0.0", - "which": "^5.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", - "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", - "license": "ISC", + "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, + "dependencies": { + "@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": "^20.17.0 || >=22.9.0" + "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/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "node_modules/@jest/reporters/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, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=16" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/run-script/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", + "node_modules/@jest/reporters/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": "^20.17.0 || >=22.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "license": "ISC", + "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, "dependencies": { - "isexe": "^3.1.1" + "@sinclair/typebox": "^0.27.8" }, - "bin": { - "node-which": "bin/which.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "license": "MIT", + "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, "dependencies": { - "consola": "^3.2.3" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "bin": { - "opencollective": "bin/opencollective.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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, + "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.18.0 || >=16.10.0", - "npm": ">=5.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nx/devkit": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", - "integrity": "sha512-ACwmelqurupbuvvTUA+hWw978H2odLGvnYtlSut3qmw/TzS7bkptd4CmPpks6dGPTOSQbJGzbwLo9OEMs36BBA==", - "license": "MIT", + "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, "dependencies": { - "@zkochan/js-yaml": "0.0.7", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "minimatch": "9.0.3", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "@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" }, - "peerDependencies": { - "nx": ">= 21 <= 23 || ^22.0.0-0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nx/devkit/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", + "node_modules/@jest/transform/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, "dependencies": { - "balanced-match": "^1.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nx/devkit/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", + "node_modules/@jest/transform/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": { - "brace-expansion": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.1.3.tgz", - "integrity": "sha512-4D/jXGsr3jcQ0vBo8aXXZMdfmC3n4OsZ1zjFaOXlF62Ujug+RqI/IvKxycT9r7Lr09PmW2OqBC01NfIWKoBLhg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "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, + "dependencies": { + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@nx/nx-darwin-x64": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.1.3.tgz", - "integrity": "sha512-XmdccOBp1Lx9DXUzYDX65mkFqFvXaxUKm1d63bfA43vxIYUpR59SASB81KRQ/Q4dgvvU27C0EJuxSJbXsSkSYw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.1.3.tgz", - "integrity": "sha512-O+o4mqPwhKxfdsri4KxDbXbjwIwr04GfTSfA0TwgXs6hFf68qmc45FAmPGrPSvxIJg9+mUVDeFirdS8GcUE0jQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.1.3.tgz", - "integrity": "sha512-ZIPDgzLq8qmvrZ3Bp+bWXam5uKwahjcChBNtORVtrHQfm4mxov2RMUMKTg2ZsVAWVP64zK+gmzG5LuoZjPMm4Q==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.1.3.tgz", - "integrity": "sha512-wgpPaTpQKl+cCkSuE5zamTVrg14mRvT+bLAeN/yHSUgMztvGxwl3Ll+K9DgEcktBo1PLECTWNkVaW8IAsJm4Rg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.1.3.tgz", - "integrity": "sha512-o9XmQehSPR2y0RD4evD+Ob3lNFuwsFOL5upVJqZ3rcE6GkJIFPg8SwEP5FaRIS5MwS04fxnek20NZ18BHjjV/g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.1.3.tgz", - "integrity": "sha512-ekcinyDNTa2huVe02T2SFMR8oArohozRbMGO19zftbObXXI4dLdoAuLNb3vK9Pe4vYOpkhfxBVkZvcWMmx7JdA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.1.3.tgz", - "integrity": "sha512-CqpRIJeIgELCqIgjtSsYnnLi6G0uqjbp/Pw9d7w4im4/NmJXqaE9gxpdHA1eowXLgAy9W1LkfzCPS8Q2IScPuQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.1.3.tgz", - "integrity": "sha512-YbuWb8KQsAR9G0+7b4HA16GV962/VWtRcdS7WY2yaScmPT2W5rObl528Y2j4DuB0j/MVZj12qJKrYfUyjL+UJA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.1.3.tgz", - "integrity": "sha512-G90Sp409ypeOUbmj6nmEbdy043KJUKaZ7pffxmM6i63yEe2F2WdmMgdi525vUEgmq+pfB9zQQOX1sDR/rPFvtg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", - "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", - "license": "MIT", + "node_modules/@jest/types/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, "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.4.1", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@octokit/endpoint": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", - "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", - "license": "MIT", + "node_modules/@jest/types/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": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@octokit/graphql": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", - "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", - "license": "MIT", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, "dependencies": { - "@octokit/request": "^8.4.1", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">= 18" + "node": ">=6.0.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", - "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.4.4-cjs.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", - "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.7.0" - }, + "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, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" + "node": ">=6.0.0" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", - "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", - "license": "MIT", + "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, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" + "node": ">=6.0.0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.3.2-cjs.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", - "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", - "license": "MIT", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "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, "dependencies": { - "@octokit/types": "^13.8.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "^5" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@octokit/request": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", - "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "node_modules/@lerna/create": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-9.0.3.tgz", + "integrity": "sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g==", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.6", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "@npmcli/arborist": "9.1.6", + "@npmcli/package-json": "7.0.2", + "@npmcli/run-script": "10.0.2", + "@nx/devkit": ">=21.5.2 < 23.0.0", + "@octokit/plugin-enterprise-rest": "6.0.1", + "@octokit/rest": "20.1.2", + "aproba": "2.0.0", + "byte-size": "8.1.1", + "chalk": "4.1.0", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", + "columnify": "1.6.0", + "console-control-strings": "^1.1.0", + "conventional-changelog-core": "5.0.1", + "conventional-recommended-bump": "7.0.1", + "cosmiconfig": "9.0.0", + "dedent": "1.5.3", + "execa": "5.0.0", + "fs-extra": "^11.2.0", + "get-stream": "6.0.0", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", + "has-unicode": "2.0.1", + "ini": "^1.3.8", + "init-package-json": "8.2.2", + "inquirer": "12.9.6", + "is-ci": "3.0.1", + "is-stream": "2.0.0", + "js-yaml": "4.1.1", + "libnpmpublish": "11.1.2", + "load-json-file": "6.2.0", + "make-dir": "4.0.0", + "make-fetch-happen": "15.0.2", + "minimatch": "3.0.5", + "multimatch": "5.0.0", + "npm-package-arg": "13.0.1", + "npm-packlist": "10.0.3", + "npm-registry-fetch": "19.1.0", + "nx": ">=21.5.3 < 23.0.0", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-queue": "6.6.2", + "p-reduce": "^2.1.0", + "pacote": "21.0.1", + "pify": "5.0.0", + "read-cmd-shim": "4.0.0", + "resolve-from": "5.0.0", + "rimraf": "^4.4.1", + "semver": "7.7.2", + "set-blocking": "^2.0.0", + "signal-exit": "3.0.7", + "slash": "^3.0.0", + "ssri": "12.0.0", + "string-width": "^4.2.3", + "tar": "6.2.1", + "temp-dir": "1.0.0", + "through": "2.3.8", + "tinyglobby": "0.2.12", + "upath": "2.0.1", + "uuid": "^11.1.0", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "6.0.2", + "wide-align": "1.1.5", + "write-file-atomic": "5.0.1", + "write-pkg": "4.0.0", + "yargs": "17.7.2", + "yargs-parser": "21.1.1" }, "engines": { - "node": ">= 18" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@octokit/request-error": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", - "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "node_modules/@lerna/create/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==", "license": "MIT", "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@octokit/rest": { - "version": "20.1.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", - "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", + "node_modules/@lerna/create/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "license": "MIT", "dependencies": { - "@octokit/core": "^5.0.2", - "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", - "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@octokit/types": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", - "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "node_modules/@lerna/create/node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/@lerna/create/node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^24.2.0" + "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/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@lerna/create/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", - "optional": true, "engines": { - "node": ">=14" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@lerna/create/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@lerna/create/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/@lerna/create/node_modules/inquirer": { + "version": "12.9.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.6.tgz", + "integrity": "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==", "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "@inquirer/ansi": "^1.0.0", + "@inquirer/core": "^10.2.2", + "@inquirer/prompts": "^7.8.6", + "@inquirer/type": "^3.0.8", + "mute-stream": "^2.0.0", + "run-async": "^4.0.5", + "rxjs": "^7.8.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@lerna/create/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">=8" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "node_modules/@lerna/create/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "node_modules/@lerna/create/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@lerna/create/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@lerna/create/node_modules/run-async": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", + "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@lerna/create/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@lerna/create/node_modules/tinyglobby": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "fdir": "^6.4.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", - "cpu": [ - "arm64" - ], + "node_modules/@lerna/create/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@lerna/create/node_modules/write-file-atomic/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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=8" + } }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", - "cpu": [ - "loong64" - ], - "dev": true, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", - "cpu": [ - "loong64" - ], + "node_modules/@nestjs/common": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", + "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "file-type": "21.3.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", - "cpu": [ - "ppc64" - ], + "node_modules/@nestjs/core": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", + "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "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==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "engines": { + "node": ">= 8" + } + }, + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/arborist": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.6.tgz", + "integrity": "sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ==", + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/map-workspaces": "^5.0.0", + "@npmcli/metavuln-calculator": "^9.0.2", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/query": "^4.0.0", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^10.0.0", + "bin-links": "^5.0.0", + "cacache": "^20.0.1", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^9.0.0", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^11.2.1", + "minimatch": "^10.0.3", + "nopt": "^8.0.0", + "npm-install-checks": "^7.1.0", + "npm-package-arg": "^13.0.0", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "pacote": "^21.0.2", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "proggy": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "semver": "^7.3.7", + "ssri": "^12.0.0", + "treeverse": "^3.0.0", + "walk-up-path": "^4.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/arborist/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/arborist/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/arborist/node_modules/npm-bundled": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", + "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^5.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", + "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/pacote": { + "version": "21.0.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", + "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "@npmcli/run-script": "^10.0.0", + "cacache": "^20.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^13.0.0", + "npm-packlist": "^10.0.1", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^4.0.0", + "ssri": "^13.0.0", + "tar": "^7.4.3" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/@npmcli/installed-package-contents": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", + "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", + "license": "ISC", + "dependencies": { + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/ssri": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", + "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/tar": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", + "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/arborist/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/git": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", + "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/git/node_modules/ini": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", + "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-5.0.3.tgz", + "integrity": "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==", + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "glob": "^13.0.0", + "minimatch": "^10.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/@npmcli/name-from-folder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", + "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz", + "integrity": "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==", + "license": "ISC", + "dependencies": { + "cacache": "^20.0.0", + "json-parse-even-better-errors": "^5.0.0", + "pacote": "^21.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz", + "integrity": "sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", + "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.2.tgz", + "integrity": "sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==", + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "glob": "^11.0.3", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", + "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", + "license": "ISC", + "dependencies": { + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/query": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-4.0.1.tgz", + "integrity": "sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", + "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.2.tgz", + "integrity": "sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==", + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^6.0.0", + "which": "^5.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", + "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@nx/devkit": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", + "integrity": "sha512-ACwmelqurupbuvvTUA+hWw978H2odLGvnYtlSut3qmw/TzS7bkptd4CmPpks6dGPTOSQbJGzbwLo9OEMs36BBA==", + "license": "MIT", + "dependencies": { + "@zkochan/js-yaml": "0.0.7", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "minimatch": "9.0.3", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 21 <= 23 || ^22.0.0-0" + } + }, + "node_modules/@nx/devkit/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.1.3.tgz", + "integrity": "sha512-4D/jXGsr3jcQ0vBo8aXXZMdfmC3n4OsZ1zjFaOXlF62Ujug+RqI/IvKxycT9r7Lr09PmW2OqBC01NfIWKoBLhg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.1.3.tgz", + "integrity": "sha512-XmdccOBp1Lx9DXUzYDX65mkFqFvXaxUKm1d63bfA43vxIYUpR59SASB81KRQ/Q4dgvvU27C0EJuxSJbXsSkSYw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.1.3.tgz", + "integrity": "sha512-O+o4mqPwhKxfdsri4KxDbXbjwIwr04GfTSfA0TwgXs6hFf68qmc45FAmPGrPSvxIJg9+mUVDeFirdS8GcUE0jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.1.3.tgz", + "integrity": "sha512-ZIPDgzLq8qmvrZ3Bp+bWXam5uKwahjcChBNtORVtrHQfm4mxov2RMUMKTg2ZsVAWVP64zK+gmzG5LuoZjPMm4Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.1.3.tgz", + "integrity": "sha512-wgpPaTpQKl+cCkSuE5zamTVrg14mRvT+bLAeN/yHSUgMztvGxwl3Ll+K9DgEcktBo1PLECTWNkVaW8IAsJm4Rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.1.3.tgz", + "integrity": "sha512-o9XmQehSPR2y0RD4evD+Ob3lNFuwsFOL5upVJqZ3rcE6GkJIFPg8SwEP5FaRIS5MwS04fxnek20NZ18BHjjV/g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.1.3.tgz", + "integrity": "sha512-ekcinyDNTa2huVe02T2SFMR8oArohozRbMGO19zftbObXXI4dLdoAuLNb3vK9Pe4vYOpkhfxBVkZvcWMmx7JdA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.1.3.tgz", + "integrity": "sha512-CqpRIJeIgELCqIgjtSsYnnLi6G0uqjbp/Pw9d7w4im4/NmJXqaE9gxpdHA1eowXLgAy9W1LkfzCPS8Q2IScPuQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.1.3.tgz", + "integrity": "sha512-YbuWb8KQsAR9G0+7b4HA16GV962/VWtRcdS7WY2yaScmPT2W5rObl528Y2j4DuB0j/MVZj12qJKrYfUyjL+UJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.1.3.tgz", + "integrity": "sha512-G90Sp409ypeOUbmj6nmEbdy043KJUKaZ7pffxmM6i63yEe2F2WdmMgdi525vUEgmq+pfB9zQQOX1sDR/rPFvtg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "11.4.4-cjs.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", + "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.7.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "13.3.2-cjs.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", + "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.8.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5" + } + }, + "node_modules/@octokit/request": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/rest": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", + "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", + "license": "MIT", + "dependencies": { + "@octokit/core": "^5.0.2", + "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-ppc64-musl": { "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", "cpu": [ - "ppc64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ] }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" + }, + "node_modules/@shiftcode/branch-utilities": { + "resolved": "packages/branch-utilities", + "link": true + }, + "node_modules/@shiftcode/cdk-utilities": { + "resolved": "packages/cdk-utilities", + "link": true + }, + "node_modules/@shiftcode/eslint-config-recommended": { + "resolved": "packages/eslint-config-recommended", + "link": true + }, + "node_modules/@shiftcode/eslint-plugin-rules": { + "resolved": "packages/eslint-plugin-rules", + "link": true + }, + "node_modules/@shiftcode/iac-utilities": { + "resolved": "packages/iac-utilities", + "link": true + }, + "node_modules/@shiftcode/inversify-logger": { + "resolved": "packages/inversify-logger", + "link": true + }, + "node_modules/@shiftcode/lambda-utilities": { + "resolved": "packages/lambda-utilities", + "link": true + }, + "node_modules/@shiftcode/logger": { + "resolved": "packages/logger", + "link": true + }, + "node_modules/@shiftcode/nest-logger": { + "resolved": "packages/nest-logger", + "link": true + }, + "node_modules/@shiftcode/publish-helper": { + "resolved": "packages/publish-helper", + "link": true + }, + "node_modules/@shiftcode/utilities": { + "resolved": "packages/utilities", + "link": true + }, + "node_modules/@sigstore/bundle": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", + "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/core": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.0.0.tgz", + "integrity": "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==", + "license": "Apache-2.0", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", + "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz", + "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.0.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.2", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz", + "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz", + "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.0.0", + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "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, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "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, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", + "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", + "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", + "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", + "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", + "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", + "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", + "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "node_modules/@smithy/md5-js": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", + "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" + "node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/branch-utilities": { - "resolved": "packages/branch-utilities", - "link": true + "node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/eslint-config-recommended": { - "resolved": "packages/eslint-config-recommended", - "link": true + "node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/eslint-plugin-rules": { - "resolved": "packages/eslint-plugin-rules", - "link": true + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/inversify-logger": { - "resolved": "packages/inversify-logger", - "link": true + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/logger": { - "resolved": "packages/logger", - "link": true + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/nest-logger": { - "resolved": "packages/nest-logger", - "link": true + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/publish-helper": { - "resolved": "packages/publish-helper", - "link": true + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@shiftcode/utilities": { - "resolved": "packages/utilities", - "link": true + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@sigstore/bundle": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", - "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0" + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.0.0.tgz", - "integrity": "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==", + "node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", + "devOptional": true, "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", - "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "devOptional": true, "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/sign": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz", - "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==", + "node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", - "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.2", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/tuf": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz", - "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==", + "node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0", - "tuf-js": "^4.0.0" + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/verify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz", - "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==", + "node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", - "@sigstore/protobuf-specs": "^0.5.0" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "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/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "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, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "type-detect": "4.0.8" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "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, + "node_modules/@smithy/util-waiter": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@standard-schema/spec": { @@ -4966,6 +7168,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.3", @@ -4983,6 +7186,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true, "license": "MIT" }, "node_modules/@tufjs/canonical-json": { @@ -5040,6 +7244,13 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/aws-lambda": { + "version": "8.10.160", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.160.tgz", + "integrity": "sha512-uoO4QVQNWFPJMh26pXtmtrRfGshPUSpMZGUyUQY20FhfHEElEBOPKgVmFs1z+kbpyBsRs2JnoOPT7++Z4GA9pA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -5758,7 +7969,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5992,99 +8202,492 @@ "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/audit": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/audit/-/audit-0.0.6.tgz", + "integrity": "sha512-xgv3Y3RIYE00N2/xk10VLlwFd1kjc7FRaX1vC8+CsOfDRe53a06vOSkp91BOSNijZfddYum47a1Fvju/2+JPcw==", + "engines": { + "node": ">= 0.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-cdk-lib": { + "version": "2.237.1", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.237.1.tgz", + "integrity": "sha512-RH8mWHLBtc14stkeUF0gFLaWdS5iS2AHUHnoT5B5LLZfEkYP9G43LjJs0AMmpdlQ5/ZQVvCZ+VB83Q9vLxILRw==", + "bundleDependencies": [ + "@balena/dockerignore", + "case", + "fs-extra", + "ignore", + "jsonschema", + "minimatch", + "punycode", + "semver", + "table", + "yaml", + "mime-types" + ], + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-cdk/asset-awscli-v1": "2.2.263", + "@aws-cdk/asset-node-proxy-agent-v6": "^2.1.0", + "@aws-cdk/cloud-assembly-schema": "^48.20.0", + "@balena/dockerignore": "^1.0.2", + "case": "1.6.3", + "fs-extra": "^11.3.3", + "ignore": "^5.3.2", + "jsonschema": "^1.5.0", + "mime-types": "^2.1.35", + "minimatch": "^3.1.2", + "punycode": "^2.3.1", + "semver": "^7.7.3", + "table": "^6.9.0", + "yaml": "1.10.2" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "constructs": "^10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { + "version": "1.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/ajv": { + "version": "8.17.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/astral-regex": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/brace-expansion": { + "version": "1.1.12", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/aws-cdk-lib/node_modules/case": { + "version": "1.6.3", + "inBundle": true, + "license": "(MIT OR GPL-3.0-or-later)", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/fast-uri": { + "version": "3.1.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/fs-extra": { + "version": "11.3.3", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/aws-cdk-lib/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/ignore": { + "version": "5.3.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/jsonfile": { + "version": "6.2.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/jsonschema": { + "version": "1.5.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { + "version": "4.4.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "node_modules/aws-cdk-lib/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "peer": true, "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/punycode": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/aws-cdk-lib/node_modules/require-from-string": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/semver": { + "version": "7.7.3", + "inBundle": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "node_modules/aws-cdk-lib/node_modules/slice-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/aws-cdk-lib/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, "license": "MIT", + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, + "node_modules/aws-cdk-lib/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/aws-cdk-lib/node_modules/table": { + "version": "6.9.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=10.0.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" + "node_modules/aws-cdk-lib/node_modules/universalify": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, + "node_modules/aws-cdk-lib/node_modules/yaml": { + "version": "1.10.2", + "inBundle": true, + "license": "ISC", + "peer": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, "node_modules/axios": { @@ -6357,6 +8960,13 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bowser": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", + "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -7013,6 +9623,7 @@ "version": "3.4.2", "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, "license": "MIT", "engines": { "node": "^14.18.0 || >=16.10.0" @@ -7024,6 +9635,13 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "license": "ISC" }, + "node_modules/constructs": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.4.5.tgz", + "integrity": "sha512-fOoP70YLevMZr5avJHx2DU3LNYmC6wM8OwdrNewMZou1kZnPGOeVzBrRjZNgFDHUlulYUjkpFRSpTE3D+n+ZSg==", + "license": "Apache-2.0", + "peer": true + }, "node_modules/conventional-changelog-angular": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", @@ -9189,13 +11807,13 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, "funding": [ { "type": "github", @@ -9207,6 +11825,25 @@ } ] }, + "node_modules/fast-xml-parser": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", + "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -9264,6 +11901,7 @@ "version": "21.3.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", + "dev": true, "license": "MIT", "dependencies": { "@tokenizer/inflate": "^0.4.1", @@ -9317,6 +11955,19 @@ "node": ">=8" } }, + "node_modules/fix": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/fix/-/fix-0.0.6.tgz", + "integrity": "sha512-UQ+8m0GnIakgpY+92a9y+pYoX3Y6eaW7WNTkPolQ7r58Fjzq7NhyRLMrZ6J6U1u4y7H7APugjRmZ+i6CAn4+Dg==", + "dependencies": { + "pipe": "0.0.2", + "underscore": "1.1.6", + "underscore.string": "1.1.4" + }, + "engines": { + "node": ">=0.4.8" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -10581,6 +13232,7 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", + "devOptional": true, "license": "MIT", "dependencies": { "@inversifyjs/common": "1.5.2", @@ -11145,6 +13797,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true, "license": "ISC", "engines": { "node": ">=6" @@ -12263,8 +14916,7 @@ "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -12350,6 +15002,18 @@ "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", "license": "MIT" }, + "node_modules/just-pascal-case": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/just-pascal-case/-/just-pascal-case-3.2.0.tgz", + "integrity": "sha512-B0PW5mgJrsGmXdvDLxC2Kdfyie74m+mRO+iCjJ+Es0Jl5kcQwVfB0qb/qiDOCE3m0XUOo1SdZBWzUlNCO9zreg==", + "license": "MIT" + }, + "node_modules/just-snake-case": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/just-snake-case/-/just-snake-case-3.2.0.tgz", + "integrity": "sha512-iugHP9bSE0jOq3BzN0W0rdu/OOkFirPe8FtUw6v9y37UlbUDgJ1x4xiGNfUhI6mV9dc/paaifyiyn+F+mrm8gw==", + "license": "MIT" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -13134,6 +15798,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "dev": true, "funding": [ { "type": "github", @@ -13539,6 +16204,21 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -15293,6 +17973,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -15367,6 +18048,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pipe": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/pipe/-/pipe-0.0.2.tgz", + "integrity": "sha512-67s0/X7rv2PX1sl64FQqC0qQuSpd1tv8Wh6c+U1lprj6Q7NxDYulCxZTbVbDvc/HSpZLYh7Oo821xReXSCZikQ==", + "engines": { + "node": ">=0.4.8" + } + }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", @@ -15906,6 +18595,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "devOptional": true, "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { @@ -15960,7 +18650,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -17013,10 +19702,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/strtok3": { "version": "10.3.4", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "dev": true, "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0" @@ -17309,6 +20012,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "dev": true, "license": "MIT", "dependencies": { "@borewit/text-codec": "^0.2.1", @@ -17621,6 +20325,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "dev": true, "license": "MIT", "dependencies": { "@lukeed/csprng": "^1.0.0" @@ -17633,6 +20338,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -17658,6 +20364,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.6.tgz", + "integrity": "sha512-aqSzrO92Cjmeo8G7F49+ZHWBo3IJpjpsUZZaqfOHJGN61flbpLxQw/sP91p4kf/2+nkFrG6AG2WHlJh6RCf+/g==", + "engines": { + "node": "*" + } + }, + "node_modules/underscore.string": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-1.1.4.tgz", + "integrity": "sha512-WsF8NWzIbTvxUaSOpSLq+AiO0tzweXdWQZ4w9Op8S/1BT9Fh7hCS7bfrF17vZu9kJg3pcqO+8WXfQSr1ah0f2g==", + "dependencies": { + "underscore": "1.1.6" + }, + "engines": { + "node": "*" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -18438,6 +21163,22 @@ "tslib": "^2.3.0" } }, + "packages/cdk-utilities": { + "name": "@shiftcode/cdk-utilities", + "version": "0.0.0-pr254.0", + "license": "MIT", + "dependencies": { + "just-pascal-case": "^3.2.0" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "peerDependencies": { + "aws-cdk-lib": "^2.3.0", + "constructs": "^10.0.0", + "tslib": "^2.3.0" + } + }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", "version": "6.1.0", @@ -18485,9 +21226,78 @@ "eslint": "^9.37.0" } }, + "packages/iac-utilities": { + "name": "@shiftcode/iac-utilities", + "version": "0.0.0-pr254.0", + "license": "MIT", + "dependencies": { + "ajv": "^8.16.0", + "fast-glob": "^3.2.10", + "just-snake-case": "^3.2.0", + "mime": "^4.0.4", + "yargs": "^17.2.1" + }, + "bin": { + "aws-env-vars": "dist/aws-env-vars.js", + "aws-sso-configure-profiles": "dist/aws-sso-configure-profiles.js", + "credentials-helper": "dist/credentials-helper.js", + "export-base-runtime-config": "dist/export-base-runtime-config.js", + "export-stack-outputs": "dist/export-stack-outputs.js", + "export-stage-info": "dist/export-stage-info.js", + "fetch-client-config": "dist/fetch-client-config.js", + "invalidate-cf-cache": "dist/invalidate-cf-cache.js", + "publish-client-to-s3": "dist/upload-to-s3.js", + "stage-info": "dist/stage-info.js", + "stage-override-to-pr-base": "dist/stage-override-to-pr-base.js", + "upload-to-s3": "dist/upload-to-s3.js" + }, + "devDependencies": { + "@aws-sdk/client-cloudformation": "^3.204.0", + "@aws-sdk/client-cloudfront": "^3.204.0", + "@aws-sdk/client-s3": "^3.204.0", + "@aws-sdk/credential-providers": "^3.204.0", + "@aws-sdk/types": "^3.201.0", + "@shiftcode/branch-utilities": "^5.0.2", + "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@types/yargs": "^17.0.5" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-cloudformation": "^3.204.0", + "@aws-sdk/client-cloudfront": "^3.204.0", + "@aws-sdk/client-s3": "^3.204.0", + "@aws-sdk/credential-providers": "^3.204.0", + "@aws-sdk/types": "^3.201.0", + "@shiftcode/branch-utilities": "^5.0.2", + "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "tslib": "^2.3.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-cloudformation": { + "optional": true + }, + "@aws-sdk/client-cloudfront": { + "optional": true + }, + "@aws-sdk/client-s3": { + "optional": true + }, + "@aws-sdk/credential-providers": { + "optional": true + }, + "@aws-sdk/types": { + "optional": true + }, + "@shiftcode/branch-utilities": { + "optional": true + } + } + }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "2.1.0-pr254.0", + "version": "0.0.0-pr254.0", "license": "MIT", "devDependencies": { "@shiftcode/logger": "^4.0.0", @@ -18503,6 +21313,45 @@ "reflect-metadata": "^0.1.13 || ^0.2.0" } }, + "packages/lambda-utilities": { + "name": "@shiftcode/lambda-utilities", + "version": "0.0.0-pr254.0", + "license": "MIT", + "devDependencies": { + "@aws-sdk/client-ssm": "^3.204.0", + "@shiftcode/inversify-logger": "1.0.0 || ^0.0.0-pr254", + "@types/aws-lambda": "^8.10.89" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.204.0", + "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", + "@shiftcode/logger": "^4.0.0", + "@shiftcode/utilities": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "tslib": "^2.3.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-s3": { + "optional": true + }, + "@shiftcode/inversify-logger": { + "optional": true + }, + "@shiftcode/logger": { + "optional": true + }, + "inversify": { + "optional": true + }, + "reflect-metadata": { + "optional": true + } + } + }, "packages/logger": { "name": "@shiftcode/logger", "version": "4.0.0", @@ -18519,7 +21368,7 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "2.1.0-pr254.0", + "version": "0.0.0-pr254.0", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", diff --git a/package.json b/package.json index d1694ff..17e8c3f 100644 --- a/package.json +++ b/package.json @@ -20,13 +20,8 @@ "test:ci": "lerna run test:ci" }, "dependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/testing": "^11.0.0", - "inversify": "^7.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0", - "rxjs": "^7.1.0", - "tslib": "^2.3.0" + "audit": "^0.0.6", + "fix": "^0.0.6" }, "devDependencies": { "@commitlint/cli": "^20.4.1", @@ -43,6 +38,7 @@ "prettier": "^3.3.2", "sort-package-json": "^2.10.0", "ts-jest": "^29.2.0", + "tslib": "^2.3.0", "typescript": "^5.5.3", "vitest": "^4.0.18" }, From 25d3c81f42613aaf5d771f91a6b4ead4ac07f60b Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 13:43:54 +0100 Subject: [PATCH 14/55] feat: introduce lambda-utilities BREAKING-CHANGE: newly added to sc-commons-public --- packages/lambda-utilities/.lintstagedrc.yml | 8 + packages/lambda-utilities/CHANGELOG.md | 345 ++++++++++++++++++ packages/lambda-utilities/README.md | 18 + packages/lambda-utilities/eslint.config.mjs | 5 + packages/lambda-utilities/package.json | 72 ++++ packages/lambda-utilities/src/index.ts | 2 + packages/lambda-utilities/src/s3/index.ts | 1 + .../src/s3/s3-helper.service.ts | 155 ++++++++ .../fetch-ssm-string-param-value.function.ts | 46 +++ .../src/static/http-response.ts | 135 +++++++ packages/lambda-utilities/src/static/index.ts | 3 + .../src/static/is-aws-lambda-env.function.ts | 5 + packages/lambda-utilities/tsconfig.json | 11 + packages/lambda-utilities/tsconfig.lint.json | 13 + packages/lambda-utilities/tsconfig.spec.json | 13 + 15 files changed, 832 insertions(+) create mode 100644 packages/lambda-utilities/.lintstagedrc.yml create mode 100644 packages/lambda-utilities/CHANGELOG.md create mode 100644 packages/lambda-utilities/README.md create mode 100644 packages/lambda-utilities/eslint.config.mjs create mode 100644 packages/lambda-utilities/package.json create mode 100644 packages/lambda-utilities/src/index.ts create mode 100644 packages/lambda-utilities/src/s3/index.ts create mode 100644 packages/lambda-utilities/src/s3/s3-helper.service.ts create mode 100644 packages/lambda-utilities/src/static/fetch-ssm-string-param-value.function.ts create mode 100644 packages/lambda-utilities/src/static/http-response.ts create mode 100644 packages/lambda-utilities/src/static/index.ts create mode 100644 packages/lambda-utilities/src/static/is-aws-lambda-env.function.ts create mode 100644 packages/lambda-utilities/tsconfig.json create mode 100644 packages/lambda-utilities/tsconfig.lint.json create mode 100644 packages/lambda-utilities/tsconfig.spec.json diff --git a/packages/lambda-utilities/.lintstagedrc.yml b/packages/lambda-utilities/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/lambda-utilities/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/lambda-utilities/CHANGELOG.md b/packages/lambda-utilities/CHANGELOG.md new file mode 100644 index 0000000..86be170 --- /dev/null +++ b/packages/lambda-utilities/CHANGELOG.md @@ -0,0 +1,345 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [13.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@12.0.0...@shiftcode/lambda-utils@13.0.0) (2026-01-14) + +### Bug Fixes + +- **lambda-utils:** resolve non-retryable stream error ([72cee2b](https://github.com/shiftcode/sc-commons/commit/72cee2b66aad6afc91bdf93184f76adfec420dd5)) + +### BREAKING CHANGES + +- **lambda-utils:** The return types for the public functions downloadJson / readStream and readStreamDownload now also include undefined + +# [12.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@11.0.1...@shiftcode/lambda-utils@12.0.0) (2025-05-19) + +### Bug Fixes + +- **lambda-utils:** add @shiftcode/logger-inversify as optional peer-dependency ([2a5aca5](https://github.com/shiftcode/sc-commons/commit/2a5aca5413b5857010e1cddd3908de7f7134c35f)) + +### Features + +- **lambda-utils:** replace @shiftcode/lambda-logger with @shiftcode/logger ([40396e9](https://github.com/shiftcode/sc-commons/commit/40396e9526ebd7491f800c059294ef2f2772953c)) +- update @shiftcode/logger to version ^3.0.0 and @shiftcode/utilities to version ^4.0.0 ([2e5f2d1](https://github.com/shiftcode/sc-commons/commit/2e5f2d1a78882b8885aacd7bab56b8733a13b7d6)) + +### BREAKING CHANGES + +- requires @shiftcode/logger ^3.0.0, + requires @shiftcode/utilities ^4.0.0 + +## [11.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@11.0.0...@shiftcode/lambda-utils@11.0.1) (2025-05-15) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +# [11.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.3.3...@shiftcode/lambda-utils@11.0.0) (2025-05-01) + +### Bug Fixes + +- **lambda-utils:** replace Logger with injectable token LoggerService ([d3b3f2f](https://github.com/shiftcode/sc-commons/commit/d3b3f2f472d77f02fef3ce7337b47596e719c649)) + +### Features + +- update to inversify^7.0.0 ([c6807d6](https://github.com/shiftcode/sc-commons/commit/c6807d6c21110c820f489020d41c1cbad3a2b2f6)) + +### BREAKING CHANGES + +- requires inversify^7.0.0 as a peer dependency + +## [10.3.3](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.3.2...@shiftcode/lambda-utils@10.3.3) (2025-03-06) + +### Bug Fixes + +- update engines definition (left over from node 22 upgrade) ([f5428ae](https://github.com/shiftcode/sc-commons/commit/f5428ae64c45567912887b8bab1e881c4312669f)) +- update version range for reflect-metadata ([9b7b0d1](https://github.com/shiftcode/sc-commons/commit/9b7b0d1056a9f47476e1ddb1ac58335094e2185f)) + +## [10.3.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.3.1...@shiftcode/lambda-utils@10.3.2) (2025-03-04) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +## [10.3.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.3.0...@shiftcode/lambda-utils@10.3.1) (2024-08-02) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +# [10.3.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.2.0...@shiftcode/lambda-utils@10.3.0) (2024-07-31) + +### Features + +- move start indication log to lambda-utils ([f88359e](https://github.com/shiftcode/sc-commons/commit/f88359e692fce5aaaee7ebc57d22eb22051a2923)) + +# [10.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.1.0...@shiftcode/lambda-utils@10.2.0) (2024-07-30) + +### Bug Fixes + +- **airtable-sync:** implement real batching ([62c02cc](https://github.com/shiftcode/sc-commons/commit/62c02cca0b937a181eded643ab29ca9a6e5a389a)) + +### Features + +- **exponential-backoff:** log success only when retried before ([56a9f98](https://github.com/shiftcode/sc-commons/commit/56a9f986b381fba691934cccda7c25aa4d63ba6c)) +- **s3-helper:** add retry with backoff ([63269ff](https://github.com/shiftcode/sc-commons/commit/63269ff0475c941cbd812336db0a8374f9e6450c)) +- **s3-helper:** move execute with backoff to static helper function ([1e449b6](https://github.com/shiftcode/sc-commons/commit/1e449b6b382239fb01dceedcf3a5e3206f02892e)) +- **s3-helper:** undo unnecessary line ([e40726e](https://github.com/shiftcode/sc-commons/commit/e40726e353cc8b9c075dc6657ee0afe7c9046983)) + +# [10.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@10.0.0...@shiftcode/lambda-utils@10.1.0) (2024-07-29) + +### Features + +- **lambda-utils:** added comment about using the method outside of the lambda handler method ([f56e398](https://github.com/shiftcode/sc-commons/commit/f56e398f6b7823666ccfa8ee606015eb18a2b1b6)) +- **lambda-utils:** added helper method to fetch ssm string param via lambda layer ([2b1fb6d](https://github.com/shiftcode/sc-commons/commit/2b1fb6d44050a6e01ed90472455c7d040999b26f)) +- **lambda-utils:** feedback from PR review ([40e31b0](https://github.com/shiftcode/sc-commons/commit/40e31b023e8bc44b40a5cef796bc6af4b14d383c)) + +# [10.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@9.0.3...@shiftcode/lambda-utils@10.0.0) (2024-07-13) + +### Bug Fixes + +- **lambda-utils:** add correct peer dependencies ([4d011db](https://github.com/shiftcode/sc-commons/commit/4d011dbf47434f92f6aba0e40490097de1e12433)) + +### Build System + +- **node:** upgrade to node 20 ([2899d0d](https://github.com/shiftcode/sc-commons/commit/2899d0d41ece080b276e7bf84915d4849da81a29)) + +### BREAKING CHANGES + +- **node:** Minimum required node version is 20.11.1. In general speaking the runtime (Node or Browser) must support all es2023 features. + +## [9.0.3](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@9.0.2...@shiftcode/lambda-utils@9.0.3) (2024-01-25) + +### Bug Fixes + +- **lambda-utils:** collect all chunks when downloading ([1d56ddb](https://github.com/shiftcode/sc-commons/commit/1d56ddb71e17264b1d605dd763b1497b5372c081)) + +## [9.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@9.0.1...@shiftcode/lambda-utils@9.0.2) (2023-10-18) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +## [9.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@9.0.0...@shiftcode/lambda-utils@9.0.1) (2023-07-27) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +# [9.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@8.1.0...@shiftcode/lambda-utils@9.0.0) (2023-05-15) + +### Code Refactoring + +- **lambda-utils:** remove depreacted functionality ([39dcfd1](https://github.com/shiftcode/sc-commons/commit/39dcfd1e350bb0d2a04b6bf2cabc41f69f3de781)) + +### Features + +- **lambda-utils:** migrate to ESM ([2b034a8](https://github.com/shiftcode/sc-commons/commit/2b034a8eaf5b166000da4551b7f50969cb2c6292)) +- **lambda-utils:** migrate to ESM (different related changes) ([590ee1e](https://github.com/shiftcode/sc-commons/commit/590ee1ef63955d9bc6b2902af2aa3988e31e479e)) +- **s3-helper:** added helper method to work directly with stream when reading file ([e22e279](https://github.com/shiftcode/sc-commons/commit/e22e279a3e9e0025eaf5d31065704861f845ce53)) + +### BREAKING CHANGES + +- **lambda-utils:** sns related functionality was removed with no replacement (didn't add any value) +- **lambda-utils:** only supported in projects using ESM +- **lambda-utils:** only supported in projects using ESM + +# [8.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@8.0.0...@shiftcode/lambda-utils@8.1.0) (2023-03-17) + +### Features + +- **eslint-plugin:** introduce tests to verify correct implementation of plugins ([76d5b2f](https://github.com/shiftcode/sc-commons/commit/76d5b2f2bea5a3f4450e7ce43153fc2ddba832c1)) + +# [8.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@7.0.0...@shiftcode/lambda-utils@8.0.0) (2023-03-16) + +### Build System + +- **tsconfig:** build for es2022 target ([c75651b](https://github.com/shiftcode/sc-commons/commit/c75651b2b2ca6338e71b6538616d5b0e9bbb40cc)) + +### Code Refactoring + +- **lambda-utils:** use aws-sdk v3 libs for s3/sns utils ([be7acc3](https://github.com/shiftcode/sc-commons/commit/be7acc3aa592dbba091e54a1894ff957ca2e5834)) + +### BREAKING CHANGES + +- **tsconfig:** requires ES2022 support (node@18) +- **lambda-utils:** requires @aws-sdk/client-sns^3.204.0, @aws-sdk/client-s3^3.204.0 respectively + +# [7.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@6.0.0...@shiftcode/lambda-utils@7.0.0) (2022-01-17) + +### Bug Fixes + +- **exports:** remove service exports from index to make peer dependencies actually optional ([f6c6662](https://github.com/shiftcode/sc-commons/commit/f6c6662c5b19af1061331add6d4718a4deb1ced2)) +- **peerDependencies:** make `@shiftcode/utilities` non-optional ([237d1b8](https://github.com/shiftcode/sc-commons/commit/237d1b80a4a7c10ca643ef6af4109adc6ee2ea18)) + +### BREAKING CHANGES + +- **peerDependencies:** `@shiftcode/utilities` is now required peer dependency +- **exports:** use services with deep imports + +## 6.0.0 (2022-01-11) + +- build(release): next version [skip ci] ([7fb99e3](https://github.com/shiftcode/sc-commons/commit/7fb99e3)) +- build(release): next version [skip ci] ([69f8e36](https://github.com/shiftcode/sc-commons/commit/69f8e36)) +- build(release): next version [skip ci] ([6658958](https://github.com/shiftcode/sc-commons/commit/6658958)) +- build(release): next version [skip_build] ([911da02](https://github.com/shiftcode/sc-commons/commit/911da02)) +- build(release): next version [skip_build] ([199066e](https://github.com/shiftcode/sc-commons/commit/199066e)) +- build(release): next version [skip_build] ([0c839e4](https://github.com/shiftcode/sc-commons/commit/0c839e4)) +- build(release): next version [skip_build] ([2722982](https://github.com/shiftcode/sc-commons/commit/2722982)) +- build(release): next version [skip_build] ([a0e996a](https://github.com/shiftcode/sc-commons/commit/a0e996a)) +- build(release): next version [skip_build] ([8d72402](https://github.com/shiftcode/sc-commons/commit/8d72402)) +- build(release): next version [skip_build] ([7bca45d](https://github.com/shiftcode/sc-commons/commit/7bca45d)) +- build(release): next version [skip_build] ([82c65ba](https://github.com/shiftcode/sc-commons/commit/82c65ba)) +- build(release): next version [skip_build] ([8589cd3](https://github.com/shiftcode/sc-commons/commit/8589cd3)) +- build(release): next version [skip_build] ([aaebf67](https://github.com/shiftcode/sc-commons/commit/aaebf67)) +- build(release): next version [skip_build] ([e38c9a6](https://github.com/shiftcode/sc-commons/commit/e38c9a6)) +- build(release): next version [skip_build] ([9470e94](https://github.com/shiftcode/sc-commons/commit/9470e94)) +- build(release): next version [skip_build] ([7a83884](https://github.com/shiftcode/sc-commons/commit/7a83884)) +- build(release): next version [skip_build] ([0ca65a3](https://github.com/shiftcode/sc-commons/commit/0ca65a3)) +- build(release): next version [skip_build] ([b9614a4](https://github.com/shiftcode/sc-commons/commit/b9614a4)) +- build(release): next version [skip_build] ([1483216](https://github.com/shiftcode/sc-commons/commit/1483216)) +- build(release): next version [skip_build] ([5e2b455](https://github.com/shiftcode/sc-commons/commit/5e2b455)) +- build(release): next version [skip_build] ([7470c7d](https://github.com/shiftcode/sc-commons/commit/7470c7d)) +- build(release): next version [skip_build] ([bf316bd](https://github.com/shiftcode/sc-commons/commit/bf316bd)) +- build(release): next version [skip_workflow] ([04eb9bc](https://github.com/shiftcode/sc-commons/commit/04eb9bc)) +- build(scripts): use rm -rf instead of rimraf ([de45957](https://github.com/shiftcode/sc-commons/commit/de45957)) +- chore(aws-sdk): use same version in all packages ([08ac152](https://github.com/shiftcode/sc-commons/commit/08ac152)) +- chore(deps): update ([ef20963](https://github.com/shiftcode/sc-commons/commit/ef20963)) +- chore(jest.config): fix import of utils ([29cab2c](https://github.com/shiftcode/sc-commons/commit/29cab2c)) +- chore(peer-deps): remove pr version ([ef34bce](https://github.com/shiftcode/sc-commons/commit/ef34bce)) +- refactor(peer-dependencies): use utilities lib from sc-commons-public ([2b3a142](https://github.com/shiftcode/sc-commons/commit/2b3a142)) +- fix(peer-dependencies): correct version ([99aa21e](https://github.com/shiftcode/sc-commons/commit/99aa21e)) +- fix(peer-dependencies): make all optional ([735744a](https://github.com/shiftcode/sc-commons/commit/735744a)) +- fix(peer-dependencies): update versions ([9aac1ed](https://github.com/shiftcode/sc-commons/commit/9aac1ed)) +- feat(deps): update dependencies ([ce9c2d5](https://github.com/shiftcode/sc-commons/commit/ce9c2d5)) + +### BREAKING CHANGE + +- inversify@^6.0.1 required + +## 5.0.0 (2021-12-23) + +- build(release): next version [skip ci] ([d3b33ba](https://github.com/shiftcode/sc-commons/commit/d3b33ba)) +- build(release): next version [skip ci] ([87c30b4](https://github.com/shiftcode/sc-commons/commit/87c30b4)) +- build(release): next version [skip ci] ([16d5995](https://github.com/shiftcode/sc-commons/commit/16d5995)) +- build(release): next version [skip ci] ([d7b6d61](https://github.com/shiftcode/sc-commons/commit/d7b6d61)) +- build(release): next version [skip ci] ([76a41a6](https://github.com/shiftcode/sc-commons/commit/76a41a6)) +- build(release): next version [skip ci] ([44d8085](https://github.com/shiftcode/sc-commons/commit/44d8085)) +- build(release): next version [skip ci] ([4a2a73d](https://github.com/shiftcode/sc-commons/commit/4a2a73d)) +- build(release): next version [skip ci] ([ac3ac7f](https://github.com/shiftcode/sc-commons/commit/ac3ac7f)) +- build(release): next version [skip ci] ([14622a2](https://github.com/shiftcode/sc-commons/commit/14622a2)) +- build(release): next version [skip ci] ([3199b0c](https://github.com/shiftcode/sc-commons/commit/3199b0c)) +- build(release): next version [skip ci] ([652b10b](https://github.com/shiftcode/sc-commons/commit/652b10b)) +- build(release): next version [skip ci] ([78e4b60](https://github.com/shiftcode/sc-commons/commit/78e4b60)) +- build(release): next version [skip ci] ([006c0be](https://github.com/shiftcode/sc-commons/commit/006c0be)) +- build(release): next version [skip ci] ([6285743](https://github.com/shiftcode/sc-commons/commit/6285743)) +- build(release): next version [skip ci] ([2e01006](https://github.com/shiftcode/sc-commons/commit/2e01006)) +- build(release): next version [skip ci] ([f66b3c3](https://github.com/shiftcode/sc-commons/commit/f66b3c3)) +- build(release): next version [skip ci] ([69cc0f4](https://github.com/shiftcode/sc-commons/commit/69cc0f4)) +- build(release): next version [skip ci] ([921f9f0](https://github.com/shiftcode/sc-commons/commit/921f9f0)) +- build(release): next version [skip ci] ([25993ec](https://github.com/shiftcode/sc-commons/commit/25993ec)) +- build(release): next version [skip ci] ([1fed9a1](https://github.com/shiftcode/sc-commons/commit/1fed9a1)) +- build(release): next version [skip ci] ([cd44cac](https://github.com/shiftcode/sc-commons/commit/cd44cac)) +- refactor(\*): replace npm run with yarn ([238adbc](https://github.com/shiftcode/sc-commons/commit/238adbc)) +- refactor(\*): replace yarn run with yarn ([ef0d2f7](https://github.com/shiftcode/sc-commons/commit/ef0d2f7)) +- refactor(\*): unify READMEs title ([b779764](https://github.com/shiftcode/sc-commons/commit/b779764)) +- revert(version): back to pr ([daf8058](https://github.com/shiftcode/sc-commons/commit/daf8058)) +- fix(package.json): author ([67db3f3](https://github.com/shiftcode/sc-commons/commit/67db3f3)) +- fix(package.json): set sideEffects property ([0d119cc](https://github.com/shiftcode/sc-commons/commit/0d119cc)) +- fix(peer-dependencies): depend on pr93 versions ([b36c70b](https://github.com/shiftcode/sc-commons/commit/b36c70b)) +- feat(http-response): add noContent static method ([7b4c822](https://github.com/shiftcode/sc-commons/commit/7b4c822)) +- feat(http-response): add xml static method ([9000b36](https://github.com/shiftcode/sc-commons/commit/9000b36)) +- feat(typescript): use typescript 4.4 and require tslib ^2.3 ([3524ecd](https://github.com/shiftcode/sc-commons/commit/3524ecd)) +- style(prettier): update to 2.5 and prettify ([47be5f1](https://github.com/shiftcode/sc-commons/commit/47be5f1)) +- test(jest): update rename tsconfig.spec and update jest ([30a28ff](https://github.com/shiftcode/sc-commons/commit/30a28ff)) + +### BREAKING CHANGE + +- requires tslib ^2.3 + +## 4.1.0 (2021-11-09) + +- fix(lambda-utils): aws version & linting settings ([80d8a19](https://github.com/shiftcode/sc-commons/commit/80d8a19)) +- fix(lambda-utils): fix dev dependencies version ([e44f76e](https://github.com/shiftcode/sc-commons/commit/e44f76e)) +- feat(lambda-utils): added HttpResponse ([f9b9935](https://github.com/shiftcode/sc-commons/commit/f9b9935)) + +## 4.0.2 (2021-11-08) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +## 4.0.1 (2021-01-22) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +## 4.0.0 (2020-10-06) + +- Merge branch 'master' into #77-reusable-utils ([baa4f26](https://github.com/shiftcode/sc-commons/commit/baa4f26)), closes [#77](https://github.com/shiftcode/sc-commons/issues/77) +- chore(lint-staged): update all configuration files ([ac86637](https://github.com/shiftcode/sc-commons/commit/ac86637)) +- refactor(s3-helper): rename method ([3c2a04c](https://github.com/shiftcode/sc-commons/commit/3c2a04c)) +- fix(s3-helper): uploadDataJson, make upload public ([051e3ca](https://github.com/shiftcode/sc-commons/commit/051e3ca)) + +### BREAKING CHANGE + +- - s3Helper method uploadDataJson renamed to uploadJson() + +## 3.0.2 (2020-06-14) + +- fix(lambda-utils): move aws-sdk to peer deps from prod dep ([2d82dfb](https://github.com/shiftcode/sc-commons/commit/2d82dfb)) + +## 3.0.1 (2020-05-19) + +- fix(peerdeps): version of peer deps update ([9dd641d](https://github.com/shiftcode/sc-commons/commit/9dd641d)) + +## 3.0.0 (2020-05-19) + +- feat(typescript): update to typescript 3.9 ([1dc45f5](https://github.com/shiftcode/sc-commons/commit/1dc45f5)) + +### BREAKING CHANGE + +- tslib 2.0.0 required for typescript update + +## 2.0.7 (2020-05-09) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +## 2.0.6 (2020-04-09) + +- style(prettier): prettify all files ([a9552d0](https://github.com/shiftcode/sc-commons/commit/a9552d0)) + +## 2.0.5 (2019-12-04) + +- chore(deps): bumb a few dev dependencies ([16781af](https://github.com/shiftcode/sc-commons/commit/16781af)) + +## 2.0.4 (2019-12-04) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +## 2.0.3 (2019-12-04) + +- chore(ts-config): activate the esModuleInterop flag and refactor imports ([25625df](https://github.com/shiftcode/sc-commons/commit/25625df)) +- build(\*): update tsconfig and doc ([71c35a8](https://github.com/shiftcode/sc-commons/commit/71c35a8)) +- build(tsconfig): remove unnecesarry lib declaration ([9894dc1](https://github.com/shiftcode/sc-commons/commit/9894dc1)) +- build(yarn): migrate to yarn workspace ([8811814](https://github.com/shiftcode/sc-commons/commit/8811814)) + +## 2.0.2 (2019-11-14) + +- fix(lambda-utils): lower aws-sdk dependency ([c3f8862](https://github.com/shiftcode/sc-commons/commit/c3f8862)) + +## [2.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/lambda-utils@2.0.0...@shiftcode/lambda-utils@2.0.1) (2019-11-07) + +**Note:** Version bump only for package @shiftcode/lambda-utils + +# [2.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcoders/lambda-utils@1.1.1...@shiftcoders/lambda-utils@2.0.0) (2019-10-24) + +### Bug Fixes + +- **airtable-sync:** remove super verbose logs ([3754e57](https://github.com/shiftcode/sc-commons/commit/3754e57721ded586543c86df1660bb0f4a92a3a4)) + +### Code Refactoring + +- **airtable:** fix stuff, split into 2 packages ([345f57b](https://github.com/shiftcode/sc-commons/commit/345f57bc86f2cd587b9da1a521cc724b3eb9d6f2)) + +### BREAKING CHANGES + +- **airtable:** - two packages + +## [1.1.1](https://github.com/shiftcode/sc-commons/compare/@shiftcoders/lambda-utils@1.1.0...@shiftcoders/lambda-utils@1.1.1) (2019-10-16) + +**Note:** Version bump only for package @shiftcoders/lambda-utils + +# 1.1.0 (2019-10-11) + +### Features + +- **lambda-utils:** new package with utils for lambdas ([c0b3d6a](https://github.com/shiftcode/sc-commons/commit/c0b3d6a13397da988113c5f64a80510625db1e73)) diff --git a/packages/lambda-utilities/README.md b/packages/lambda-utilities/README.md new file mode 100644 index 0000000..e779eee --- /dev/null +++ b/packages/lambda-utilities/README.md @@ -0,0 +1,18 @@ +# lambda-utils + +> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023)) + +This package contains some utils for lambda functions. + +## services (deep-import) + +- require the following peer dependencies (when used): + - `reflect-metadata` + - `inversify` + - `aws-sdk` + - `@shiftcode/logger` + - `@shiftcode/logger-inversify` + +* [S3Helper](./src/s3/s3-helper.service.ts) import from `@shiftcode/lambda-utils/s3` + - requires LoggerService (`@shiftcode/logger-inversify`), Logger(`@shiftcode/logger`) & `inversify` to be provided + - provides `init` function which needs to be called first `s3Helper.init('bucket')` diff --git a/packages/lambda-utilities/eslint.config.mjs b/packages/lambda-utilities/eslint.config.mjs new file mode 100644 index 0000000..834468a --- /dev/null +++ b/packages/lambda-utilities/eslint.config.mjs @@ -0,0 +1,5 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig({ + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, +}) diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json new file mode 100644 index 0000000..aeb0f84 --- /dev/null +++ b/packages/lambda-utilities/package.json @@ -0,0 +1,72 @@ +{ + "name": "@shiftcode/lambda-utilities", + "version": "0.0.0-pr254.0", + "description": "Utils for lambda functions", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./s3": { + "types": "./dist/s3/index.d.ts", + "default": "./dist/s3/index.js" + }, + "./static": { + "types": "./dist/static/index.d.ts", + "default": "./dist/static/index.js" + } + }, + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src", + "lint:ci": "eslint ./src", + "lint:staged": "eslint --fix --cache", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" + }, + "devDependencies": { + "@aws-sdk/client-ssm": "^3.204.0", + "@shiftcode/inversify-logger": "1.0.0 || ^0.0.0-pr254", + "@types/aws-lambda": "^8.10.89" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.204.0", + "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", + "@shiftcode/logger": "^4.0.0", + "@shiftcode/utilities": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "tslib": "^2.3.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-s3": { + "optional": true + }, + "@shiftcode/inversify-logger": { + "optional": true + }, + "@shiftcode/logger": { + "optional": true + }, + "inversify": { + "optional": true + }, + "reflect-metadata": { + "optional": true + } + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/lambda-utilities/src/index.ts b/packages/lambda-utilities/src/index.ts new file mode 100644 index 0000000..023c7ba --- /dev/null +++ b/packages/lambda-utilities/src/index.ts @@ -0,0 +1,2 @@ +export * from './s3/index.js' +export * from './static/index.js' diff --git a/packages/lambda-utilities/src/s3/index.ts b/packages/lambda-utilities/src/s3/index.ts new file mode 100644 index 0000000..5ffd0e4 --- /dev/null +++ b/packages/lambda-utilities/src/s3/index.ts @@ -0,0 +1 @@ +export * from './s3-helper.service.js' diff --git a/packages/lambda-utilities/src/s3/s3-helper.service.ts b/packages/lambda-utilities/src/s3/s3-helper.service.ts new file mode 100644 index 0000000..d769bb0 --- /dev/null +++ b/packages/lambda-utilities/src/s3/s3-helper.service.ts @@ -0,0 +1,155 @@ +import { get } from 'node:https' +import { Readable, Stream } from 'node:stream' + +import { + _Object as S3Object, + GetObjectCommand, + GetObjectCommandOutput, + ListObjectsV2CommandInput, + paginateListObjectsV2, + PutObjectCommand, + PutObjectCommandInput, + PutObjectCommandOutput, + S3Client, +} from '@aws-sdk/client-s3' +import { LoggerService } from '@shiftcode/inversify-logger' +import { Logger } from '@shiftcode/logger' +import { injectable } from 'inversify' + +@injectable() +export class S3Helper { + private static cacheNeverExpire = 'max-age=31536000' + + private readonly s3Client: S3Client + private bucket: string + private cloudFrontMaxAge: string + private mustRevalidate: string + private logger: Logger + + constructor(loggerService: LoggerService) { + this.logger = loggerService.getInstance('S3Helper') + this.s3Client = new S3Client({}) + } + + init(bucket: string, maxAge = 300) { + this.bucket = bucket + this.mustRevalidate = `max-age=${maxAge}, must-revalidate` + this.cloudFrontMaxAge = `s-maxage=${maxAge}` + } + + async listAll(prefix: string): Promise> { + this.checkIfInitializedOrThrow() + const startTime = Date.now() + this.logger.debug('starting list all objects on bucket') + + const reqConfig: ListObjectsV2CommandInput = { + Bucket: this.bucket, + Prefix: prefix, + } + const result = new Map() + + const paginator = paginateListObjectsV2({ client: this.s3Client }, reqConfig) + for await (const res of paginator) { + if (res.Contents) { + res.Contents.filter((obj) => !!obj.Key).forEach((obj) => result.set(obj.Key, obj)) + } + } + + const requestDuration = Date.now() - startTime + this.logger.info(`listing all s3 assets took ${requestDuration}ms`) + return result + } + + async downloadJson(key: string): Promise { + const data = await this.readStreamDownload(key) + return (data ? JSON.parse(data) : undefined) + } + + async downloadUrlAndSave( + url: string, + key: string, + contentType: string, + neverExpires = true, + ): Promise { + const result: Buffer = await this.httpsGet(url) + return this.upload(key, result, contentType, neverExpires) + } + + uploadJson(object: any, key: string, neverExpires = false): Promise { + const buffer = Buffer.from(JSON.stringify(object), 'utf-8') + return this.upload(key, buffer, 'application/json', neverExpires) + } + + async readStream(key: string): Promise<[GetObjectCommandOutput['Body'], string | undefined]> { + this.checkIfInitializedOrThrow() + const cmd = new GetObjectCommand({ Bucket: this.bucket, Key: key }) + const res = await this.s3Client.send(cmd) + + return [res.Body, res.ContentEncoding] + } + + async readStreamDownload(key: string): Promise { + this.checkIfInitializedOrThrow() + const [stream, encoding] = await this.readStream(key) + if (!stream) { + return undefined + } + + return stream.transformToString(encoding) + } + + async upload( + key: string, + body: Buffer | Readable, + contentType: string, + neverExpires: boolean, + ): Promise { + this.checkIfInitializedOrThrow() + + const commandInput: PutObjectCommandInput = { + Bucket: this.bucket, + Key: key, + Body: body, + ContentType: contentType, + CacheControl: neverExpires ? S3Helper.cacheNeverExpire : `${this.mustRevalidate}, ${this.cloudFrontMaxAge}`, + } + + /* + * must be provided if the size of the body cannot be determined automatically, namely for streams: + * https://docs.aws.amazon.com/codeguru/detector-library/java/s3-object-metadata-content-length-check/ + * If you run into problems with streams. Consider using SdkStream `@smithy/util-stream` (sdkStreamMixin). + */ + if (body instanceof Stream) { + commandInput.ContentLength = body.readableLength + } + + try { + this.logger.info(`Start uploading to s3: ${key}`) + const response = await this.s3Client.send(new PutObjectCommand(commandInput)) + this.logger.info(`Successfully uploaded to s3: ${key}`) + return response + } catch (err) { + this.logger.error(`Failed uploading to s3: ${key}`, err) + throw err + } + } + + private httpsGet(url: string): Promise { + this.logger.info(`download GET: ${url}`) + + return new Promise((resolve, reject) => { + const chunks: Buffer[] = [] + get(url, (res) => { + res.on('data', (chunk) => chunks.push(chunk)) + res.once('end', () => resolve(Buffer.concat(chunks))) + res.once('error', reject) + }) + }) + } + + private checkIfInitializedOrThrow() { + if (!this.bucket) { + throw new Error(`S3Helper was not initialized. First call "s3Helper.init('MyBucketName')" `) + } + } +} diff --git a/packages/lambda-utilities/src/static/fetch-ssm-string-param-value.function.ts b/packages/lambda-utilities/src/static/fetch-ssm-string-param-value.function.ts new file mode 100644 index 0000000..7a318ca --- /dev/null +++ b/packages/lambda-utilities/src/static/fetch-ssm-string-param-value.function.ts @@ -0,0 +1,46 @@ +import process from 'node:process' + +import { GetParameterResult } from '@aws-sdk/client-ssm' + +/** + * Fetches a ssm String/SecureString parameter through the lambda layer. See https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-integration-lambda-extensions.html for more information on how to setup/configure the lambda layer. + * + * ATTENTION: Do NOT call this method outside (before) the handler method in lambda functions as the layer might not be ready to take the request yet. Results are cached, so you do not have to worry about performance. + * + * @param parameterArn ARN of the ssm parameter to fetch + * @param withDecryption Whether to decrypt the parameter (needed for SecureString parameters) + */ +export async function fetchSsmStringParamValue(parameterArn: string, withDecryption: boolean): Promise { + const sessionToken = process.env.AWS_SESSION_TOKEN + const port = process.env.PARAMETERS_SECRETS_EXTENSION_HTTP_PORT + if (!sessionToken || !port) { + throw new Error( + `No session token (AWS_SESSION_TOKEN) or port (PARAMETERS_SECRETS_EXTENSION_HTTP_PORT) found in the environment.`, + ) + } + + const parameterUrl = `http://localhost:${port}/systemsmanager/parameters/get/?name=${encodeURIComponent( + parameterArn, + )}&withDecryption=${withDecryption}` + + try { + const response = await fetch(parameterUrl, { + method: 'GET', + headers: { + 'X-Aws-Parameters-Secrets-Token': sessionToken, + }, + }) + + const result: GetParameterResult = await response.json() + if (!result?.Parameter?.Value) { + throw new Error( + `No value found for ssm parameter ${parameterArn} with local url: ${parameterUrl} via lambda layer.`, + ) + } + return result.Parameter.Value + } catch (e) { + throw new Error(`Error fetching ssm parameter ${parameterArn} with local url ${parameterUrl} via lambda layer.`, { + cause: e, + }) + } +} diff --git a/packages/lambda-utilities/src/static/http-response.ts b/packages/lambda-utilities/src/static/http-response.ts new file mode 100644 index 0000000..d46ca5c --- /dev/null +++ b/packages/lambda-utilities/src/static/http-response.ts @@ -0,0 +1,135 @@ +import { CommonHttpHeader, ContentType, CorsHeader, HttpMethod, HttpStatusCode } from '@shiftcode/utilities' +import { APIGatewayProxyResult } from 'aws-lambda' + +export class HttpResponse implements APIGatewayProxyResult { + static readonly EMPTY_204 = new HttpResponse('', HttpStatusCode.NO_CONTENT) + + body: string + + /** + * A map of response header keys and their respective values. + */ + headers: Record + + /** + * The HTTP status code of the response (e.g., 200, 404). + */ + statusCode: HttpStatusCode + + isBase64Encoded?: boolean + + static noContent() { + return new HttpResponse('', HttpStatusCode.NO_CONTENT) + } + + static json(data: any, statusCode: HttpStatusCode | number = HttpStatusCode.OK) { + return new HttpResponse(JSON.stringify(data), statusCode).withContentType(ContentType.JSON) + } + + static xml(data: string, statusCode: HttpStatusCode | number = HttpStatusCode.OK) { + return new HttpResponse(data, statusCode).withContentType(ContentType.XML) + } + + static txt(plainText: string, statusCode: HttpStatusCode | number = HttpStatusCode.OK) { + return new HttpResponse(plainText, statusCode).withContentType(ContentType.TXT) + } + + static binary( + buffer: Buffer, + contentType: string | ContentType, + statusCode: HttpStatusCode | number = HttpStatusCode.OK, + ) { + return new HttpResponse(buffer.toString('base64'), statusCode).withBase64EncodedBody().withContentType(contentType) + } + + /** TXT response with code {@link HttpStatusCode.UNAUTHORIZED} */ + static unauthorized(body: string) { + return HttpResponse.txt(body, HttpStatusCode.UNAUTHORIZED) + } + + /** TXT response with default code {@link HttpStatusCode.BAD_REQUEST} */ + static badRequest(body: string) { + return HttpResponse.txt(body, HttpStatusCode.BAD_REQUEST) + } + + /** JSON response with default code {@link HttpStatusCode.INTERNAL_SERVER_ERROR} */ + static serverError(data: any, statusCode = HttpStatusCode.INTERNAL_SERVER_ERROR) { + return HttpResponse.json(data, statusCode) + } + + /** JSON response with default code {@link HttpStatusCode.BAD_REQUEST} */ + static clientError(data: any, statusCode = HttpStatusCode.BAD_REQUEST) { + return HttpResponse.json(data, statusCode) + } + + constructor(body: string, statusCode: HttpStatusCode | number) { + this.body = body + this.statusCode = statusCode + this.headers = {} + } + + addHeader(key: string, val: string): this { + this.headers[key] = val + return this + } + + withCors( + origin = '*', + options?: { + allowCredentials?: boolean + allowedMethods?: HttpMethod[] + allowedHeaders?: string[] + exposeHeaders?: string[] + maxAge?: number + }, + ): this { + this.headers[CorsHeader.ALLOW_ORIGIN] = origin + // if origin isn't static we should ad the vary header + if (origin !== '*') { + this.headers[CommonHttpHeader.VARY] = + this.headers[CommonHttpHeader.VARY]?.concat(` ,${CommonHttpHeader.ORIGIN}`) ?? CommonHttpHeader.ORIGIN + } + + if (options) { + if (options.allowCredentials) { + this.headers[CorsHeader.ALLOW_CREDENTIALS] = options.allowCredentials.toString() + } + // should be present on OPTIONS preflight responses only + if (options.allowedMethods && options.allowedMethods.length !== 0) { + this.headers[CorsHeader.ALLOW_METHODS] = options.allowedMethods.join(', ') + } + if (options.allowedHeaders && options.allowedHeaders.length !== 0) { + this.headers[CorsHeader.ALLOW_HEADERS] = options.allowedHeaders.join(', ') + } + if (options.exposeHeaders && options.exposeHeaders.length !== 0) { + this.headers[CorsHeader.EXPOSE_HEADERS] = options.exposeHeaders.join(', ') + } + if (options.maxAge !== undefined) { + this.headers[CorsHeader.MAX_AGE] = options.maxAge.toString(10) + } + } + return this + } + + withContentType(type: string | ContentType): this { + this.headers[CommonHttpHeader.CONTENT_TYPE] = type + return this + } + + // not complete see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control + withCacheControl( + maxAge: number, + sMaxAge: number, + cacheability: Array<'public' | 'private' | 'no-store'> = [], + rules: Array<'must-revalidate' | 'proxy-revalidate' | 'immutable'> = [], + ): this { + const headerStrings = [`max-age=${maxAge}`, `s-maxage=${sMaxAge}`, ...cacheability, ...rules] + this.headers[CommonHttpHeader.CACHE_CONTROL] = headerStrings.join(', ') + return this + } + + withBase64EncodedBody(): this { + this.isBase64Encoded = true + return this + } +} diff --git a/packages/lambda-utilities/src/static/index.ts b/packages/lambda-utilities/src/static/index.ts new file mode 100644 index 0000000..ee80e7b --- /dev/null +++ b/packages/lambda-utilities/src/static/index.ts @@ -0,0 +1,3 @@ +export * from './fetch-ssm-string-param-value.function.js' +export * from './http-response.js' +export * from './is-aws-lambda-env.function.js' diff --git a/packages/lambda-utilities/src/static/is-aws-lambda-env.function.ts b/packages/lambda-utilities/src/static/is-aws-lambda-env.function.ts new file mode 100644 index 0000000..f2e0010 --- /dev/null +++ b/packages/lambda-utilities/src/static/is-aws-lambda-env.function.ts @@ -0,0 +1,5 @@ +export function isAwsLambdaEnv(): boolean { + // aws sets the AWS_EXECUTION_ENV so does the serverless framework - + // to detect local invocations SLS additionally sets IS_LOCAL env var + return process && !!process.env['AWS_EXECUTION_ENV'] && !process.env['IS_LOCAL'] +} diff --git a/packages/lambda-utilities/tsconfig.json b/packages/lambda-utilities/tsconfig.json new file mode 100644 index 0000000..f1f269c --- /dev/null +++ b/packages/lambda-utilities/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "declarationDir": "./dist", + "strictPropertyInitialization": false, + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/lambda-utilities/tsconfig.lint.json b/packages/lambda-utilities/tsconfig.lint.json new file mode 100644 index 0000000..8c8be89 --- /dev/null +++ b/packages/lambda-utilities/tsconfig.lint.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": "./", + "types": ["node"], + "paths": { + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] + } + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/lambda-utilities/tsconfig.spec.json b/packages/lambda-utilities/tsconfig.spec.json new file mode 100644 index 0000000..75097cd --- /dev/null +++ b/packages/lambda-utilities/tsconfig.spec.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] + }, + "experimentalDecorators": true, + "emitDecoratorMetadata": true + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} From cd37367ff892068e45c5c5c68f5772db7ea5f487 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 13:44:55 +0100 Subject: [PATCH 15/55] feat: introduce iac-utilities BREAKING-CHANGE: newly added to sc-commons-public --- packages/iac-utilities/.lintstagedrc.yml | 8 + packages/iac-utilities/CHANGELOG.md | 439 ++++++++++++++++++ packages/iac-utilities/README.md | 48 ++ packages/iac-utilities/eslint.config.mjs | 13 + packages/iac-utilities/package.json | 98 ++++ packages/iac-utilities/src/aws-env-vars.ts | 19 + .../src/aws-sso-configure-profiles.ts | 30 ++ .../src/base/commons/base-bundle-info.type.ts | 11 + .../handler-to-bundle-info.function.spec.ts | 31 ++ .../handler-to-bundle-info.function.ts | 40 ++ .../base/commons/iac-stack-config-error.ts | 5 + .../commons/iac-stack-name-strategy.enum.ts | 6 + .../src/base/commons/prod-switchable.model.ts | 11 + .../base/commons/stage-switchable.model.ts | 15 + ...ld-time-base-runtime-config-provider.fn.ts | 18 + ...v-based-base-runtime-config-provider.fn.ts | 10 + packages/iac-utilities/src/base/index.ts | 13 + .../base/utils/base-runtime-config.type.ts | 6 + .../extend-with-iac-utils.function.spec.ts | 50 ++ .../utils/extend-with-iac-utils.function.ts | 52 +++ .../base/utils/iac-stack-config.service.ts | 134 ++++++ .../utils/switch-prod-dependant.function.ts | 11 + .../src/base/utils/type-utils.ts | 5 + .../iac-utilities/src/credentials-helper.ts | 13 + .../src/export-base-runtime-config.ts | 36 ++ .../iac-utilities/src/export-stack-outputs.ts | 31 ++ .../iac-utilities/src/export-stage-info.ts | 31 ++ .../iac-utilities/src/fetch-client-config.ts | 44 ++ packages/iac-utilities/src/index.ts | 1 + .../iac-utilities/src/invalidate-cf-cache.ts | 34 ++ .../aws-sso-profiles-definition-schema.json | 99 ++++ .../s3-upload-definition-schema.json | 39 ++ .../src/scripts/aws-env-vars.function.ts | 31 ++ .../aws-sso-configure-profiles.function.ts | 140 ++++++ .../scripts/credentials-helper.function.ts | 56 +++ .../scripts/export-base-runtime.function.ts | 58 +++ .../export-stack-outputs.function.spec.ts | 19 + .../scripts/export-stack-outputs.function.ts | 63 +++ .../src/scripts/export-stage-info.function.ts | 34 ++ .../scripts/fetch-client-config.function.ts | 33 ++ packages/iac-utilities/src/scripts/index.ts | 10 + .../scripts/invalidated-cf-cache.function.ts | 63 +++ .../iac-utilities/src/scripts/script-utils.ts | 25 + .../stage-override-to-pr-base.function.ts | 18 + .../src/scripts/upload-to-s3.function.ts | 169 +++++++ packages/iac-utilities/src/stage-info.ts | 32 ++ .../src/stage-override-to-pr-base.ts | 11 + packages/iac-utilities/src/upload-to-s3.ts | 60 +++ ...aws-sso-profiles-definition-schema.test.ts | 29 ++ .../invalid-aws-sso-profiles-definition.json | 17 + .../test/invalid-s3-upload-definition.json | 12 + .../test/s3-upload-definition-schema.test.ts | 28 ++ .../valid-aws-sso-profiles-definition.json | 17 + .../test/valid-s3-upload-definition.json | 32 ++ packages/iac-utilities/tsconfig.json | 12 + packages/iac-utilities/tsconfig.lint.json | 13 + packages/iac-utilities/tsconfig.spec.json | 12 + 57 files changed, 2395 insertions(+) create mode 100644 packages/iac-utilities/.lintstagedrc.yml create mode 100644 packages/iac-utilities/CHANGELOG.md create mode 100644 packages/iac-utilities/README.md create mode 100644 packages/iac-utilities/eslint.config.mjs create mode 100644 packages/iac-utilities/package.json create mode 100644 packages/iac-utilities/src/aws-env-vars.ts create mode 100644 packages/iac-utilities/src/aws-sso-configure-profiles.ts create mode 100644 packages/iac-utilities/src/base/commons/base-bundle-info.type.ts create mode 100644 packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.spec.ts create mode 100644 packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.ts create mode 100644 packages/iac-utilities/src/base/commons/iac-stack-config-error.ts create mode 100644 packages/iac-utilities/src/base/commons/iac-stack-name-strategy.enum.ts create mode 100644 packages/iac-utilities/src/base/commons/prod-switchable.model.ts create mode 100644 packages/iac-utilities/src/base/commons/stage-switchable.model.ts create mode 100644 packages/iac-utilities/src/base/config/build-time-base-runtime-config-provider.fn.ts create mode 100644 packages/iac-utilities/src/base/config/env-based-base-runtime-config-provider.fn.ts create mode 100644 packages/iac-utilities/src/base/index.ts create mode 100644 packages/iac-utilities/src/base/utils/base-runtime-config.type.ts create mode 100644 packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.spec.ts create mode 100644 packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.ts create mode 100644 packages/iac-utilities/src/base/utils/iac-stack-config.service.ts create mode 100644 packages/iac-utilities/src/base/utils/switch-prod-dependant.function.ts create mode 100644 packages/iac-utilities/src/base/utils/type-utils.ts create mode 100644 packages/iac-utilities/src/credentials-helper.ts create mode 100644 packages/iac-utilities/src/export-base-runtime-config.ts create mode 100644 packages/iac-utilities/src/export-stack-outputs.ts create mode 100644 packages/iac-utilities/src/export-stage-info.ts create mode 100644 packages/iac-utilities/src/fetch-client-config.ts create mode 100644 packages/iac-utilities/src/index.ts create mode 100644 packages/iac-utilities/src/invalidate-cf-cache.ts create mode 100644 packages/iac-utilities/src/json-schemas/aws-sso-profiles-definition-schema.json create mode 100644 packages/iac-utilities/src/json-schemas/s3-upload-definition-schema.json create mode 100644 packages/iac-utilities/src/scripts/aws-env-vars.function.ts create mode 100644 packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts create mode 100644 packages/iac-utilities/src/scripts/credentials-helper.function.ts create mode 100644 packages/iac-utilities/src/scripts/export-base-runtime.function.ts create mode 100644 packages/iac-utilities/src/scripts/export-stack-outputs.function.spec.ts create mode 100644 packages/iac-utilities/src/scripts/export-stack-outputs.function.ts create mode 100644 packages/iac-utilities/src/scripts/export-stage-info.function.ts create mode 100644 packages/iac-utilities/src/scripts/fetch-client-config.function.ts create mode 100644 packages/iac-utilities/src/scripts/index.ts create mode 100644 packages/iac-utilities/src/scripts/invalidated-cf-cache.function.ts create mode 100644 packages/iac-utilities/src/scripts/script-utils.ts create mode 100644 packages/iac-utilities/src/scripts/stage-override-to-pr-base.function.ts create mode 100644 packages/iac-utilities/src/scripts/upload-to-s3.function.ts create mode 100644 packages/iac-utilities/src/stage-info.ts create mode 100644 packages/iac-utilities/src/stage-override-to-pr-base.ts create mode 100644 packages/iac-utilities/src/upload-to-s3.ts create mode 100644 packages/iac-utilities/test/aws-sso-profiles-definition-schema.test.ts create mode 100644 packages/iac-utilities/test/invalid-aws-sso-profiles-definition.json create mode 100644 packages/iac-utilities/test/invalid-s3-upload-definition.json create mode 100644 packages/iac-utilities/test/s3-upload-definition-schema.test.ts create mode 100644 packages/iac-utilities/test/valid-aws-sso-profiles-definition.json create mode 100644 packages/iac-utilities/test/valid-s3-upload-definition.json create mode 100644 packages/iac-utilities/tsconfig.json create mode 100644 packages/iac-utilities/tsconfig.lint.json create mode 100644 packages/iac-utilities/tsconfig.spec.json diff --git a/packages/iac-utilities/.lintstagedrc.yml b/packages/iac-utilities/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/iac-utilities/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/iac-utilities/CHANGELOG.md b/packages/iac-utilities/CHANGELOG.md new file mode 100644 index 0000000..2f201ca --- /dev/null +++ b/packages/iac-utilities/CHANGELOG.md @@ -0,0 +1,439 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [10.4.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@10.4.0...@shiftcode/iac-helper@10.4.1) (2026-01-14) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [10.4.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@10.3.1...@shiftcode/iac-helper@10.4.0) (2025-09-23) + +### Features + +- **stage-info:** new script to just print the stage-info to stdout ([f100ae9](https://github.com/shiftcode/sc-commons/commit/f100ae9b1454c76399b4aba79e5e075f15048461)) + +## [10.3.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@10.3.0...@shiftcode/iac-helper@10.3.1) (2025-09-22) + +### Bug Fixes + +- **aws-env-vars:** remove empty spaces after last export statement ([716d6ab](https://github.com/shiftcode/sc-commons/commit/716d6abf30bc86d92df470342e7330d85d0d55c6)) +- **deps:** change to 5.0.2 branch-utilities as 5.0.0 is unpublished ([ce4d83d](https://github.com/shiftcode/sc-commons/commit/ce4d83d015592b7726f9e66cf29bf132eb62cbe7)) + +# [10.3.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@10.2.0...@shiftcode/iac-helper@10.3.0) (2025-09-09) + +### Features + +- add --no-write option to fetch-client-config script ([b816e73](https://github.com/shiftcode/sc-commons/commit/b816e736ba98d201794c156299dacd80c1b37845)) + +# [10.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@10.1.0...@shiftcode/iac-helper@10.2.0) (2025-09-04) + +### Features + +- **iac-helper:** support latest `@shiftcode/branch-utilities` ([9737261](https://github.com/shiftcode/sc-commons/commit/973726160756369f8c7c5a0bd56de82ee12484aa)) + +# [10.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@10.0.0...@shiftcode/iac-helper@10.1.0) (2025-08-13) + +### Bug Fixes + +- **stage-override-to-pr-base:** type GitHub PRs for better type safety ([61b5375](https://github.com/shiftcode/sc-commons/commit/61b53752be5dc327f801cf5fab541feea4f12f10)) + +### Features + +- **iac-helper:** add aws-env-vars script ([75b458f](https://github.com/shiftcode/sc-commons/commit/75b458f62147c9fb7773a1acd054ac91eee42950)) +- **iac-helper:** add stage-override-to-pr-base script ([70e5aee](https://github.com/shiftcode/sc-commons/commit/70e5aeea1fd7f119e038849b4d793b806d7d5983)) +- **stage-override-to-pr-base:** remove branchNameOverride argument ([a5ff251](https://github.com/shiftcode/sc-commons/commit/a5ff251cb841e9cd6f627fb6b8ac642a2e701230)) + +# [10.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@9.0.2...@shiftcode/iac-helper@10.0.0) (2025-06-02) + +### Build System + +- **iac-helper:** upgrade branch-utilities and publish-helper to version 4.0.0 ([4549d59](https://github.com/shiftcode/sc-commons/commit/4549d596b55921c3e8ed5d3c77e214d897611475)) + +### BREAKING CHANGES + +- **iac-helper:** requires @shiftcode/branch-utilities version 4.0.0 + +## [9.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@9.0.1...@shiftcode/iac-helper@9.0.2) (2025-05-19) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## [9.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@9.0.0...@shiftcode/iac-helper@9.0.1) (2025-05-15) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [9.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@8.0.1...@shiftcode/iac-helper@9.0.0) (2025-05-01) + +### Code Refactoring + +- **iac-helper:** deprecate @shiftcode/commons-config package ([a83b00b](https://github.com/shiftcode/sc-commons/commit/a83b00b88d9c55671aaec7925c9528fab4485cb7)) + +### BREAKING CHANGES + +- **iac-helper:** the package @shiftcode/commons-config is no longer available + +## [8.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@8.0.0...@shiftcode/iac-helper@8.0.1) (2025-03-06) + +### Bug Fixes + +- update engines definition (left over from node 22 upgrade) ([f5428ae](https://github.com/shiftcode/sc-commons/commit/f5428ae64c45567912887b8bab1e881c4312669f)) + +# [8.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@7.1.1...@shiftcode/iac-helper@8.0.0) (2025-03-04) + +### Build System + +- **deps:** upgrade to node22 ([f9c5712](https://github.com/shiftcode/sc-commons/commit/f9c57121ad78b6bc84cbc70071c595804b5fb08b)) + +### BREAKING CHANGES + +- **deps:** requires node 22 + +## [7.1.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@7.1.0...@shiftcode/iac-helper@7.1.1) (2024-08-02) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [7.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@7.0.3...@shiftcode/iac-helper@7.1.0) (2024-07-31) + +### Features + +- **iac-helper:** allow more aws sso profile types in schema ([885cdf0](https://github.com/shiftcode/sc-commons/commit/885cdf0205b3d1364b5d832024247ba6df954355)) + +## [7.0.3](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@7.0.2...@shiftcode/iac-helper@7.0.3) (2024-07-31) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## [7.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@7.0.1...@shiftcode/iac-helper@7.0.2) (2024-07-30) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## [7.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@7.0.0...@shiftcode/iac-helper@7.0.1) (2024-07-29) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [7.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.3.0...@shiftcode/iac-helper@7.0.0) (2024-07-13) + +### Build System + +- **node:** upgrade to node 20 ([2899d0d](https://github.com/shiftcode/sc-commons/commit/2899d0d41ece080b276e7bf84915d4849da81a29)) + +### BREAKING CHANGES + +- **node:** Minimum required node version is 20.11.1. In general speaking the runtime (Node or Browser) must support all es2023 features. + +# [6.3.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.2.1...@shiftcode/iac-helper@6.3.0) (2024-01-25) + +### Features + +- **iac-helper:** add support for prodKeyword (master | main) ([72849f5](https://github.com/shiftcode/sc-commons/commit/72849f591b9b877613ef21e9c68e23d1ee756147)) + +## [6.2.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.2.0...@shiftcode/iac-helper@6.2.1) (2024-01-25) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [6.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.1.4...@shiftcode/iac-helper@6.2.0) (2023-11-15) + +### Features + +- **iac-helper:** add helper script (bin) to configure aws sso ([3420d18](https://github.com/shiftcode/sc-commons/commit/3420d1841c07c123e241504cd8463dbd506861a2)) +- **iac-helper:** update schema ([cd4d586](https://github.com/shiftcode/sc-commons/commit/cd4d586b546ae9bdbcd1bb44fd34f225db97afe8)) +- **iac-helper:** update sso configure script ([6e14615](https://github.com/shiftcode/sc-commons/commit/6e1461586446f82af24966b7cb2fc0601c3af79e)) + +## [6.1.4](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.1.3...@shiftcode/iac-helper@6.1.4) (2023-10-26) + +### Bug Fixes + +- **iac-helper:** fixed invalidated-cf-cache function when used with multiple paths ([a01c5d1](https://github.com/shiftcode/sc-commons/commit/a01c5d13eb1ee85c8016cc121c70de847cbc511a)) + +## [6.1.3](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.1.2...@shiftcode/iac-helper@6.1.3) (2023-10-18) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## [6.1.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.1.1...@shiftcode/iac-helper@6.1.2) (2023-07-27) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## [6.1.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.1.0...@shiftcode/iac-helper@6.1.1) (2023-06-01) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [6.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.0.1...@shiftcode/iac-helper@6.1.0) (2023-06-01) + +### Features + +- **eslint-config:** add eslint-disable comments ([3716577](https://github.com/shiftcode/sc-commons/commit/37165771b8ac0e94bdcc7f90b55e41d358db9d65)) + +## [6.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@6.0.0...@shiftcode/iac-helper@6.0.1) (2023-05-26) + +**Note:** Version bump only for package @shiftcode/iac-helper + +# [6.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@5.1.0...@shiftcode/iac-helper@6.0.0) (2023-05-15) + +### Code Refactoring + +- **iac-helper:** remove depreacted functionality ([9def5a5](https://github.com/shiftcode/sc-commons/commit/9def5a5d53a0275ad0bc8a198de8cf0dee403aab)) +- **iac-helper:** remove depreacted functionality ([5b6802c](https://github.com/shiftcode/sc-commons/commit/5b6802c43c7c141dec8c5ab7221eace388e84b64)) + +### Features + +- **iac-helper:** migrate to ESM ([79046e7](https://github.com/shiftcode/sc-commons/commit/79046e7c459d57e2b801e441f468b50c1c6bb8d1)) +- **iac-helper:** migrate to ESM (different related changes) ([9ac4f82](https://github.com/shiftcode/sc-commons/commit/9ac4f82991e30d0804a1417b91c3a5eab1f39600)) + +### BREAKING CHANGES + +- **iac-helper:** deprecated functionality (runtimeConfig & getRuntimeConfigForEnv) was removed, use stageInfo & region directly +- **iac-helper:** deprecated feature (publishClientToS3) was removed, use uploadToS3 instead +- **iac-helper:** only supported in projects using ESM +- **iac-helper:** only supported in projects using ESM + +# [5.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@5.0.0...@shiftcode/iac-helper@5.1.0) (2023-03-17) + +### Features + +- **eslint-plugin:** introduce tests to verify correct implementation of plugins ([76d5b2f](https://github.com/shiftcode/sc-commons/commit/76d5b2f2bea5a3f4450e7ce43153fc2ddba832c1)) + +# [5.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@4.3.0...@shiftcode/iac-helper@5.0.0) (2023-03-16) + +### Build System + +- **tsconfig:** build for es2022 target ([c75651b](https://github.com/shiftcode/sc-commons/commit/c75651b2b2ca6338e71b6538616d5b0e9bbb40cc)) + +### Code Refactoring + +- **get-account-id:** removed ([3af4bf1](https://github.com/shiftcode/sc-commons/commit/3af4bf1daea8b06b1b2f02b4b07f82c39d178853)) +- **iac-helper:** buildTimeBaseRuntimeConfigProvider ([2b13680](https://github.com/shiftcode/sc-commons/commit/2b1368023ed1bb2f0b8d0a13254600c5482a472b)) +- **iac-helper:** update [@aws-sdk](https://github.com/aws-sdk) libs ([e2dce72](https://github.com/shiftcode/sc-commons/commit/e2dce72fd3d1096f6a6f4be2e19e6aebea673ebb)) +- **iac-stack-config-service:** removed getEnvFromDeployedFunction as it does not belong here ([efd59eb](https://github.com/shiftcode/sc-commons/commit/efd59eb19cabc8e2701b29dcd6808f7a9434ca94)) +- **iac-stack-config.service:** removed old stuff ([0d124cc](https://github.com/shiftcode/sc-commons/commit/0d124cc93acfa8a5a8f1722fe87a70ea918acdcb)) +- **runtime-config-module:** removed ([18a8eab](https://github.com/shiftcode/sc-commons/commit/18a8eabc4a7d2e7d1cee715d2e010327ad11df04)) + +### BREAKING CHANGES + +- **iac-stack-config.service:** IacStackConfigService constructor changed and it no longer provides `sharedData`, `getSharedDataForEnv` and `getSharedDataFromEnv` +- **runtime-config-module:** runtimeConfigModule (inversify) was removed +- **tsconfig:** requires ES2022 support (node@18) +- **iac-helper:** previously used `aws-sdk/global` config provider supported env and dot files. now reading the 'AWS_REGION' env var only which means it would no longer work with other sorts of aws config than via ENV +- **iac-helper:** iac-helper requires @aws-sdk libs ^3.204.0 +- **iac-stack-config-service:** removed getEnvFromDeployedFunction() method from IacStackConfigService + no replacement yet - if actually needed, move it from fadas to sc-commons/iac-helper as plain function (with optional dep) +- **get-account-id:** removed getAccountId() function + instead use `process.env.CDK_DEFAULT_ACCOUNT` if you actually need the account id (which you probably don't) + +# [4.3.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@4.2.0...@shiftcode/iac-helper@4.3.0) (2022-10-11) + +### Features + +- **stage-info:** new script to export stage info ([edf4b83](https://github.com/shiftcode/sc-commons/commit/edf4b836cd88fc496da10dd248a23da4a917e83a)) + +# [4.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@4.1.0...@shiftcode/iac-helper@4.2.0) (2022-04-26) + +### Features + +- **scripts/fetch-client-config:** new `key` option used to read from the outputs ([cd12f7f](https://github.com/shiftcode/sc-commons/commit/cd12f7fb6b1ec30063a0dcfd89a9eca0326af336)) +- **scripts/invalidate-cf-cache:** new `key` option used to read from the outputs ([3e58146](https://github.com/shiftcode/sc-commons/commit/3e581466317177abf240d78c53b22b05d0465b3a)) +- **scripts/publish-client-to-s3:** add option to skip the `pruning` of the bucket ([d63a853](https://github.com/shiftcode/sc-commons/commit/d63a853e3c842d334a2381e133250015e38fef72)) +- **scripts/publish-client-to-s3:** new `key` option used to read from the outputs ([c80604e](https://github.com/shiftcode/sc-commons/commit/c80604e95467b75a04f03776c83b495584dabb7a)) + +# [4.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@4.0.1...@shiftcode/iac-helper@4.1.0) (2022-03-31) + +### Features + +- **credentials-helper:** add sso credentials-helper script to use with old sdk v2 tools ([8d0198d](https://github.com/shiftcode/sc-commons/commit/8d0198d6d524de57289f3b90e5af5e7c0e520d0f)) + +## [4.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/iac-helper@4.0.0...@shiftcode/iac-helper@4.0.1) (2022-01-17) + +### Bug Fixes + +- **dependency:** require lambda-utils@7 ([cd204a1](https://github.com/shiftcode/sc-commons/commit/cd204a1bd3aa51d9125c8fe0a6a4799bea5e2680)) + +## 4.0.0 (2022-01-11) + +- build(release): next version [skip ci] ([7fb99e3](https://github.com/shiftcode/sc-commons/commit/7fb99e3)) +- build(release): next version [skip ci] ([69f8e36](https://github.com/shiftcode/sc-commons/commit/69f8e36)) +- build(release): next version [skip ci] ([6658958](https://github.com/shiftcode/sc-commons/commit/6658958)) +- build(release): next version [skip_build] ([911da02](https://github.com/shiftcode/sc-commons/commit/911da02)) +- build(release): next version [skip_build] ([199066e](https://github.com/shiftcode/sc-commons/commit/199066e)) +- build(release): next version [skip_build] ([0c839e4](https://github.com/shiftcode/sc-commons/commit/0c839e4)) +- build(release): next version [skip_build] ([2722982](https://github.com/shiftcode/sc-commons/commit/2722982)) +- build(release): next version [skip_build] ([a0e996a](https://github.com/shiftcode/sc-commons/commit/a0e996a)) +- build(release): next version [skip_build] ([8d72402](https://github.com/shiftcode/sc-commons/commit/8d72402)) +- build(release): next version [skip_build] ([7bca45d](https://github.com/shiftcode/sc-commons/commit/7bca45d)) +- build(release): next version [skip_build] ([82c65ba](https://github.com/shiftcode/sc-commons/commit/82c65ba)) +- build(release): next version [skip_build] ([8589cd3](https://github.com/shiftcode/sc-commons/commit/8589cd3)) +- build(release): next version [skip_build] ([aaebf67](https://github.com/shiftcode/sc-commons/commit/aaebf67)) +- build(release): next version [skip_build] ([e38c9a6](https://github.com/shiftcode/sc-commons/commit/e38c9a6)) +- build(release): next version [skip_build] ([9470e94](https://github.com/shiftcode/sc-commons/commit/9470e94)) +- build(release): next version [skip_build] ([7a83884](https://github.com/shiftcode/sc-commons/commit/7a83884)) +- build(release): next version [skip_build] ([0ca65a3](https://github.com/shiftcode/sc-commons/commit/0ca65a3)) +- build(release): next version [skip_build] ([b9614a4](https://github.com/shiftcode/sc-commons/commit/b9614a4)) +- build(release): next version [skip_build] ([1483216](https://github.com/shiftcode/sc-commons/commit/1483216)) +- build(release): next version [skip_build] ([5e2b455](https://github.com/shiftcode/sc-commons/commit/5e2b455)) +- build(release): next version [skip_build] ([7470c7d](https://github.com/shiftcode/sc-commons/commit/7470c7d)) +- build(release): next version [skip_build] ([bf316bd](https://github.com/shiftcode/sc-commons/commit/bf316bd)) +- build(release): next version [skip_workflow] ([04eb9bc](https://github.com/shiftcode/sc-commons/commit/04eb9bc)) +- build(tsconfig.spex): fix paths ([cde6281](https://github.com/shiftcode/sc-commons/commit/cde6281)) +- test(handler-to-bundle-info.function): fix typo in spec ([61270ec](https://github.com/shiftcode/sc-commons/commit/61270ec)) +- chore(aws-sdk): use same version in all packages ([08ac152](https://github.com/shiftcode/sc-commons/commit/08ac152)) +- chore(barrel-file): create own barrel file for base dir ([6a87c83](https://github.com/shiftcode/sc-commons/commit/6a87c83)) +- chore(deps): update ([ef20963](https://github.com/shiftcode/sc-commons/commit/ef20963)) +- chore(peer-deps): remove pr version ([ef34bce](https://github.com/shiftcode/sc-commons/commit/ef34bce)) +- ci(prepare-dist): use from new sc-commons-public package ([5ad1e4e](https://github.com/shiftcode/sc-commons/commit/5ad1e4e)) +- refactor(get-lambda-props): removed ([e02b161](https://github.com/shiftcode/sc-commons/commit/e02b161)) +- refactor(peer-dependencies): use branch-utilities lib from sc-commons-public ([a35b7af](https://github.com/shiftcode/sc-commons/commit/a35b7af)) +- refactor(stack-with-shared-data): removed ([bfb9860](https://github.com/shiftcode/sc-commons/commit/bfb9860)) +- refactor(webpack-build-helper): removed since outdated ([2f3012f](https://github.com/shiftcode/sc-commons/commit/2f3012f)) +- fix(dependencies): cleanup ([9119e8f](https://github.com/shiftcode/sc-commons/commit/9119e8f)) +- fix(deps): move runtime dev-dependencies ([aa73004](https://github.com/shiftcode/sc-commons/commit/aa73004)) +- fix(deps): remove Nullable helper ([d470494](https://github.com/shiftcode/sc-commons/commit/d470494)) +- fix(extend-with-iac-utils): make props accessible in extending class ([cfe1ff2](https://github.com/shiftcode/sc-commons/commit/cfe1ff2)) +- fix(extend-with-iac-utils): typo ([65c8862](https://github.com/shiftcode/sc-commons/commit/65c8862)) +- fix(iac-utils): resolve test issue ([ac77f2a](https://github.com/shiftcode/sc-commons/commit/ac77f2a)) +- fix(peer-dependencies): correct version ([99aa21e](https://github.com/shiftcode/sc-commons/commit/99aa21e)) +- fix(peer-dependencies): update versions ([9aac1ed](https://github.com/shiftcode/sc-commons/commit/9aac1ed)) +- fix(scripts): accept promise options ([39bdb70](https://github.com/shiftcode/sc-commons/commit/39bdb70)) +- fix(typings): prepare for ts 4.5 ([5025471](https://github.com/shiftcode/sc-commons/commit/5025471)) +- feat(deps): update inversify to v6 and mime to v3 ([b1912f2](https://github.com/shiftcode/sc-commons/commit/b1912f2)) +- feat(extend-with-iac-utils): functions to dynamically extend base class ([e95f053](https://github.com/shiftcode/sc-commons/commit/e95f053)) +- feat(handler-to-bundle-info): allow additional arg for destDir ([afa64dc](https://github.com/shiftcode/sc-commons/commit/afa64dc)) +- feat(iac-stack-config-service): support stage-switchable properties ([014bc1e](https://github.com/shiftcode/sc-commons/commit/014bc1e)) +- style(prettier): prettify ([4887470](https://github.com/shiftcode/sc-commons/commit/4887470)) + +### BREAKING CHANGE + +- getLambdaProps was removed since not recommended to use +- NestedStackWithSharedData/StackWithSharedData was removed + use extendWithIacUtils(Stack) instead (see spec for example) +- Nullable helper type was removed. use from @shiftcode/utils instead +- requires inversify@^6.0.1 +- webpack-build-helper was removed since outdated + +## 3.0.0 (2021-12-23) + +- build(release): next version [skip ci] ([d3b33ba](https://github.com/shiftcode/sc-commons/commit/d3b33ba)) +- build(release): next version [skip ci] ([87c30b4](https://github.com/shiftcode/sc-commons/commit/87c30b4)) +- build(release): next version [skip ci] ([16d5995](https://github.com/shiftcode/sc-commons/commit/16d5995)) +- build(release): next version [skip ci] ([d7b6d61](https://github.com/shiftcode/sc-commons/commit/d7b6d61)) +- build(release): next version [skip ci] ([76a41a6](https://github.com/shiftcode/sc-commons/commit/76a41a6)) +- build(release): next version [skip ci] ([44d8085](https://github.com/shiftcode/sc-commons/commit/44d8085)) +- build(release): next version [skip ci] ([4a2a73d](https://github.com/shiftcode/sc-commons/commit/4a2a73d)) +- build(release): next version [skip ci] ([ac3ac7f](https://github.com/shiftcode/sc-commons/commit/ac3ac7f)) +- build(release): next version [skip ci] ([14622a2](https://github.com/shiftcode/sc-commons/commit/14622a2)) +- build(release): next version [skip ci] ([3199b0c](https://github.com/shiftcode/sc-commons/commit/3199b0c)) +- build(release): next version [skip ci] ([652b10b](https://github.com/shiftcode/sc-commons/commit/652b10b)) +- build(release): next version [skip ci] ([78e4b60](https://github.com/shiftcode/sc-commons/commit/78e4b60)) +- build(release): next version [skip ci] ([006c0be](https://github.com/shiftcode/sc-commons/commit/006c0be)) +- build(release): next version [skip ci] ([6285743](https://github.com/shiftcode/sc-commons/commit/6285743)) +- build(release): next version [skip ci] ([2e01006](https://github.com/shiftcode/sc-commons/commit/2e01006)) +- build(release): next version [skip ci] ([f66b3c3](https://github.com/shiftcode/sc-commons/commit/f66b3c3)) +- build(release): next version [skip ci] ([69cc0f4](https://github.com/shiftcode/sc-commons/commit/69cc0f4)) +- build(release): next version [skip ci] ([921f9f0](https://github.com/shiftcode/sc-commons/commit/921f9f0)) +- build(release): next version [skip ci] ([25993ec](https://github.com/shiftcode/sc-commons/commit/25993ec)) +- build(release): next version [skip ci] ([1fed9a1](https://github.com/shiftcode/sc-commons/commit/1fed9a1)) +- build(release): next version [skip ci] ([cd44cac](https://github.com/shiftcode/sc-commons/commit/cd44cac)) +- build(typescript): remove separate ts version ([657c447](https://github.com/shiftcode/sc-commons/commit/657c447)) +- refactor(\*): replace npm run with yarn ([238adbc](https://github.com/shiftcode/sc-commons/commit/238adbc)) +- refactor(\*): replace yarn run with yarn ([ef0d2f7](https://github.com/shiftcode/sc-commons/commit/ef0d2f7)) +- refactor(\*): unify READMEs title ([b779764](https://github.com/shiftcode/sc-commons/commit/b779764)) +- refactor(bin-scripts): export main functions to use from code ([6799993](https://github.com/shiftcode/sc-commons/commit/6799993)) +- refactor(iac-helper): use branch-utils package ([c20c084](https://github.com/shiftcode/sc-commons/commit/c20c084)) +- revert(version): back to pr ([daf8058](https://github.com/shiftcode/sc-commons/commit/daf8058)) +- fix(deps): update just-snake-case to v3 ([14cfd22](https://github.com/shiftcode/sc-commons/commit/14cfd22)) +- fix(export-base-runtime-config): add she-bang ([697a805](https://github.com/shiftcode/sc-commons/commit/697a805)) +- fix(export-cfn-outputs): add script ([3c85f72](https://github.com/shiftcode/sc-commons/commit/3c85f72)) +- fix(package.json): @shiftcode versions ([c9b0c7d](https://github.com/shiftcode/sc-commons/commit/c9b0c7d)) +- fix(package.json): author ([67db3f3](https://github.com/shiftcode/sc-commons/commit/67db3f3)) +- fix(package.json): correctly set sideEffects property ([11e30b5](https://github.com/shiftcode/sc-commons/commit/11e30b5)) +- fix(peer-dependencies): depend on pr93 versions ([b36c70b](https://github.com/shiftcode/sc-commons/commit/b36c70b)) +- fix(publish-client-to-s3): cli options ([613e067](https://github.com/shiftcode/sc-commons/commit/613e067)) +- fix(scripts): move to root ([b9e619e](https://github.com/shiftcode/sc-commons/commit/b9e619e)) +- feat(fetch-client-config): add script ([7d7eea0](https://github.com/shiftcode/sc-commons/commit/7d7eea0)) +- feat(invalidate-cf-cache): add script ([a2bc06c](https://github.com/shiftcode/sc-commons/commit/a2bc06c)) +- feat(publish-client-to-s3): actually validate definitions ([d12f12e](https://github.com/shiftcode/sc-commons/commit/d12f12e)) +- feat(publish-client-to-s3): add script to upload client ([b143b11](https://github.com/shiftcode/sc-commons/commit/b143b11)) +- feat(scripts): enhance export-base-runtime-config ([0d40bff](https://github.com/shiftcode/sc-commons/commit/0d40bff)) +- feat(typescript): use typescript 4.4 and require tslib ^2.3 ([3524ecd](https://github.com/shiftcode/sc-commons/commit/3524ecd)) +- style(prettier): update to 2.5 and prettify ([47be5f1](https://github.com/shiftcode/sc-commons/commit/47be5f1)) +- test(jest): update rename tsconfig.spec and update jest ([30a28ff](https://github.com/shiftcode/sc-commons/commit/30a28ff)) +- chore(prepublish): fix script call ([56e67b1](https://github.com/shiftcode/sc-commons/commit/56e67b1)) + +### BREAKING CHANGE + +- requires peer dependency @shiftcode/branch-utils +- requires tslib ^2.3 + +## 2.1.3 (2021-11-09) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## 2.1.2 (2021-11-08) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## 2.1.1 (2021-09-03) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## 2.1.0 (2021-09-03) + +- feat(iac-helper): add export-base-runtime-config executable ([4cc5f28](https://github.com/shiftcode/sc-commons/commit/4cc5f28)) +- refactor(build-helper): flatten publish artifact ([0225ada](https://github.com/shiftcode/sc-commons/commit/0225ada)) + +## 2.0.2 (2021-03-31) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## 2.0.1 (2021-01-22) + +- chore(package.json): use \* version for dev-deps to peer packages ([a13d261](https://github.com/shiftcode/sc-commons/commit/a13d261)) + +## 2.0.0 (2020-10-06) + +- refactor(build-helper): remove dist/\_cjs/publish-lib file ([ecf2451](https://github.com/shiftcode/sc-commons/commit/ecf2451)) +- refactor(iac-helper): flatten iac-stack-config constructor args ([fec659e](https://github.com/shiftcode/sc-commons/commit/fec659e)) +- refactor(iac-helper): optional dependencies and deep exports ([0d38774](https://github.com/shiftcode/sc-commons/commit/0d38774)) +- refactor(prod-switchable): export type to be reused ([a432d56](https://github.com/shiftcode/sc-commons/commit/a432d56)) +- Merge branch 'master' into #77-reusable-utils ([baa4f26](https://github.com/shiftcode/sc-commons/commit/baa4f26)), closes [#77](https://github.com/shiftcode/sc-commons/issues/77) +- feat(iac-helper): getProdDependantProp fun with sophisticated typings ([aa5f6b6](https://github.com/shiftcode/sc-commons/commit/aa5f6b6)) +- feat(iac-helper): nested-stack-with-shared-data ([bdffbbd](https://github.com/shiftcode/sc-commons/commit/bdffbbd)) +- feat(iac-helper): StackWithSharedData common cf outputs ([c2bae99](https://github.com/shiftcode/sc-commons/commit/c2bae99)) +- chore(lint-staged): update all configuration files ([ac86637](https://github.com/shiftcode/sc-commons/commit/ac86637)) +- fix(iac-helper): allow custom root dir for lambda functions ([d1e9b07](https://github.com/shiftcode/sc-commons/commit/d1e9b07)) +- fix(iac-helper): allow custom root dir for lambda functions ([97f58be](https://github.com/shiftcode/sc-commons/commit/97f58be)) +- fix(iac-helper): cfn output colon instead of dot ([05f882e](https://github.com/shiftcode/sc-commons/commit/05f882e)) +- fix(iac-helper): change build and publish scripts ([f5ee994](https://github.com/shiftcode/sc-commons/commit/f5ee994)) +- fix(iac-helper): package versions in opt deps ([0a7965d](https://github.com/shiftcode/sc-commons/commit/0a7965d)) +- fix(iac-helper): publish config ([40692e1](https://github.com/shiftcode/sc-commons/commit/40692e1)) +- fix(iac-helper): stack-with-shared-data output ([2e78a3a](https://github.com/shiftcode/sc-commons/commit/2e78a3a)) +- fix(iac-helper): stack-with-shared-data output ([953ca05](https://github.com/shiftcode/sc-commons/commit/953ca05)) +- fix(iac-helper): stackWithSharedData import ([9a4d5cd](https://github.com/shiftcode/sc-commons/commit/9a4d5cd)) +- fix(iac-helper): tslint:disable:no-unused-expression ([22988a4](https://github.com/shiftcode/sc-commons/commit/22988a4)) +- fix(iac-helper): user build-helper pre-publish-lib ([12cde06](https://github.com/shiftcode/sc-commons/commit/12cde06)) + +### BREAKING CHANGE + +- - to make sure optional dependencies are actually optional, deep exports are necessary. + +* DefaultLambda no longer exists. Instead a helper function getLambdaProps was added + +## 1.1.1 (2020-06-14) + +**Note:** Version bump only for package @shiftcode/iac-helper + +## 1.1.0 (2020-05-19) + +- feat(aws): account id function trough sts ([32025a2](https://github.com/shiftcode/sc-commons/commit/32025a2)) + +## 1.0.1 (2020-05-19) + +- fix(peerdeps): version of peer deps update ([9dd641d](https://github.com/shiftcode/sc-commons/commit/9dd641d)) + +## 1.0.0 (2020-05-19) + +- feat(typescript): update to typescript 3.9 ([1dc45f5](https://github.com/shiftcode/sc-commons/commit/1dc45f5)) + +### BREAKING CHANGE + +- tslib 2.0.0 required for typescript update + +## 0.1.0 (2020-05-11) + +- feat(iac-helper): code from baikonur ([3c547d9](https://github.com/shiftcode/sc-commons/commit/3c547d9)) diff --git a/packages/iac-utilities/README.md b/packages/iac-utilities/README.md new file mode 100644 index 0000000..b5f4b2d --- /dev/null +++ b/packages/iac-utilities/README.md @@ -0,0 +1,48 @@ +# iac-utilities + +> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023)) + +Utilities for build and runtime to work with the [AWS-CDK](https://aws.amazon.com/de/cdk/). + +## necessary peer dependencies + +- `@aws-sdk/client-...` +- `@shiftcode/branch-utilities` +- `tslib` + +## optional peer dependencies + +- `@aws-sdk/client-cloudformation` + - `exportStackOutputs` +- `@aws-sdk/client-cloudfront` + - `invalidateCfCache` +- `@aws-sdk/credential-providers` & `@aws-sdk/types` + - `credentials-helper` +- `@shiftcode/lambda-utilities` + - `uploadToS3` +- `@aws-sdk/client-s3` + - `uploadToS3` + +## Scripts + +### aws-env-vars + +- **Purpose**: Resolve and provide AWS environment variables from a configuration file. +- **Usage**: `npm run aws-env-vars -c `, most commonly used with `eval "$(npm run aws-env-vars -c )"`. +- **Args**: + + | Arg | Description | Optional | + | --------------------- | ------------------------------------------------------------------------ | -------- | + | `-c, --config ` | Relative path to the config file (default: `./aws-accounts.config.json`) | Yes | + +- **Output**: Prints AWS environment variable exports or errors. + - exports `AWS_REGION` and `SC_AWS_ACCOUNT_ID` for the github action. + - exports `AWS_REGION` and `AWS_PROFILE` for the local development. + +### stage-override-to-pr-base + +- **Purpose**: Override the stage to the base of the current pr. (Only works in a GitHub action context.) +- **Usage**: `npm run stage-override-to-pr-base` +- **Args**: None +- **Output**: Prints the environment variable exports for the stage override or errors + - exports `SC_OVERRIDE_BRANCH_NAME` and `SC_OVERRIDE_IS_PR` diff --git a/packages/iac-utilities/eslint.config.mjs b/packages/iac-utilities/eslint.config.mjs new file mode 100644 index 0000000..4044f40 --- /dev/null +++ b/packages/iac-utilities/eslint.config.mjs @@ -0,0 +1,13 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig( + { + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, + }, + { + files: ['**/*.ts'], + rules: { + 'no-console': 'off', + }, + }, +) diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json new file mode 100644 index 0000000..8f1786f --- /dev/null +++ b/packages/iac-utilities/package.json @@ -0,0 +1,98 @@ +{ + "name": "@shiftcode/iac-utilities", + "version": "0.0.0-pr254.0", + "description": "scripts and util functions for aws iac", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./scripts": { + "types": "./dist/scripts/index.d.ts", + "default": "./dist/scripts/index.js" + } + }, + "bin": { + "aws-env-vars": "./dist/aws-env-vars.js", + "aws-sso-configure-profiles": "./dist/aws-sso-configure-profiles.js", + "credentials-helper": "./dist/credentials-helper.js", + "export-base-runtime-config": "./dist/export-base-runtime-config.js", + "export-stack-outputs": "./dist/export-stack-outputs.js", + "export-stage-info": "./dist/export-stage-info.js", + "fetch-client-config": "./dist/fetch-client-config.js", + "invalidate-cf-cache": "./dist/invalidate-cf-cache.js", + "publish-client-to-s3": "./dist/upload-to-s3.js", + "stage-info": "./dist/stage-info.js", + "stage-override-to-pr-base": "./dist/stage-override-to-pr-base.js", + "upload-to-s3": "./dist/upload-to-s3.js" + }, + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src", + "lint:ci": "eslint ./src", + "lint:staged": "eslint --fix --cache", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" + }, + "dependencies": { + "ajv": "^8.16.0", + "fast-glob": "^3.2.10", + "just-snake-case": "^3.2.0", + "mime": "^4.0.4", + "yargs": "^17.2.1" + }, + "devDependencies": { + "@aws-sdk/client-cloudformation": "^3.204.0", + "@aws-sdk/client-cloudfront": "^3.204.0", + "@aws-sdk/client-s3": "^3.204.0", + "@aws-sdk/credential-providers": "^3.204.0", + "@aws-sdk/types": "^3.201.0", + "@shiftcode/branch-utilities": "^5.0.2", + "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@types/yargs": "^17.0.5" + }, + "peerDependencies": { + "@aws-sdk/client-cloudformation": "^3.204.0", + "@aws-sdk/client-cloudfront": "^3.204.0", + "@aws-sdk/client-s3": "^3.204.0", + "@aws-sdk/credential-providers": "^3.204.0", + "@aws-sdk/types": "^3.201.0", + "@shiftcode/branch-utilities": "^5.0.2", + "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "tslib": "^2.3.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-cloudformation": { + "optional": true + }, + "@aws-sdk/client-cloudfront": { + "optional": true + }, + "@aws-sdk/client-s3": { + "optional": true + }, + "@aws-sdk/credential-providers": { + "optional": true + }, + "@aws-sdk/types": { + "optional": true + }, + "@shiftcode/branch-utilities": { + "optional": true + } + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/iac-utilities/src/aws-env-vars.ts b/packages/iac-utilities/src/aws-env-vars.ts new file mode 100644 index 0000000..6945965 --- /dev/null +++ b/packages/iac-utilities/src/aws-env-vars.ts @@ -0,0 +1,19 @@ +#!/usr/bin/env node + +import yargs from 'yargs' + +import { awsEnvVars, AwsEnvVarsOptions } from './scripts/index.js' + +const args = yargs(process.argv).option('configFilePath' satisfies keyof AwsEnvVarsOptions, { + alias: 'c', + type: 'string', + description: 'Relative path to the AWS accounts config file', +}).argv + +try { + const responseMsg = await awsEnvVars(args) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/aws-sso-configure-profiles.ts b/packages/iac-utilities/src/aws-sso-configure-profiles.ts new file mode 100644 index 0000000..94aa267 --- /dev/null +++ b/packages/iac-utilities/src/aws-sso-configure-profiles.ts @@ -0,0 +1,30 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { configureAwsProfiles, DEFAULT_PATH_TO_AWS_SSO_CONFIG } from './scripts/aws-sso-configure-profiles.function.js' + +const args = yargs(process.argv) + .option('config', { + alias: 'c', + type: 'string', + description: `path to the config file (default .${DEFAULT_PATH_TO_AWS_SSO_CONFIG}) from which the profiles will be copied to ~.aws/config. The content must match the schema defined in @shiftcode/iac-helper/aws-sso-config-schema.json`, + demandOption: true, + }) + .option('verbose', { + type: 'boolean', + default: false, + description: 'Run with verbose logging', + }) + .example( + 'aws-sso-configure-profiles -c ./aws-sso-config.json', + 'copies the aws sso profiles form the given configuration file to the default config location (~/.aws/config)', + ) + .showHelpOnFail(true).argv + +try { + const responseMsg = await configureAwsProfiles(args) + process.stdout.write(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/base/commons/base-bundle-info.type.ts b/packages/iac-utilities/src/base/commons/base-bundle-info.type.ts new file mode 100644 index 0000000..5402e8c --- /dev/null +++ b/packages/iac-utilities/src/base/commons/base-bundle-info.type.ts @@ -0,0 +1,11 @@ +export interface BaseBundleInfo { + handlerName: string + functionName: string + baseFilename: string + outPath: string +} + +export interface BundleInfo extends BaseBundleInfo { + entryPoint: string + filename: string +} diff --git a/packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.spec.ts b/packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.spec.ts new file mode 100644 index 0000000..0519dcc --- /dev/null +++ b/packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.spec.ts @@ -0,0 +1,31 @@ +import { describe, expect, test } from 'vitest' + +import { BundleInfo } from './base-bundle-info.type.js' +import { handlerToBundleInfo } from './handler-to-bundle-info.function.js' + +describe('handlerToBundleInfo', () => { + test(`works with default './dist' `, () => { + const expectedBundleInfo: BundleInfo = { + baseFilename: 'my-fn', + filename: 'my-fn.js', + entryPoint: './dist/functions/my-fn.js', + functionName: 'my-fn', + handlerName: 'handler', + outPath: './dist/webpack/functions/my-fn/', + } + expect(handlerToBundleInfo('functions/my-fn.handler')).toEqual(expectedBundleInfo) + }) + test('works with custom src/dest paths', () => { + const expectedBundleInfo: BundleInfo = { + baseFilename: 'my-fn', + filename: 'my-fn.js', + entryPoint: './dist/_esm2019/functions/my-fn.js', + functionName: 'my-fn', + handlerName: 'handler', + outPath: './dist/bundles/functions/my-fn/', + } + expect(handlerToBundleInfo('functions/my-fn.handler', './dist/_esm2019', './dist/bundles')).toEqual( + expectedBundleInfo, + ) + }) +}) diff --git a/packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.ts b/packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.ts new file mode 100644 index 0000000..1dd1c20 --- /dev/null +++ b/packages/iac-utilities/src/base/commons/handler-to-bundle-info.function.ts @@ -0,0 +1,40 @@ +import path from 'node:path' + +import { BundleInfo } from './base-bundle-info.type.js' + +/** + * creates bundle info for given lambdaFunctionName + * @param handler the lambda function name + * @param sourceDir path to the lambda functions src dir, default `./dist` + * @param destDir path to the outDir, default `{sourceDir}/webpack/` + * @example + * handlerToBundleInfo('functions/my-fn.handler') -> { + * baseFilename: 'my-fn', + * filename: 'my-fn.js', + * entryPoint: './dist/functions/my-fn.js', + * functionName: 'my-fn', + * handlerName: 'handler', + * outPath: './dist/webpack/functions/my-fn/', + * } + */ +export function handlerToBundleInfo(handler: string, sourceDir = './dist', destDir?: string): BundleInfo { + destDir = destDir ? destDir : `${sourceDir}/webpack` + + const baseNameParts = path.basename(handler).split('.') + // return function handler name --> eg 'handler' + // filename can contain '.' + const handlerName = baseNameParts.splice(-1)[0] + const baseFilename = baseNameParts.join('.') + const functionName = baseNameParts.join('-') + const dirname = path.dirname(handler) + // abc-fn.handler --> abc-fn.js + const filename = `${baseFilename}.js` + return { + entryPoint: `${sourceDir}/${dirname}/${filename}`, + outPath: `${destDir}/${dirname}/${baseFilename}/`, + baseFilename, + filename, + handlerName, + functionName, + } +} diff --git a/packages/iac-utilities/src/base/commons/iac-stack-config-error.ts b/packages/iac-utilities/src/base/commons/iac-stack-config-error.ts new file mode 100644 index 0000000..36ae3c4 --- /dev/null +++ b/packages/iac-utilities/src/base/commons/iac-stack-config-error.ts @@ -0,0 +1,5 @@ +export class IacStackConfigError extends Error { + constructor(message: string) { + super(message) + } +} diff --git a/packages/iac-utilities/src/base/commons/iac-stack-name-strategy.enum.ts b/packages/iac-utilities/src/base/commons/iac-stack-name-strategy.enum.ts new file mode 100644 index 0000000..37fc11e --- /dev/null +++ b/packages/iac-utilities/src/base/commons/iac-stack-name-strategy.enum.ts @@ -0,0 +1,6 @@ +export enum IacStackNameStrategy { + /** @deprecated This should only be used for projects sticking to name master for the default branch, other should use PROD_DEPENDANT_MAIN */ + PROD_DEPENDANT, + STAGE_DEPENDANT, + PROD_DEPENDANT_MAIN, +} diff --git a/packages/iac-utilities/src/base/commons/prod-switchable.model.ts b/packages/iac-utilities/src/base/commons/prod-switchable.model.ts new file mode 100644 index 0000000..74c8a68 --- /dev/null +++ b/packages/iac-utilities/src/base/commons/prod-switchable.model.ts @@ -0,0 +1,11 @@ +/** + * Object with values for prod and nonProd + */ +export interface ProdSwitchable { + prod: T + nonProd: T +} + +export type ProdSwitchableKey

= { + [Key in keyof P]: P[Key] extends ProdSwitchable ? P[Key]['prod' | 'nonProd'] : never +} diff --git a/packages/iac-utilities/src/base/commons/stage-switchable.model.ts b/packages/iac-utilities/src/base/commons/stage-switchable.model.ts new file mode 100644 index 0000000..af15e31 --- /dev/null +++ b/packages/iac-utilities/src/base/commons/stage-switchable.model.ts @@ -0,0 +1,15 @@ +/** + * Object with values for specific stages (pr??, xx??) if set or general prod/pr/xx + */ +export interface StageSwitchable { + prod: T + pr: T + xx: T + + // specific stage (pr??, xx??) + [key: string]: T +} + +export type StageSwitchableKey

= { + [Key in keyof P]: P[Key] extends StageSwitchable ? P[Key]['prod' | 'pr' | 'xx'] : never +} diff --git a/packages/iac-utilities/src/base/config/build-time-base-runtime-config-provider.fn.ts b/packages/iac-utilities/src/base/config/build-time-base-runtime-config-provider.fn.ts new file mode 100644 index 0000000..1db5200 --- /dev/null +++ b/packages/iac-utilities/src/base/config/build-time-base-runtime-config-provider.fn.ts @@ -0,0 +1,18 @@ +import { getBranchInfo } from '@shiftcode/branch-utilities' + +import { BaseRuntimeConfigProviderFn } from '../utils/iac-stack-config.service.js' + +const REGION_ENV_VAR = 'AWS_REGION' + +/** + * reads the branchInfo (stage, isProd isPr) and the aws region env var to build the {@link BaseRuntimeConfig} + */ +export const buildTimeBaseRuntimeConfigProvider: BaseRuntimeConfigProviderFn = () => { + const { stage, isProd, isPr } = getBranchInfo(process.env) + const region = process.env[REGION_ENV_VAR] + if (!region) { + throw new Error(`AWS region is not set in env (${REGION_ENV_VAR})`) + } + + return { stage, productionFlag: isProd, pullRequestFlag: isPr, region } +} diff --git a/packages/iac-utilities/src/base/config/env-based-base-runtime-config-provider.fn.ts b/packages/iac-utilities/src/base/config/env-based-base-runtime-config-provider.fn.ts new file mode 100644 index 0000000..f9d53a5 --- /dev/null +++ b/packages/iac-utilities/src/base/config/env-based-base-runtime-config-provider.fn.ts @@ -0,0 +1,10 @@ +import { BaseRuntimeConfig } from '../utils/base-runtime-config.type.js' +import { BaseRuntimeConfigProviderFn, IacStackConfigService } from '../utils/iac-stack-config.service.js' + +export const envBasedBaseRuntimeConfigProvider: BaseRuntimeConfigProviderFn = () => { + if (process && process.env[IacStackConfigService.envBaseRuntimeConfig] !== undefined) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return JSON.parse(process.env[IacStackConfigService.envBaseRuntimeConfig]!) as BaseRuntimeConfig + } + throw new Error('No base runtime config found in environment variables') +} diff --git a/packages/iac-utilities/src/base/index.ts b/packages/iac-utilities/src/base/index.ts new file mode 100644 index 0000000..6221e2e --- /dev/null +++ b/packages/iac-utilities/src/base/index.ts @@ -0,0 +1,13 @@ +export * from './commons/base-bundle-info.type.js' +export * from './commons/handler-to-bundle-info.function.js' +export * from './commons/iac-stack-config-error.js' +export * from './commons/iac-stack-name-strategy.enum.js' +export * from './commons/prod-switchable.model.js' +export * from './commons/stage-switchable.model.js' +export * from './config/build-time-base-runtime-config-provider.fn.js' +export * from './config/env-based-base-runtime-config-provider.fn.js' +export * from './utils/base-runtime-config.type.js' +export * from './utils/extend-with-iac-utils.function.js' +export * from './utils/iac-stack-config.service.js' +export * from './utils/switch-prod-dependant.function.js' +export * from './utils/type-utils.js' diff --git a/packages/iac-utilities/src/base/utils/base-runtime-config.type.ts b/packages/iac-utilities/src/base/utils/base-runtime-config.type.ts new file mode 100644 index 0000000..18ae562 --- /dev/null +++ b/packages/iac-utilities/src/base/utils/base-runtime-config.type.ts @@ -0,0 +1,6 @@ +export interface BaseRuntimeConfig { + stage: string + region: string + productionFlag: boolean + pullRequestFlag: boolean +} diff --git a/packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.spec.ts b/packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.spec.ts new file mode 100644 index 0000000..fff81d2 --- /dev/null +++ b/packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.spec.ts @@ -0,0 +1,50 @@ +import { StageInfo } from '@shiftcode/branch-utilities' +import { describe, expect, test } from 'vitest' + +import { IacStackNameStrategy } from '../commons/iac-stack-name-strategy.enum.js' +import { ProdSwitchable } from '../commons/prod-switchable.model.js' +import { StageSwitchable } from '../commons/stage-switchable.model.js' +import { extendWithIacUtils } from './extend-with-iac-utils.function.js' +import { IacStackConfigService } from './iac-stack-config.service.js' + +describe('extendWithIacUtils', () => { + class BaseClass { + constructor(readonly name: string) {} + } + + interface TestStackProps { + a: ProdSwitchable + b: StageSwitchable + c: boolean + } + + class TestStack extends extendWithIacUtils(BaseClass) { + constructor(name: string, props: TestStackProps, configService: IacStackConfigService) { + super([name], props, configService) + } + } + + test('works with correct type inference', () => { + const rtConfig: StageInfo = { + stage: 'xx1', + isPr: false, + isProd: false, + } + const region = 'eu-central-1' + const props: TestStackProps = { + a: { prod: 100, nonProd: 50 }, + b: { prod: '1', pr: '2', xx: '3', xx1: '4' }, + c: true, + } + const x = new TestStack( + 'test', + props, + new IacStackConfigService('iac-test', IacStackNameStrategy.STAGE_DEPENDANT, rtConfig, region), + ) + + expect(x.getProdDependantProp('a')).toEqual(50) + expect(x.getStageDependantProp('b')).toEqual('4') + expect(x.props.c).toEqual(true) + expect(x.configService.stackName).toBe('iac-test-xx1') + }) +}) diff --git a/packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.ts b/packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.ts new file mode 100644 index 0000000..6c6a731 --- /dev/null +++ b/packages/iac-utilities/src/base/utils/extend-with-iac-utils.function.ts @@ -0,0 +1,52 @@ +import { ProdSwitchable, ProdSwitchableKey } from '../commons/prod-switchable.model.js' +import { StageSwitchable, StageSwitchableKey } from '../commons/stage-switchable.model.js' +import { IacStackConfigService } from './iac-stack-config.service.js' +import { AllowedNames } from './type-utils.js' + +/** the IacUtils Interface */ +export interface IacUtils

{ + readonly props: P + readonly configService: IacStackConfigService + + getProdDependantProp>>(propKey: K): ProdSwitchableKey

[K] + + getStageDependantProp>>(propKey: K): StageSwitchableKey

[K] +} + +/** the IacUtils constructable type used as return type when calling the {@link extendWithIacUtils} function */ +export type IacUtilsConstructable any> = new ( + superArgs: ConstructorParameters, + params: P, + configService: IacStackConfigService, +) => InstanceType & IacUtils

+ +/** the actual Utilities function which takes any class to extend */ +export function extendWithIacUtils any>(clazz: T): IacUtilsConstructable { + // The Utilities class which implements the Utilities interface */ + class IacUtilsClazz extends (clazz) implements IacUtils

{ + constructor( + superArgs: ConstructorParameters, + readonly props: P, + readonly configService: IacStackConfigService, + ) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + super(...superArgs) + } + + /** + * get prod or nonProd value of a prodSwitchable property + */ + getProdDependantProp>>(propKey: K): ProdSwitchableKey

[K] { + return this.configService.switchProdDependant(>this.props[propKey]) + } + + /** + * get stage dependant value of a StageSwitchable property + */ + getStageDependantProp>>(propKey: K): StageSwitchableKey

[K] { + return this.configService.switchStageDependant(>this.props[propKey]) + } + } + + return IacUtilsClazz as IacUtilsConstructable +} diff --git a/packages/iac-utilities/src/base/utils/iac-stack-config.service.ts b/packages/iac-utilities/src/base/utils/iac-stack-config.service.ts new file mode 100644 index 0000000..223c6d8 --- /dev/null +++ b/packages/iac-utilities/src/base/utils/iac-stack-config.service.ts @@ -0,0 +1,134 @@ +import { StageInfo } from '@shiftcode/branch-utilities' + +import { IacStackNameStrategy } from '../commons/iac-stack-name-strategy.enum.js' +import { ProdSwitchable } from '../commons/prod-switchable.model.js' +import { StageSwitchable } from '../commons/stage-switchable.model.js' +import { BaseRuntimeConfig } from './base-runtime-config.type.js' + +export type BaseRuntimeConfigProviderFn = () => BaseRuntimeConfig + +export class IacStackConfigService { + /* eslint-disable-next-line @typescript-eslint/naming-convention */ + static readonly envBaseRuntimeConfig = 'SC_BASE_RUNTIME_CONFIG' + + readonly stackName: string + + constructor( + readonly stackBaseName: string, + private readonly nameStrategy: IacStackNameStrategy, + readonly stageInfo: StageInfo, + readonly region: string, + ) { + this.stackName = this.nameByStrategy(stackBaseName) + } + + /** + * concatenates given propertyToName according to defined nameStrategy. + * default mode is 'append' + */ + nameByStrategy(propertyToName: string, mode: 'append' | 'prepend' = 'append') { + switch (this.nameStrategy) { + case IacStackNameStrategy.PROD_DEPENDANT: + return this.prodDependantNaming('master', propertyToName, mode) + case IacStackNameStrategy.PROD_DEPENDANT_MAIN: + return this.prodDependantNaming('main', propertyToName, mode) + case IacStackNameStrategy.STAGE_DEPENDANT: + return this.stageDependantNaming(propertyToName, mode) + default: + throw new Error('Unsupported enum value for IacStackNameStrategy') + } + } + + /** + * create name by defined {@link nameByStrategy} and given region + * mode defaults to append + * @example + * nameByStrategyAndRegion('abc') => + */ + nameByStrategyAndRegion(propertyToName: string, mode: 'append' | 'prepend' = 'append') { + switch (this.nameStrategy) { + case IacStackNameStrategy.PROD_DEPENDANT: + return this.prodDependantNaming('master', this.regionDependantNaming(propertyToName, mode), mode) + case IacStackNameStrategy.PROD_DEPENDANT_MAIN: + return this.prodDependantNaming('main', this.regionDependantNaming(propertyToName, mode), mode) + case IacStackNameStrategy.STAGE_DEPENDANT: + return this.stageDependantNaming(this.regionDependantNaming(propertyToName, mode), mode) + default: + throw new Error('Unsupported enum value for IacStackNameStrategy') + } + } + + /** prepends the {@link stackName} to proveided propertyName */ + stackDependantNaming(propertyToName: string) { + return `${this.stackName}-${propertyToName}` + } + + /** + * get prod or nonProd value of a prodSwitchable property + */ + switchProdDependant(valueToSwitch: ProdSwitchable): K { + return this.stageInfo.isProd ? valueToSwitch.prod : valueToSwitch.nonProd + } + + prodDependant(prodValue: K, nonProd: K) { + return this.stageInfo.isProd ? prodValue : nonProd + } + + /** + * get stage dependant value of a StageSwitchable property + * (falls back to the xx value if actual stage is not defined in valueToSwitch) + */ + switchStageDependant(valueToSwitch: StageSwitchable): K { + const { stage, isProd, isPr } = this.stageInfo + if (stage in valueToSwitch) { + return valueToSwitch[stage] + } + if (isProd) { + return valueToSwitch.prod + } + if (isPr) { + return valueToSwitch.pr + } + return valueToSwitch.xx + } + + /** + * create a stack and region dependant bucket name + * @return `${stackName}-${region}-${name}` + */ + createBucketName(name: string): string { + return `${this.stackName}-${this.region}-${name}` + } + + /** + * concatenates given propertyToName with the region. + * mode defaults to append (= `${propertyToName}-${region}`) + */ + private regionDependantNaming(propertyToName: string, mode: 'append' | 'prepend' = 'append') { + return mode === 'append' ? `${propertyToName}-${this.region}` : `${this.region}-${propertyToName}` + } + + /** + * concatenates given propertyToName with the stage. + * mode defaults to append (= `${propertyToName}-${stage}`) + */ + private stageDependantNaming(propertyToName: string, mode: 'append' | 'prepend' = 'append') { + return mode === 'append' ? `${propertyToName}-${this.stageInfo.stage}` : `${this.stageInfo.stage}-${propertyToName}` + } + + /** + * Since prod currently is represented by either 'master' | 'main' we support both keywords. + * Concatenates given propertyToName with either 'nonProd' or 'master'|'main' (depending on naming convention). + * mode defaults to append (= `${propertyToName}-${nonProd|}`) + */ + private prodDependantNaming( + prodKeyword: 'master' | 'main', + propertyToName: string, + mode: 'append' | 'prepend' = 'append', + ) { + // we call the prod stack master to be congruent with stack dependant naming + const toAdd = this.stageInfo.isProd ? prodKeyword : 'nonProd' + + return mode === 'append' ? `${propertyToName}-${toAdd}` : `${toAdd}-${propertyToName}` + } +} diff --git a/packages/iac-utilities/src/base/utils/switch-prod-dependant.function.ts b/packages/iac-utilities/src/base/utils/switch-prod-dependant.function.ts new file mode 100644 index 0000000..0f31dc7 --- /dev/null +++ b/packages/iac-utilities/src/base/utils/switch-prod-dependant.function.ts @@ -0,0 +1,11 @@ +import { ProdSwitchable } from '../commons/prod-switchable.model.js' + +export function switchProdDependant( + switchable: ProdSwitchable, + runtimeConfig: { common: { productionFlag: boolean } }, +): K { + if (runtimeConfig.common.productionFlag) { + return switchable.prod + } + return switchable.nonProd +} diff --git a/packages/iac-utilities/src/base/utils/type-utils.ts b/packages/iac-utilities/src/base/utils/type-utils.ts new file mode 100644 index 0000000..28fd419 --- /dev/null +++ b/packages/iac-utilities/src/base/utils/type-utils.ts @@ -0,0 +1,5 @@ +export type FilterFlags = { + [Key in keyof Base]: Base[Key] extends Condition ? Key : never +} + +export type AllowedNames = FilterFlags[keyof Base] diff --git a/packages/iac-utilities/src/credentials-helper.ts b/packages/iac-utilities/src/credentials-helper.ts new file mode 100644 index 0000000..1287779 --- /dev/null +++ b/packages/iac-utilities/src/credentials-helper.ts @@ -0,0 +1,13 @@ +#!/usr/bin/env node +import { credentialsInit } from './scripts/index.js' + +// simply get the first provided arg +const profileArg = process.argv[2] + +try { + await credentialsInit(profileArg) + // noop as the credential_process output is already written to stdout +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/export-base-runtime-config.ts b/packages/iac-utilities/src/export-base-runtime-config.ts new file mode 100644 index 0000000..05c8ca0 --- /dev/null +++ b/packages/iac-utilities/src/export-base-runtime-config.ts @@ -0,0 +1,36 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { exportBaseRuntimeConfig } from './scripts/index.js' + +const args = yargs(process.argv) + .option('destination', { + alias: 'd', + type: 'string', + description: 'relative target path', + default: './', + }) + .option('filename', { + alias: 'f', + type: 'string', + description: 'name for file to write', + default: 'base-runtime-config.json', + }) + .option('stage', { + alias: 's', + type: 'string', + description: 'create base runtime with provided stage', + }) + .option('region', { + alias: 'r', + type: 'string', + description: 'create base runtime with provided region', + }).argv + +try { + const responseMsg = await exportBaseRuntimeConfig(args) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/export-stack-outputs.ts b/packages/iac-utilities/src/export-stack-outputs.ts new file mode 100644 index 0000000..6f93dba --- /dev/null +++ b/packages/iac-utilities/src/export-stack-outputs.ts @@ -0,0 +1,31 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { exportStackOutputs } from './scripts/index.js' + +const args = yargs(process.argv) + .option('stackName', { + alias: 'n', + type: 'string', + description: 'stackname from which the outputs should be fetched', + demandOption: true, + }) + .option('destination', { + alias: 'd', + type: 'string', + description: 'relative target path', + default: './', + }) + .option('fileName', { + alias: 'f', + type: 'string', + description: 'name for file to write (default [stackname].cf-outputs.json)', + }).argv + +try { + const responseMsg = await exportStackOutputs(args) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/export-stage-info.ts b/packages/iac-utilities/src/export-stage-info.ts new file mode 100644 index 0000000..6741005 --- /dev/null +++ b/packages/iac-utilities/src/export-stage-info.ts @@ -0,0 +1,31 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { exportStageInfo } from './scripts/index.js' + +const args = yargs(process.argv) + .option('destination', { + alias: 'd', + type: 'string', + description: 'relative target path', + default: './', + }) + .option('filename', { + alias: 'f', + type: 'string', + description: 'name for file to write', + default: 'stage-info.json', + }) + .option('stage', { + alias: 's', + type: 'string', + description: 'create stage-info with provided stage', + }).argv + +try { + const responseMsg = await exportStageInfo(args) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/fetch-client-config.ts b/packages/iac-utilities/src/fetch-client-config.ts new file mode 100644 index 0000000..57c8777 --- /dev/null +++ b/packages/iac-utilities/src/fetch-client-config.ts @@ -0,0 +1,44 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { fetchClientConfig } from './scripts/index.js' + +const DEFAULT_OUTPUT_KEY = 'CFO_CLIENT_CONFIG_URL' + +const args = yargs(process.argv) + .option('outputs', { + alias: 'o', + type: 'string', + description: `path to the outputs json file. needs to define ${DEFAULT_OUTPUT_KEY}`, + demandOption: true, + }) + .option('key', { + type: 'string', + description: `key to read in the outputs.json file containing the client-config url`, + default: DEFAULT_OUTPUT_KEY, + }) + .option('destination', { + alias: 'd', + type: 'string', + description: 'relative target path', + default: './', + }) + .option('write', { + type: 'boolean', + description: 'write to file (default: true)', + default: true, + }).argv + +try { + const resolvedArgs = await args + const responseMsg = await fetchClientConfig({ + outputs: resolvedArgs.outputs, + key: resolvedArgs.key, + destination: resolvedArgs.destination, + noWrite: !resolvedArgs.write, + }) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/index.ts b/packages/iac-utilities/src/index.ts new file mode 100644 index 0000000..13e1683 --- /dev/null +++ b/packages/iac-utilities/src/index.ts @@ -0,0 +1 @@ +export * from './base/index.js' diff --git a/packages/iac-utilities/src/invalidate-cf-cache.ts b/packages/iac-utilities/src/invalidate-cf-cache.ts new file mode 100644 index 0000000..ce30c48 --- /dev/null +++ b/packages/iac-utilities/src/invalidate-cf-cache.ts @@ -0,0 +1,34 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { invalidateCfCache } from './scripts/index.js' + +const DEFAULT_OUTPUT_KEY = 'CFO_CLOUD_FRONT_DISTRIBUTION_ID' + +const args = yargs(process.argv) + .option('outputs', { + alias: 'o', + type: 'string', + description: `path to the outputs json file. needs to define ${DEFAULT_OUTPUT_KEY}`, + demandOption: true, + }) + .option('key', { + type: 'string', + description: `key to read in the outputs.json file containing the cloudFront distribution ID`, + default: DEFAULT_OUTPUT_KEY, + }) + .option('wait', { type: 'boolean', default: false, description: 'wait until invalidation is done' }) + .option('items', { + array: true, + type: 'string', + description: 'items to invalidate', + default: ['/*'], + }).argv + +try { + const responseMsg = await invalidateCfCache(args) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/json-schemas/aws-sso-profiles-definition-schema.json b/packages/iac-utilities/src/json-schemas/aws-sso-profiles-definition-schema.json new file mode 100644 index 0000000..f68ff2a --- /dev/null +++ b/packages/iac-utilities/src/json-schemas/aws-sso-profiles-definition-schema.json @@ -0,0 +1,99 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "aws-sso-profiles-config://config-definition", + "title": "AWS SSO profiles config definition", + "type": "object", + "properties": { + "profileByStage": { + "type": "object", + "description": "Configures the mapping between the stage and the profile to use, currently we only support prod & dev.", + "minProperties": 1, + "properties": { + "prod": { + "type": "string" + }, + "dev": { + "type": "string" + } + }, + "additionalProperties": false + }, + "profiles": { + "type": "object", + "description": "Configures all the available profiles which can be referenced by the profileByStage property.", + "minProperties": 1, + "patternProperties": { + "^\\w*-(prod|dev){1}$": { + "anyOf": [ + { + "$ref": "#/$defs/directSsoProfile" + }, + { + "$ref": "#/$defs/ssoOnlyProfile" + }, + { + "$ref": "#/$defs/assumeRoleProfile" + } + ] + } + } + } + }, + "required": ["profileByStage", "profiles"], + "$defs": { + "directSsoProfile": { + "type": "object", + "required": ["sso_session", "sso_account_id", "sso_role_name", "region", "output"], + "properties": { + "sso_session": { + "type": "string" + }, + "sso_account_id": { + "type": "string" + }, + "sso_role_name": { + "type": "string" + }, + "region": { + "type": "string" + }, + "output": { + "enum": ["json"] + } + } + }, + "ssoOnlyProfile": { + "type": "object", + "required": ["sso_session", "sso_account_id", "sso_role_name"], + "properties": { + "sso_session": { + "type": "string" + }, + "sso_account_id": { + "type": "string" + }, + "sso_role_name": { + "type": "string" + } + } + }, + "assumeRoleProfile": { + "type": "object", + "required": ["source_profile", "role_arn", "region", "output"], + "properties": { + "source_profile": { + "type": "string" + }, + "role_arn": { + "type": "string" + }, + "region": { + "type": "string" + }, + "output": { + "enum": ["json"] + } + } + } + } +} diff --git a/packages/iac-utilities/src/json-schemas/s3-upload-definition-schema.json b/packages/iac-utilities/src/json-schemas/s3-upload-definition-schema.json new file mode 100644 index 0000000..69388c7 --- /dev/null +++ b/packages/iac-utilities/src/json-schemas/s3-upload-definition-schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "upload-to-s3://s3-upload-definition", + "title": "S3 Upload Definitions", + "type": "object", + "required": ["definitions"], + "properties": { + "definitions": { + "type": "array", + "items": { + "type": "object", + "required": ["include", "cacheControl"], + "properties": { + "include": { + "type": "array", + "description": "Localization files to use for i18n", + "items": { + "type": "string", + "description": "glob pattern", + "examples": ["*.css", "*.js"] + }, + "minItems": 1 + }, + "cacheControl": { + "type": "string", + "description": "cache control to set when uploading", + "examples": ["max-age=0, s-maxage=300", "max-age=604800"] + }, + "contentType": { + "type": "string", + "description": "content type to set when uploading", + "examples": ["text/html; charset=utf-8*"] + } + } + }, + "minItems": 1 + } + } +} diff --git a/packages/iac-utilities/src/scripts/aws-env-vars.function.ts b/packages/iac-utilities/src/scripts/aws-env-vars.function.ts new file mode 100644 index 0000000..5fd7351 --- /dev/null +++ b/packages/iac-utilities/src/scripts/aws-env-vars.function.ts @@ -0,0 +1,31 @@ +import path from 'node:path' + +import { getBranchInfo, isGithubWorkflow } from '@shiftcode/branch-utilities' + +import { resolveActiveProfile } from './aws-sso-configure-profiles.function.js' + +export interface AwsEnvVarsOptions { + configFilePath?: string +} + +export async function awsEnvVars(options: AwsEnvVarsOptions | Promise): Promise { + const opts = await options + + const oldLogger = console.log + console.log = () => void 0 + + const { isProd } = getBranchInfo(process.env) + + const filePath = path.join(process.cwd(), opts.configFilePath || './aws-accounts.config.json') + + const activeProfile = await resolveActiveProfile(isProd, filePath) + + console.log = oldLogger + // Keep in mind this is a multiline template string, do not format / indent it. + return `${ + isGithubWorkflow(process.env) + ? `export SC_AWS_ACCOUNT_ID=${activeProfile.sso_account_id}` + : `export AWS_PROFILE=${activeProfile.profileName}` + } +export AWS_REGION=${activeProfile.region}` +} diff --git a/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts b/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts new file mode 100644 index 0000000..99ef308 --- /dev/null +++ b/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts @@ -0,0 +1,140 @@ +import { execSync } from 'node:child_process' +import { existsSync } from 'node:fs' +import { readFile } from 'node:fs/promises' + +import { Ajv, ValidateFunction } from 'ajv' + +// eslint-disable-next-line import/no-internal-modules +import awsSsoProfileConfigSchema from '../json-schemas/aws-sso-profiles-definition-schema.json' with { type: 'json' } + +export const DEFAULT_PATH_TO_AWS_SSO_CONFIG = '/aws/sso.config.json' + +export const AWS_SSO_CONFIG_SCHEMA_NAME = '@shiftcode/iac-helper/aws-sso-profile-config-schema.json' + +type AwsSsoConfigDefSchemaName = `${string}${typeof AWS_SSO_CONFIG_SCHEMA_NAME}` + +type AwsSsoProfileStage = 'prod' | 'dev' + +type SsoProfile = { + /* eslint-disable @typescript-eslint/naming-convention */ + sso_session: string + sso_account_id: string + sso_role_name: string + region: string + output: string + /* eslint-enable @typescript-eslint/naming-convention */ +} + +/** + * this type reflects the json schema of {@link ./aws-sso-profile-config-schema.json} + */ +interface AwsSsoProfileConfig { + $schema: AwsSsoConfigDefSchemaName + profileByStage: Record + profiles: Record +} + +export interface AwsConfigureProfilesOptions { + config: string + verbose: boolean +} + +const info: Console['log'] = (...a: any[]) => console.log('awsSsoCopyConfig ::', ...a) + +/** + * ensures the aws cli is installed + */ +export function assertAWSCliInstalled() { + try { + execSync('aws --version') + return true + } catch { + throw new Error('Unable to execute "aws --version" - Do you have the AWS CLI installed?') + } +} + +/** + * reads the config file from the given path and validates it against the JSON schema + * @param path + */ +async function readConfigFile(path: string): Promise { + if (!existsSync(path)) { + throw new Error(`AWS SSO config file '${path}' does not exist.`) + } + const file = await readFile(path, 'utf8') + const parsed = JSON.parse(file) + + const schemaValidator: ValidateFunction = new Ajv({ allErrors: true, strict: 'log' }).compile( + awsSsoProfileConfigSchema, + ) + const valid = schemaValidator(parsed) + + if (valid) { + // ensure the values in profileByStage point to valid profile definitions + const allProfiles = Object.keys(parsed.profiles) + if (Object.values(parsed.profileByStage).some((profileName) => !allProfiles.includes(profileName))) { + throw new Error( + `At least one profile is referenced in the profileByStage section but not defined in the profiles section`, + ) + } + + return parsed + } + + info('invalid definitions file:', schemaValidator.errors) + throw new Error(`Config file does not match schema`) +} + +export async function configureAwsProfiles( + options: AwsConfigureProfilesOptions | Promise, +) { + const opts = await options + const log: Console['log'] = opts.verbose ? (...a: any[]) => console.log('awsSsoCopyConfig ::', ...a) : () => {} + + // make sure the aws cli is installed + assertAWSCliInstalled() + log(`AWS CLI installation verified`) + + const awsSsoConfig = await readConfigFile(opts.config ?? DEFAULT_PATH_TO_AWS_SSO_CONFIG) + log(`AWS SSO config file loaded from '${opts.config}'`, JSON.stringify(awsSsoConfig, undefined, 2)) + + for (const [profileName, profileSettings] of Object.entries(awsSsoConfig.profiles)) { + if (profileSettings) { + for (const [key, value] of Object.entries(profileSettings)) { + const command = `aws configure set profile.${profileName}.${key} ${value}` + log(`executing: ${command}`) + execSync(command) + } + } + } + + const existingProfiles = execSync('aws configure list-profiles').toString().split('\n') + existingProfiles.pop() // remove last empty line + info( + 'AWS profiles added to your local AWS CLI configuration (~/.aws/config). You now have the following profiles in your config:', + ) + for (const profile of existingProfiles) { + info(`- ${profile}`) + } + return 'DONE' +} + +export async function resolveActiveProfile( + isProd: boolean, + configFilePath = DEFAULT_PATH_TO_AWS_SSO_CONFIG, +): Promise { + const stage = isProd ? 'prod' : 'dev' + const configFile = await readConfigFile(configFilePath) + info('configFile', configFile) + + const ssoProfileName = configFile.profileByStage[stage] + + const activeSsoProfile = configFile.profiles[ssoProfileName] + if (!activeSsoProfile) { + throw new Error( + `No profile found for stage ${stage}, existing stages are ${Object.keys(configFile.profileByStage).join(', ')}`, + ) + } + + return { ...activeSsoProfile, profileName: ssoProfileName } +} diff --git a/packages/iac-utilities/src/scripts/credentials-helper.function.ts b/packages/iac-utilities/src/scripts/credentials-helper.function.ts new file mode 100644 index 0000000..d3a0f13 --- /dev/null +++ b/packages/iac-utilities/src/scripts/credentials-helper.function.ts @@ -0,0 +1,56 @@ +import { execSync } from 'node:child_process' + +import { fromSSO } from '@aws-sdk/credential-providers' +import { Credentials } from '@aws-sdk/types' + +/* + * Credential helper to export temporary credentials from AWS SSO to AWS SDK v2 based tools like aws-cdk. + * This package can be removed once https://github.com/aws/aws-cdk/issues/5455 is closed + * and all our internal tools are using v3 AWS JS SDK. + * You can use it as credential_process inside the aws config. + */ +export async function credentialsInit(profile: string | undefined) { + if (!profile) { + throw new Error('You have to provide a profile as first arg') + } + try { + if (isAWSCliInstalled()) { + const result = await fromSSO({ profile })() + writeKeys(result, profile, true) + } + } catch (e: unknown) { + if (e && typeof e === 'object' && 'message' in e && String(e.message).indexOf('run aws sso login') !== -1) { + execSync(`aws sso login --profile ${profile}`) + await credentialsInit(profile) + } else { + throw e + } + } +} + +function isAWSCliInstalled(): boolean { + try { + execSync('aws --version') + return true + } catch { + throw new Error('Unable to execute "aws --version" - Do you have the AWS CLI installed?') + } +} + +function writeKeys(credentials: Credentials, profile: string, toConsole = false) { + if (toConsole) { + console.log( + JSON.stringify({ + Version: 1, + AccessKeyId: credentials.accessKeyId, + SecretAccessKey: credentials.secretAccessKey, + SessionToken: credentials.sessionToken, + Expiration: credentials.expiration?.toISOString(), + }), + ) + } else { + execSync(`aws configure set --profile active_SSO-${profile} aws_access_key_id ${credentials.accessKeyId}`) + execSync(`aws configure set --profile active_SSO-${profile} aws_secret_access_key ${credentials.secretAccessKey}`) + execSync(`aws configure set --profile active_SSO-${profile} aws_session_token ${credentials.sessionToken}`) + } +} diff --git a/packages/iac-utilities/src/scripts/export-base-runtime.function.ts b/packages/iac-utilities/src/scripts/export-base-runtime.function.ts new file mode 100644 index 0000000..08612da --- /dev/null +++ b/packages/iac-utilities/src/scripts/export-base-runtime.function.ts @@ -0,0 +1,58 @@ +import { mkdir, writeFile } from 'node:fs/promises' +import path from 'node:path' + +import { buildTimeBaseRuntimeConfigProvider } from '../base/config/build-time-base-runtime-config-provider.fn.js' +import { BaseRuntimeConfig } from '../base/index.js' + +interface ExportBaseRuntimeConfigOptions { + destination: string + filename: string + stage?: string + region?: string +} + +export async function exportBaseRuntimeConfig( + options: ExportBaseRuntimeConfigOptions | Promise, +) { + const opts = await options + let config: BaseRuntimeConfig + + if (opts.stage && opts.region) { + // make sure when stage and region is set, never call buildTimeBaseRuntimeConfigProvider (SM) + config = createConfig(opts.stage, opts.region) + } else if (opts.stage) { + config = createConfig(opts.stage, buildTimeBaseRuntimeConfigProvider().region) + } else { + config = buildTimeBaseRuntimeConfigProvider() + } + + if (!opts.filename.endsWith('.json')) { + throw new Error('name has to end with `.json`') + } + + const configNice = JSON.stringify(config, undefined, 2) + + const destinationPath = path.join(process.cwd(), opts.destination) + + await mkdir(destinationPath, { recursive: true }) + + const filePath = path.join(destinationPath, opts.filename) + console.info(`writing file to ${filePath}`) + await writeFile(filePath, configNice, { encoding: 'utf8' }) + + return configNice +} + +function createConfig(stage: string, region: string): BaseRuntimeConfig { + const isPr = stage.startsWith('pr') + const isXx = stage.startsWith('xx') + if (!isPr && !isXx) { + throw new Error('The provided stage neither is xx nor pr.') + } + return { + region, + stage, + productionFlag: false, + pullRequestFlag: isPr, + } +} diff --git a/packages/iac-utilities/src/scripts/export-stack-outputs.function.spec.ts b/packages/iac-utilities/src/scripts/export-stack-outputs.function.spec.ts new file mode 100644 index 0000000..bd85072 --- /dev/null +++ b/packages/iac-utilities/src/scripts/export-stack-outputs.function.spec.ts @@ -0,0 +1,19 @@ +import { describe, expect, test } from 'vitest' + +import { createJson } from './export-stack-outputs.function.js' + +describe('export stack outputs', () => { + test('create correct json', () => { + const json = JSON.parse( + createJson([ + { + Description: 'description', + OutputKey: 'Some-Output-Key', + OutputValue: 'Some-Output-Value', + ExportName: 'ExportName', + }, + ]), + ) + expect(json).toEqual({ CFO_SOME_OUTPUT_KEY: 'Some-Output-Value' }) + }) +}) diff --git a/packages/iac-utilities/src/scripts/export-stack-outputs.function.ts b/packages/iac-utilities/src/scripts/export-stack-outputs.function.ts new file mode 100644 index 0000000..798e3f7 --- /dev/null +++ b/packages/iac-utilities/src/scripts/export-stack-outputs.function.ts @@ -0,0 +1,63 @@ +import { mkdir, writeFile } from 'node:fs/promises' +import path from 'node:path' + +import { CloudFormationClient, DescribeStacksCommand } from '@aws-sdk/client-cloudformation' +import snakeCase from 'just-snake-case' + +export interface ExportStackOutputsOptions { + stackName: string + destination: string + fileName?: string +} + +export async function exportStackOutputs( + options: ExportStackOutputsOptions | Promise, +): Promise { + const opts = await options + const cfn = new CloudFormationClient({}) + const stacks = await cfn.send(new DescribeStacksCommand({ StackName: opts.stackName })) + if (!stacks.Stacks) { + throw new Error(`no stack found with name ${opts.stackName}`) + } + const outputs = stacks.Stacks?.[0].Outputs + + if (!outputs) { + throw new Error('no stack outputs found') + } + + const dirPath = path.join(process.cwd(), opts.destination) + + await mkdir(dirPath, { recursive: true }) + + const filePath = path.join(dirPath, opts.fileName || `${opts.stackName}.cf-outputs.json`) + + await writeFile(filePath, createJson(outputs), { encoding: 'utf8' }) + + // await Promise.all([ + // writeFile(`./${productName}.cf-outputs.sh`, createSh(outputs), { encoding: 'utf8' }), + // ]) + + return 'DONE' +} + +// copy-pasted since not exported +/* eslint-disable @typescript-eslint/naming-convention */ +interface Output { + OutputKey?: string + OutputValue?: string + Description?: string + ExportName?: string +} +/* eslint-enable @typescript-eslint/naming-convention */ + +export function createJson(outputs: Output[]): string { + const obj = outputs.reduce>( + (u, output) => ({ + ...u, + [`CFO_${snakeCase(output.OutputKey).toUpperCase()}`]: output.OutputValue ?? null, + }), + {}, + ) + + return JSON.stringify(obj, undefined, 2) +} diff --git a/packages/iac-utilities/src/scripts/export-stage-info.function.ts b/packages/iac-utilities/src/scripts/export-stage-info.function.ts new file mode 100644 index 0000000..d586c5e --- /dev/null +++ b/packages/iac-utilities/src/scripts/export-stage-info.function.ts @@ -0,0 +1,34 @@ +import { mkdir, writeFile } from 'node:fs/promises' +import path from 'node:path' + +import { createStageInfo, getBranchInfo, StageInfo } from '@shiftcode/branch-utilities' + +export interface ExportStageInfoOptions { + destination: string + filename: string + stage?: string +} + +export async function exportStageInfo(options: ExportStageInfoOptions | Promise) { + const opts = await options + + if (!opts.filename.endsWith('.json')) { + throw new Error('name has to end with `.json`') + } + + let info: StageInfo + if (opts.stage) { + info = createStageInfo(opts.stage) + } else { + const { stage, isProd, isPr } = getBranchInfo(process.env) + info = { stage, isProd, isPr } + } + + const infoNice = JSON.stringify(info, undefined, 2) + const destinationPath = path.join(process.cwd(), opts.destination) + await mkdir(destinationPath, { recursive: true }) + const filePath = path.join(destinationPath, opts.filename) + console.info(`writing file to ${filePath}`) + await writeFile(filePath, infoNice, { encoding: 'utf8' }) + return infoNice +} diff --git a/packages/iac-utilities/src/scripts/fetch-client-config.function.ts b/packages/iac-utilities/src/scripts/fetch-client-config.function.ts new file mode 100644 index 0000000..d02f2f1 --- /dev/null +++ b/packages/iac-utilities/src/scripts/fetch-client-config.function.ts @@ -0,0 +1,33 @@ +import { execSync } from 'node:child_process' +import { mkdir, writeFile } from 'node:fs/promises' +import path from 'node:path' + +import { readFromStackOutput } from './script-utils.js' + +export interface FetchClientConfigOptions { + outputs: string + destination: string + key: string + noWrite?: boolean +} + +export async function fetchClientConfig(options: FetchClientConfigOptions | Promise) { + const opts = await options + const clientConfigUrl = await readFromStackOutput(opts.outputs, opts.key) + + const raw = execSync(`curl ${clientConfigUrl}`, { encoding: 'utf8' }).trim() + + const parsed = JSON.parse(raw) + const pretty = JSON.stringify(parsed, undefined, 2) + + if (!opts.noWrite) { + const dirPath = path.join(process.cwd(), opts.destination) + + await mkdir(dirPath, { recursive: true }) + const filePath = path.join(dirPath, 'client-config') + + await writeFile(filePath, pretty, { encoding: 'utf8' }) + } + + return pretty +} diff --git a/packages/iac-utilities/src/scripts/index.ts b/packages/iac-utilities/src/scripts/index.ts new file mode 100644 index 0000000..4ecaaa6 --- /dev/null +++ b/packages/iac-utilities/src/scripts/index.ts @@ -0,0 +1,10 @@ +export * from './aws-env-vars.function.js' +export * from './aws-sso-configure-profiles.function.js' +export * from './credentials-helper.function.js' +export * from './export-base-runtime.function.js' +export * from './export-stack-outputs.function.js' +export * from './export-stage-info.function.js' +export * from './fetch-client-config.function.js' +export * from './invalidated-cf-cache.function.js' +export * from './stage-override-to-pr-base.function.js' +export * from './upload-to-s3.function.js' diff --git a/packages/iac-utilities/src/scripts/invalidated-cf-cache.function.ts b/packages/iac-utilities/src/scripts/invalidated-cf-cache.function.ts new file mode 100644 index 0000000..14d0cb2 --- /dev/null +++ b/packages/iac-utilities/src/scripts/invalidated-cf-cache.function.ts @@ -0,0 +1,63 @@ +import { promisify } from 'node:util' + +import { CloudFrontClient, CreateInvalidationCommand, GetInvalidationCommand } from '@aws-sdk/client-cloudfront' + +import { readFromStackOutput } from './script-utils.js' + +const sleep = promisify(setTimeout) +const client = new CloudFrontClient({}) + +export interface InvalidatedCfCacheOptions { + outputs: string + key: string + wait: boolean + items: string[] +} + +export async function invalidateCfCache(options: InvalidatedCfCacheOptions | Promise) { + const opts = await options + const distributionId = await readFromStackOutput(opts.outputs, opts.key) + + const createInvCmd = new CreateInvalidationCommand({ + DistributionId: distributionId, + InvalidationBatch: { + CallerReference: `ci:invalidate-cf-cache-${Date.now()}`, + Paths: { + Quantity: opts.items.length, + Items: opts.items, + }, + }, + }) + const response = await client.send(createInvCmd) + + if (!response.Invalidation?.Id) { + throw new Error(`Failed creating Invalidation on ${distributionId}`) + } + + if (opts.wait) { + await waitUntilDone(distributionId, response.Invalidation.Id) + return `successfully invalidated the Distribution ${distributionId}` + } else { + return `successfully sent invalidationRequest to Distribution ${distributionId}` + } +} + +async function waitUntilDone(distributionId: string, invalidationId: string, timeout = 1_000): Promise { + await sleep(timeout) + + const getInvCmd = new GetInvalidationCommand({ + DistributionId: distributionId, + Id: invalidationId, + }) + + const response = await client.send(getInvCmd) + + if (!response.Invalidation) { + throw new Error(`Could not get Invalidation ${invalidationId} from Distribution ${distributionId}`) + } + console.log(`Status ${invalidationId}: ${response.Invalidation.Status}`) + + if (response.Invalidation.Status !== 'Completed') { + await waitUntilDone(distributionId, invalidationId, timeout) + } +} diff --git a/packages/iac-utilities/src/scripts/script-utils.ts b/packages/iac-utilities/src/scripts/script-utils.ts new file mode 100644 index 0000000..3fbb5d8 --- /dev/null +++ b/packages/iac-utilities/src/scripts/script-utils.ts @@ -0,0 +1,25 @@ +import { existsSync } from 'node:fs' +import { readFile } from 'node:fs/promises' + +export const colorize = { + important: (txt: string) => `\x1b[44m\x1b[36m${txt}\x1b[0m`, + red: (txt: string) => `\x1b[31m${txt}\x1b[0m`, + green: (txt: string) => `\x1b[32m${txt}\x1b[0m`, +} + +function hasProp(object: T, property: K): object is T & Record { + return typeof object === 'object' && object !== null && property in object +} + +export async function readFromStackOutput(fileName: string, variable: string): Promise { + if (!existsSync(fileName)) { + throw new Error(`stack output json file '${fileName}' does not exist.`) + } + const file = await readFile(fileName, 'utf8') + const parsed: unknown = JSON.parse(file) + + if (hasProp(parsed, variable) && typeof parsed[variable] === 'string') { + return parsed[variable] + } + throw new Error(`invalid stack output json file '${fileName}': could not read '${variable}'`) +} diff --git a/packages/iac-utilities/src/scripts/stage-override-to-pr-base.function.ts b/packages/iac-utilities/src/scripts/stage-override-to-pr-base.function.ts new file mode 100644 index 0000000..def7baf --- /dev/null +++ b/packages/iac-utilities/src/scripts/stage-override-to-pr-base.function.ts @@ -0,0 +1,18 @@ +import { execSync } from 'node:child_process' + +interface GitHubPr { + headRefName: string +} + +export function stageOverrideToPrBase(): string { + const gitHubPrJson = execSync('gh pr list --json headRefName,title,isDraft,closed', { encoding: 'utf8' }).trim() + const gitHubPrs: GitHubPr[] = JSON.parse(gitHubPrJson) + + const branchNameOverride = process.env['GITHUB_BASE_REF'] + const isPrOverride = !!gitHubPrs.find((pr) => pr.headRefName === branchNameOverride) + + return ` + export SC_OVERRIDE_BRANCH_NAME=${branchNameOverride} + export SC_OVERRIDE_IS_PR=${isPrOverride} + ` +} diff --git a/packages/iac-utilities/src/scripts/upload-to-s3.function.ts b/packages/iac-utilities/src/scripts/upload-to-s3.function.ts new file mode 100644 index 0000000..e449dbb --- /dev/null +++ b/packages/iac-utilities/src/scripts/upload-to-s3.function.ts @@ -0,0 +1,169 @@ +import { existsSync } from 'node:fs' +import { readFile } from 'node:fs/promises' + +import { DeleteObjectsCommand, ListObjectsV2Command, PutObjectCommand, S3Client } from '@aws-sdk/client-s3' +import { Ajv, ValidateFunction } from 'ajv' +import glob from 'fast-glob' +import mime from 'mime' + +// keep import so it's copied to the dist folder +// eslint-disable-next-line import/no-internal-modules +import s3DefinitionSchema from '../json-schemas/s3-upload-definition-schema.json' with { type: 'json' } +import { colorize, readFromStackOutput } from './script-utils.js' + +export const S3_UPLOAD_DEFINITION_SCHEMA_NAME = '@shiftcode/iac-helper/s3-upload-definition-schema.json' + +type S3UploadDefSchemaName = `${string}${typeof S3_UPLOAD_DEFINITION_SCHEMA_NAME}` + +/** + * this type reflects the json schema of {@link ./s3-upload-definition-schema.json} + */ +interface S3UploadDefinitionFile { + $schema: S3UploadDefSchemaName + definitions: S3UploadDefinition[] +} + +interface S3UploadDefinition { + include: string[] + cacheControl: string + contentType?: string +} + +const info: Console['log'] = (...a: any[]) => console.log('publishClientToS3 ::', ...a) + +const client = new S3Client({}) + +export interface UploadToS3Options { + dir: string + outputs: string + key: string + prune: boolean + definitions: string + dry: boolean + verbose: boolean +} + +export async function uploadToS3(options: UploadToS3Options | Promise) { + const opts = await options + const dryMode = opts.dry + const log: Console['log'] = + opts.verbose || opts.dry ? (...a: any[]) => console.log('publishClientToS3 ::', ...a) : () => {} + + if (!existsSync(opts.dir)) { + throw new Error(`sync dir '${opts.dir}' does not exist.`) + } + + const { definitions } = await readDefinitionsFile(opts.definitions) + const s3Bucket = await readFromStackOutput(opts.outputs, opts.key) + + if (dryMode) { + console.debug(colorize.important(`=== DRY MODE ===`)) + } + + if (opts.prune) { + info(`clear 's3://${s3Bucket}'`) + await clearBucket(s3Bucket, undefined, dryMode, log) + } + + info(`upload to 's3://${s3Bucket}'`) + for (const def of definitions) { + await upload(s3Bucket, opts.dir, def, dryMode, log) + } + + return 'DONE' +} + +async function readDefinitionsFile(fileName: string): Promise { + if (!existsSync(fileName)) { + throw new Error(`definitions file '${fileName}' does not exist.`) + } + const file = await readFile(fileName, 'utf8') + const parsed = JSON.parse(file) + + const schemaValidator: ValidateFunction = new Ajv({ allErrors: true }).compile( + s3DefinitionSchema, + ) + const valid = schemaValidator(parsed) + + if (valid) { + return parsed + } + info('invalid definitions file:', schemaValidator.errors) + throw new Error(`Definitions file does not match schema`) +} + +async function clearBucket( + s3Bucket: string, + continuationToken: string | undefined, + dryMode: boolean, + log: Console['log'], + // eslint-disable-next-line @typescript-eslint/naming-convention +): Promise> { + const listResponse = await client.send( + new ListObjectsV2Command({ + Bucket: s3Bucket, + ContinuationToken: continuationToken, + }), + ) + + if (listResponse.Contents) { + // eslint-disable-next-line @typescript-eslint/naming-convention + const deleteObjects = listResponse.Contents.map(({ Key }) => Key) + .filter((key): key is string => !!key) + .map((key) => ({ Key: key })) + + deleteObjects.forEach((o) => { + log(colorize.red(`Delete Object: ${o.Key}`)) + }) + if (!dryMode) { + await client.send(new DeleteObjectsCommand({ Bucket: s3Bucket, Delete: { Objects: deleteObjects } })) + } + + if (listResponse.ContinuationToken) { + const deletedObjects = await clearBucket(s3Bucket, listResponse.ContinuationToken, dryMode, log) + return [...deleteObjects, ...deletedObjects] + } + + return deleteObjects + } + return [] +} + +async function upload( + s3Bucket: string, + dir: string, + definition: S3UploadDefinition, + dryMode: boolean, + log: Console['log'], +): Promise { + const filePart = definition.include.length === 1 ? definition.include[0] : `{${definition.include.join(',')}}` + + const pattern = `${dir}/{**/,}${filePart}` + log(`glob pattern:`, pattern) + const paths = await glob(pattern, { absolute: false }) + + const requests = paths.map(async (path) => { + const key = path.replace(dir, '').replace(/^\//, '') + const contentType = definition.contentType || mime.getType(path) + if (!contentType) { + throw new Error(`could not get mime type of ${path}.`) + } + log(colorize.green(`upload ${path} as '${key}' (${contentType})`)) + if (!dryMode) { + const body = await readFile(path) + await client.send( + new PutObjectCommand({ + Key: key, + Bucket: s3Bucket, + Body: body, + ContentType: contentType, + CacheControl: definition.cacheControl, + }), + ) + } + }) + + await Promise.all(requests) + + return paths +} diff --git a/packages/iac-utilities/src/stage-info.ts b/packages/iac-utilities/src/stage-info.ts new file mode 100644 index 0000000..68d38f5 --- /dev/null +++ b/packages/iac-utilities/src/stage-info.ts @@ -0,0 +1,32 @@ +#!/usr/bin/env node +import { createStageInfo, getBranchInfo } from '@shiftcode/branch-utilities' +import yargs from 'yargs' + +const args = yargs(process.argv) + .option('pretty', { + type: 'boolean', + description: 'pretty print the json output', + default: true, + }) + .option('stage', { + alias: 's', + type: 'string', + description: 'generate the stage-info with provided stage', + }).argv + +interface Options { + pretty: boolean + stage?: string +} + +try { + const options: Options = await args + const originalConsoleLog = console.log + console.log = () => {} // suppress unwanted logs from getBranchInfo + const stageInfo = createStageInfo(options.stage ?? getBranchInfo(process.env).stage) + console.log = originalConsoleLog + console.info(JSON.stringify(stageInfo, undefined, options.pretty ? 2 : 0)) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/stage-override-to-pr-base.ts b/packages/iac-utilities/src/stage-override-to-pr-base.ts new file mode 100644 index 0000000..c417444 --- /dev/null +++ b/packages/iac-utilities/src/stage-override-to-pr-base.ts @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +import { stageOverrideToPrBase } from './scripts/index.js' + +try { + const responseMsg = stageOverrideToPrBase() + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/src/upload-to-s3.ts b/packages/iac-utilities/src/upload-to-s3.ts new file mode 100644 index 0000000..4a7306a --- /dev/null +++ b/packages/iac-utilities/src/upload-to-s3.ts @@ -0,0 +1,60 @@ +#!/usr/bin/env node +import yargs from 'yargs' + +import { S3_UPLOAD_DEFINITION_SCHEMA_NAME, uploadToS3 } from './scripts/index.js' + +const DEFAULT_OUTPUT_KEY = 'CFO_S3_BUCKET_CLIENT' + +const args = yargs(process.argv) + .option('dir', { + type: 'string', + description: 'source dir to sync', + default: './dist', + demandOption: true, + }) + .option('definitions', { + alias: 'd', + type: 'string', + description: `the upload definitions json file (one with $schema ${S3_UPLOAD_DEFINITION_SCHEMA_NAME}`, + demandOption: true, + }) + .option('outputs', { + alias: 'o', + type: 'string', + description: `path to the outputs json file. Needs to contain the property defined with the key option (defaults to ${DEFAULT_OUTPUT_KEY})`, + demandOption: true, + }) + .option('key', { + type: 'string', + description: `key to read in the outputs.json file containing the bucket name`, + default: DEFAULT_OUTPUT_KEY, + }) + .option('prune', { + type: 'boolean', + default: true, + description: + 'By default, the bucket will be cleared before uploading files. Set this option to false to disable this behavior', + }) + .option('dry', { + type: 'boolean', + default: false, + description: 'do not delete or upload objects (in dry mode verbose is activated)', + }) + .option('verbose', { + type: 'boolean', + default: false, + description: 'Run with verbose logging', + }) + .example( + 'upload-to-s3 ./dist -d ./s3-upload-definitions.json -o my-stack-outputs.json', + 'upload ./dist folder with given config', + ) + .showHelpOnFail(true).argv + +try { + const responseMsg = await uploadToS3(args) + console.info(responseMsg) +} catch (err) { + console.error(err) + process.exit(1) +} diff --git a/packages/iac-utilities/test/aws-sso-profiles-definition-schema.test.ts b/packages/iac-utilities/test/aws-sso-profiles-definition-schema.test.ts new file mode 100644 index 0000000..4686455 --- /dev/null +++ b/packages/iac-utilities/test/aws-sso-profiles-definition-schema.test.ts @@ -0,0 +1,29 @@ +import { Ajv, ValidateFunction } from 'ajv' +import { beforeEach, describe, expect, test } from 'vitest' + +// eslint-disable-next-line import/no-internal-modules +import awsSssoProfilesSchema from '../src/json-schemas/aws-sso-profiles-definition-schema.json' with { type: 'json' } +import invalidS3UploadDefinition from './invalid-aws-sso-profiles-definition.json' with { type: 'json' } +import validS3UploadDefinition from './valid-aws-sso-profiles-definition.json' with { type: 'json' } + +describe('AWS SSO profiles configuration ', () => { + let schemaValidator: ValidateFunction + + beforeEach(() => { + const a = new Ajv({ allErrors: true }) + schemaValidator = a.compile(awsSssoProfilesSchema) // recompile to reset errors on + }) + + test('no error when correct', () => { + const valid = schemaValidator(validS3UploadDefinition) + expect(schemaValidator.errors).toBe(null) + expect(valid).toBe(true) + }) + + test('has errors when incorrect', () => { + const valid = schemaValidator(invalidS3UploadDefinition) + expect(valid).toBe(false) + expect(schemaValidator.errors).toBeInstanceOf(Array) + expect(schemaValidator.errors?.length).toBe(2) + }) +}) diff --git a/packages/iac-utilities/test/invalid-aws-sso-profiles-definition.json b/packages/iac-utilities/test/invalid-aws-sso-profiles-definition.json new file mode 100644 index 0000000..ca1b3d8 --- /dev/null +++ b/packages/iac-utilities/test/invalid-aws-sso-profiles-definition.json @@ -0,0 +1,17 @@ +{ + "$schema": "json-schemas/aws-sso-profiles-definition-schema.json", + "profileByStage": { + "production": "fl-prod", + "development": "fl-nonProd" + }, + "profiles": { + "unknown": { + "sso_session": "sc-sso", + "sso_account_id": "123456", + "sso_role_name": "AdministratorAccess", + "region": "us-central-0", + "output": "json" + }, + "additional-property": {} + } +} diff --git a/packages/iac-utilities/test/invalid-s3-upload-definition.json b/packages/iac-utilities/test/invalid-s3-upload-definition.json new file mode 100644 index 0000000..c4d3d7b --- /dev/null +++ b/packages/iac-utilities/test/invalid-s3-upload-definition.json @@ -0,0 +1,12 @@ +{ + "definitions": [ + { + "include": ["*.json"] + }, + { + "include": [], + "cacheControl": "max-age=0, s-maxage=300", + "contentXType": "text/html; charset=utf-8*" + } + ] +} diff --git a/packages/iac-utilities/test/s3-upload-definition-schema.test.ts b/packages/iac-utilities/test/s3-upload-definition-schema.test.ts new file mode 100644 index 0000000..eb0deda --- /dev/null +++ b/packages/iac-utilities/test/s3-upload-definition-schema.test.ts @@ -0,0 +1,28 @@ +import { Ajv, ValidateFunction } from 'ajv' +import { beforeEach, describe, expect, test } from 'vitest' + +// eslint-disable-next-line import/no-internal-modules +import s3DefinitionSchema from '../src/json-schemas/s3-upload-definition-schema.json' with { type: 'json' } +import invalidS3UploadDefinition from './invalid-s3-upload-definition.json' with { type: 'json' } +import validS3UploadDefinition from './valid-s3-upload-definition.json' with { type: 'json' } + +describe('s3UploadDefinitionSchema', () => { + let schemaValidator: ValidateFunction + + beforeEach(() => { + schemaValidator = new Ajv({ allErrors: true }).compile(s3DefinitionSchema) + }) + + test('no error when correct', () => { + const valid = schemaValidator(validS3UploadDefinition) + expect(schemaValidator.errors).toBe(null) + expect(valid).toBe(true) + }) + + test('has errors when incorrect', () => { + const valid = schemaValidator(invalidS3UploadDefinition) + expect(valid).toBe(false) + expect(schemaValidator.errors).toBeInstanceOf(Array) + expect(schemaValidator.errors?.length).toBe(2) + }) +}) diff --git a/packages/iac-utilities/test/valid-aws-sso-profiles-definition.json b/packages/iac-utilities/test/valid-aws-sso-profiles-definition.json new file mode 100644 index 0000000..197028f --- /dev/null +++ b/packages/iac-utilities/test/valid-aws-sso-profiles-definition.json @@ -0,0 +1,17 @@ +{ + "$schema": "json-schemas/aws-sso-profiles-definition-schema.json", + "profileByStage": { + "prod": "fl-prod", + "dev": "fl-nonProd" + }, + "profiles": { + "prod": { + "sso_session": "sc-sso", + "sso_account_id": "123456", + "sso_role_name": "AdministratorAccess", + "region": "us-central-0", + "output": "json" + }, + "additional-property": {} + } +} diff --git a/packages/iac-utilities/test/valid-s3-upload-definition.json b/packages/iac-utilities/test/valid-s3-upload-definition.json new file mode 100644 index 0000000..b479721 --- /dev/null +++ b/packages/iac-utilities/test/valid-s3-upload-definition.json @@ -0,0 +1,32 @@ +{ + "$schema": "json-schemas/s3-upload-definition-schema.json", + "definitions": [ + { + "include": [ + "*.css", + "*.js", + "*.js.map", + "*.woff2", + "*.woff", + "*.ttf", + "*.otf", + "*.svg", + "*.png", + "*.jpeg", + "*.jpg", + "*.ico", + "*.gif" + ], + "cacheControl": "max-age=31536000" + }, + { + "include": ["*.html"], + "cacheControl": "max-age=0, s-maxage=300", + "contentType": "text/html; charset=utf-8*" + }, + { + "include": ["*.json"], + "cacheControl": "max-age=604800" + } + ] +} diff --git a/packages/iac-utilities/tsconfig.json b/packages/iac-utilities/tsconfig.json new file mode 100644 index 0000000..069b9fc --- /dev/null +++ b/packages/iac-utilities/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "declarationDir": "./dist", + "resolveJsonModule": true, + "skipLibCheck": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/iac-utilities/tsconfig.lint.json b/packages/iac-utilities/tsconfig.lint.json new file mode 100644 index 0000000..67ceff7 --- /dev/null +++ b/packages/iac-utilities/tsconfig.lint.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "types": ["node"], + "paths": { + "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"], + "@shiftcode/lambda-utilities": ["../lambda-utilities/src/index.ts"] + } + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/iac-utilities/tsconfig.spec.json b/packages/iac-utilities/tsconfig.spec.json new file mode 100644 index 0000000..c939125 --- /dev/null +++ b/packages/iac-utilities/tsconfig.spec.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "types": ["node"], + "paths": { + "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"], + "@shiftcode/lambda-utilities": ["../lambda-utilities/src/index.ts"] + } + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} From 694454c56da403b523556cce61c9e88e825056b0 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 13:45:16 +0100 Subject: [PATCH 16/55] feat: introduce cdk-utilities BREAKING-CHANGE: newly added to sc-commons-public --- packages/cdk-utilities/.lintstagedrc.yml | 8 + packages/cdk-utilities/CHANGELOG.md | 150 ++++++ packages/cdk-utilities/README.md | 5 + packages/cdk-utilities/eslint.config.mjs | 13 + packages/cdk-utilities/package.json | 41 ++ packages/cdk-utilities/src/index.ts | 6 + .../lib/basic-auth-cf-function.construct.ts | 27 ++ .../src/lib/cloud-watch-api.construct.ts | 443 ++++++++++++++++++ .../cloud-watch-log-transport.construct.ts | 257 ++++++++++ .../src/lib/get-ssm-param.function.ts | 24 + ...language-redirect-cf-function.construct.ts | 33 ++ .../src/lib/root-domain-redirect.construct.ts | 121 +++++ .../utils/cloudfront-function-request.type.ts | 72 +++ .../create-basic-auth-cf-fn.function.spec.ts | 67 +++ .../utils/create-basic-auth-cf-fn.function.ts | 16 + .../utils/create-language-redirect-cf.fn.ts | 76 +++ ...eate-language-redirect-cf.function.spec.ts | 142 ++++++ packages/cdk-utilities/tsconfig.json | 13 + packages/cdk-utilities/tsconfig.lint.json | 10 + packages/cdk-utilities/tsconfig.spec.json | 8 + 20 files changed, 1532 insertions(+) create mode 100644 packages/cdk-utilities/.lintstagedrc.yml create mode 100644 packages/cdk-utilities/CHANGELOG.md create mode 100644 packages/cdk-utilities/README.md create mode 100644 packages/cdk-utilities/eslint.config.mjs create mode 100644 packages/cdk-utilities/package.json create mode 100644 packages/cdk-utilities/src/index.ts create mode 100644 packages/cdk-utilities/src/lib/basic-auth-cf-function.construct.ts create mode 100644 packages/cdk-utilities/src/lib/cloud-watch-api.construct.ts create mode 100644 packages/cdk-utilities/src/lib/cloud-watch-log-transport.construct.ts create mode 100644 packages/cdk-utilities/src/lib/get-ssm-param.function.ts create mode 100644 packages/cdk-utilities/src/lib/language-redirect-cf-function.construct.ts create mode 100644 packages/cdk-utilities/src/lib/root-domain-redirect.construct.ts create mode 100644 packages/cdk-utilities/src/lib/utils/cloudfront-function-request.type.ts create mode 100644 packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts create mode 100644 packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.ts create mode 100644 packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.fn.ts create mode 100644 packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts create mode 100644 packages/cdk-utilities/tsconfig.json create mode 100644 packages/cdk-utilities/tsconfig.lint.json create mode 100644 packages/cdk-utilities/tsconfig.spec.json diff --git a/packages/cdk-utilities/.lintstagedrc.yml b/packages/cdk-utilities/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/cdk-utilities/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/cdk-utilities/CHANGELOG.md b/packages/cdk-utilities/CHANGELOG.md new file mode 100644 index 0000000..4ad1177 --- /dev/null +++ b/packages/cdk-utilities/CHANGELOG.md @@ -0,0 +1,150 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.4.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@5.3.0...@shiftcode/cdk-utils@5.4.0) (2026-01-23) + +### Features + +- **cloud-watch-api:** new construct ([66226e2](https://github.com/shiftcode/sc-commons/commit/66226e2cd457366453c5a9fbf3b33bc150889f93)) + +# [5.3.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@5.2.0...@shiftcode/cdk-utils@5.3.0) (2026-01-09) + +### Features + +- **cloud-watch-log-transport:** add documentation for external certificate usage ([8d4ebc3](https://github.com/shiftcode/sc-commons/commit/8d4ebc3a730dee63114b19c318c29872d300b4c6)) + +# [5.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@5.1.0...@shiftcode/cdk-utils@5.2.0) (2025-12-19) + +### Features + +- **cdk-utils:** accept ILogGroup as prop ([a52020b](https://github.com/shiftcode/sc-commons/commit/a52020b5207ec71ca92bb2033b015cd857cbd985)) + +# [5.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@5.0.0...@shiftcode/cdk-utils@5.1.0) (2025-09-23) + +### Features + +- **language-redirect-cf-function:** new construct for CF function ([3db9a1b](https://github.com/shiftcode/sc-commons/commit/3db9a1b60c2137c034ca1ed57b297977224e19f0)) +- **language-redirect-cf-function:** new construct for CF function ([a62f510](https://github.com/shiftcode/sc-commons/commit/a62f51045e8c0673c6b22e39133e99a3333b34a8)) + +# [5.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@4.1.1...@shiftcode/cdk-utils@5.0.0) (2025-05-23) + +### Bug Fixes + +- **cloud-watch-log-transport:** improve message escaping in log events ([4ea32ca](https://github.com/shiftcode/sc-commons/commit/4ea32ca3855b89c74e2ff2626db36ab2b8b61c05)) +- **cloud-watch-log-transport:** treat message as JSON instead of string for CloudWatch API ([7b815a7](https://github.com/shiftcode/sc-commons/commit/7b815a74f9e0dd6ddc1f1fce1dcd3d14ef226ad7)) + +### Features + +- **cloud-watch-log-transport:** include stack name in API name for better identification ([a1be41c](https://github.com/shiftcode/sc-commons/commit/a1be41cc17944c9ec0a73d25bf6b28a0ffe8031d)) + +### BREAKING CHANGES + +- **cloud-watch-log-transport:** requires stackName for API name + +## [4.1.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@4.1.0...@shiftcode/cdk-utils@4.1.1) (2025-05-21) + +### Bug Fixes + +- **cloud-watch-log-transport:** set CORS header dynamically based on allowed origins length ([229cc71](https://github.com/shiftcode/sc-commons/commit/229cc719ce0edb293021c9264d0402f7e3277e89)) +- **cloud-watch-log-transport:** update CORS header to ensure Access-Control-Allow-Origin compliance ([50c8ff3](https://github.com/shiftcode/sc-commons/commit/50c8ff3b5d57cc20ac2bbe548f4d85b8232453da)) + +# [4.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@4.0.2...@shiftcode/cdk-utils@4.1.0) (2025-05-14) + +### Bug Fixes + +- **cloud-watch-log:** add Access-Control-Allow-Origin to the response params ([e780a40](https://github.com/shiftcode/sc-commons/commit/e780a4085cbdb8e688107c621c2df4f894b0aebf)) + +### Features + +- **cloud-watch-log-transport:** expose log endpoints ([0c24b61](https://github.com/shiftcode/sc-commons/commit/0c24b61d197d92a16f2408f2aa2022d04f77a39c)) +- **cloud-watch-log-transport:** make domain config optional ([e5d75a4](https://github.com/shiftcode/sc-commons/commit/e5d75a41f3be15bb789cb7ff8dfbb00707126ea3)) +- **cloud-watch-log:** add integration and method responses to capture API errors ([e484ccb](https://github.com/shiftcode/sc-commons/commit/e484ccbd22070d44f14da3f5bb7bc9e089b9960b)) +- **cloud-watch-log:** move log group to props to make it configurable ([f39beae](https://github.com/shiftcode/sc-commons/commit/f39beae4da1ac7da425be9d9478aa3a3ca2607b4)) +- **logs:** add CloudWatchLogTransport construct and test CDK app ([82788e9](https://github.com/shiftcode/sc-commons/commit/82788e92650fb39f3039208d1f45e1a141c58f80)) + +## [4.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@4.0.1...@shiftcode/cdk-utils@4.0.2) (2025-03-06) + +### Bug Fixes + +- update engines definition (left over from node 22 upgrade) ([f5428ae](https://github.com/shiftcode/sc-commons/commit/f5428ae64c45567912887b8bab1e881c4312669f)) + +## [4.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@4.0.0...@shiftcode/cdk-utils@4.0.1) (2025-03-04) + +**Note:** Version bump only for package @shiftcode/cdk-utils + +# [4.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@3.1.0...@shiftcode/cdk-utils@4.0.0) (2024-07-13) + +### Build System + +- **node:** upgrade to node 20 ([2899d0d](https://github.com/shiftcode/sc-commons/commit/2899d0d41ece080b276e7bf84915d4849da81a29)) + +### BREAKING CHANGES + +- **node:** Minimum required node version is 20.11.1. In general speaking the runtime (Node or Browser) must support all es2023 features. + +# [3.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@3.0.0...@shiftcode/cdk-utils@3.1.0) (2023-12-18) + +### Features + +- **eslint-config:** disabled mt-specific config and added curly, eqeqeq ([9b2c7a0](https://github.com/shiftcode/sc-commons/commit/9b2c7a0e668949c022d8338e619fda09615c0dad)) + +# [3.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@2.1.0...@shiftcode/cdk-utils@3.0.0) (2023-05-15) + +### Features + +- **cdk-utils:** migrate to ESM (different related changes) ([9afff84](https://github.com/shiftcode/sc-commons/commit/9afff84ac559cf4d365f9db54b107bff921a56ad)) + +### BREAKING CHANGES + +- **cdk-utils:** only supported in projects using ESM + +# [2.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@2.0.0...@shiftcode/cdk-utils@2.1.0) (2023-03-17) + +### Features + +- **eslint-plugin:** introduce tests to verify correct implementation of plugins ([76d5b2f](https://github.com/shiftcode/sc-commons/commit/76d5b2f2bea5a3f4450e7ce43153fc2ddba832c1)) + +# [2.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@1.1.0...@shiftcode/cdk-utils@2.0.0) (2023-03-16) + +### Bug Fixes + +- **basic-auth-cf-function:** import ([e19af26](https://github.com/shiftcode/sc-commons/commit/e19af26f536cdb06bfcf2a5f57be2b1de5b5aa6c)) + +### Build System + +- **tsconfig:** build for es2022 target ([c75651b](https://github.com/shiftcode/sc-commons/commit/c75651b2b2ca6338e71b6538616d5b0e9bbb40cc)) + +### BREAKING CHANGES + +- **tsconfig:** requires ES2022 support (node@18) + +# [1.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/cdk-utils@1.0.0...@shiftcode/cdk-utils@1.1.0) (2022-04-01) + +### Features + +- **basic-auth-cf-function.construct:** new construct ([e5d2e16](https://github.com/shiftcode/sc-commons/commit/e5d2e168b02179c4d4324194105138f227dea91a)) + +## 1.0.0 (2022-01-11) + +- build(release): next version [skip_build] ([911da02](https://github.com/shiftcode/sc-commons/commit/911da02)) +- build(release): next version [skip_build] ([199066e](https://github.com/shiftcode/sc-commons/commit/199066e)) +- build(release): next version [skip_build] ([0c839e4](https://github.com/shiftcode/sc-commons/commit/0c839e4)) +- build(release): next version [skip_build] ([2722982](https://github.com/shiftcode/sc-commons/commit/2722982)) +- build(release): next version [skip_build] ([a0e996a](https://github.com/shiftcode/sc-commons/commit/a0e996a)) +- build(release): next version [skip_build] ([8d72402](https://github.com/shiftcode/sc-commons/commit/8d72402)) +- build(release): next version [skip_build] ([7bca45d](https://github.com/shiftcode/sc-commons/commit/7bca45d)) +- build(release): next version [skip_build] ([82c65ba](https://github.com/shiftcode/sc-commons/commit/82c65ba)) +- build(release): next version [skip_build] ([8589cd3](https://github.com/shiftcode/sc-commons/commit/8589cd3)) +- build(release): next version [skip_build] ([aaebf67](https://github.com/shiftcode/sc-commons/commit/aaebf67)) +- build(release): next version [skip_build] ([e38c9a6](https://github.com/shiftcode/sc-commons/commit/e38c9a6)) +- build(release): next version [skip_build] ([9470e94](https://github.com/shiftcode/sc-commons/commit/9470e94)) +- ci(prepare-dist): use from new sc-commons-public package ([5ad1e4e](https://github.com/shiftcode/sc-commons/commit/5ad1e4e)) +- fix(deps): move runtime dev-dependencies ([aa73004](https://github.com/shiftcode/sc-commons/commit/aa73004)) +- fix(imports): no deep imports from aws-cdk-lib/core ([67a17ee](https://github.com/shiftcode/sc-commons/commit/67a17ee)) +- feat(cdk-utils): new package for reusable cdk constructs / custom resources ([8842248](https://github.com/shiftcode/sc-commons/commit/8842248)) + +### BREAKING CHANGE + +- new package `@shiftcode/cdk-utils` diff --git a/packages/cdk-utilities/README.md b/packages/cdk-utilities/README.md new file mode 100644 index 0000000..00ce6d2 --- /dev/null +++ b/packages/cdk-utilities/README.md @@ -0,0 +1,5 @@ +# cdk-utilities + +> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023)) + +Reusable Constructs and CustomResources for IAC with [aws-cdk-lib](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html). diff --git a/packages/cdk-utilities/eslint.config.mjs b/packages/cdk-utilities/eslint.config.mjs new file mode 100644 index 0000000..4725640 --- /dev/null +++ b/packages/cdk-utilities/eslint.config.mjs @@ -0,0 +1,13 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig( + { + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, + }, + { + files: ['**/*.ts'], + rules: { + 'import/no-internal-modules': ['error', { allow: ['aws-cdk-lib/*'] }], + }, + }, +) diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json new file mode 100644 index 0000000..35d1a2f --- /dev/null +++ b/packages/cdk-utilities/package.json @@ -0,0 +1,41 @@ +{ + "name": "@shiftcode/cdk-utilities", + "version": "0.0.0-pr254.0", + "description": "Constructs for iac with aws-cdk-lib", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src", + "lint:ci": "eslint ./src", + "lint:staged": "eslint --fix --cache", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" + }, + "dependencies": { + "just-pascal-case": "^3.2.0" + }, + "peerDependencies": { + "aws-cdk-lib": "^2.3.0", + "constructs": "^10.0.0", + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/cdk-utilities/src/index.ts b/packages/cdk-utilities/src/index.ts new file mode 100644 index 0000000..da8a60f --- /dev/null +++ b/packages/cdk-utilities/src/index.ts @@ -0,0 +1,6 @@ +export * from './lib/basic-auth-cf-function.construct.js' +export * from './lib/cloud-watch-api.construct.js' +export * from './lib/cloud-watch-log-transport.construct.js' +export * from './lib/get-ssm-param.function.js' +export * from './lib/language-redirect-cf-function.construct.js' +export * from './lib/root-domain-redirect.construct.js' diff --git a/packages/cdk-utilities/src/lib/basic-auth-cf-function.construct.ts b/packages/cdk-utilities/src/lib/basic-auth-cf-function.construct.ts new file mode 100644 index 0000000..d465f14 --- /dev/null +++ b/packages/cdk-utilities/src/lib/basic-auth-cf-function.construct.ts @@ -0,0 +1,27 @@ +import { + Function as CloudFrontFunction, + FunctionCode, + FunctionProps, + FunctionRuntime, +} from 'aws-cdk-lib/aws-cloudfront' +import { Construct } from 'constructs' + +import { createBasicAuthCfFn } from './utils/create-basic-auth-cf-fn.function.js' + +export interface BasicAuthCloudFrontFunctionProps extends Omit { + user: string + password: string +} + +/** + * Simple CloudFrontFunction for {@link VIEWER_REQUEST} which will return `401 - Unauthorized` when not providing basic auth + */ +export class BasicAuthCloudFrontFunction extends CloudFrontFunction { + constructor(scope: Construct, id: string, config: BasicAuthCloudFrontFunctionProps) { + super(scope, id, { + ...config, + code: FunctionCode.fromInline(createBasicAuthCfFn(config.user, config.password)), + runtime: FunctionRuntime.JS_2_0, + }) + } +} diff --git a/packages/cdk-utilities/src/lib/cloud-watch-api.construct.ts b/packages/cdk-utilities/src/lib/cloud-watch-api.construct.ts new file mode 100644 index 0000000..92e31bf --- /dev/null +++ b/packages/cdk-utilities/src/lib/cloud-watch-api.construct.ts @@ -0,0 +1,443 @@ +import { Stack } from 'aws-cdk-lib' +import { + AwsIntegration, + BasePathMapping, + Cors, + DomainName, + EndpointType, + IRestApi, + JsonSchemaType, + Model, + PassthroughBehavior, + RequestValidator, + RestApi, +} from 'aws-cdk-lib/aws-apigateway' +import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager' +import { PolicyDocument, PolicyStatement, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam' +import { ILogGroup } from 'aws-cdk-lib/aws-logs' +import { ARecord, IHostedZone, RecordTarget } from 'aws-cdk-lib/aws-route53' +import { ApiGatewayDomain } from 'aws-cdk-lib/aws-route53-targets' +import { Construct } from 'constructs' + +export interface CloudWatchApiProps { + logGroup: ILogGroup + + /** @default {@link EndpointType.REGIONAL} */ + endpointType?: EndpointType + + /** + * allowed origins for CORS configuration + * @default {@link Cors.ALL_ORIGINS} + */ + allowedOrigins?: string[] + + domainConfig?: { + hostedZone: IHostedZone + /** + * use a certificate which is created outside the stack. + * Otherwise, we cannot delete the stack, since the ApiGateway uses a hidden resource (ALB) that uses the certificate. + * This hidden resource releases the certificate delayed, which prevents the certificate from being deleted as it is still in used + */ + certificate: ICertificate + subdomain: string + } + + /** + * resource name of the api gateway rest api + * @default `${stackName}-cloudwatch-api` + */ + restApiName?: string +} + +type DomainConfig = NonNullable + +const enum PathPart { + STREAMS = 'streams', + LOGS = 'logs', +} + +const enum PathParam { + LOG_STREAM_NAME = 'logStreamName', +} + +/** + * creates an API Gateway REST API to interact with CloudWatch Logs. + * exposes the following endpoints: + * - POST /streams: create a new log stream (body: { logStreamName: string }) + * - GET /streams/{logStreamName}: describe a log stream + * - POST /streams/{logStreamName}/logs: put log events to a log stream (body: { logEvents: Array<{ message: string, timestamp: number }> }) + */ +export class CloudWatchApi extends Construct { + readonly api: RestApi + readonly role: Role + readonly domain?: DomainName + readonly url: string + + constructor( + scope: Construct, + id: string, + protected readonly props: CloudWatchApiProps, + ) { + super(scope, id) + + this.role = this.createRole(this.props.logGroup) + this.api = this.createApi(this.role) + + if (this.props.domainConfig) { + const [domain] = this.addDomainToApi(this.api, this.props.domainConfig) + this.domain = domain + this.url = `https://${domain.domainName}` + } else { + this.url = this.api.url + } + } + + private createRole(logGroup: ILogGroup): Role { + return new Role(this, 'ApiGatewayCloudWatchRole', { + assumedBy: new ServicePrincipal('apigateway.amazonaws.com'), + inlinePolicies: { + logsPolicy: new PolicyDocument({ + statements: [ + new PolicyStatement({ + actions: ['logs:CreateLogStream', 'logs:DescribeLogStreams', 'logs:PutLogEvents'], + + resources: [logGroup.logGroupArn, `${logGroup.logGroupArn}:log-stream:*`], + }), + ], + }), + }, + }) + } + + private createApi(apiIntegrationRole: Role): RestApi { + const api = new RestApi(this, 'FrontendLogApi', { + restApiName: this.props.restApiName ?? `${Stack.of(this).stackName}-cloudwatch-api`, + endpointConfiguration: { types: [this.props.endpointType ?? EndpointType.REGIONAL] }, + defaultCorsPreflightOptions: { + allowOrigins: this.props.allowedOrigins ?? Cors.ALL_ORIGINS, + allowMethods: ['GET', 'POST'], + allowHeaders: ['Content-Type'], + }, + }) + + const errorResponseModel: Model = api.addModel('ErrorResponseModel', { + modelName: 'ErrorDto', + schema: { + type: JsonSchemaType.OBJECT, + properties: { + code: { type: JsonSchemaType.STRING }, + message: { type: JsonSchemaType.STRING }, + }, + required: ['code', 'message'], + additionalProperties: false, + }, + }) + + const bodyRequestValidator = new RequestValidator(this, 'BodyRequestValidator', { + requestValidatorName: 'Body Validator', + restApi: api, + validateRequestBody: true, + }) + + const streams = api.root.addResource(PathPart.STREAMS) + const stream = streams.addResource(`{${PathParam.LOG_STREAM_NAME}}`) + const streamLogs = stream.addResource(PathPart.LOGS) + + const allowedOrigin = this.props.allowedOrigins?.length === 1 ? this.props.allowedOrigins[0] : '*' + + // + // CREATE LOG STREAM + // + const logStreamCreateModel: Model = api.addModel('LogStreamCreateModel', { + modelName: 'LogStreamCreateDto', + schema: { + type: JsonSchemaType.OBJECT, + properties: { + logStreamName: { + type: JsonSchemaType.STRING, + pattern: '^[a-zA-Z0-9-_]{16,512}$', + }, + }, + required: ['logStreamName'], + additionalProperties: false, + }, + }) + const createLogStreamIntegration = new AwsIntegration({ + service: 'logs', + action: 'CreateLogStream', + integrationHttpMethod: 'POST', + options: { + credentialsRole: apiIntegrationRole, + passthroughBehavior: PassthroughBehavior.NEVER, + requestParameters: { + 'integration.request.header.X-Amz-Target': `'Logs_20140328.CreateLogStream'`, + 'integration.request.header.Content-Type': `'application/x-amz-json-1.1'`, + }, + requestTemplates: { + 'application/json': `{ + "logGroupName": "${this.props.logGroup.logGroupName}", + "logStreamName": $input.json('$.logStreamName') + }`, + }, + integrationResponses: [ + { + selectionPattern: '2\\d{2}', + statusCode: '201', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + responseTemplates: { 'application/json': `#set($inputRoot = $input.path('$'))` }, + }, + { + selectionPattern: '4\\d{2}', + statusCode: '400', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + responseTemplates: { + 'application/json': `{ + "code": $input.json('$.__type'), + "message": $input.json('$.message') + }`, + }, + }, + { + selectionPattern: '5\\d{2}', + statusCode: '500', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + }, + ], + }, + }) + streams.addMethod('POST', createLogStreamIntegration, { + requestModels: { 'application/json': logStreamCreateModel }, + requestValidator: bodyRequestValidator, + methodResponses: [ + { + statusCode: '201', + responseModels: { 'application/json': Model.EMPTY_MODEL }, + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + { + statusCode: '400', + responseModels: { 'application/json': errorResponseModel }, + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + { + statusCode: '500', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + ], + }) + + // + // DESCRIBE LOG STREAM + // + const logStreamDescribeModel: Model = api.addModel('LogStreamDescribeModel', { + modelName: 'LogStreamDescribeDto', + schema: { + type: JsonSchemaType.OBJECT, + properties: { + logStreamName: { type: JsonSchemaType.STRING }, + creationTime: { type: JsonSchemaType.NUMBER }, + lastIngestionTime: { type: [JsonSchemaType.NUMBER, JsonSchemaType.NULL] }, + }, + required: ['logStreamName', 'creationTime', 'lastIngestionTime'], + additionalProperties: false, + }, + }) + const describeLogStreamsIntegration = new AwsIntegration({ + service: 'logs', + action: 'DescribeLogStreams', + integrationHttpMethod: 'POST', + options: { + credentialsRole: apiIntegrationRole, + passthroughBehavior: PassthroughBehavior.NEVER, + requestParameters: { + 'integration.request.header.Content-Type': `'application/x-amz-json-1.1'`, + 'integration.request.header.X-Amz-Target': `'Logs_20140328.DescribeLogStreams'`, + }, + requestTemplates: { + 'application/json': ` + { + "limit": 1, + "logGroupName": "${this.props.logGroup.logGroupName}", + "logStreamNamePrefix": "$input.params('${PathParam.LOG_STREAM_NAME}')" + }`, + }, + integrationResponses: [ + { + selectionPattern: '2\\d{2}', + statusCode: '200', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + responseTemplates: { + 'application/json': ` +#set($streams = $input.path('$.logStreams')) +#if($streams.size() > 0) + { + "logStreamName": "$streams[0].logStreamName", + "creationTime": $streams[0].creationTime, +#if($streams[0].lastIngestionTime > 0) + "lastIngestionTime": $streams[0].lastIngestionTime +#else + "lastIngestionTime": null +#end + } +#else + #set($context.responseOverride.status = 404) + { + "code": "ResourceNotFoundException", + "message": "The specified log stream does not exist." + } +#end + `, + }, + }, + { + selectionPattern: '4\\d{2}', + statusCode: '400', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + }, + { + selectionPattern: '5\\d{2}', + statusCode: '500', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + }, + ], + }, + }) + stream.addMethod('GET', describeLogStreamsIntegration, { + methodResponses: [ + { + statusCode: '200', + responseModels: { 'application/json': logStreamDescribeModel }, + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + { + statusCode: '404', + responseModels: { 'application/json': errorResponseModel }, + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + { + statusCode: '500', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + ], + }) + + // + // PUT LOG EVENTS + // + const writeLogsModel = api.addModel('WriteLogsModel', { + modelName: 'WriteLogsDto', + schema: { + type: JsonSchemaType.OBJECT, + properties: { + logEvents: { + type: JsonSchemaType.ARRAY, + items: { + type: JsonSchemaType.OBJECT, + properties: { + message: { type: JsonSchemaType.STRING }, + timestamp: { type: JsonSchemaType.NUMBER }, + }, + required: ['message', 'timestamp'], + additionalProperties: false, + }, + }, + }, + required: ['logEvents'], + additionalProperties: false, + }, + }) + const putLogEventsIntegration = new AwsIntegration({ + service: 'logs', + action: 'PutLogEvents', + integrationHttpMethod: 'POST', + options: { + credentialsRole: apiIntegrationRole, + passthroughBehavior: PassthroughBehavior.NEVER, + requestParameters: { + 'integration.request.header.X-Amz-Target': `'Logs_20140328.PutLogEvents'`, + 'integration.request.header.Content-Type': `'application/x-amz-json-1.1'`, + }, + requestTemplates: { + 'application/json': `{ + "logGroupName": "${this.props.logGroup.logGroupName}", + "logStreamName": "$input.params('${PathParam.LOG_STREAM_NAME}')", + "logEvents": $input.json('$.logEvents') + }`, + }, + integrationResponses: [ + { + selectionPattern: '2\\d{2}', + statusCode: '201', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + responseTemplates: { 'application/json': `#set($inputRoot = $input.path('$'))` }, + }, + { + selectionPattern: '4\\d{2}', + statusCode: '400', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + responseTemplates: { + 'application/json': `{ + "code": $input.json('$.__type'), + "message": $input.json('$.message') + }`, + }, + }, + { + selectionPattern: '5\\d{2}', + statusCode: '500', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'` }, + }, + ], + }, + }) + streamLogs.addMethod('POST', putLogEventsIntegration, { + requestModels: { + 'application/json': writeLogsModel, + }, + requestValidator: bodyRequestValidator, + methodResponses: [ + { + statusCode: '201', + responseModels: { 'application/json': Model.EMPTY_MODEL }, + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + { + statusCode: '400', + responseModels: { 'application/json': errorResponseModel }, + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + { + statusCode: '500', + responseParameters: { 'method.response.header.Access-Control-Allow-Origin': true }, + }, + ], + }) + + return api + } + + private addDomainToApi(api: IRestApi, domainConfig: DomainConfig): [DomainName, ARecord] { + const zoneName = domainConfig.hostedZone.zoneName.replace(/\.$/, '') + const domainName = `${domainConfig.subdomain}.${zoneName}` + + const domain = new DomainName(this, 'ApiCustomDomain', { + domainName, + certificate: domainConfig.certificate, + endpointType: this.props.endpointType ?? EndpointType.REGIONAL, + }) + + new BasePathMapping(this, 'BasePathMapping', { + domainName: domain, + restApi: api, + basePath: '', + }) + + const record = new ARecord(this, 'ApiDomainAliasRecord', { + zone: domainConfig.hostedZone, + recordName: domainConfig.subdomain, + target: RecordTarget.fromAlias(new ApiGatewayDomain(domain)), + }) + + return [domain, record] + } +} diff --git a/packages/cdk-utilities/src/lib/cloud-watch-log-transport.construct.ts b/packages/cdk-utilities/src/lib/cloud-watch-log-transport.construct.ts new file mode 100644 index 0000000..d6d46be --- /dev/null +++ b/packages/cdk-utilities/src/lib/cloud-watch-log-transport.construct.ts @@ -0,0 +1,257 @@ +import { CfnOutput } from 'aws-cdk-lib' +import { + AwsIntegration, + BasePathMapping, + Cors, + DomainName, + EndpointType, + PassthroughBehavior, + RestApi, +} from 'aws-cdk-lib/aws-apigateway' +import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager' +import { Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam' +import { ILogGroup } from 'aws-cdk-lib/aws-logs' +import { ARecord, IHostedZone, RecordTarget } from 'aws-cdk-lib/aws-route53' +import { ApiGatewayDomain } from 'aws-cdk-lib/aws-route53-targets' +import { Construct } from 'constructs' + +export interface DomainConfig { + hostedZone: IHostedZone + /** + * use a certificate which is created outside the stack. + * Otherwise, we cannot delete the stack, since the ApiGateway uses a hidden resource (ALB) that uses the certificate. + * This hidden resource releases the certificate delayed, which prevents the certificate from being deleted as it is still in used + */ + certificate: ICertificate + subdomain: string +} + +export interface CloudWatchLogTransportProps { + logGroup: ILogGroup + stackName: string + domainConfig?: DomainConfig + allowedOrigins?: string[] + endpointType?: EndpointType +} + +/** + * @deprecated use {@link CloudWatchApi} instead. + */ +export class CloudWatchLogTransportConstruct extends Construct { + readonly logApiUrl: string + readonly createLogStreamApiUrl: string + + constructor( + scope: Construct, + id: string, + readonly props: CloudWatchLogTransportProps, + ) { + super(scope, id) + + const apiRole = new Role(this, 'ApiGatewayCloudWatchRole', { + assumedBy: new ServicePrincipal('apigateway.amazonaws.com'), + }) + props.logGroup.grantWrite(apiRole) + + const api = new RestApi(this, 'FrontendLogApi', { + restApiName: `${this.props.stackName}-FrontendLogApi`, + endpointConfiguration: { + types: [props.endpointType ?? EndpointType.REGIONAL], + }, + defaultCorsPreflightOptions: { + allowOrigins: props.allowedOrigins ?? Cors.ALL_ORIGINS, + allowMethods: ['POST'], + allowHeaders: ['Content-Type'], + }, + }) + + const allowedOrigin = props.allowedOrigins?.length === 1 ? props.allowedOrigins[0] : '*' + + const logIntegration = new AwsIntegration({ + service: 'logs', + action: 'PutLogEvents', + integrationHttpMethod: 'POST', + options: { + credentialsRole: apiRole, + passthroughBehavior: PassthroughBehavior.NEVER, + requestParameters: { + 'integration.request.header.X-Amz-Target': "'Logs_20140328.PutLogEvents'", + 'integration.request.header.Content-Type': "'application/x-amz-json-1.1'", + }, + integrationResponses: [ + { + statusCode: '200', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'`, + }, + }, + { + statusCode: '400', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'`, + }, + selectionPattern: '4\\d{2}', + responseTemplates: { + 'application/json': `{ + "error": "$input.path('$.__type')", + "message": "$input.path('$.message')" + }`, + }, + }, + { + statusCode: '500', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'`, + }, + selectionPattern: '5\\d{2}', + }, + ], + requestTemplates: { + 'application/json': `{ + "logGroupName": "${props.logGroup.logGroupName}", + "logStreamName": $input.json('$.logStreamName'), + "logEvents": [ + { + "timestamp": $input.json('$.timestamp'), + "message": $input.json('$.message') + } + ] + }`, + }, + }, + }) + + const createStreamIntegration = new AwsIntegration({ + service: 'logs', + action: 'CreateLogStream', + integrationHttpMethod: 'POST', + options: { + credentialsRole: apiRole, + passthroughBehavior: PassthroughBehavior.NEVER, + requestParameters: { + 'integration.request.header.X-Amz-Target': "'Logs_20140328.CreateLogStream'", + 'integration.request.header.Content-Type': "'application/x-amz-json-1.1'", + }, + integrationResponses: [ + { + statusCode: '200', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'`, + }, + selectionPattern: '2\\d{2}', + }, + { + statusCode: '400', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'`, + }, + selectionPattern: '4\\d{2}', + responseTemplates: { + 'application/json': `{ + "error": "$input.path('$.__type')", + "message": "$input.path('$.message')" + }`, + }, + }, + { + statusCode: '500', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': `'${allowedOrigin}'`, + }, + selectionPattern: '5\\d{2}', + }, + ], + requestTemplates: { + 'application/json': `{ + "logGroupName": "${props.logGroup.logGroupName}", + "logStreamName": $input.json('$.logStreamName') + }`, + }, + }, + }) + + const logsResource = api.root.addResource('log') + logsResource.addMethod('POST', logIntegration, { + methodResponses: [ + { + statusCode: '200', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + { + statusCode: '400', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + { + statusCode: '500', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + ], + }) + + const createStreamResource = api.root.addResource('create-stream') + createStreamResource.addMethod('POST', createStreamIntegration, { + methodResponses: [ + { + statusCode: '200', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + { + statusCode: '400', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + { + statusCode: '500', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + ], + }) + + if (this.props.domainConfig) { + const domainConfig = this.props.domainConfig + const zoneName = domainConfig.hostedZone.zoneName.replace(/\.$/, '') + const domainName = `${domainConfig.subdomain}.${zoneName}` + const domain = new DomainName(this, 'ApiCustomDomain', { + domainName, + certificate: domainConfig.certificate, + endpointType: props.endpointType ?? EndpointType.REGIONAL, + }) + + new BasePathMapping(this, 'BasePathMapping', { + domainName: domain, + restApi: api, + basePath: '', + }) + + new ARecord(this, 'ApiDomainAliasRecord', { + zone: domainConfig.hostedZone, + recordName: domainConfig.subdomain, + target: RecordTarget.fromAlias(new ApiGatewayDomain(domain)), + }) + + this.logApiUrl = `https://${domainName}/log` + this.createLogStreamApiUrl = `https://${domainName}/create-stream` + } else { + this.logApiUrl = api.urlForPath('/log') + this.createLogStreamApiUrl = api.urlForPath('/create-stream') + } + + new CfnOutput(this, 'LogEndpointUrl', { + value: this.logApiUrl, + }) + new CfnOutput(this, 'CreateStreamEndpointUrl', { + value: this.createLogStreamApiUrl, + }) + } +} diff --git a/packages/cdk-utilities/src/lib/get-ssm-param.function.ts b/packages/cdk-utilities/src/lib/get-ssm-param.function.ts new file mode 100644 index 0000000..b2b2c27 --- /dev/null +++ b/packages/cdk-utilities/src/lib/get-ssm-param.function.ts @@ -0,0 +1,24 @@ +import { Stack } from 'aws-cdk-lib' +import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from 'aws-cdk-lib/custom-resources' +import pascalCase from 'just-pascal-case' + +/** + * creates a customResource to get an SSM Param value from a specific region. + */ +export function getSsmParam(scope: Stack, region: string, paramName: string): string { + const paramRequest = new AwsCustomResource(scope, pascalCase(`GetSsmParameter-${region}-${paramName}`), { + /* will also be called for a CREATE event */ + onUpdate: { + service: 'SSM', + action: 'getParameter', + parameters: { + Name: paramName, + }, + region, + // Update physical id to always fetch the latest version + physicalResourceId: PhysicalResourceId.of(Date.now().toString()), + }, + policy: AwsCustomResourcePolicy.fromSdkCalls({ resources: AwsCustomResourcePolicy.ANY_RESOURCE }), + }) + return paramRequest.getResponseField('Parameter.Value') +} diff --git a/packages/cdk-utilities/src/lib/language-redirect-cf-function.construct.ts b/packages/cdk-utilities/src/lib/language-redirect-cf-function.construct.ts new file mode 100644 index 0000000..fd32a13 --- /dev/null +++ b/packages/cdk-utilities/src/lib/language-redirect-cf-function.construct.ts @@ -0,0 +1,33 @@ +import { + Function as CloudFrontFunction, + FunctionCode, + FunctionProps, + FunctionRuntime, +} from 'aws-cdk-lib/aws-cloudfront' +import { Construct } from 'constructs' + +import { createLanguageRedirectCfFn } from './utils/create-language-redirect-cf.fn.js' + +export interface LanguageRedirectCloudFrontFunctionProps + extends Omit { + languages: T[] + fallback: NoInfer + /** default: 'LANGUAGE' */ + languageCookieName?: string +} + +/** + * CloudFrontFunction for language redirect + * it will return a `302 - Found` redirecting to the preferred language path if not present as first path segment + */ +export class LanguageRedirectCloudFrontFunction extends CloudFrontFunction { + constructor(scope: Construct, id: string, config: LanguageRedirectCloudFrontFunctionProps) { + super(scope, id, { + ...config, + code: FunctionCode.fromInline( + createLanguageRedirectCfFn(config.languages, config.fallback, config.languageCookieName), + ), + runtime: FunctionRuntime.JS_2_0, + }) + } +} diff --git a/packages/cdk-utilities/src/lib/root-domain-redirect.construct.ts b/packages/cdk-utilities/src/lib/root-domain-redirect.construct.ts new file mode 100644 index 0000000..188c0a4 --- /dev/null +++ b/packages/cdk-utilities/src/lib/root-domain-redirect.construct.ts @@ -0,0 +1,121 @@ +import { RemovalPolicy } from 'aws-cdk-lib' +import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager' +import { + CloudFrontWebDistribution, + HttpVersion, + OriginProtocolPolicy, + PriceClass, + SecurityPolicyProtocol, + SSLMethod, + ViewerCertificate, + ViewerProtocolPolicy, +} from 'aws-cdk-lib/aws-cloudfront' +import { ARecord, IHostedZone, RecordTarget } from 'aws-cdk-lib/aws-route53' +import { CloudFrontTarget } from 'aws-cdk-lib/aws-route53-targets' +import { Bucket, IBucket, RedirectProtocol } from 'aws-cdk-lib/aws-s3' +import { Construct } from 'constructs' + +export interface RootDomainRedirectProps { + /** + * the root domain name like `example.com` + */ + domain: string + + /** + * the hosted zone for the rootdomain in which the dns record is created + */ + hostedZone: IHostedZone + + /** + * the certificate for the cloudfront + * needs to include the root domain + * location of cert needs to be us-east-1 + */ + certificate: ICertificate + + /** + * the subdomain the redirects points to + * default www + */ + targetSubdomain?: string + + /** + * the name of the bucket for the redirect + * default generated like `example-com-www-redirect + */ + bucketName?: string +} + +/** + * creates a root redirect for a domain to its target subdomain (default www) + * redirects http in on step to https://www. (instead of http -> https -> www.) + * http://shiftcode.ch -> https://www.shiftcode.ch + * https://shiftcode.ch -> https://www.shiftcode.ch + * creates the following Resources: DnsRecord -> CfDistribution -> S3 Bucket + */ +export class RootDomainRedirect extends Construct { + readonly redirectBucket: Bucket + readonly cfDistribution: CloudFrontWebDistribution + readonly dnsRecord: ARecord + + constructor( + scope: Construct, + id: string, + readonly props: RootDomainRedirectProps, + ) { + super(scope, id) + + const targetSubdomain = props.targetSubdomain || 'www' + const bucketName = props.bucketName || `${props.domain.replace('.', '-')}-${targetSubdomain}-redirect` + + this.redirectBucket = this.createBucket(bucketName, props.domain, targetSubdomain) + this.cfDistribution = this.createCfDistribution(props.domain, props.certificate, this.redirectBucket) + this.dnsRecord = this.createDnsRecord(props.domain, props.hostedZone, this.cfDistribution) + } + + private createBucket(bucketName: string, domain: string, targetSubdomain: string) { + return new Bucket(this, 'Bucket', { + bucketName, + publicReadAccess: true, + websiteRedirect: { + hostName: `${targetSubdomain}.${domain}`, + protocol: RedirectProtocol.HTTPS, + }, + removalPolicy: RemovalPolicy.DESTROY, + autoDeleteObjects: true, + }) + } + + private createCfDistribution(domain: string, certificate: ICertificate, bucket: IBucket) { + return new CloudFrontWebDistribution(this, 'CloudFrontDistribution', { + comment: `root domain redirect for ${domain}`, + defaultRootObject: '', + priceClass: PriceClass.PRICE_CLASS_ALL, + httpVersion: HttpVersion.HTTP2, + viewerCertificate: ViewerCertificate.fromAcmCertificate(certificate, { + aliases: [domain], + sslMethod: SSLMethod.SNI, + securityPolicy: SecurityPolicyProtocol.TLS_V1_2_2019, + }), + originConfigs: [ + { + customOriginSource: { + domainName: bucket.bucketWebsiteDomainName, + originProtocolPolicy: OriginProtocolPolicy.HTTP_ONLY, + }, + behaviors: [{ isDefaultBehavior: true }], + }, + ], + // s3 will redirect to https // prevents having 2 redirects (cf+s3) + viewerProtocolPolicy: ViewerProtocolPolicy.ALLOW_ALL, + }) + } + + private createDnsRecord(domain: string, hostedZone: IHostedZone, cfDistribution: CloudFrontWebDistribution) { + return new ARecord(this, 'AliasRecord', { + recordName: domain, + target: RecordTarget.fromAlias(new CloudFrontTarget(cfDistribution)), + zone: hostedZone, + }) + } +} diff --git a/packages/cdk-utilities/src/lib/utils/cloudfront-function-request.type.ts b/packages/cdk-utilities/src/lib/utils/cloudfront-function-request.type.ts new file mode 100644 index 0000000..58bcfc6 --- /dev/null +++ b/packages/cdk-utilities/src/lib/utils/cloudfront-function-request.type.ts @@ -0,0 +1,72 @@ +type Value = { value: string } | { value: string; multiValue: Array<{ value: string }> } + +// created based on https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-event-structure.html#functions-event-structure-viewer +export interface CloudFrontFunctionEvent { + version: '1.0' + context: { + /** + * The CloudFront domain name (for example, d111111abcdef8.cloudfront.net) of the distribution that's associated with the event. + */ + distributionDomainName: string + + /** + * The ID of the distribution(for example, EDFDVBD6EXAMPLE) that's associated with the event. + */ + distributionId: string + + /** + * The event type, either viewer-request or viewer-response. + */ + eventType: string + + /** + * A string that uniquely identifies a CloudFront request(and its associated response). + */ + requestId: string + } + viewer: { + ip: string + } + request: { + /** + * HTTP method of the request + */ + method: string + /** + * The relative path of the requested object. + */ + uri: string + /** + * An object that represents the query string in the request. If the request doesn't include a query string, + * the request object still includes an empty querystring object. + * + * The querystring object contains one field for each query string parameter in the request. + */ + querystring: Record + /** + * An object that represents the HTTP headers in the request. If the request contains any Cookie headers, those + * headers are not part of the headers object. Cookies are represented separately in the cookies object. + * + * The headers object contains one field for each header in the request. Header names are converted to lowercase + * in the event object, and header names must be lowercase when they're added by your function code. + * When CloudFront Functions converts the event object back into an HTTP request, the first letter of each word + * in header names is capitalized. Words are separated by a hyphen (-). For example, if your function code adds + * a header named example-header-name, CloudFront converts this to Example-Header-Name in the HTTP request. + */ + headers: Record + /** + * An object that represents the cookies in the request (Cookie headers). + * + * The cookies object contains one field for each cookie in the request. + */ + cookies: Record + } +} + +export interface CloudFrontFunctionHandler { + ( + event: CloudFrontFunctionEvent, + ): + | CloudFrontFunctionEvent['request'] + | { statusCode: number; statusDescription?: string; headers?: Record } +} diff --git a/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts new file mode 100644 index 0000000..59aab95 --- /dev/null +++ b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts @@ -0,0 +1,67 @@ +import { describe, expect, it } from '@jest/globals' + +import type { CloudFrontFunctionEvent } from './cloudfront-function-request.type.js' +import { createBasicAuthCfFn } from './create-basic-auth-cf-fn.function.js' + +describe('createBasicAuthCfFn', () => { + function setup(...parameters: Parameters) { + const fnCode = createBasicAuthCfFn(...parameters) + + // Wrap the string so it returns the handler + // eslint-disable-next-line @typescript-eslint/no-implied-eval + const getHandler = Function(`${fnCode}\n return handler;`) + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + return getHandler() as (event: CloudFrontFunctionEvent) => any + } + + it('creates an executable function', () => { + const handler = setup('user1', 'p@ssw0rD') + expect(typeof handler).toBe('function') + }) + + it('allows access with correct credentials', () => { + const handler = setup('user1', 'p@ssw0rD') + const event: CloudFrontFunctionEvent = { + version: '1.0', + context: {} as any, + viewer: { ip: '' }, + request: { + method: 'GET', + uri: '/', + querystring: {}, + headers: { + authorization: { value: 'Basic ' + Buffer.from('user1:p@ssw0rD').toString('base64') }, + }, + cookies: {}, + }, + } + + const result = handler(event) + expect(result).toBe(event.request) + }) + + it('denies access with incorrect credentials', () => { + const handler = setup('user1', 'p@ssw0rD') + const event: CloudFrontFunctionEvent = { + version: '1.0', + context: {} as any, + viewer: { ip: '' }, + request: { + method: 'GET', + uri: '/', + querystring: {}, + headers: { + authorization: { value: 'Basic ' + Buffer.from('user1:wrongpassword').toString('base64') }, + }, + cookies: {}, + }, + } + + const result = handler(event) + expect(result).toEqual({ + statusCode: 401, + statusDescription: 'Unauthorized', + headers: { 'www-authenticate': { value: 'Basic' } }, + }) + }) +}) diff --git a/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.ts b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.ts new file mode 100644 index 0000000..7c72e3c --- /dev/null +++ b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.ts @@ -0,0 +1,16 @@ +export function createBasicAuthCfFn(user: string, pw: string): string { + const auth = 'Basic ' + Buffer.from(`${user}:${pw}`).toString('base64') + return ` +function handler(event) { + var authHeader = event.request.headers['authorization'] + if (authHeader && authHeader.value === '${auth}') { + return event.request + } + return { + statusCode: 401, + statusDescription: 'Unauthorized', + headers: { 'www-authenticate': { value: 'Basic' } } + } +} +` +} diff --git a/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.fn.ts b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.fn.ts new file mode 100644 index 0000000..b78a0ee --- /dev/null +++ b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.fn.ts @@ -0,0 +1,76 @@ +/** + * Creates a CloudFront Function code string for language-based redirection. + * The function checks the request path, cookies, and Accept-Language header to determine the appropriate language. + * this Code is expected to run in JavaScript runtime 2.0 from CloudFront. + * see {@link https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-javascript-runtime-20.html} + */ +export function createLanguageRedirectCfFn( + languages: T[], + fallback: T, + languageCookieName: string = 'LANGUAGE', +): string { + return ` +const languages = ${JSON.stringify(languages)}; +const FALLBACK_LANG = ${JSON.stringify(fallback)}; +const COOKIE_NAME = ${JSON.stringify(languageCookieName)}; + +function handler(event) { + const headers = event.request.headers + + const pathParts = event.request.uri.split('/').filter((part) => part.length > 0) + if (pathParts.length > 0 && languages.includes(pathParts[0])) { + return event.request + } + + const proposedLanguage = getProposedLanguage( + languages, + getCookieValue(headers.cookie ? headers.cookie.value : '', COOKIE_NAME), + headers['accept-language'], + FALLBACK_LANG, + ) + + const host = headers.host ? headers.host.value : '' + const uri = event.request.uri === '/' ? '' : event.request.uri + + return { + statusCode: 302, + statusDescription: 'Found', + headers: { + location: { value: \`https://\${host}/\${proposedLanguage}\${uri}\` }, + 'cache-control': { value: 'max-age=3600' }, + 'content-type': { value: 'text/plain' }, + } + } +} + +function getProposedLanguage(languages, languageCookie, acceptLanguageHeader, fallbackLanguage) { + if (languages.includes(languageCookie)) { + return languageCookie + } + if (acceptLanguageHeader) { + const acceptedLanguages = acceptLanguageHeader.value.split(',') + for (let i = 0; i < acceptedLanguages.length; i++) { + const lang = acceptedLanguages[i].split(';')[0].trim() + if (languages.includes(lang)) { + return lang + } + } + } + return fallbackLanguage +} + +function getCookieValue(cookieString, cookieName) { + if (!cookieString) { + return null + } + const cookies = cookieString.split(';') + for (let i = 0; i < cookies.length; i++) { + const cookie = cookies[i].trim() + if (cookie.indexOf(cookieName + '=') === 0) { + return cookie.substring(cookieName.length + 1) + } + } + return null +} +` +} diff --git a/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts new file mode 100644 index 0000000..c15b753 --- /dev/null +++ b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts @@ -0,0 +1,142 @@ +import { describe, expect, it } from '@jest/globals' + +import type { CloudFrontFunctionEvent } from './cloudfront-function-request.type.js' +import { createLanguageRedirectCfFn } from './create-language-redirect-cf.fn.js' + +function createCfFunctionEvent( + url: string, + headers: CloudFrontFunctionEvent['request']['headers'] = {}, +): CloudFrontFunctionEvent { + // split the url into host and path + const urlParts = url.split('/') + const host = urlParts[0] + const uri = '/' + urlParts.slice(1).join('/') + + // add host header + headers.host = { value: host } + + return { + version: '1.0', + context: {} as any, + viewer: { ip: '' }, + request: { + method: 'GET', + uri, + querystring: {}, + headers, + cookies: {}, + }, + } +} + +describe('createLanguageRedirectCfFn', () => { + function setup(...parameters: Parameters) { + const fnCode = createLanguageRedirectCfFn(...parameters) + + // Wrap the string so it returns the handler + // eslint-disable-next-line @typescript-eslint/no-implied-eval + const getHandler = Function(`${fnCode}\n return handler;`) + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + return getHandler() as (event: CloudFrontFunctionEvent) => any + } + + it('creates an executable function', () => { + const handler = setup(['en', 'de'], 'en') + expect(typeof handler).toBe('function') + }) + + it('does not contain a "debugger" statement', () => { + // cuz that's the only way to debug it, and we really don't want that in prod + const fnCode = createLanguageRedirectCfFn(['en', 'de'], 'en') + expect(fnCode).not.toMatch(/debugger;?/) + }) + + it('returns the request when already on a language path', () => { + const handler = setup(['en', 'de', 'fr'], 'en') + const event = createCfFunctionEvent('shiftcode.io/de/some/path') + const result = handler(event) + expect(result).toBe(event.request) + }) + + it('does not accept language paths not in the list but behaves like it is an ordinary path part', () => { + const handler = setup(['en', 'de', 'fr'], 'en') + const event = createCfFunctionEvent('shiftcode.io/it/some/path') + const result = handler(event) + expect(result).not.toBe(event.request) + expect(result).toEqual({ + statusCode: 302, + statusDescription: 'Found', + headers: expect.objectContaining({ + location: { value: 'https://shiftcode.io/en/it/some/path' }, + }), + }) + }) + + it('redirects to fallback language when no cookie or header present', () => { + const handler = setup(['en', 'de', 'fr'], 'en') + const event = createCfFunctionEvent('shiftcode.io') + const result = handler(event) + expect(result).toEqual({ + statusCode: 302, + statusDescription: 'Found', + headers: expect.objectContaining({ + location: { value: 'https://shiftcode.io/en' }, + }), + }) + }) + + it('keeps the path when redirecting to fallback language', () => { + const handler = setup(['en', 'de', 'fr'], 'en') + const event = createCfFunctionEvent('shiftcode.io/some/path') + const result = handler(event) + expect(result).toEqual({ + statusCode: 302, + statusDescription: 'Found', + headers: expect.objectContaining({ + location: { value: 'https://shiftcode.io/en/some/path' }, + }), + }) + }) + + it('redirects by accept-language header', () => { + const handler = setup(['en', 'de', 'fr'], 'en', 'LANGUAGE') + const event = createCfFunctionEvent('shiftcode.io', { 'accept-language': { value: 'fr, de;q=0.8, en;q=0.6' } }) + const result = handler(event) + expect(result).toEqual({ + statusCode: 302, + statusDescription: 'Found', + headers: expect.objectContaining({ + location: { value: 'https://shiftcode.io/fr' }, + }), + }) + }) + + it('redirects by custom language cookie', () => { + const handler = setup(['en', 'de', 'fr'], 'en', 'LANGUAGE') + const event = createCfFunctionEvent('shiftcode.io', { cookie: { value: 'en=fr;LANGUAGE=de' } }) + const result = handler(event) + expect(result).toEqual({ + statusCode: 302, + statusDescription: 'Found', + headers: expect.objectContaining({ + location: { value: 'https://shiftcode.io/de' }, + }), + }) + }) + + it('prefers cookie over accept-language header', () => { + const handler = setup(['en', 'de', 'fr'], 'en', 'LANGUAGE') + const event = createCfFunctionEvent('shiftcode.io', { + cookie: { value: 'LANGUAGE=de' }, + 'accept-language': { value: 'fr, en;q=0.8, it;q=0.6' }, + }) + const result = handler(event) + expect(result).toEqual({ + statusCode: 302, + statusDescription: 'Found', + headers: expect.objectContaining({ + location: { value: 'https://shiftcode.io/de' }, + }), + }) + }) +}) diff --git a/packages/cdk-utilities/tsconfig.json b/packages/cdk-utilities/tsconfig.json new file mode 100644 index 0000000..b6587e6 --- /dev/null +++ b/packages/cdk-utilities/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "declarationDir": "./dist", + "strictPropertyInitialization": false, + "resolveJsonModule": true, + "skipLibCheck": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/cdk-utilities/tsconfig.lint.json b/packages/cdk-utilities/tsconfig.lint.json new file mode 100644 index 0000000..95d083d --- /dev/null +++ b/packages/cdk-utilities/tsconfig.lint.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": "./", + "types": ["node"], + "paths": {} + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/cdk-utilities/tsconfig.spec.json b/packages/cdk-utilities/tsconfig.spec.json new file mode 100644 index 0000000..c0cdfcb --- /dev/null +++ b/packages/cdk-utilities/tsconfig.spec.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "paths": {} + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} From 746ed837fc486315fb6ba3944500bebd042a706d Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 13:45:40 +0100 Subject: [PATCH 17/55] feat: introduce nest-logger BREAKING-CHANGE: newly added to sc-commons-public --- packages/nest-logger/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 7cf4ba2..1c43843 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "2.1.0-pr254.0", + "version": "0.0.0-pr254.0", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 0b1f5745df89d3dc19ed942d226d06a675e09cda Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 13:45:52 +0100 Subject: [PATCH 18/55] feat: introduce inversify-logger BREAKING-CHANGE: newly added to sc-commons-public --- packages/inversify-logger/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index e42f3a9..147d7d9 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "2.1.0-pr254.0", + "version": "0.0.0-pr254.0", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From fc3efc70e8cb2eb06da563af719d77edd3e01cdf Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 14:05:09 +0100 Subject: [PATCH 19/55] test: let tests run --- .../src/lib/utils/create-basic-auth-cf-fn.function.spec.ts | 2 +- .../src/lib/utils/create-language-redirect-cf.function.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts index 59aab95..bd0548a 100644 --- a/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts +++ b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from '@jest/globals' +import { describe, expect, it } from 'vitest' import type { CloudFrontFunctionEvent } from './cloudfront-function-request.type.js' import { createBasicAuthCfFn } from './create-basic-auth-cf-fn.function.js' diff --git a/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts index c15b753..614b241 100644 --- a/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts +++ b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from '@jest/globals' +import { describe, expect, it } from 'vitest' import type { CloudFrontFunctionEvent } from './cloudfront-function-request.type.js' import { createLanguageRedirectCfFn } from './create-language-redirect-cf.fn.js' From 6409b17c1937ada7182c3ad123990fa9f2130bed Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 14:05:46 +0100 Subject: [PATCH 20/55] test: allow tests to run even if there are no test at all --- packages/lambda-utilities/package.json | 4 +++- packages/lambda-utilities/tsconfig.lint.json | 3 ++- packages/lambda-utilities/tsconfig.spec.json | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index aeb0f84..91ac6ba 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -29,12 +29,14 @@ "lint:staged": "eslint --fix --cache", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run --passWithNoTests", "test:watch": "vitest --cache" }, "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "1.0.0 || ^0.0.0-pr254", + "@shiftcode/logger": "^4.0.0", + "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" }, "peerDependencies": { diff --git a/packages/lambda-utilities/tsconfig.lint.json b/packages/lambda-utilities/tsconfig.lint.json index 8c8be89..766b064 100644 --- a/packages/lambda-utilities/tsconfig.lint.json +++ b/packages/lambda-utilities/tsconfig.lint.json @@ -5,7 +5,8 @@ "types": ["node"], "paths": { "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] + "@shiftcode/utilities": ["../utilities/src/index.ts"], + "@shiftcode/inversify-logger": ["../inversify-logger/src/public-api.ts"] } }, "include": ["src/**/*.ts", "test/**/*.ts"], diff --git a/packages/lambda-utilities/tsconfig.spec.json b/packages/lambda-utilities/tsconfig.spec.json index 75097cd..29d7b71 100644 --- a/packages/lambda-utilities/tsconfig.spec.json +++ b/packages/lambda-utilities/tsconfig.spec.json @@ -4,7 +4,8 @@ "baseUrl": ".", "paths": { "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] + "@shiftcode/utilities": ["../utilities/src/index.ts"], + "@shiftcode/inversify-logger": ["../inversify-logger/src/public-api.ts"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true From 151994a278b342a43a20c98db005b8ab68761517 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 14:06:06 +0100 Subject: [PATCH 21/55] build: add missing dep --- packages/nest-logger/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 1c43843..4b78a50 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -31,6 +31,7 @@ "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", + "@nestjs/testing": "^11.0.0", "@shiftcode/logger": "^4.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" From fdbd203546be41d71da3c185c3e55fc156ac9419 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 14:06:17 +0100 Subject: [PATCH 22/55] build: install deps --- package-lock.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/package-lock.json b/package-lock.json index 1b34bde..5a77a67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4888,6 +4888,34 @@ } } }, + "node_modules/@nestjs/testing": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.13.tgz", + "integrity": "sha512-bOWP8nLEZAOEEX8jAZGBCc1yU0+nv4g2ipc+QEzkVUe3eEEUKHKaeGafJ3GtDuGavlZKfkXEqflZuICdavu5dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -21320,6 +21348,8 @@ "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "1.0.0 || ^0.0.0-pr254", + "@shiftcode/logger": "^4.0.0", + "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" }, "engines": { @@ -21373,6 +21403,7 @@ "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", + "@nestjs/testing": "^11.0.0", "@shiftcode/logger": "^4.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" From 3ecd41e8dbd8dcecc04a399bc1b64b01d10ec1f6 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 14:17:25 +0100 Subject: [PATCH 23/55] test: let tests run --- packages/lambda-utilities/tsconfig.lint.json | 4 ++-- packages/lambda-utilities/tsconfig.spec.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/lambda-utilities/tsconfig.lint.json b/packages/lambda-utilities/tsconfig.lint.json index 766b064..9de0ef2 100644 --- a/packages/lambda-utilities/tsconfig.lint.json +++ b/packages/lambda-utilities/tsconfig.lint.json @@ -1,12 +1,12 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "./", + "baseUrl": ".", "types": ["node"], "paths": { "@shiftcode/logger": ["../logger/src/public-api.ts"], "@shiftcode/utilities": ["../utilities/src/index.ts"], - "@shiftcode/inversify-logger": ["../inversify-logger/src/public-api.ts"] + "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"] } }, "include": ["src/**/*.ts", "test/**/*.ts"], diff --git a/packages/lambda-utilities/tsconfig.spec.json b/packages/lambda-utilities/tsconfig.spec.json index 29d7b71..a55ccb1 100644 --- a/packages/lambda-utilities/tsconfig.spec.json +++ b/packages/lambda-utilities/tsconfig.spec.json @@ -5,7 +5,7 @@ "paths": { "@shiftcode/logger": ["../logger/src/public-api.ts"], "@shiftcode/utilities": ["../utilities/src/index.ts"], - "@shiftcode/inversify-logger": ["../inversify-logger/src/public-api.ts"] + "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"] }, "experimentalDecorators": true, "emitDecoratorMetadata": true From 98237b402cf96dbf17d62c959bc9a79dc7fb216f Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 5 Feb 2026 13:21:04 +0000 Subject: [PATCH 24/55] build(release): next version [skip_build] - @shiftcode/cdk-utilities@0.0.0-pr254.1 - @shiftcode/iac-utilities@0.0.0-pr254.1 - @shiftcode/inversify-logger@0.0.0-pr254.1 - @shiftcode/lambda-utilities@0.0.0-pr254.1 - @shiftcode/nest-logger@0.0.0-pr254.1 --- package-lock.json | 14 +++++++------- packages/cdk-utilities/package.json | 2 +- packages/iac-utilities/package.json | 4 ++-- packages/inversify-logger/package.json | 2 +- packages/lambda-utilities/package.json | 4 ++-- packages/nest-logger/package.json | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a77a67..265c0f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21193,7 +21193,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -21256,7 +21256,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -21286,7 +21286,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.1", "@types/yargs": "^17.0.5" }, "engines": { @@ -21325,7 +21325,7 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "license": "MIT", "devDependencies": { "@shiftcode/logger": "^4.0.0", @@ -21343,11 +21343,11 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "license": "MIT", "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "1.0.0 || ^0.0.0-pr254", + "@shiftcode/inversify-logger": "^0.0.0-pr254.1", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" @@ -21398,7 +21398,7 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 35d1a2f..313733f 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 8f1786f..f62aa42 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -56,7 +56,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.1", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 147d7d9..e67cc4c 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 91ac6ba..4f60ec3 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,7 +34,7 @@ }, "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "1.0.0 || ^0.0.0-pr254", + "@shiftcode/inversify-logger": "^0.0.0-pr254.1", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 4b78a50..6e9ee98 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 34e87c259db398c1eae6bcbc1904cb2008d9e35f Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:11:49 +0100 Subject: [PATCH 25/55] feat: introduce airtable-mapper BREAKING-CHANGE: newly added to sc-commons-public --- packages/airtable-mapper/.lintstagedrc.yml | 8 + packages/airtable-mapper/CHANGELOG.md | 199 ++++++++++++++++++ packages/airtable-mapper/README.md | 8 + packages/airtable-mapper/eslint.config.mjs | 5 + packages/airtable-mapper/package.json | 36 ++++ .../converters/boolean-converter.function.ts | 6 + packages/airtable-mapper/src/index.ts | 7 + .../src/key-value/key-value.mapping.ts | 32 +++ .../src/key-value/key-value.model.ts | 8 + .../mapping/airtable-mapping.model.spec.ts | 40 ++++ .../src/mapping/airtable-mapping.model.ts | 46 ++++ .../src/model/airtable-attachment.model.ts | 32 +++ .../src/model/airtable-id.model.ts | 9 + .../src/model/attachment.model.ts | 9 + .../airtable-record-default-keys.const.ts | 3 + packages/airtable-mapper/tsconfig.json | 11 + packages/airtable-mapper/tsconfig.lint.json | 10 + packages/airtable-mapper/tsconfig.spec.json | 8 + 18 files changed, 477 insertions(+) create mode 100644 packages/airtable-mapper/.lintstagedrc.yml create mode 100644 packages/airtable-mapper/CHANGELOG.md create mode 100644 packages/airtable-mapper/README.md create mode 100644 packages/airtable-mapper/eslint.config.mjs create mode 100644 packages/airtable-mapper/package.json create mode 100644 packages/airtable-mapper/src/converters/boolean-converter.function.ts create mode 100644 packages/airtable-mapper/src/index.ts create mode 100644 packages/airtable-mapper/src/key-value/key-value.mapping.ts create mode 100644 packages/airtable-mapper/src/key-value/key-value.model.ts create mode 100644 packages/airtable-mapper/src/mapping/airtable-mapping.model.spec.ts create mode 100644 packages/airtable-mapper/src/mapping/airtable-mapping.model.ts create mode 100644 packages/airtable-mapper/src/model/airtable-attachment.model.ts create mode 100644 packages/airtable-mapper/src/model/airtable-id.model.ts create mode 100644 packages/airtable-mapper/src/model/attachment.model.ts create mode 100644 packages/airtable-mapper/src/static/airtable-record-default-keys.const.ts create mode 100644 packages/airtable-mapper/tsconfig.json create mode 100644 packages/airtable-mapper/tsconfig.lint.json create mode 100644 packages/airtable-mapper/tsconfig.spec.json diff --git a/packages/airtable-mapper/.lintstagedrc.yml b/packages/airtable-mapper/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/airtable-mapper/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/airtable-mapper/CHANGELOG.md b/packages/airtable-mapper/CHANGELOG.md new file mode 100644 index 0000000..2795a69 --- /dev/null +++ b/packages/airtable-mapper/CHANGELOG.md @@ -0,0 +1,199 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [8.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@8.0.1...@shiftcode/airtable-mapping@8.0.2) (2025-03-06) + +### Bug Fixes + +- update engines definition (left over from node 22 upgrade) ([f5428ae](https://github.com/shiftcode/sc-commons/commit/f5428ae64c45567912887b8bab1e881c4312669f)) + +## [8.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@8.0.0...@shiftcode/airtable-mapping@8.0.1) (2025-03-04) + +**Note:** Version bump only for package @shiftcode/airtable-mapping + +# [8.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@7.0.0...@shiftcode/airtable-mapping@8.0.0) (2024-07-13) + +### Build System + +- **node:** upgrade to node 20 ([2899d0d](https://github.com/shiftcode/sc-commons/commit/2899d0d41ece080b276e7bf84915d4849da81a29)) + +### BREAKING CHANGES + +- **node:** Minimum required node version is 20.11.1. In general speaking the runtime (Node or Browser) must support all es2023 features. + +# [7.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@6.3.0...@shiftcode/airtable-mapping@7.0.0) (2024-07-08) + +### Features + +- **airtable-mapping:** remove obsolete constructor argument ([a528743](https://github.com/shiftcode/sc-commons/commit/a5287436ba0913c61122b0c8a330856a741cd0d5)) + +### BREAKING CHANGES + +- **airtable-mapping:** The AirtableMapping constructor does no longer accept two arguments. Instead we assume the modelName and tableName are equal. + +# [6.3.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@6.2.1...@shiftcode/airtable-mapping@6.3.0) (2023-12-18) + +### Features + +- **eslint-config:** disabled mt-specific config and added curly, eqeqeq ([9b2c7a0](https://github.com/shiftcode/sc-commons/commit/9b2c7a0e668949c022d8338e619fda09615c0dad)) + +## [6.2.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@6.2.0...@shiftcode/airtable-mapping@6.2.1) (2023-10-18) + +**Note:** Version bump only for package @shiftcode/airtable-mapping + +# [6.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@6.1.1...@shiftcode/airtable-mapping@6.2.0) (2023-07-27) + +### Bug Fixes + +- **airtable-mapping:** mark the KeyValue mapping with a symbol ([72ff48f](https://github.com/shiftcode/sc-commons/commit/72ff48fae8788ae8c8e7d37062fcf9ced4bf49ed)) + +### Features + +- **airtable-mapping:** add types & module field to package.json ([a6bb32a](https://github.com/shiftcode/sc-commons/commit/a6bb32a7c0a6e75ccb7bad9bf1f4f40a11cdcb22)) + +## [6.1.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@6.1.0...@shiftcode/airtable-mapping@6.1.1) (2023-06-01) + +**Note:** Version bump only for package @shiftcode/airtable-mapping + +# [6.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@6.0.0...@shiftcode/airtable-mapping@6.1.0) (2023-06-01) + +### Features + +- **eslint-config:** add eslint-disable comments ([3716577](https://github.com/shiftcode/sc-commons/commit/37165771b8ac0e94bdcc7f90b55e41d358db9d65)) + +# [6.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@5.1.0...@shiftcode/airtable-mapping@6.0.0) (2023-05-15) + +### Features + +- **airtable-mapping:** migrate to ESM (different related changes) ([9a24a58](https://github.com/shiftcode/sc-commons/commit/9a24a58ebfeecff7b3025f8d8e85e9379e1980df)) + +### BREAKING CHANGES + +- **airtable-mapping:** only supported in projects using ESM + +# [5.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@5.0.0...@shiftcode/airtable-mapping@5.1.0) (2023-03-17) + +### Features + +- **eslint-plugin:** introduce tests to verify correct implementation of plugins ([76d5b2f](https://github.com/shiftcode/sc-commons/commit/76d5b2f2bea5a3f4450e7ce43153fc2ddba832c1)) + +# [5.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@4.0.1...@shiftcode/airtable-mapping@5.0.0) (2023-03-16) + +### Build System + +- **tsconfig:** build for es2021 target ([3b01b71](https://github.com/shiftcode/sc-commons/commit/3b01b712e88dc88a4033e770fb1fe0527a0f78cf)) + +### BREAKING CHANGES + +- **tsconfig:** requires ES2021 support + +## 4.0.1 (2022-01-11) + +- build(release): next version [skip_build] ([911da02](https://github.com/shiftcode/sc-commons/commit/911da02)) +- build(release): next version [skip_build] ([199066e](https://github.com/shiftcode/sc-commons/commit/199066e)) +- build(release): next version [skip_build] ([0c839e4](https://github.com/shiftcode/sc-commons/commit/0c839e4)) +- build(release): next version [skip_build] ([2722982](https://github.com/shiftcode/sc-commons/commit/2722982)) +- build(release): next version [skip_build] ([a0e996a](https://github.com/shiftcode/sc-commons/commit/a0e996a)) +- build(release): next version [skip_build] ([8d72402](https://github.com/shiftcode/sc-commons/commit/8d72402)) +- build(release): next version [skip_build] ([7bca45d](https://github.com/shiftcode/sc-commons/commit/7bca45d)) +- build(release): next version [skip_build] ([82c65ba](https://github.com/shiftcode/sc-commons/commit/82c65ba)) +- build(release): next version [skip_build] ([8589cd3](https://github.com/shiftcode/sc-commons/commit/8589cd3)) +- build(release): next version [skip_build] ([aaebf67](https://github.com/shiftcode/sc-commons/commit/aaebf67)) +- build(release): next version [skip_build] ([e38c9a6](https://github.com/shiftcode/sc-commons/commit/e38c9a6)) +- build(release): next version [skip_build] ([9470e94](https://github.com/shiftcode/sc-commons/commit/9470e94)) +- build(release): next version [skip_build] ([7a83884](https://github.com/shiftcode/sc-commons/commit/7a83884)) +- build(release): next version [skip_build] ([0ca65a3](https://github.com/shiftcode/sc-commons/commit/0ca65a3)) +- build(scripts): use rm -rf instead of rimraf ([de45957](https://github.com/shiftcode/sc-commons/commit/de45957)) +- chore(jest.config): fix import of utils ([29cab2c](https://github.com/shiftcode/sc-commons/commit/29cab2c)) + +## 4.0.0 (2021-12-23) + +- build(release): next version [skip ci] ([d3b33ba](https://github.com/shiftcode/sc-commons/commit/d3b33ba)) +- build(release): next version [skip ci] ([87c30b4](https://github.com/shiftcode/sc-commons/commit/87c30b4)) +- build(release): next version [skip ci] ([16d5995](https://github.com/shiftcode/sc-commons/commit/16d5995)) +- build(release): next version [skip ci] ([d7b6d61](https://github.com/shiftcode/sc-commons/commit/d7b6d61)) +- build(release): next version [skip ci] ([76a41a6](https://github.com/shiftcode/sc-commons/commit/76a41a6)) +- build(release): next version [skip ci] ([44d8085](https://github.com/shiftcode/sc-commons/commit/44d8085)) +- build(release): next version [skip ci] ([4a2a73d](https://github.com/shiftcode/sc-commons/commit/4a2a73d)) +- build(release): next version [skip ci] ([ac3ac7f](https://github.com/shiftcode/sc-commons/commit/ac3ac7f)) +- build(release): next version [skip ci] ([14622a2](https://github.com/shiftcode/sc-commons/commit/14622a2)) +- build(release): next version [skip ci] ([3199b0c](https://github.com/shiftcode/sc-commons/commit/3199b0c)) +- build(release): next version [skip ci] ([652b10b](https://github.com/shiftcode/sc-commons/commit/652b10b)) +- build(release): next version [skip ci] ([78e4b60](https://github.com/shiftcode/sc-commons/commit/78e4b60)) +- build(release): next version [skip ci] ([006c0be](https://github.com/shiftcode/sc-commons/commit/006c0be)) +- build(release): next version [skip ci] ([6285743](https://github.com/shiftcode/sc-commons/commit/6285743)) +- build(release): next version [skip ci] ([2e01006](https://github.com/shiftcode/sc-commons/commit/2e01006)) +- build(release): next version [skip ci] ([f66b3c3](https://github.com/shiftcode/sc-commons/commit/f66b3c3)) +- build(release): next version [skip ci] ([69cc0f4](https://github.com/shiftcode/sc-commons/commit/69cc0f4)) +- build(release): next version [skip ci] ([921f9f0](https://github.com/shiftcode/sc-commons/commit/921f9f0)) +- build(release): next version [skip ci] ([25993ec](https://github.com/shiftcode/sc-commons/commit/25993ec)) +- build(release): next version [skip ci] ([1fed9a1](https://github.com/shiftcode/sc-commons/commit/1fed9a1)) +- build(release): next version [skip ci] ([cd44cac](https://github.com/shiftcode/sc-commons/commit/cd44cac)) +- refactor(\*): replace npm run with yarn ([238adbc](https://github.com/shiftcode/sc-commons/commit/238adbc)) +- refactor(\*): replace yarn run with yarn ([ef0d2f7](https://github.com/shiftcode/sc-commons/commit/ef0d2f7)) +- refactor(\*): unify READMEs title ([b779764](https://github.com/shiftcode/sc-commons/commit/b779764)) +- revert(version): back to pr ([daf8058](https://github.com/shiftcode/sc-commons/commit/daf8058)) +- fix(package.json): author ([67db3f3](https://github.com/shiftcode/sc-commons/commit/67db3f3)) +- fix(package.json): correctly set sideEffects property ([11e30b5](https://github.com/shiftcode/sc-commons/commit/11e30b5)) +- style(specs): fix various lint stuff ([c8b1d06](https://github.com/shiftcode/sc-commons/commit/c8b1d06)) +- test(jest): update rename tsconfig.spec and update jest ([30a28ff](https://github.com/shiftcode/sc-commons/commit/30a28ff)) +- feat(typescript): use typescript 4.4 and require tslib ^2.3 ([3524ecd](https://github.com/shiftcode/sc-commons/commit/3524ecd)) + +### BREAKING CHANGE + +- requires tslib ^2.3 + +## 3.0.1 (2020-10-06) + +- chore(lint-staged): update all configuration files ([ac86637](https://github.com/shiftcode/sc-commons/commit/ac86637)) + +## 3.0.0 (2020-05-19) + +- feat(typescript): update to typescript 3.9 ([1dc45f5](https://github.com/shiftcode/sc-commons/commit/1dc45f5)) + +### BREAKING CHANGE + +- tslib 2.0.0 required for typescript update + +## 2.0.3 (2019-12-04) + +- chore(deps): bumb a few dev dependencies ([16781af](https://github.com/shiftcode/sc-commons/commit/16781af)) + +## 2.0.2 (2019-12-04) + +**Note:** Version bump only for package @shiftcode/airtable-mapping + +## 2.0.1 (2019-12-04) + +- build(\*): update tsconfig and doc ([71c35a8](https://github.com/shiftcode/sc-commons/commit/71c35a8)) +- build(tsconfig): remove unnecesarry lib declaration ([9894dc1](https://github.com/shiftcode/sc-commons/commit/9894dc1)) +- build(yarn): migrate to yarn workspace ([8811814](https://github.com/shiftcode/sc-commons/commit/8811814)) + +# [2.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-mapping@1.0.0...@shiftcode/airtable-mapping@2.0.0) (2019-11-07) + +### Bug Fixes + +- **airtable-sync:** typings, tests ([4160976](https://github.com/shiftcode/sc-commons/commit/4160976cd61a64418a645dc1cd9bda7da5f8b70e)) + +### Features + +- **airtable-mapping:** export by language ([4031c94](https://github.com/shiftcode/sc-commons/commit/4031c945452cbdbc1adfcb19d4ff25f971887145)) + +### BREAKING CHANGES + +- **airtable-mapping:** - its now necessary to specify the supported languages in AirtableSyncConfig + +* json files will always receive a `_{lang}.json` suffix in name +* you need to use the exported keyValueMapping for `addMapping(...)` (and use the marker type `KeyValueString` in the model for such types) + +# 1.0.0 (2019-10-24) + +### Code Refactoring + +- **airtable:** fix stuff, split into 2 packages ([345f57b](https://github.com/shiftcode/sc-commons/commit/345f57bc86f2cd587b9da1a521cc724b3eb9d6f2)) + +### BREAKING CHANGES + +- **airtable:** - two packages diff --git a/packages/airtable-mapper/README.md b/packages/airtable-mapper/README.md new file mode 100644 index 0000000..bc69a6b --- /dev/null +++ b/packages/airtable-mapper/README.md @@ -0,0 +1,8 @@ +# airtable-mapper + +> 🎯 Target runtime: es2023 ([Browser](https://caniuse.com/?search=es2023) & ([Node >= 20](https://node.green/#ES2023)) + +Module to create the airtable models and their mapping + +Is a zero dependency package, so we can use it in the client\ +(if combining with airtable-syncer package, we're no longer able to use actual models in client code) diff --git a/packages/airtable-mapper/eslint.config.mjs b/packages/airtable-mapper/eslint.config.mjs new file mode 100644 index 0000000..834468a --- /dev/null +++ b/packages/airtable-mapper/eslint.config.mjs @@ -0,0 +1,5 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig({ + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, +}) diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json new file mode 100644 index 0000000..bea4f74 --- /dev/null +++ b/packages/airtable-mapper/package.json @@ -0,0 +1,36 @@ +{ + "name": "@shiftcode/airtable-mapper", + "version": "0.0.0-pr254.0", + "description": "interfaces and classes for airtable mapping", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src", + "lint:ci": "eslint ./src", + "lint:staged": "eslint --fix --cache", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run --passWithNoTests", + "test:watch": "vitest --cache" + }, + "peerDependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/airtable-mapper/src/converters/boolean-converter.function.ts b/packages/airtable-mapper/src/converters/boolean-converter.function.ts new file mode 100644 index 0000000..2c02d5f --- /dev/null +++ b/packages/airtable-mapper/src/converters/boolean-converter.function.ts @@ -0,0 +1,6 @@ +export function booleanConverter(value: boolean | undefined) { + if (value === undefined) { + return false + } + return value +} diff --git a/packages/airtable-mapper/src/index.ts b/packages/airtable-mapper/src/index.ts new file mode 100644 index 0000000..d2d4e52 --- /dev/null +++ b/packages/airtable-mapper/src/index.ts @@ -0,0 +1,7 @@ +export * from './converters/boolean-converter.function.js' +export * from './key-value/key-value.mapping.js' +export * from './mapping/airtable-mapping.model.js' +export * from './model/airtable-attachment.model.js' +export * from './model/airtable-id.model.js' +export * from './model/attachment.model.js' +export * from './static/airtable-record-default-keys.const.js' diff --git a/packages/airtable-mapper/src/key-value/key-value.mapping.ts b/packages/airtable-mapper/src/key-value/key-value.mapping.ts new file mode 100644 index 0000000..81ce747 --- /dev/null +++ b/packages/airtable-mapper/src/key-value/key-value.mapping.ts @@ -0,0 +1,32 @@ +import { AirtableMapping, AirtableModelMapping } from '../mapping/airtable-mapping.model.js' + +/** + * used to mark a {@link AirtableMapping} as a KeyValueMapping, this information is later used by the airtable-fetcher + * {@link AirtableFetcher#fetchInternal} to fetch the fields specified in {@link AirtableSyncConfig#supportedLanguages + */ +// eslint-disable-next-line @typescript-eslint/naming-convention +export const MAPPING_MARKER__KEY_VALUE = Symbol.for('SC_AIRTABLE_MAPPING__MAPPING_MARKER__KEY_VALUE') + +/** + * special symbol which marks a {@link AirtableMapping} as a dedicated type + */ +export const MAPPING_MARKER = Symbol.for('SC_AIRTABLE_MAPPING__MAPPING_MARKER') + +/** + * TODO: desc + * fetches the fields specified in {@link AirtableSyncConfig#supportedLanguages} from airtable + */ +const kvMapping = new AirtableMapping('KeyValue') + +// mark the mapping to later be used as identifier by airtable-fetcher + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-expect-error +kvMapping[MAPPING_MARKER] = MAPPING_MARKER__KEY_VALUE + +export const keyValueMapping: AirtableModelMapping = kvMapping + +/** + * TODO: desc + */ +export type KeyValueString = string diff --git a/packages/airtable-mapper/src/key-value/key-value.model.ts b/packages/airtable-mapper/src/key-value/key-value.model.ts new file mode 100644 index 0000000..0151847 --- /dev/null +++ b/packages/airtable-mapper/src/key-value/key-value.model.ts @@ -0,0 +1,8 @@ +import { AirtableId } from '../model/airtable-id.model.js' + +// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents +export type KeyValueLanguageKeys = 'de' | 'en' | 'fr' | 'it' | 'nl' | string + +export type KeyValuePerLanguage = { [key in KeyValueLanguageKeys]: string } + +export type KeyValue = AirtableId & KeyValuePerLanguage diff --git a/packages/airtable-mapper/src/mapping/airtable-mapping.model.spec.ts b/packages/airtable-mapper/src/mapping/airtable-mapping.model.spec.ts new file mode 100644 index 0000000..4d386e4 --- /dev/null +++ b/packages/airtable-mapper/src/mapping/airtable-mapping.model.spec.ts @@ -0,0 +1,40 @@ +import { describe, expect, test } from 'vitest' + +import { AirtableMapping } from './airtable-mapping.model.js' + +class A { + static _mapping = new AirtableMapping('table-a').addFields(['name']) + + constructor( + public key: string, + public name: string, + ) {} +} + +class B { + static _mapping = new AirtableMapping('table-b').addMapping('a', A._mapping, true).addFields(['name']) + + constructor( + public key: string, + public name: string, + public a: A, + ) {} +} + +describe('set data', () => { + test('tableName', () => { + expect(A._mapping.tableName).toEqual('table-a') + }) + test('fields', () => { + expect(A._mapping.fields).toEqual(['name']) + }) + test('mapping', () => { + expect(B._mapping.mappings).toEqual( + new Map().set('a', { + fieldMapping: A._mapping, + single: true, + converter: undefined, + }), + ) + }) +}) diff --git a/packages/airtable-mapper/src/mapping/airtable-mapping.model.ts b/packages/airtable-mapper/src/mapping/airtable-mapping.model.ts new file mode 100644 index 0000000..ee1394b --- /dev/null +++ b/packages/airtable-mapper/src/mapping/airtable-mapping.model.ts @@ -0,0 +1,46 @@ +type ActualMappingType = T extends Array ? NonNullable : NonNullable + +export interface AirtablePropertyMapping { + single: boolean + fieldMapping: AirtableModelMapping | null + converter?: (value: any) => any +} + +export interface AirtableModelMapping { + mappings: Map + tableName: string + fields: Array +} + +export class AirtableMapping implements AirtableModelMapping { + readonly tableName: string + protected _mappings: Map = new Map() + protected _fields: Array = [] + + constructor(tableName: string) { + this.tableName = tableName + } + + addMapping( + property: K, + mapping: AirtableModelMapping> | null, + single = true, + converter?: (value: any) => any, + ): this { + this._mappings.set(property, { single, fieldMapping: mapping, converter }) + return this + } + + addFields(fields: Array): this { + this._fields = [...this._fields, ...fields] + return this + } + + get mappings() { + return this._mappings + } + + get fields() { + return [...this._fields, ...Array.from(this.mappings.keys())] + } +} diff --git a/packages/airtable-mapper/src/model/airtable-attachment.model.ts b/packages/airtable-mapper/src/model/airtable-attachment.model.ts new file mode 100644 index 0000000..e934b5e --- /dev/null +++ b/packages/airtable-mapper/src/model/airtable-attachment.model.ts @@ -0,0 +1,32 @@ +export interface AirtableThumbnail { + url: string + width: number + height: number +} + +export interface AirtableThumbnails { + full: AirtableThumbnail + small: AirtableThumbnail + large: AirtableThumbnail +} + +/** + * properties always available on an attachment + */ +export interface AirtableAttachmentProps { + id: string + url: string + filename: string + type: string // content type, e.g. "image/jpeg" + size: number +} + +/** + * properties available on an attachment if image + */ +export interface AirtableImageAttachmentProps { + thumbnails: AirtableThumbnails +} + +export type AirtableAttachment = AirtableAttachmentProps & Partial +export type AirtableImageAttachment = AirtableAttachmentProps & AirtableImageAttachmentProps diff --git a/packages/airtable-mapper/src/model/airtable-id.model.ts b/packages/airtable-mapper/src/model/airtable-id.model.ts new file mode 100644 index 0000000..25bbefe --- /dev/null +++ b/packages/airtable-mapper/src/model/airtable-id.model.ts @@ -0,0 +1,9 @@ +/** + * every item type to fetch needs to extend AirtableId. + */ +export abstract class AirtableId { + /* eslint-disable @typescript-eslint/naming-convention */ + AIRTABLE_ID: string + AIRTABLE_TABLE: string + /* eslint-enable @typescript-eslint/naming-convention */ +} diff --git a/packages/airtable-mapper/src/model/attachment.model.ts b/packages/airtable-mapper/src/model/attachment.model.ts new file mode 100644 index 0000000..c866956 --- /dev/null +++ b/packages/airtable-mapper/src/model/attachment.model.ts @@ -0,0 +1,9 @@ +export interface Attachment { + id: string + url: string + type: string +} + +export interface ImageAttachment extends Attachment { + ratio: number +} diff --git a/packages/airtable-mapper/src/static/airtable-record-default-keys.const.ts b/packages/airtable-mapper/src/static/airtable-record-default-keys.const.ts new file mode 100644 index 0000000..1636a14 --- /dev/null +++ b/packages/airtable-mapper/src/static/airtable-record-default-keys.const.ts @@ -0,0 +1,3 @@ +import { AirtableId } from '../model/airtable-id.model.js' + +export const airtableRecordDefaultKeys: Array = ['AIRTABLE_ID', 'AIRTABLE_TABLE'] diff --git a/packages/airtable-mapper/tsconfig.json b/packages/airtable-mapper/tsconfig.json new file mode 100644 index 0000000..d35c4e4 --- /dev/null +++ b/packages/airtable-mapper/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "target": "es2021", + "declarationDir": "./dist", + "strictPropertyInitialization": false + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/airtable-mapper/tsconfig.lint.json b/packages/airtable-mapper/tsconfig.lint.json new file mode 100644 index 0000000..55845f2 --- /dev/null +++ b/packages/airtable-mapper/tsconfig.lint.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "types": ["node"], + "paths": {} + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/airtable-mapper/tsconfig.spec.json b/packages/airtable-mapper/tsconfig.spec.json new file mode 100644 index 0000000..c0cdfcb --- /dev/null +++ b/packages/airtable-mapper/tsconfig.spec.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "paths": {} + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} From da94f45d3bc5ab8a06c2970e7ae811a06e3ec2e9 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:12:05 +0100 Subject: [PATCH 26/55] feat: introduce airtable-syncer BREAKING-CHANGE: newly added to sc-commons-public --- packages/airtable-syncer/.lintstagedrc.yml | 8 + packages/airtable-syncer/CHANGELOG.md | 395 ++++++++++++++++++ packages/airtable-syncer/README.md | 29 ++ packages/airtable-syncer/eslint.config.mjs | 15 + packages/airtable-syncer/package.json | 55 +++ .../src/config/airtable-config.model.ts | 26 ++ packages/airtable-syncer/src/config/index.ts | 1 + packages/airtable-syncer/src/index.ts | 9 + .../src/model/airtable-id-record.model.ts | 8 + .../src/model/airtable-record.model.ts | 11 + .../src/model/key-value.symbol.ts | 1 + .../src/module/airtable-sync-config.symbol.ts | 1 + .../src/module/airtable.module.spec.ts | 63 +++ .../src/module/airtable.module.ts | 24 ++ .../services/airtable-fetcher.service.spec.ts | 143 +++++++ .../src/services/airtable-fetcher.service.ts | 220 ++++++++++ .../services/airtable-sync.service.spec.ts | 108 +++++ .../src/services/airtable-sync.service.ts | 129 ++++++ .../src/services/airtable.api.spec.ts | 73 ++++ .../src/services/airtable.api.ts | 80 ++++ .../attachment-url-resolver.service.ts | 8 + .../src/services/sns-publisher.service.ts | 44 ++ .../airtable-record-default-keys.const.ts | 3 + .../src/static/batch-tasks.function.ts | 12 + .../static/is-airtable-attachment.function.ts | 10 + .../src/static/is-airtable-image.function.ts | 5 + .../reduce-obj-for-lang.function.spec.ts | 297 +++++++++++++ .../static/reduce-obj-for-lang.function.ts | 29 ++ .../supported-languages-to-array.functions.ts | 3 + .../test/add-logger-to-container.function.ts | 11 + .../test/airtable-fetcher.mock.ts | 9 + .../airtable-syncer/test/airtable.api.mock.ts | 8 + .../airtable-syncer/test/airtable.mock.ts | 22 + .../test/mock-log.transport.ts | 11 + .../test/models/complex.model.ts | 21 + .../test/models/simple.model.ts | 8 + .../airtable-syncer/test/s3-helper.mock.ts | 17 + .../test/sns-publisher.mock.ts | 10 + packages/airtable-syncer/test/some-items.ts | 47 +++ .../test-attachment-url-resolver.service.ts | 27 ++ packages/airtable-syncer/test/vitest-setup.ts | 1 + packages/airtable-syncer/tsconfig.json | 13 + packages/airtable-syncer/tsconfig.lint.json | 16 + packages/airtable-syncer/tsconfig.spec.json | 16 + packages/airtable-syncer/vitest.config.js | 34 ++ 45 files changed, 2081 insertions(+) create mode 100644 packages/airtable-syncer/.lintstagedrc.yml create mode 100644 packages/airtable-syncer/CHANGELOG.md create mode 100644 packages/airtable-syncer/README.md create mode 100644 packages/airtable-syncer/eslint.config.mjs create mode 100644 packages/airtable-syncer/package.json create mode 100644 packages/airtable-syncer/src/config/airtable-config.model.ts create mode 100644 packages/airtable-syncer/src/config/index.ts create mode 100644 packages/airtable-syncer/src/index.ts create mode 100644 packages/airtable-syncer/src/model/airtable-id-record.model.ts create mode 100644 packages/airtable-syncer/src/model/airtable-record.model.ts create mode 100644 packages/airtable-syncer/src/model/key-value.symbol.ts create mode 100644 packages/airtable-syncer/src/module/airtable-sync-config.symbol.ts create mode 100644 packages/airtable-syncer/src/module/airtable.module.spec.ts create mode 100644 packages/airtable-syncer/src/module/airtable.module.ts create mode 100644 packages/airtable-syncer/src/services/airtable-fetcher.service.spec.ts create mode 100644 packages/airtable-syncer/src/services/airtable-fetcher.service.ts create mode 100644 packages/airtable-syncer/src/services/airtable-sync.service.spec.ts create mode 100644 packages/airtable-syncer/src/services/airtable-sync.service.ts create mode 100644 packages/airtable-syncer/src/services/airtable.api.spec.ts create mode 100644 packages/airtable-syncer/src/services/airtable.api.ts create mode 100644 packages/airtable-syncer/src/services/attachment-url-resolver.service.ts create mode 100644 packages/airtable-syncer/src/services/sns-publisher.service.ts create mode 100644 packages/airtable-syncer/src/static/airtable-record-default-keys.const.ts create mode 100644 packages/airtable-syncer/src/static/batch-tasks.function.ts create mode 100644 packages/airtable-syncer/src/static/is-airtable-attachment.function.ts create mode 100644 packages/airtable-syncer/src/static/is-airtable-image.function.ts create mode 100644 packages/airtable-syncer/src/static/reduce-obj-for-lang.function.spec.ts create mode 100644 packages/airtable-syncer/src/static/reduce-obj-for-lang.function.ts create mode 100644 packages/airtable-syncer/src/static/supported-languages-to-array.functions.ts create mode 100644 packages/airtable-syncer/test/add-logger-to-container.function.ts create mode 100644 packages/airtable-syncer/test/airtable-fetcher.mock.ts create mode 100644 packages/airtable-syncer/test/airtable.api.mock.ts create mode 100644 packages/airtable-syncer/test/airtable.mock.ts create mode 100644 packages/airtable-syncer/test/mock-log.transport.ts create mode 100644 packages/airtable-syncer/test/models/complex.model.ts create mode 100644 packages/airtable-syncer/test/models/simple.model.ts create mode 100644 packages/airtable-syncer/test/s3-helper.mock.ts create mode 100644 packages/airtable-syncer/test/sns-publisher.mock.ts create mode 100644 packages/airtable-syncer/test/some-items.ts create mode 100644 packages/airtable-syncer/test/test-attachment-url-resolver.service.ts create mode 100644 packages/airtable-syncer/test/vitest-setup.ts create mode 100644 packages/airtable-syncer/tsconfig.json create mode 100644 packages/airtable-syncer/tsconfig.lint.json create mode 100644 packages/airtable-syncer/tsconfig.spec.json create mode 100644 packages/airtable-syncer/vitest.config.js diff --git a/packages/airtable-syncer/.lintstagedrc.yml b/packages/airtable-syncer/.lintstagedrc.yml new file mode 100644 index 0000000..8fe744c --- /dev/null +++ b/packages/airtable-syncer/.lintstagedrc.yml @@ -0,0 +1,8 @@ +'{src,test}/**/*.(t|j)s': + - npm run lint:staged + +'*': + - npx prettier --write --ignore-unknown + +./package.json: + - sort-package-json diff --git a/packages/airtable-syncer/CHANGELOG.md b/packages/airtable-syncer/CHANGELOG.md new file mode 100644 index 0000000..020a44e --- /dev/null +++ b/packages/airtable-syncer/CHANGELOG.md @@ -0,0 +1,395 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [12.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@12.0.2...@shiftcode/airtable-sync@12.1.0) (2026-01-14) + +### Bug Fixes + +- **airtable-sync:** throw underlying error instead of misleading error ([66e9a3c](https://github.com/shiftcode/sc-commons/commit/66e9a3c64d2838664e4545e4f0a6bff8b4bfc622)) + +### Features + +- **airtable-sync:** reduce concurrent s3 uploads from 500 to 50 ([b6d184a](https://github.com/shiftcode/sc-commons/commit/b6d184a5e93440e6434e60e431085ebb8c22b9ee)) + +## [12.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@12.0.1...@shiftcode/airtable-sync@12.0.2) (2026-01-09) + +### Bug Fixes + +- **airtable-sync:** add try catch for sns sending ([5ea001d](https://github.com/shiftcode/sc-commons/commit/5ea001ddf1d6e9ae5188337b3af610a0c87cd03a)) +- **airtable-sync:** make sure throttle does not drop calls ([a586d73](https://github.com/shiftcode/sc-commons/commit/a586d737a43935ac6723f50976a33e906e16f123)) + +## [12.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@12.0.0...@shiftcode/airtable-sync@12.0.1) (2025-05-23) + +### Bug Fixes + +- **airtable-sync:** resolve typing issues with the new airtable version ([7b20082](https://github.com/shiftcode/sc-commons/commit/7b200828cfa19507dca100d427e030e8feb63d1d)) +- **airtable-sync:** update airtable dep to get rid of outdated libs downstream ([7e72159](https://github.com/shiftcode/sc-commons/commit/7e72159ca32fb582c27a58cfcba2e70c6ec6e055)) + +# [12.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@11.0.1...@shiftcode/airtable-sync@12.0.0) (2025-05-19) + +### Features + +- **airtable-sync:** replace @shiftcode/lambda-logger with @shiftcode/logger ([a121d36](https://github.com/shiftcode/sc-commons/commit/a121d360bc16c275a153c5df9cdf70c80971384d)) +- update @shiftcode/logger to version ^3.0.0 and @shiftcode/utilities to version ^4.0.0 ([2e5f2d1](https://github.com/shiftcode/sc-commons/commit/2e5f2d1a78882b8885aacd7bab56b8733a13b7d6)) + +### BREAKING CHANGES + +- requires @shiftcode/logger ^3.0.0, + requires @shiftcode/utilities ^4.0.0 + +## [11.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@11.0.0...@shiftcode/airtable-sync@11.0.1) (2025-05-15) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +# [11.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.2.3...@shiftcode/airtable-sync@11.0.0) (2025-05-01) + +### Bug Fixes + +- **airtable-sync:** replace Logger with injectable token LoggerService ([2967875](https://github.com/shiftcode/sc-commons/commit/2967875ec44be12a790464b2e0bca108b2d84254)) +- **airtable-sync:** resolve issues related to inversify^7.0.0 update ([a7d3d49](https://github.com/shiftcode/sc-commons/commit/a7d3d49be99434a78b135f5b835dd38c8008e586)) + +### Features + +- **airtable-sync:** change how the config is provided ([ca9ed7a](https://github.com/shiftcode/sc-commons/commit/ca9ed7ae9aa05fffa63be2beeadcda6e3705d2c7)) +- **airtable-sync:** update to date-fns^4.0.0 ([d554600](https://github.com/shiftcode/sc-commons/commit/d55460037834c20edda1816d02de55fe7c744394)) +- update to inversify^7.0.0 ([c6807d6](https://github.com/shiftcode/sc-commons/commit/c6807d6c21110c820f489020d41c1cbad3a2b2f6)) + +### BREAKING CHANGES + +- **airtable-sync:** The configuration for airtable-sync must now be provided using a dedicated inversify symbol (AIRTABLE_SYNC_CONFIG) and config type (AirtableSyncConfig) +- requires inversify^7.0.0 as a peer dependency +- **airtable-sync:** requires date-fns^4.0.0 as a peer dependency + +## [10.2.3](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.2.2...@shiftcode/airtable-sync@10.2.3) (2025-03-06) + +### Bug Fixes + +- update engines definition (left over from node 22 upgrade) ([f5428ae](https://github.com/shiftcode/sc-commons/commit/f5428ae64c45567912887b8bab1e881c4312669f)) +- update version range for reflect-metadata ([9b7b0d1](https://github.com/shiftcode/sc-commons/commit/9b7b0d1056a9f47476e1ddb1ac58335094e2185f)) + +## [10.2.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.2.1...@shiftcode/airtable-sync@10.2.2) (2025-03-04) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## [10.2.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.2.0...@shiftcode/airtable-sync@10.2.1) (2024-08-02) + +### Bug Fixes + +- **airtable-sync:** fix issue with unwrapped results ([43800f0](https://github.com/shiftcode/sc-commons/commit/43800f0201ed29403111909c370468648b18dc18)) + +# [10.2.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.1.0...@shiftcode/airtable-sync@10.2.0) (2024-07-31) + +### Features + +- move start indication log to lambda-utils ([f88359e](https://github.com/shiftcode/sc-commons/commit/f88359e692fce5aaaee7ebc57d22eb22051a2923)) + +# [10.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.0.1...@shiftcode/airtable-sync@10.1.0) (2024-07-30) + +### Bug Fixes + +- **airtable-sync:** fix typo ([2296176](https://github.com/shiftcode/sc-commons/commit/22961763a636f2cbb5d1be28ebe291c291e6da15)) +- **airtable-sync:** implement real batching ([62c02cc](https://github.com/shiftcode/sc-commons/commit/62c02cca0b937a181eded643ab29ca9a6e5a389a)) +- **airtable-sync:** import path ([236bfe8](https://github.com/shiftcode/sc-commons/commit/236bfe86cf10837d27a6220283f81e7e16bcf1f0)) +- **airtable-sync:** move batch execution to correct place ([302b474](https://github.com/shiftcode/sc-commons/commit/302b474342d3b95d5d40e2a8571959c57fcfe961)) + +### Features + +- **airtable-sync:** split upload into chunks ([19bf084](https://github.com/shiftcode/sc-commons/commit/19bf08484b073ae8d82556ee9e57ea4e6e3304f8)) +- **batch-executor:** use generator ([739ade7](https://github.com/shiftcode/sc-commons/commit/739ade717711168830c87b079df70ff8ce59c3e6)) +- **batch-executor:** use settled ([7895295](https://github.com/shiftcode/sc-commons/commit/78952950e40108f786537ecde212d8261d022427)) + +## [10.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@10.0.0...@shiftcode/airtable-sync@10.0.1) (2024-07-29) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +# [10.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@9.0.0...@shiftcode/airtable-sync@10.0.0) (2024-07-13) + +### Build System + +- **airtable-sync:** upgrade date-fns ([9403c78](https://github.com/shiftcode/sc-commons/commit/9403c7837b13c24e46ef4fb8121f3bb6c1d8b0b1)) +- **node:** upgrade to node 20 ([2899d0d](https://github.com/shiftcode/sc-commons/commit/2899d0d41ece080b276e7bf84915d4849da81a29)) + +### Reverts + +- Revert "build(airtable-sync): upgrade airtable dependency" ([35403a9](https://github.com/shiftcode/sc-commons/commit/35403a93bc7a00a489eb5430d15f16e4a5384904)) + +### BREAKING CHANGES + +- **airtable-sync:** minimum version date-fns@^3.0.0 is required as peer dependency +- **node:** Minimum required node version is 20.11.1. In general speaking the runtime (Node or Browser) must support all es2023 features. + +# [9.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.6...@shiftcode/airtable-sync@9.0.0) (2024-07-08) + +### Features + +- **airtable-mapping:** remove obsolete constructor argument ([a528743](https://github.com/shiftcode/sc-commons/commit/a5287436ba0913c61122b0c8a330856a741cd0d5)) + +### BREAKING CHANGES + +- **airtable-mapping:** The AirtableMapping constructor does no longer accept two arguments. Instead we assume the modelName and tableName are equal. + +## [8.0.6](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.5...@shiftcode/airtable-sync@8.0.6) (2024-01-25) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## [8.0.5](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.4...@shiftcode/airtable-sync@8.0.5) (2023-12-18) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## [8.0.4](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.3...@shiftcode/airtable-sync@8.0.4) (2023-10-18) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## [8.0.3](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.2...@shiftcode/airtable-sync@8.0.3) (2023-07-27) + +### Bug Fixes + +- **airtable-sync:** add support for version deployed in lambda runtime (node18) ([b2be98d](https://github.com/shiftcode/sc-commons/commit/b2be98dfde69d9e5ff1d55fee5e7fde058c46c69)) +- **airtable-sync:** use Promise.allSettled and await in smaller batches ([e4611fc](https://github.com/shiftcode/sc-commons/commit/e4611fc385a9007afbe3d5534979b031139c39a3)) +- **airtable-sync:** use symbol to identify KeyValue mapping ([541d794](https://github.com/shiftcode/sc-commons/commit/541d79467e685d655490d2cf465b2add9662a482)) + +## [8.0.2](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.1...@shiftcode/airtable-sync@8.0.2) (2023-06-01) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## [8.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@8.0.0...@shiftcode/airtable-sync@8.0.1) (2023-06-01) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +# [8.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@7.1.0...@shiftcode/airtable-sync@8.0.0) (2023-05-15) + +### Features + +- **airtable-sync:** inline sns publisher functionality ([080a1e2](https://github.com/shiftcode/sc-commons/commit/080a1e24a4d0991e9e2be4b433b1c759cc197364)) +- **airtable-sync:** migrate to ESM (different related changes) ([8593e0a](https://github.com/shiftcode/sc-commons/commit/8593e0a8eb4da2bf3734c1ee02024be1ca2d7ec1)) + +### BREAKING CHANGES + +- **airtable-sync:** only supported in projects using ESM + +# [7.1.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@7.0.0...@shiftcode/airtable-sync@7.1.0) (2023-03-17) + +### Features + +- **eslint-plugin:** introduce tests to verify correct implementation of plugins ([76d5b2f](https://github.com/shiftcode/sc-commons/commit/76d5b2f2bea5a3f4450e7ce43153fc2ddba832c1)) + +# [7.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@6.0.1...@shiftcode/airtable-sync@7.0.0) (2023-03-16) + +### Build System + +- **tsconfig:** build for es2022 target ([c75651b](https://github.com/shiftcode/sc-commons/commit/c75651b2b2ca6338e71b6538616d5b0e9bbb40cc)) + +### BREAKING CHANGES + +- **tsconfig:** requires ES2022 support (node@18) + +## [6.0.1](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@6.0.0...@shiftcode/airtable-sync@6.0.1) (2022-01-17) + +### Bug Fixes + +- **dependency:** require lambda-utils@7 ([20a97a5](https://github.com/shiftcode/sc-commons/commit/20a97a51b0b1542ff837f4303b37592802a06944)) + +## 6.0.0 (2022-01-11) + +- build(release): next version [skip ci] ([7fb99e3](https://github.com/shiftcode/sc-commons/commit/7fb99e3)) +- build(release): next version [skip ci] ([69f8e36](https://github.com/shiftcode/sc-commons/commit/69f8e36)) +- build(release): next version [skip ci] ([6658958](https://github.com/shiftcode/sc-commons/commit/6658958)) +- build(release): next version [skip_build] ([911da02](https://github.com/shiftcode/sc-commons/commit/911da02)) +- build(release): next version [skip_build] ([199066e](https://github.com/shiftcode/sc-commons/commit/199066e)) +- build(release): next version [skip_build] ([0c839e4](https://github.com/shiftcode/sc-commons/commit/0c839e4)) +- build(release): next version [skip_build] ([2722982](https://github.com/shiftcode/sc-commons/commit/2722982)) +- build(release): next version [skip_build] ([a0e996a](https://github.com/shiftcode/sc-commons/commit/a0e996a)) +- build(release): next version [skip_build] ([8d72402](https://github.com/shiftcode/sc-commons/commit/8d72402)) +- build(release): next version [skip_build] ([7bca45d](https://github.com/shiftcode/sc-commons/commit/7bca45d)) +- build(release): next version [skip_build] ([82c65ba](https://github.com/shiftcode/sc-commons/commit/82c65ba)) +- build(release): next version [skip_build] ([8589cd3](https://github.com/shiftcode/sc-commons/commit/8589cd3)) +- build(release): next version [skip_build] ([aaebf67](https://github.com/shiftcode/sc-commons/commit/aaebf67)) +- build(release): next version [skip_build] ([e38c9a6](https://github.com/shiftcode/sc-commons/commit/e38c9a6)) +- build(release): next version [skip_build] ([9470e94](https://github.com/shiftcode/sc-commons/commit/9470e94)) +- build(release): next version [skip_build] ([7a83884](https://github.com/shiftcode/sc-commons/commit/7a83884)) +- build(release): next version [skip_build] ([0ca65a3](https://github.com/shiftcode/sc-commons/commit/0ca65a3)) +- build(release): next version [skip_build] ([b9614a4](https://github.com/shiftcode/sc-commons/commit/b9614a4)) +- build(release): next version [skip_build] ([1483216](https://github.com/shiftcode/sc-commons/commit/1483216)) +- build(release): next version [skip_build] ([5e2b455](https://github.com/shiftcode/sc-commons/commit/5e2b455)) +- build(release): next version [skip_build] ([7470c7d](https://github.com/shiftcode/sc-commons/commit/7470c7d)) +- build(release): next version [skip_build] ([bf316bd](https://github.com/shiftcode/sc-commons/commit/bf316bd)) +- build(release): next version [skip_workflow] ([04eb9bc](https://github.com/shiftcode/sc-commons/commit/04eb9bc)) +- build(scripts): use rm -rf instead of rimraf ([de45957](https://github.com/shiftcode/sc-commons/commit/de45957)) +- build(tsconfig.spec): remove unnecessary path ([af1b707](https://github.com/shiftcode/sc-commons/commit/af1b707)) +- chore(aws-sdk): use same version in all packages ([08ac152](https://github.com/shiftcode/sc-commons/commit/08ac152)) +- chore(jest.config): fix import of utils ([29cab2c](https://github.com/shiftcode/sc-commons/commit/29cab2c)) +- chore(peer-deps): remove pr version ([ef34bce](https://github.com/shiftcode/sc-commons/commit/ef34bce)) +- fix(peer-dependencies): correct version ([99aa21e](https://github.com/shiftcode/sc-commons/commit/99aa21e)) +- fix(peer-dependencies): update versions ([9aac1ed](https://github.com/shiftcode/sc-commons/commit/9aac1ed)) +- feat(deps): update dependencies ([5a41426](https://github.com/shiftcode/sc-commons/commit/5a41426)) +- feat(deps): update dependencies ([ce9c2d5](https://github.com/shiftcode/sc-commons/commit/ce9c2d5)) + +### BREAKING CHANGE + +- date-fns@^2.28.0 now required as peer dependency +- inversify@^6.0.1 required + +## 5.0.0 (2021-12-23) + +- build(release): next version [skip ci] ([d3b33ba](https://github.com/shiftcode/sc-commons/commit/d3b33ba)) +- build(release): next version [skip ci] ([87c30b4](https://github.com/shiftcode/sc-commons/commit/87c30b4)) +- build(release): next version [skip ci] ([16d5995](https://github.com/shiftcode/sc-commons/commit/16d5995)) +- build(release): next version [skip ci] ([d7b6d61](https://github.com/shiftcode/sc-commons/commit/d7b6d61)) +- build(release): next version [skip ci] ([76a41a6](https://github.com/shiftcode/sc-commons/commit/76a41a6)) +- build(release): next version [skip ci] ([44d8085](https://github.com/shiftcode/sc-commons/commit/44d8085)) +- build(release): next version [skip ci] ([4a2a73d](https://github.com/shiftcode/sc-commons/commit/4a2a73d)) +- build(release): next version [skip ci] ([ac3ac7f](https://github.com/shiftcode/sc-commons/commit/ac3ac7f)) +- build(release): next version [skip ci] ([14622a2](https://github.com/shiftcode/sc-commons/commit/14622a2)) +- build(release): next version [skip ci] ([3199b0c](https://github.com/shiftcode/sc-commons/commit/3199b0c)) +- build(release): next version [skip ci] ([652b10b](https://github.com/shiftcode/sc-commons/commit/652b10b)) +- build(release): next version [skip ci] ([78e4b60](https://github.com/shiftcode/sc-commons/commit/78e4b60)) +- build(release): next version [skip ci] ([006c0be](https://github.com/shiftcode/sc-commons/commit/006c0be)) +- build(release): next version [skip ci] ([6285743](https://github.com/shiftcode/sc-commons/commit/6285743)) +- build(release): next version [skip ci] ([2e01006](https://github.com/shiftcode/sc-commons/commit/2e01006)) +- build(release): next version [skip ci] ([f66b3c3](https://github.com/shiftcode/sc-commons/commit/f66b3c3)) +- build(release): next version [skip ci] ([69cc0f4](https://github.com/shiftcode/sc-commons/commit/69cc0f4)) +- build(release): next version [skip ci] ([921f9f0](https://github.com/shiftcode/sc-commons/commit/921f9f0)) +- build(release): next version [skip ci] ([25993ec](https://github.com/shiftcode/sc-commons/commit/25993ec)) +- build(release): next version [skip ci] ([1fed9a1](https://github.com/shiftcode/sc-commons/commit/1fed9a1)) +- build(release): next version [skip ci] ([cd44cac](https://github.com/shiftcode/sc-commons/commit/cd44cac)) +- refactor(\*): replace npm run with yarn ([238adbc](https://github.com/shiftcode/sc-commons/commit/238adbc)) +- refactor(\*): unify READMEs title ([b779764](https://github.com/shiftcode/sc-commons/commit/b779764)) +- revert(version): back to pr ([daf8058](https://github.com/shiftcode/sc-commons/commit/daf8058)) +- fix(package.json): author ([67db3f3](https://github.com/shiftcode/sc-commons/commit/67db3f3)) +- fix(package.json): correctly set sideEffects property ([11e30b5](https://github.com/shiftcode/sc-commons/commit/11e30b5)) +- fix(peer-dependencies): depend on pr93 versions ([b36c70b](https://github.com/shiftcode/sc-commons/commit/b36c70b)) +- style(prettier): update to 2.5 and prettify ([47be5f1](https://github.com/shiftcode/sc-commons/commit/47be5f1)) +- test(jest): update rename tsconfig.spec and update jest ([30a28ff](https://github.com/shiftcode/sc-commons/commit/30a28ff)) +- feat(typescript): use typescript 4.4 and require tslib ^2.3 ([3524ecd](https://github.com/shiftcode/sc-commons/commit/3524ecd)) + +### BREAKING CHANGE + +- requires tslib ^2.3 + +## 4.0.3 (2021-11-09) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## 4.0.2 (2021-11-08) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## 4.0.1 (2021-01-22) + +- test(tsconfig.jest): add paths ([af64719](https://github.com/shiftcode/sc-commons/commit/af64719)) +- chore(package.json): use \* version for dev-deps to peer packages ([a13d261](https://github.com/shiftcode/sc-commons/commit/a13d261)) + +## 4.0.0 (2020-10-06) + +- Merge branch 'master' into #77-reusable-utils ([baa4f26](https://github.com/shiftcode/sc-commons/commit/baa4f26)), closes [#77](https://github.com/shiftcode/sc-commons/issues/77) +- chore(lint-staged): update all configuration files ([ac86637](https://github.com/shiftcode/sc-commons/commit/ac86637)) +- refactor(s3-helper): rename method ([3c2a04c](https://github.com/shiftcode/sc-commons/commit/3c2a04c)) +- fix(airtable-sync): s3Helper usage ([4f5c5c2](https://github.com/shiftcode/sc-commons/commit/4f5c5c2)) + +### BREAKING CHANGE + +- - s3Helper method uploadDataJson renamed to uploadJson() + +## 3.0.2 (2020-06-14) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## 3.0.1 (2020-05-19) + +- fix(peerdeps): version of peer deps update ([9dd641d](https://github.com/shiftcode/sc-commons/commit/9dd641d)) + +## 3.0.0 (2020-05-19) + +- feat(typescript): update to typescript 3.9 ([1dc45f5](https://github.com/shiftcode/sc-commons/commit/1dc45f5)) + +### BREAKING CHANGE + +- tslib 2.0.0 required for typescript update + +## 2.0.8 (2020-05-09) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## 2.0.7 (2020-04-09) + +- style(prettier): prettify all files ([a9552d0](https://github.com/shiftcode/sc-commons/commit/a9552d0)) + +## 2.0.6 (2019-12-19) + +- fix(airtable-fetcher): ensure ids is an Array ([bf9812b](https://github.com/shiftcode/sc-commons/commit/bf9812b)) + +## 2.0.5 (2019-12-04) + +- chore(deps): bumb a few dev dependencies ([16781af](https://github.com/shiftcode/sc-commons/commit/16781af)) + +## 2.0.4 (2019-12-04) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +## 2.0.3 (2019-12-04) + +- chore(ts-config): activate the esModuleInterop flag and refactor imports ([25625df](https://github.com/shiftcode/sc-commons/commit/25625df)) +- build(\*): update tsconfig and doc ([71c35a8](https://github.com/shiftcode/sc-commons/commit/71c35a8)) +- build(tsconfig): remove unnecesarry lib declaration ([9894dc1](https://github.com/shiftcode/sc-commons/commit/9894dc1)) +- build(yarn): migrate to yarn workspace ([8811814](https://github.com/shiftcode/sc-commons/commit/8811814)) + +## 2.0.2 (2019-11-15) + +- fix(deps): update version range for @shiftcode/lambda-utils ([fd852a2](https://github.com/shiftcode/sc-commons/commit/fd852a2)) + +## 2.0.1 (2019-11-14) + +**Note:** Version bump only for package @shiftcode/airtable-sync + +# [2.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcode/airtable-sync@1.0.0...@shiftcode/airtable-sync@2.0.0) (2019-11-07) + +### Bug Fixes + +- **airtable-sync:** required peer-dependency ([092291b](https://github.com/shiftcode/sc-commons/commit/092291b11eef8708d3d4fb6b03d7635ebd092f8c)) +- **airtable-sync:** typings, tests ([4160976](https://github.com/shiftcode/sc-commons/commit/4160976cd61a64418a645dc1cd9bda7da5f8b70e)) + +### Features + +- **airtable-mapping:** export by language ([4031c94](https://github.com/shiftcode/sc-commons/commit/4031c945452cbdbc1adfcb19d4ff25f971887145)) +- **airtable-sync:** fallaback if keyvalue translations are missing ([7a883f5](https://github.com/shiftcode/sc-commons/commit/7a883f5555276eddd22b7c3d7e7089c4e037936a)) + +### BREAKING CHANGES + +- **airtable-mapping:** - its now necessary to specify the supported languages in AirtableSyncConfig + +* json files will always receive a `_{lang}.json` suffix in name +* you need to use the exported keyValueMapping for `addMapping(...)` (and use the marker type `KeyValueString` in the model for such types) + +# [1.0.0](https://github.com/shiftcode/sc-commons/compare/@shiftcoders/airtable-sync@0.1.1...@shiftcoders/airtable-sync@1.0.0) (2019-10-24) + +### Bug Fixes + +- **airtable-fetcher:** refactor log statements ([ab015b5](https://github.com/shiftcode/sc-commons/commit/ab015b5af03e74eb0b3041dd2585558284f91232)) +- **airtable-sync:** fix tests (work with new airtable-mapping package) ([c804d5f](https://github.com/shiftcode/sc-commons/commit/c804d5ffa38ab7ca8dd748e1f8cb13e27c53f170)) +- **airtable-sync:** remove super verbose logs ([3754e57](https://github.com/shiftcode/sc-commons/commit/3754e57721ded586543c86df1660bb0f4a92a3a4)) +- **airtable.api:** log airtable select options when fetching ([36d15f4](https://github.com/shiftcode/sc-commons/commit/36d15f44a3f7fda387211b747ea01a860228a2fb)) +- **airtable.api:** log select options on error ([c6904a6](https://github.com/shiftcode/sc-commons/commit/c6904a6e45c422c3c2a9cff432bdff31a1ce9d7a)) + +### Code Refactoring + +- **airtable:** fix stuff, split into 2 packages ([345f57b](https://github.com/shiftcode/sc-commons/commit/345f57bc86f2cd587b9da1a521cc724b3eb9d6f2)) + +### Features + +- **lambda-logger:** provide inversify module ([b12d7cf](https://github.com/shiftcode/sc-commons/commit/b12d7cfc045c5db9d2cf61284bd39f4d414d7fdb)) + +### BREAKING CHANGES + +- **airtable:** - two packages + +## [0.1.1](https://github.com/shiftcode/sc-commons/compare/@shiftcoders/airtable-sync@0.1.0...@shiftcoders/airtable-sync@0.1.1) (2019-10-16) + +**Note:** Version bump only for package @shiftcoders/airtable-sync + +# 0.1.0 (2019-10-11) + +### Features + +- **airtable-sync:** new package ([7aa2209](https://github.com/shiftcode/sc-commons/commit/7aa22090171980066fb58a1d1389a5cbaaa5010a)) diff --git a/packages/airtable-syncer/README.md b/packages/airtable-syncer/README.md new file mode 100644 index 0000000..29898c0 --- /dev/null +++ b/packages/airtable-syncer/README.md @@ -0,0 +1,29 @@ +# airtable-syncer + +> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023)) + +Module to sync airtable data to S3 and publish SNS events for all attachments found and not yet synced to S3. Usually +those events are consumed by a lambda function creating different sizes of the images and storing them in S3. + +## Usage + +- provide `AirtableSyncConfig` bound to the `AIRTABLE_SYNC_CONFIG` symbol +- provide an implementation for the AttachmentUrlResolver + +```typescript +import { AttachmentUrlResolver, AIRTABLE_SYNC_CONFIG, AirtableSyncConfig } from '@shiftcode/airtable-syncer' +import { Container } from 'inversify' +import { configCreaterFn, ServiceConfig } from './config.js' +import { ServiceAttachmentUrlResolver } from './attachment-url-resolver.service.js' + +const con = new Container({ + defaultScope: 'Singleton', + autoBindInjectable: true, +}) + +con.bind(AIRTABLE_SYNC_CONFIG).toDynamicValue(configCreaterFn).inSingletonScope() + +con.bind(AttachmentUrlResolver).to(ServiceAttachmentUrlResolver).inSingletonScope() +``` + +- define the sns event and function in serverless.yml to download attachments from airtable and upload them to s3 diff --git a/packages/airtable-syncer/eslint.config.mjs b/packages/airtable-syncer/eslint.config.mjs new file mode 100644 index 0000000..f0e13a3 --- /dev/null +++ b/packages/airtable-syncer/eslint.config.mjs @@ -0,0 +1,15 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig( + { + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, + }, + { + files: ['**/*.ts'], + rules: { + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + }, + }, +) diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json new file mode 100644 index 0000000..660f5ef --- /dev/null +++ b/packages/airtable-syncer/package.json @@ -0,0 +1,55 @@ +{ + "name": "@shiftcode/airtable-syncer", + "version": "0.0.0-pr254.0", + "description": "base utils and services to export airtable and upload to S3", + "repository": "https://github.com/shiftcode/sc-commons-public", + "license": "MIT", + "author": "shiftcode GmbH ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "scripts": { + "prebuild": "rm -rf ./dist", + "build": "tsc", + "lint": "eslint --fix --cache ./src ./test", + "lint:ci": "eslint ./src ./test", + "lint:staged": "eslint --fix --cache", + "prepublish": "node ../publish-helper/dist/prepare-dist.js", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run --passWithNoTests", + "test:watch": "vitest --cache" + }, + "dependencies": { + "airtable": "^0.12.2", + "p-queue": "^9.0.1" + }, + "devDependencies": { + "@shiftcode/airtable-mapper": "^0.0.0-pr254", + "@shiftcode/inversify-logger": "^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^0.0.0-pr254", + "@swc/core": "^1.15.11", + "unplugin-swc": "^1.5.9" + }, + "peerDependencies": { + "@aws-sdk/client-sns": "^3.188.0", + "@shiftcode/airtable-mapper": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/inversify-logger": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/logger": "^4.0.0", + "date-fns": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/airtable-syncer/src/config/airtable-config.model.ts b/packages/airtable-syncer/src/config/airtable-config.model.ts new file mode 100644 index 0000000..2130a56 --- /dev/null +++ b/packages/airtable-syncer/src/config/airtable-config.model.ts @@ -0,0 +1,26 @@ +export interface AirtableSyncConfig { + airtableSync: { + /** airtable api key */ + apiKey: string + + /** bucket to store attachments in */ + atBucketName: string + + /** + * sns topic to publish for an attachment to download + * part after region, will be joined to `arn:aws:sns:$[sc:region]:` + */ + downloadTopic: string + + /** + * comma separated string of language keys in KeyValue model in airtable + * e.g. 'de, en, fr' + */ + supportedLanguages: string + + /** + * AWS region of the sns topic used to publish attachment download messages + */ + snsTopicRegion: string + } +} diff --git a/packages/airtable-syncer/src/config/index.ts b/packages/airtable-syncer/src/config/index.ts new file mode 100644 index 0000000..3f69c38 --- /dev/null +++ b/packages/airtable-syncer/src/config/index.ts @@ -0,0 +1 @@ +export * from './airtable-config.model.js' diff --git a/packages/airtable-syncer/src/index.ts b/packages/airtable-syncer/src/index.ts new file mode 100644 index 0000000..10596fa --- /dev/null +++ b/packages/airtable-syncer/src/index.ts @@ -0,0 +1,9 @@ +export * from './config/airtable-config.model.js' +export * from './model/airtable-id-record.model.js' +export * from './module/airtable.module.js' +export * from './module/airtable-sync-config.symbol.js' +export * from './services/airtable.api.js' +export * from './services/airtable-fetcher.service.js' +export * from './services/airtable-sync.service.js' +export * from './services/attachment-url-resolver.service.js' +export * from './static/airtable-record-default-keys.const.js' diff --git a/packages/airtable-syncer/src/model/airtable-id-record.model.ts b/packages/airtable-syncer/src/model/airtable-id-record.model.ts new file mode 100644 index 0000000..80bb556 --- /dev/null +++ b/packages/airtable-syncer/src/model/airtable-id-record.model.ts @@ -0,0 +1,8 @@ +import { AirtableId } from '@shiftcode/airtable-mapper' + +/** + * Airtable Record Model with known and unknown properties + */ +export interface AirtableIdRecord extends AirtableId { + [key: string]: any +} diff --git a/packages/airtable-syncer/src/model/airtable-record.model.ts b/packages/airtable-syncer/src/model/airtable-record.model.ts new file mode 100644 index 0000000..3dc64b1 --- /dev/null +++ b/packages/airtable-syncer/src/model/airtable-record.model.ts @@ -0,0 +1,11 @@ +/** + * actual returned record type - unfortunately missing in @types/airtable + */ +export interface AirtableRecord { + id: string + fields: T + + getId(): string + + get(columnName: keyof T | string): any +} diff --git a/packages/airtable-syncer/src/model/key-value.symbol.ts b/packages/airtable-syncer/src/model/key-value.symbol.ts new file mode 100644 index 0000000..8503e0f --- /dev/null +++ b/packages/airtable-syncer/src/model/key-value.symbol.ts @@ -0,0 +1 @@ +export const KEY_VALUE_SYMBOL = Symbol.for('KEY_VALUE') diff --git a/packages/airtable-syncer/src/module/airtable-sync-config.symbol.ts b/packages/airtable-syncer/src/module/airtable-sync-config.symbol.ts new file mode 100644 index 0000000..edcc61b --- /dev/null +++ b/packages/airtable-syncer/src/module/airtable-sync-config.symbol.ts @@ -0,0 +1 @@ +export const AIRTABLE_SYNC_CONFIG = Symbol.for('AIRTABLE_SYNC_CONFIG') diff --git a/packages/airtable-syncer/src/module/airtable.module.spec.ts b/packages/airtable-syncer/src/module/airtable.module.spec.ts new file mode 100644 index 0000000..9d4b863 --- /dev/null +++ b/packages/airtable-syncer/src/module/airtable.module.spec.ts @@ -0,0 +1,63 @@ +import { S3Helper } from '@shiftcode/lambda-utilities/s3' +import { Container } from 'inversify' +import { describe, expect, test } from 'vitest' + +import { bindLoggerToContainer } from '../../test/add-logger-to-container.function.js' +import { S3HelperMock } from '../../test/s3-helper.mock.js' +import { SnsPublisherMock } from '../../test/sns-publisher.mock.js' +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { AirtableApi } from '../services/airtable.api.js' +import { AirtableFetcher } from '../services/airtable-fetcher.service.js' +import { AirtableSync } from '../services/airtable-sync.service.js' +import { SnsPublisher } from '../services/sns-publisher.service.js' +import { airtableModule } from './airtable.module.js' +import { AIRTABLE_SYNC_CONFIG } from './airtable-sync-config.symbol.js' + +const config: AirtableSyncConfig = { + airtableSync: { + apiKey: 'NOT_DEFINED_API_KEY', + atBucketName: 'NOT_DEFINED_AT_BUCKET_NAME', + downloadTopic: 'downloadAttachments-xx1', + supportedLanguages: 'de,en', + snsTopicRegion: 'sns-topic-region', + }, +} + +describe('airtable inversify module', () => { + describe('binds all services when loading module only', () => { + const con = new Container() + void con.load(airtableModule) + + test('S3Helper', () => expect(con.isBound(S3Helper)).toBeTruthy()) + test('SnsPublisher', () => expect(con.isBound(SnsPublisher)).toBeTruthy()) + test('AirtableApi', () => expect(con.isBound(AirtableApi)).toBeTruthy()) + test('AirtableFetcher', () => expect(con.isBound(AirtableFetcher)).toBeTruthy()) + test('AirtableSync', () => expect(con.isBound(AirtableSync)).toBeTruthy()) + }) + describe('binds all services when loading S3 or SNS are already bound', () => { + const con = new Container() + con.bind(AIRTABLE_SYNC_CONFIG).toConstantValue(config) + bindLoggerToContainer(con) + con + .bind(S3Helper) + .to(S3HelperMock) + .inSingletonScope() + con + .bind(SnsPublisher) + .to(SnsPublisherMock) + .inSingletonScope() + void con.load(airtableModule) + + test('S3Helper bound to Mock', () => { + expect(con.isBound(S3Helper)).toBeTruthy() + expect(con.get(S3Helper)).toBeInstanceOf(S3HelperMock) + }) + test('SnsPublisher bound to Mock', () => { + expect(con.isBound(SnsPublisher)).toBeTruthy() + expect(con.get(SnsPublisher)).toBeInstanceOf(SnsPublisherMock) + }) + test('AirtableApi', () => expect(con.isBound(AirtableApi)).toBeTruthy()) + test('AirtableFetcher', () => expect(con.isBound(AirtableFetcher)).toBeTruthy()) + test('AirtableSync', () => expect(con.isBound(AirtableSync)).toBeTruthy()) + }) +}) diff --git a/packages/airtable-syncer/src/module/airtable.module.ts b/packages/airtable-syncer/src/module/airtable.module.ts new file mode 100644 index 0000000..98a9b5e --- /dev/null +++ b/packages/airtable-syncer/src/module/airtable.module.ts @@ -0,0 +1,24 @@ +import { S3Helper } from '@shiftcode/lambda-utilities/s3' +import { ContainerModule } from 'inversify' + +import { AirtableApi } from '../services/airtable.api.js' +import { AirtableFetcher } from '../services/airtable-fetcher.service.js' +import { AirtableSync } from '../services/airtable-sync.service.js' +import { SnsPublisher } from '../services/sns-publisher.service.js' + +/** + * binds airtable services and - if not already bound - S3Helper and SnsPublisher + */ +export const airtableModule = new ContainerModule(({ bind, isBound }) => { + bind(AirtableFetcher).toSelf().inSingletonScope() + bind(AirtableSync).toSelf().inSingletonScope() + bind(AirtableApi).toSelf().inSingletonScope() + + if (!isBound(S3Helper)) { + bind(SnsPublisher).toSelf().inSingletonScope() + } + + if (!isBound(S3Helper)) { + bind(S3Helper).toSelf().inSingletonScope() + } +}) diff --git a/packages/airtable-syncer/src/services/airtable-fetcher.service.spec.ts b/packages/airtable-syncer/src/services/airtable-fetcher.service.spec.ts new file mode 100644 index 0000000..87e08df --- /dev/null +++ b/packages/airtable-syncer/src/services/airtable-fetcher.service.spec.ts @@ -0,0 +1,143 @@ +import { keyValueMapping } from '@shiftcode/airtable-mapper' +import { S3Helper } from '@shiftcode/lambda-utilities/s3' +import { Container } from 'inversify' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' + +import { bindLoggerToContainer } from '../../test/add-logger-to-container.function.js' +import { AirtableApiMock } from '../../test/airtable.api.mock.js' +import { ComplexModel } from '../../test/models/complex.model.js' +import { SimpleModel } from '../../test/models/simple.model.js' +import { S3HelperMock } from '../../test/s3-helper.mock.js' +import { SnsPublisherMock } from '../../test/sns-publisher.mock.js' +import { + airtableImgAtt, + cmItemId, + complexRecord, + kvItemId, + kvRecord, + smItemId, + smRecord, +} from '../../test/some-items.js' +import { TEST_ASSET_PREFIX, TestAttachmentUrlResolverService } from '../../test/test-attachment-url-resolver.service.js' +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { KEY_VALUE_SYMBOL } from '../model/key-value.symbol.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' +import { AirtableApi } from './airtable.api.js' +import { AirtableFetcher } from './airtable-fetcher.service.js' +import { AttachmentUrlResolver } from './attachment-url-resolver.service.js' +import { SnsPublisher } from './sns-publisher.service.js' + +const aBase = 'MyBase' + +describe('airtable-fetcher', () => { + const config: AirtableSyncConfig = { + airtableSync: { + apiKey: 'NOT_DEFINED_API_KEY', + atBucketName: 'NOT_DEFINED_AT_BUCKET_NAME', + downloadTopic: 'downloadAttachments-xx1', + supportedLanguages: 'de,en', + snsTopicRegion: 'sns-topic-region', + }, + } + let container: Container + let airtableFetcher: AirtableFetcher + let apiMock: AirtableApiMock + let snsMock: SnsPublisherMock + let attachmentUrlResolver: AttachmentUrlResolver + + beforeEach(() => { + container = bindLoggerToContainer( + new Container({ + autobind: true, + defaultScope: 'Singleton', + }), + ) + container.bind(AIRTABLE_SYNC_CONFIG).toConstantValue(config) + container.bind(AttachmentUrlResolver).to(TestAttachmentUrlResolverService).inSingletonScope() + container + .bind(S3Helper) + .to(S3HelperMock) + .inSingletonScope() + container + .bind(SnsPublisher) + .to(SnsPublisherMock) + .inSingletonScope() + container + .bind(AirtableApi) + .to(AirtableApiMock) + .inSingletonScope() + + apiMock = container.get(AirtableApi) + snsMock = container.get(SnsPublisher) + airtableFetcher = container.get(AirtableFetcher) + attachmentUrlResolver = container.get(AttachmentUrlResolver) + }) + afterEach(() => container.unbindAll()) + + test('can be injected', () => { + expect(airtableFetcher).toBeDefined() + }) + + test('init load s3 files according to prefix', async () => { + await airtableFetcher.init(aBase, TEST_ASSET_PREFIX) + const s3mock: S3HelperMock = container.get(S3Helper) + expect(s3mock.listAll).toHaveBeenCalledWith(TEST_ASSET_PREFIX) + }) + + test('throws if not initialized', () => { + expect.assertions(1) + return airtableFetcher.fetchAll(keyValueMapping).catch((e: any) => expect(e).toBeDefined()) + }) + + test('maps items of requested table [no nested | no converters]', async () => { + apiMock.fetchAllByTable = vi.fn().mockReturnValue([smRecord]) + + await airtableFetcher.init(aBase, TEST_ASSET_PREFIX) + const res = await airtableFetcher.fetchAll(SimpleModel._mapping) + expect(apiMock.fetchAllByTable).toHaveBeenCalledWith( + SimpleModel._mapping.tableName, + SimpleModel._mapping.fields, + '', + ) + expect(res).toEqual([ + { + AIRTABLE_ID: smItemId, + AIRTABLE_TABLE: SimpleModel._mapping.tableName, + ...smRecord.fields, + }, + ]) + }) + + test('maps items of requested table [with nested | with converter | with attachment]', async () => { + apiMock.fetchAllByTable = vi.fn().mockReturnValueOnce([complexRecord]).mockReturnValueOnce([kvRecord]) + + await airtableFetcher.init(aBase, TEST_ASSET_PREFIX) + const res = await airtableFetcher.fetchAll(ComplexModel._mapping) + + expect(apiMock.fetchAllByTable).toHaveBeenCalledTimes(2) + expect(snsMock.publishMessageToTopic).toHaveBeenCalledTimes(1) + expect(snsMock.calls[0][0]).toEqual(config.airtableSync.downloadTopic) + expect(snsMock.calls[0][1]).toEqual(airtableImgAtt) + + expect(res).toEqual([ + { + AIRTABLE_ID: cmItemId, + AIRTABLE_TABLE: ComplexModel._mapping.tableName, + ...complexRecord.fields, + active: false, + title: { + [KEY_VALUE_SYMBOL]: true, + AIRTABLE_ID: kvItemId, + AIRTABLE_TABLE: keyValueMapping.tableName, + ...kvRecord.fields, + }, + image: { + id: airtableImgAtt.id, + ratio: (airtableImgAtt.thumbnails.large.height / airtableImgAtt.thumbnails.large.width) * 100, + type: airtableImgAtt.type, + url: attachmentUrlResolver.createUrl(airtableImgAtt.id, airtableImgAtt.filename), + }, + }, + ]) + }) +}) diff --git a/packages/airtable-syncer/src/services/airtable-fetcher.service.ts b/packages/airtable-syncer/src/services/airtable-fetcher.service.ts new file mode 100644 index 0000000..4cfa354 --- /dev/null +++ b/packages/airtable-syncer/src/services/airtable-fetcher.service.ts @@ -0,0 +1,220 @@ +import { AirtableModelMapping, MAPPING_MARKER, MAPPING_MARKER__KEY_VALUE } from '@shiftcode/airtable-mapper' +import { LoggerService } from '@shiftcode/inversify-logger' +import { S3Helper } from '@shiftcode/lambda-utilities/s3' +import { Logger } from '@shiftcode/logger' +import { differenceInSeconds } from 'date-fns' +import { inject, injectable } from 'inversify' + +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { AirtableIdRecord } from '../model/airtable-id-record.model.js' +import { KEY_VALUE_SYMBOL } from '../model/key-value.symbol.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' +import { isAirtableAttachment } from '../static/is-airtable-attachment.function.js' +import { isAirtableImage } from '../static/is-airtable-image.function.js' +import { supportedLanguagesToArray } from '../static/supported-languages-to-array.functions.js' +import { AirtableApi } from './airtable.api.js' +import { AttachmentUrlResolver } from './attachment-url-resolver.service.js' +import { SnsPublisher } from './sns-publisher.service.js' + +export interface TableCache { + lastUpdated: Date + items: Map +} + +// TODO: 26.05.19 - change logic to handle new airtable updated timestamp + +@injectable() +export class AirtableFetcher { + private static readonly FIELDS_TO_REMOVE_PREFIX = '_' + + // simple cache which stores all records for a table to minimize network calls + private readonly cache = new Map() + + // s3 keys + private s3Keys: Set = new Set() + + // flag + private initialized = false + + // supported languages + private readonly languageFields: string[] + private readonly logger: Logger + + constructor( + @inject(AIRTABLE_SYNC_CONFIG) private readonly config: AirtableSyncConfig, + private attachmentUrlResolver: AttachmentUrlResolver, + private s3Helper: S3Helper, + private airtableApi: AirtableApi, + private snsPublisher: SnsPublisher, + loggerService: LoggerService, + ) { + this.s3Helper.init(this.config.airtableSync.atBucketName) + this.languageFields = supportedLanguagesToArray(this.config.airtableSync.supportedLanguages) + this.logger = loggerService.getInstance('AirtableFetcher') + } + + clearCache() { + this.cache.clear() + } + + async init(base: string, s3AssetPrefix: string) { + this.logger.info(`init(base=${base}, s3AssetPrefix=${s3AssetPrefix})`) + this.airtableApi.setBase(base) + const result = await this.s3Helper.listAll(s3AssetPrefix) + this.s3Keys = new Set(Array.from(result.keys()).map((k) => this.attachmentUrlResolver.getId(k))) + this.initialized = true + } + + async fetchAll(map: AirtableModelMapping, ids: string[] = [], filterByFormula = ''): Promise { + if (!this.initialized) { + throw new Error( + `service was not initialized. first call "await airtableFetcher.init('YourBase', 'YourS3AssetsPrefix')" --> make sure to await the promise`, + ) + } + const res: AirtableIdRecord[] = await this.fetchInternal(map, ids, filterByFormula) + for (const record of res) { + for (const [k, mapping] of map.mappings) { + const key = k // cast keyof T to string + // applying possible converters also for undefined values + if (mapping.converter) { + record[key] = mapping.converter(record[key]) + } else if (record[key] !== undefined) { + const refs: string[] = record[key] + // possibility for unmapped wrapped types (for instance Attachments) + const fieldRecords = + mapping.fieldMapping !== null ? await this.fetchAll(mapping.fieldMapping, refs) : record[key] + record[key] = mapping.single ? fieldRecords[0] : fieldRecords.reverse() + } + } + // AirtableIdRecord is now actual T (except for KeyValue items which are reduced to a single string later + } + return (res) + } + + private async fetchInternal( + map: AirtableModelMapping, + ids: string[], + filterByFormula: string, + ): Promise { + // check if the mapping is marked to be a key value mapping, using symbols here to avoid issues when two different + // versions of the airtable-mapper package are used + const isKeyValueMapping = (map as any)[MAPPING_MARKER] === MAPPING_MARKER__KEY_VALUE + const fields = isKeyValueMapping ? this.languageFields : (map.fields as string[]) + + if (!this.cache.has(map.tableName)) { + this.logger.debug(`fetchInternal::no cache found for TABLE ${map.tableName}`) + const records = await this.airtableApi.fetchAllByTable(map.tableName, fields, filterByFormula) + + const recordsMap = new Map() + for (const r of records) { + // remove incoming refs and send sns event for attachments to initiate download to S3 + for (const field of Object.keys(r.fields)) { + if (field.startsWith(AirtableFetcher.FIELDS_TO_REMOVE_PREFIX)) { + delete r.fields[field] + } + await this.checkForAttachment(r.fields[field]) + } + /** + * adding symbol to indicate + * we use this in {@link reduceObjForLang} as a safe way to know which items to reduce + */ + if (isKeyValueMapping) { + r.fields[KEY_VALUE_SYMBOL] = true + } + r.fields.AIRTABLE_ID = r.getId() + r.fields.AIRTABLE_TABLE = map.tableName + recordsMap.set(r.getId(), r.fields) + } + + this.logger.info(`fetchInternal() fetched ${records.length} records -> adding to cache`) + this.cache.set(map.tableName, { lastUpdated: new Date(), items: recordsMap }) + } else { + // FIXME: implement working cache or remove it (see FL project too) + + const cache = this.cache.get(map.tableName)! // eslint-disable-line @typescript-eslint/no-non-null-assertion + const diff = differenceInSeconds(new Date(), cache.lastUpdated) + + this.logger.debug(`fetchInternal::reading from cache for TABLE ${map.tableName}. differenceInSeconds: ${diff}`) + } + + /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */ + const cachedRecordsMap: Map = this.cache.get(map.tableName)!.items + + if (ids && Array.isArray(ids) && ids.length) { + // filter only required ids + return ids.map((id) => { + if (cachedRecordsMap.has(id)) { + // create a copy + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return { ...cachedRecordsMap.get(id)! } + } else { + // it's possible that the cache is stalled, we don't try to refresh it + // TODO: Maybe we have to handle it, but it should only happen if a record gets deleted (not only changed or added) while we're importing (rare case) + // TODO: It's not possible to add a ref to a none existing record (inside airtable) + // TODO can also happen if there are filters accidentaly applied to the default «scView» + // todo: if table was fetched with a formula, not all (later requested) records might be in the cache. + // --> fix: store how the records were fetched, if with formula, fetch single record from airtable + this.logger.error( + `fetchInternal() ERROR -> A Record with ID: ${id} for TABLE:${map.tableName} is missing in cache`, + ) + throw new Error(`fetchInternal() Record with ID: ${id} for table ${map.tableName} is missing in cache`) + } + }) + } else { + // create a copy + return Array.from(cachedRecordsMap.values()).map((a) => ({ ...a })) + } + } + + private async checkForAttachment(attachment: any[]) { + if (Array.isArray(attachment)) { + for (const possibleAtt of attachment) { + if (isAirtableAttachment(possibleAtt)) { + // if attachment is not yet on s3 send sns event to initiate download + if (!this.s3Keys.has(possibleAtt.id)) { + try { + const msgId = await this.snsPublisher.publishMessageToTopic(this.config.airtableSync.downloadTopic, { + ...possibleAtt, + }) + this.logger.debug(`sent sns request with id: ${msgId} for: ${possibleAtt.id}'`) + } catch (e) { + try { + const str = JSON.stringify(possibleAtt) + if (e instanceof Error) { + this.logger.error(`failed to send sns request (${str}) for: ${possibleAtt?.id} (${e.name})`, e) + } else { + this.logger.error(`failed to send sns request (${str}) for: ${possibleAtt?.id}`, e) + } + } catch (e) { + this.logger.error(`failed to send sns request (can't JSON.stringify) for: ${possibleAtt?.id}`, e) + } + } + } else { + this.logger.debug(`attachment ${possibleAtt.id} is already on S3`) + } + // rewrite URL + possibleAtt.url = this.attachmentUrlResolver.createUrl(possibleAtt.id, possibleAtt.filename) + // add metadata + if (isAirtableImage(possibleAtt)) { + /* eslint-disable @typescript-eslint/ban-ts-comment */ + + /** add info to fulfill the {@link ImageAttachment} type */ + // @ts-ignore + possibleAtt.ratio = (possibleAtt.thumbnails.large.height / possibleAtt.thumbnails.large.width) * 100 + // fixme + // @ts-ignore + delete possibleAtt.thumbnails + } + // fixme + // @ts-ignore + delete possibleAtt.filename + // fixme + // @ts-ignore + delete possibleAtt.size + + /* eslint-enable @typescript-eslint/ban-ts-comment */ + } + } + } + } +} diff --git a/packages/airtable-syncer/src/services/airtable-sync.service.spec.ts b/packages/airtable-syncer/src/services/airtable-sync.service.spec.ts new file mode 100644 index 0000000..420f231 --- /dev/null +++ b/packages/airtable-syncer/src/services/airtable-sync.service.spec.ts @@ -0,0 +1,108 @@ +import { keyValueMapping } from '@shiftcode/airtable-mapper' +import { S3Helper } from '@shiftcode/lambda-utilities/s3' +import { Container } from 'inversify' +import { beforeEach, describe, expect, test, vi } from 'vitest' + +import { bindLoggerToContainer } from '../../test/add-logger-to-container.function.js' +import { AirtableFetcherMock } from '../../test/airtable-fetcher.mock.js' +import { ComplexModel } from '../../test/models/complex.model.js' +import { S3HelperMock } from '../../test/s3-helper.mock.js' +import { airtableImgAtt, cmItemId, complexRecord, kvItemId, kvRecord } from '../../test/some-items.js' +import { TestAttachmentUrlResolverService } from '../../test/test-attachment-url-resolver.service.js' +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { KEY_VALUE_SYMBOL } from '../model/key-value.symbol.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' +import { AirtableFetcher } from './airtable-fetcher.service.js' +import { AirtableSync } from './airtable-sync.service.js' +import { AttachmentUrlResolver } from './attachment-url-resolver.service.js' + +const ASSET_PREFIX = 'test-assets/' +const DATA_PREFIX = 'test-data/' +const CONTENT_PREFIX = 'content/' +const AT_BASE = 'test-base' +const A_NAME = 'test-name' + +describe('Airtable Sync', () => { + let con: Container + let sync: AirtableSync + let attResolver: AttachmentUrlResolver + let s3Mock: S3HelperMock + let fetcherMock: AirtableFetcherMock + beforeEach(() => { + con = bindLoggerToContainer(new Container({ autobind: true, defaultScope: 'Singleton' })) + con.bind(AIRTABLE_SYNC_CONFIG).toConstantValue({ + airtableSync: { + atBucketName: 'bucket-name', + supportedLanguages: 'de, en', + apiKey: 'api-key', + downloadTopic: 'download-topic', + snsTopicRegion: 'sns-topic-region', + }, + } satisfies AirtableSyncConfig) + con + .bind(S3Helper) + .to(S3HelperMock) + .inSingletonScope() + con.bind(AttachmentUrlResolver).to(TestAttachmentUrlResolverService).inSingletonScope() + con + .bind(AirtableFetcher) + .to(AirtableFetcherMock) + .inSingletonScope() + attResolver = con.get(AttachmentUrlResolver) + s3Mock = con.get(S3Helper) + fetcherMock = con.get(AirtableFetcher) + sync = con.get(AirtableSync) + }) + + test('reduces key-values for all languages', async () => { + fetcherMock.fetchAll = vi.fn().mockReturnValue([ + { + AIRTABLE_ID: cmItemId, + AIRTABLE_TABLE: ComplexModel._mapping.tableName, + ...complexRecord.fields, + active: false, + title: { + [KEY_VALUE_SYMBOL]: true, + AIRTABLE_ID: kvItemId, + AIRTABLE_TABLE: keyValueMapping.tableName, + ...kvRecord.fields, + }, + image: { + id: airtableImgAtt.id, + ratio: (airtableImgAtt.thumbnails.large.height / airtableImgAtt.thumbnails.large.width) * 100, + type: airtableImgAtt.type, + url: attResolver.createUrl(airtableImgAtt.id, airtableImgAtt.filename), + }, + }, + ]) + sync.init(ASSET_PREFIX, DATA_PREFIX) + const resultPromise = sync.syncModels( + AT_BASE, + [ + { + s3KeyOrPrefix: A_NAME, + mapping: [ComplexModel._mapping], + }, + ], + CONTENT_PREFIX, + ) + + expect(resultPromise).toBeInstanceOf(Promise) + await resultPromise + + expect(fetcherMock.clearCache).toBeCalledTimes(1) + expect(fetcherMock.init).toBeCalledWith(AT_BASE, ASSET_PREFIX) + expect(fetcherMock.fetchAll).toBeCalledWith(ComplexModel._mapping) + expect(s3Mock.uploadJson).toHaveBeenCalledTimes(2) + + expect(s3Mock.uploadJsonCalls[0][0]).toBeInstanceOf(Array) + expect(s3Mock.uploadJsonCalls[0][0][0]).toBeDefined() + expect(s3Mock.uploadJsonCalls[0][0][0].title).toBe('de_test') + expect(s3Mock.uploadJsonCalls[0][1]).toBe('test-data/content/test-name_de.json') + + expect(s3Mock.uploadJsonCalls[1][0]).toBeInstanceOf(Array) + expect(s3Mock.uploadJsonCalls[1][0][0]).toBeDefined() + expect(s3Mock.uploadJsonCalls[1][0][0].title).toBe('en_test') + expect(s3Mock.uploadJsonCalls[1][1]).toBe('test-data/content/test-name_en.json') + }) +}) diff --git a/packages/airtable-syncer/src/services/airtable-sync.service.ts b/packages/airtable-syncer/src/services/airtable-sync.service.ts new file mode 100644 index 0000000..d01b45f --- /dev/null +++ b/packages/airtable-syncer/src/services/airtable-sync.service.ts @@ -0,0 +1,129 @@ +import { AirtableId, AirtableModelMapping } from '@shiftcode/airtable-mapper' +import { LoggerService } from '@shiftcode/inversify-logger' +import { S3Helper } from '@shiftcode/lambda-utilities/s3' +import { Logger } from '@shiftcode/logger' +import { inject, injectable } from 'inversify' + +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' +import { batchTasks } from '../static/batch-tasks.function.js' +import { reduceObjForLang } from '../static/reduce-obj-for-lang.function.js' +import { supportedLanguagesToArray } from '../static/supported-languages-to-array.functions.js' +import { AirtableFetcher } from './airtable-fetcher.service.js' + +export type NameFunction = (object: any) => string + +export type TransformFunction = (records: any[][]) => any + +export interface AirtableToS3 { + mapping: Array> + s3KeyOrPrefix: string + s3NameProperty?: string | NameFunction // if defined the specified property value will be used as name for the .json file + transformOrFilter?: TransformFunction + unwrap?: boolean +} + +@injectable() +export class AirtableSync { + s3DataPrefix: string + s3AssetPrefix: string + private readonly logger: Logger + + constructor( + @inject(AIRTABLE_SYNC_CONFIG) private readonly config: AirtableSyncConfig, + private s3Helper: S3Helper, + private airtableFetcher: AirtableFetcher, + loggerService: LoggerService, + ) { + this.s3Helper.init(this.config.airtableSync.atBucketName) + this.logger = loggerService.getInstance('AirtableSync') + } + + init(s3AssetPrefix: string, s3DataPrefix: string) { + this.s3DataPrefix = s3DataPrefix + this.s3AssetPrefix = s3AssetPrefix + } + + async syncModels(airtableBase: string, modelsToSync: AirtableToS3[], s3Prefix: string) { + if (!Array.isArray(modelsToSync)) { + throw new Error('given modelsToFetch is not an array') + } + + this.logger.info(`fetchModels`, { + base: airtableBase, + modelsToFetch: modelsToSync.map((m) => m.s3KeyOrPrefix), + s3Prefix, + }) + + this.airtableFetcher.clearCache() + await this.airtableFetcher.init(airtableBase, this.s3AssetPrefix) + + // start fetching + const supportedLanguages = this.config.airtableSync.supportedLanguages + const uploadTasks: Array<() => Promise> = [] + for (const mtf of modelsToSync) { + this.logger.debug(`fetchModel ${mtf.s3KeyOrPrefix}`) + // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents + let result: any | AirtableId[][] = [] + for (const typeMapping of mtf.mapping) { + const records = await this.airtableFetcher.fetchAll(typeMapping) + result.push(records) + } + if (mtf.transformOrFilter) { + result = mtf.transformOrFilter(result) + } else { + result = result[0] + } + + if (result) { + const keyBase = `${this.s3DataPrefix}${s3Prefix}${mtf.s3KeyOrPrefix}` + if (mtf.unwrap) { + for (const unwrappedResult of result) { + const s3NameProperty: string = + typeof mtf.s3NameProperty === 'function' + ? mtf.s3NameProperty(unwrappedResult) + : (mtf.s3NameProperty && unwrappedResult[mtf.s3NameProperty]) || unwrappedResult.AIRTABLE_ID + + const key = `${keyBase}${s3NameProperty}` + uploadTasks.push(...this.getUploadPerLanguageTask(unwrappedResult, key, supportedLanguages)) + } + } else { + uploadTasks.push(...this.getUploadPerLanguageTask(result, keyBase, supportedLanguages)) + } + } + } + + this.logger.debug(`${uploadTasks.length} upload tasks ready to be executed`) + + // S3 can handle 3500 upload requests per second for individual partitioned S3 prefix + // (https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html). + // Since the sync task is usually not time critical we still use a very simple implementation + // without handling individual limits per partitioned S3 prefix and observing the timing, we just provide a static value + // For now we use 50 as the aws sdk max sockets is set to 50 by default + // See: https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html + for await (const task of batchTasks(uploadTasks, 50)) { + this.logger.debug( + `batch executed -> ok: ${task.filter((s) => s.status === 'fulfilled').length} / error: ${task.filter((s) => s.status === 'rejected').length}`, + ) + } + } + + private getUploadPerLanguageTask(result: any, key: string, supportedLanguages: string): Array<() => Promise> { + // remove json type suffix if it's there + if (/\.json$/.test(key)) { + key = key.substring(0, key.length - 5) + } + const languageFields = supportedLanguagesToArray(supportedLanguages) + + return languageFields.map((lang) => { + return () => { + return this.s3Helper + .uploadJson(reduceObjForLang(result, [lang, ...languageFields]), `${key}_${lang}.json`) + .catch((err) => { + this.logger.error(`Failed to upload to s3: ${key}_${lang}.json`, err) + throw err + }) + } + }) + } +} diff --git a/packages/airtable-syncer/src/services/airtable.api.spec.ts b/packages/airtable-syncer/src/services/airtable.api.spec.ts new file mode 100644 index 0000000..38154a4 --- /dev/null +++ b/packages/airtable-syncer/src/services/airtable.api.spec.ts @@ -0,0 +1,73 @@ +import { Container } from 'inversify' +import { afterEach, beforeEach, describe, expect, test } from 'vitest' + +import { bindLoggerToContainer } from '../../test/add-logger-to-container.function.js' +import { AirtableMock } from '../../test/airtable.mock.js' +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' +import { AirtableApi } from './airtable.api.js' + +const aBase = 'MyBase' +const aTable = 'MyTable' +const anItemId = 'MyItemId' +const aRecord = { + KEY: 'HI', +} +let container: Container +const config: AirtableSyncConfig = { + airtableSync: { + apiKey: 'NOT_DEFINED_API_KEY', + atBucketName: 'NOT_DEFINED_AT_BUCKET_NAME', + downloadTopic: 'downloadAttachments-xx1', + supportedLanguages: 'de,en', + snsTopicRegion: 'sns-topic-region', + }, +} + +describe('airtable.api', () => { + let airtableMock: AirtableMock + let airtableApi: AirtableApi + + beforeEach(() => { + container = bindLoggerToContainer( + new Container({ + autobind: true, + defaultScope: 'Singleton', + }), + ) + container.bind(AIRTABLE_SYNC_CONFIG).toConstantValue(config) + airtableApi = container.get(AirtableApi) + airtableMock = new AirtableMock() + Object.assign(airtableApi, { airtable: airtableMock }) + }) + afterEach(() => container.unbindAll()) + + test('should select on given table on the initalized base', () => { + airtableApi.setBase(aBase) + void airtableApi.fetchAllByTable(aTable, [], '') + expect(airtableMock.base).toHaveBeenCalledWith(aBase) + expect(airtableMock.mockedBase).toHaveBeenCalledWith(aTable) + expect(airtableMock.mockedTable.select).toHaveBeenCalled() + }) + + test('createItem', async () => { + airtableApi.setBase(aBase) + await airtableApi.createItem(aTable, aRecord) + expect(airtableMock.mockedTable.create).toBeCalledWith(aRecord) + }) + test('readItem', async () => { + airtableApi.setBase(aBase) + await airtableApi.readItem(aTable, anItemId) + expect(airtableMock.mockedTable.find).toBeCalledWith(anItemId) + }) + test('updateItem', async () => { + airtableApi.setBase(aBase) + await airtableApi.updateItem(aTable, anItemId, aRecord) + expect(airtableMock.mockedTable.update).toBeCalledWith(anItemId, aRecord) + }) + test('deleteItem', async () => { + airtableApi.setBase(aBase) + await airtableApi.deleteItem(aTable, anItemId) + expect(airtableMock.mockedTable.destroy).toBeCalledWith(anItemId) + }) +}) diff --git a/packages/airtable-syncer/src/services/airtable.api.ts b/packages/airtable-syncer/src/services/airtable.api.ts new file mode 100644 index 0000000..368efc4 --- /dev/null +++ b/packages/airtable-syncer/src/services/airtable.api.ts @@ -0,0 +1,80 @@ +import { LoggerService } from '@shiftcode/inversify-logger' +import { Logger } from '@shiftcode/logger' +// eslint-disable-next-line @typescript-eslint/naming-convention +import Airtable from 'airtable' +import { inject, injectable } from 'inversify' +// eslint-disable-next-line @typescript-eslint/naming-convention +import PQueue from 'p-queue' + +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { AirtableRecord } from '../model/airtable-record.model.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' + +@injectable() +export class AirtableApi { + private static readonly ENDPOINT_URL = 'https://api.airtable.com' + private baseName: string + private base: Airtable.Base + private readonly airtable: Airtable + private readonly logger: Logger + /** A rate-limiting queue to avoid hitting Airtable API limits, executing max 5 requests per second. */ + private readonly queue = new PQueue({ concurrency: 5, interval: 1000, intervalCap: 5, carryoverIntervalCount: true }) + + constructor( + @inject(AIRTABLE_SYNC_CONFIG) private readonly config: AirtableSyncConfig, + loggerService: LoggerService, + ) { + this.logger = loggerService.getInstance('AirtableApi') + this.airtable = new Airtable({ + apiKey: this.config.airtableSync.apiKey, + endpointUrl: AirtableApi.ENDPOINT_URL, + noRetryIfRateLimited: true, + }) + } + + setBase(base: string): void { + this.baseName = base + this.base = this.airtable.base(base) + } + + async createItem(tableName: string, item: any): Promise { + return this.base(tableName).create(item) + } + + async readItem(tableName: string, airtableId: string): Promise { + return this.base(tableName).find(airtableId) + } + + async updateItem(tableName: string, airtableId: string, item: any): Promise { + return this.base(tableName).update(airtableId, item) + } + + async deleteItem(tableName: string, airtableId: string): Promise { + return this.base(tableName).destroy(airtableId) + } + + fetchAllByTable(tableName: string, fields: string[], filterByFormula: string): Promise>> { + return this.queue.add(async () => { + this.logger.info(`fetching table: ${tableName} on base ${this.baseName}`) + const startTime = Date.now() + const records: Array> = [] + const selectOptions: Airtable.SelectOptions = { pageSize: 100, view: 'scView', fields, filterByFormula } + try { + this.logger.debug('fetching with select options:', selectOptions) + await this.base(tableName) + .select(selectOptions) + // we use eachPage because we deactivated retry on the airtable client (see constructor) - reason 5s limit + .eachPage((pageRecords: Airtable.Records, next: any) => { + records.push(...pageRecords) + next() + }) + } catch (err) { + this.logger.error(`Airtable Error while fetching table ${tableName}:`, { selectOptions }, err) + throw err + } + const requestDuration = Date.now() - startTime + this.logger.info(`fetching of ${tableName} took: ${requestDuration} ms`) + return records + }) + } +} diff --git a/packages/airtable-syncer/src/services/attachment-url-resolver.service.ts b/packages/airtable-syncer/src/services/attachment-url-resolver.service.ts new file mode 100644 index 0000000..47238e5 --- /dev/null +++ b/packages/airtable-syncer/src/services/attachment-url-resolver.service.ts @@ -0,0 +1,8 @@ +import { injectable } from 'inversify' + +@injectable() +export abstract class AttachmentUrlResolver { + abstract createUrl(id: string, filename: string): string + + abstract getId(s3Key: string): string +} diff --git a/packages/airtable-syncer/src/services/sns-publisher.service.ts b/packages/airtable-syncer/src/services/sns-publisher.service.ts new file mode 100644 index 0000000..1445b96 --- /dev/null +++ b/packages/airtable-syncer/src/services/sns-publisher.service.ts @@ -0,0 +1,44 @@ +import { PublishCommand, PublishCommandInput, SNSClient } from '@aws-sdk/client-sns' +import { LoggerService } from '@shiftcode/inversify-logger' +import { Logger } from '@shiftcode/logger' +import { inject, injectable } from 'inversify' + +import { AirtableSyncConfig } from '../config/airtable-config.model.js' +import { AIRTABLE_SYNC_CONFIG } from '../module/airtable-sync-config.symbol.js' + +@injectable() +export class SnsPublisher { + private readonly snsClient: SNSClient + private readonly logger: Logger + + constructor( + @inject(AIRTABLE_SYNC_CONFIG) private readonly config: AirtableSyncConfig, + loggerService: LoggerService, + ) { + this.snsClient = new SNSClient({}) + this.logger = loggerService.getInstance('SnsPublisher') + } + + /** + * publishes the given message on given message + * @param topic topic to publish; gets prefixed to get the arn: `arn:aws:sns:${region}:${topic}` + * @param message, json serializable object + * @returns the published message id + */ + async publishMessageToTopic(topic: string, message: any): Promise { + try { + this.logger.debug(`publishing message to topic ${topic}`, message) + const topicArn = `arn:aws:sns:${this.config.airtableSync.snsTopicRegion}:${topic}` + const params: PublishCommandInput = { + Message: JSON.stringify(message), + TopicArn: topicArn, + } + const resp = await this.snsClient.send(new PublishCommand(params)) + this.logger.info(`published ${topicArn} to SNS`, resp) + return resp.MessageId + } catch (e) { + this.logger.error(`Error publishing message to topic ${topic}`, e) + throw e + } + } +} diff --git a/packages/airtable-syncer/src/static/airtable-record-default-keys.const.ts b/packages/airtable-syncer/src/static/airtable-record-default-keys.const.ts new file mode 100644 index 0000000..af09aba --- /dev/null +++ b/packages/airtable-syncer/src/static/airtable-record-default-keys.const.ts @@ -0,0 +1,3 @@ +import { AirtableId } from '@shiftcode/airtable-mapper' + +export const airtableRecordDefaultKeys: ReadonlyArray = ['AIRTABLE_ID', 'AIRTABLE_TABLE'] diff --git a/packages/airtable-syncer/src/static/batch-tasks.function.ts b/packages/airtable-syncer/src/static/batch-tasks.function.ts new file mode 100644 index 0000000..db524be --- /dev/null +++ b/packages/airtable-syncer/src/static/batch-tasks.function.ts @@ -0,0 +1,12 @@ +/** + * Execute a batch of tasks in parallel with a given limit. + */ +export async function* batchTasks( + tasks: Array<() => Promise>, + limit: number, +): AsyncGenerator>> { + for (let i = 0; i < tasks.length; i = i + limit) { + const tasksChunk = tasks.slice(i, i + limit) + yield await Promise.allSettled(tasksChunk.map((task) => task())) + } +} diff --git a/packages/airtable-syncer/src/static/is-airtable-attachment.function.ts b/packages/airtable-syncer/src/static/is-airtable-attachment.function.ts new file mode 100644 index 0000000..6247a17 --- /dev/null +++ b/packages/airtable-syncer/src/static/is-airtable-attachment.function.ts @@ -0,0 +1,10 @@ +import { AirtableAttachment } from '@shiftcode/airtable-mapper' + +export function isAirtableAttachment(item: any): item is AirtableAttachment { + return ( + (item && + (item).id !== undefined && + (item).filename !== undefined && + (item).url !== undefined) + ) +} diff --git a/packages/airtable-syncer/src/static/is-airtable-image.function.ts b/packages/airtable-syncer/src/static/is-airtable-image.function.ts new file mode 100644 index 0000000..ee17878 --- /dev/null +++ b/packages/airtable-syncer/src/static/is-airtable-image.function.ts @@ -0,0 +1,5 @@ +import { AirtableAttachment, AirtableImageAttachment } from '@shiftcode/airtable-mapper' + +export function isAirtableImage(item: AirtableAttachment): item is AirtableImageAttachment { + return item.thumbnails !== undefined +} diff --git a/packages/airtable-syncer/src/static/reduce-obj-for-lang.function.spec.ts b/packages/airtable-syncer/src/static/reduce-obj-for-lang.function.spec.ts new file mode 100644 index 0000000..ba5c067 --- /dev/null +++ b/packages/airtable-syncer/src/static/reduce-obj-for-lang.function.spec.ts @@ -0,0 +1,297 @@ +import { describe, expect, test } from 'vitest' + +import { KEY_VALUE_SYMBOL } from '../model/key-value.symbol.js' +import { reduceObjForLang } from './reduce-obj-for-lang.function.js' + +describe('reduce obj for language', () => { + test('works on 1st nested props', () => { + const obj = { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + factsFigures: { + [KEY_VALUE_SYMBOL]: true, + de: 'Zahlen & Fakten', + en: 'Numbers and facts', + fr: 'Faits et chiffres', + AIRTABLE_ID: 'rec3rfeCNzOZDcc3I', + AIRTABLE_TABLE: 'KeyValue', + }, + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + description: 'Beschreibung', + factsFigures: 'Zahlen & Fakten', + }) + }) + test('works on multiple nested props', () => { + const obj = { + acc: { + tab: { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + }, + factsFigures: { + [KEY_VALUE_SYMBOL]: true, + de: 'Zahlen & Fakten', + en: 'Numbers and facts', + fr: 'Faits et chiffres', + AIRTABLE_ID: 'rec3rfeCNzOZDcc3I', + AIRTABLE_TABLE: 'KeyValue', + }, + }, + filter: { + heading: { + [KEY_VALUE_SYMBOL]: true, + de: 'Buchen Sie Ihren Aufenthalt', + en: 'Book your stay', + fr: 'Réservez votre séjour', + AIRTABLE_ID: 'reccSxncnvTqiES7A', + AIRTABLE_TABLE: 'KeyValue', + }, + accommodationType: { + heading: { + [KEY_VALUE_SYMBOL]: true, + de: 'Art der Unterkunft:', + en: 'Type of accommodation:', + fr: "Type d'hébergement", + AIRTABLE_ID: 'recIryOmJCsXiFi6l', + AIRTABLE_TABLE: 'KeyValue', + }, + }, + }, + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + acc: { + tab: { description: 'Beschreibung' }, + factsFigures: 'Zahlen & Fakten', + }, + filter: { + heading: 'Buchen Sie Ihren Aufenthalt', + accommodationType: { heading: 'Art der Unterkunft:' }, + }, + }) + }) + test('works on nested arrays', () => { + const obj = { + acc: [ + { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + }, + { + [KEY_VALUE_SYMBOL]: true, + de: 'Zahlen & Fakten', + en: 'Numbers and facts', + fr: 'Faits et chiffres', + AIRTABLE_ID: 'rec3rfeCNzOZDcc3I', + AIRTABLE_TABLE: 'KeyValue', + }, + ], + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + acc: [{ description: 'Beschreibung' }, 'Zahlen & Fakten'], + }) + }) + test('does not touch numbers', () => { + const obj = { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + first: 1, + nested: { + hello: { + [KEY_VALUE_SYMBOL]: true, + de: 'HALLO', + en: 'HELLO', + fr: 'Bonjour', + AIRTABLE_ID: 'hjsdfklgjsdfg89u', + AIRTABLE_TABLE: 'KeyValue', + }, + second: 2, + }, + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + description: 'Beschreibung', + first: 1, + nested: { + hello: 'HALLO', + second: 2, + }, + }) + }) + test('does not touch strings', () => { + const obj = { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + first: 'first', + nested: { + hello: { + [KEY_VALUE_SYMBOL]: true, + de: 'HALLO', + en: 'HELLO', + fr: 'Bonjour', + AIRTABLE_ID: 'hjsdfklgjsdfg89u', + AIRTABLE_TABLE: 'KeyValue', + }, + second: 'second', + }, + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + description: 'Beschreibung', + first: 'first', + nested: { + hello: 'HALLO', + second: 'second', + }, + }) + }) + test('does not touch null/undefined values', () => { + const obj = { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + first: null, + nested: { + hello: { + [KEY_VALUE_SYMBOL]: true, + de: 'HALLO', + en: 'HELLO', + fr: 'Bonjour', + AIRTABLE_ID: 'hjsdfklgjsdfg89u', + AIRTABLE_TABLE: 'KeyValue', + }, + second: undefined, + }, + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + description: 'Beschreibung', + first: null, + nested: { + hello: 'HALLO', + second: undefined, + }, + }) + }) + test('does not touch boolean values', () => { + const obj = { + description: { + [KEY_VALUE_SYMBOL]: true, + de: 'Beschreibung', + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + first: true, + nested: { + hello: { + [KEY_VALUE_SYMBOL]: true, + de: 'HALLO', + en: 'HELLO', + fr: 'Bonjour', + AIRTABLE_ID: 'hjsdfklgjsdfg89u', + AIRTABLE_TABLE: 'KeyValue', + }, + second: false, + }, + } + + const res = reduceObjForLang(obj, ['de']) + + expect(res).toEqual({ + description: 'Beschreibung', + first: true, + nested: { + hello: 'HALLO', + second: false, + }, + }) + }) + test('filles non-defined values with fallback and indicator', () => { + const obj = { + description: { + [KEY_VALUE_SYMBOL]: true, + de: undefined, + en: 'Description', + fr: 'Description', + AIRTABLE_ID: 'recTBdFYcmyHMte7n', + AIRTABLE_TABLE: 'KeyValue', + }, + factsFigures: { + [KEY_VALUE_SYMBOL]: true, + de: 'Zahlen & Fakten', + en: 'Numbers and facts', + fr: 'Faits et chiffres', + AIRTABLE_ID: 'rec3rfeCNzOZDcc3I', + AIRTABLE_TABLE: 'KeyValue', + }, + factsFigures2: { + [KEY_VALUE_SYMBOL]: true, + de: undefined, + en: '', + fr: 'Faits et chiffres', + AIRTABLE_ID: 'rec3rfeCNzOZDcc3I', + AIRTABLE_TABLE: 'KeyValue', + }, + } + + const res = reduceObjForLang(obj, ['de', 'en', 'fr']) + + expect(res).toEqual({ + description: 'de:: Description', + factsFigures: 'Zahlen & Fakten', + factsFigures2: 'de:: Faits et chiffres', + }) + }) +}) diff --git a/packages/airtable-syncer/src/static/reduce-obj-for-lang.function.ts b/packages/airtable-syncer/src/static/reduce-obj-for-lang.function.ts new file mode 100644 index 0000000..97f0640 --- /dev/null +++ b/packages/airtable-syncer/src/static/reduce-obj-for-lang.function.ts @@ -0,0 +1,29 @@ +import { KEY_VALUE_SYMBOL } from '../model/key-value.symbol.js' + +const isDefined = (obj: any) => (lang: any) => obj[lang] !== undefined && obj[lang] !== '' + +/** + * recursively replaces key-value objects with the value corresponding to the first language + * or fallback with next non-undefined value in or lang from + */ +export function reduceObjForLang(obj: any, withLanguage: string[]): any { + if (!obj || typeof obj !== 'object') { + return obj + } else if (Array.isArray(obj)) { + return obj.map((i) => reduceObjForLang(i, withLanguage)) + } else if (KEY_VALUE_SYMBOL in obj) { + // replace the KV object with the actual value of given language + // if object is not defined or empty, fallback to another lang in the order defined in config + return isDefined(obj)(withLanguage[0]) + ? obj[withLanguage[0]] + : `${withLanguage[0]}:: ${obj[withLanguage.find(isDefined(obj)) || withLanguage[0]]}` + } else { + return Object.entries(obj).reduce( + (u, [k, v]) => { + u[k] = reduceObjForLang(v, withLanguage) + return u + }, + {}, + ) + } +} diff --git a/packages/airtable-syncer/src/static/supported-languages-to-array.functions.ts b/packages/airtable-syncer/src/static/supported-languages-to-array.functions.ts new file mode 100644 index 0000000..0a0446e --- /dev/null +++ b/packages/airtable-syncer/src/static/supported-languages-to-array.functions.ts @@ -0,0 +1,3 @@ +export function supportedLanguagesToArray(supportedLanguages: string): string[] { + return supportedLanguages.trim().split(/,\s*/) +} diff --git a/packages/airtable-syncer/test/add-logger-to-container.function.ts b/packages/airtable-syncer/test/add-logger-to-container.function.ts new file mode 100644 index 0000000..92ee8f0 --- /dev/null +++ b/packages/airtable-syncer/test/add-logger-to-container.function.ts @@ -0,0 +1,11 @@ +import { bindLogTransport, loggerModule } from '@shiftcode/inversify-logger' +import { LogLevel } from '@shiftcode/logger' +import { Container } from 'inversify' + +import { MockLogTransport } from './mock-log.transport.js' + +export function bindLoggerToContainer(con: Container): Container { + void bindLogTransport(con, LogLevel.DEBUG, MockLogTransport) + void con.load(loggerModule) + return con +} diff --git a/packages/airtable-syncer/test/airtable-fetcher.mock.ts b/packages/airtable-syncer/test/airtable-fetcher.mock.ts new file mode 100644 index 0000000..6356602 --- /dev/null +++ b/packages/airtable-syncer/test/airtable-fetcher.mock.ts @@ -0,0 +1,9 @@ +import { injectable } from 'inversify' +import { vi } from 'vitest' + +@injectable() +export class AirtableFetcherMock { + clearCache = vi.fn() + init = vi.fn() + fetchAll = vi.fn() +} diff --git a/packages/airtable-syncer/test/airtable.api.mock.ts b/packages/airtable-syncer/test/airtable.api.mock.ts new file mode 100644 index 0000000..f52d029 --- /dev/null +++ b/packages/airtable-syncer/test/airtable.api.mock.ts @@ -0,0 +1,8 @@ +import { injectable } from 'inversify' +import { vi } from 'vitest' + +@injectable() +export class AirtableApiMock { + setBase = vi.fn() + fetchAllByTable = vi.fn() +} diff --git a/packages/airtable-syncer/test/airtable.mock.ts b/packages/airtable-syncer/test/airtable.mock.ts new file mode 100644 index 0000000..8af9792 --- /dev/null +++ b/packages/airtable-syncer/test/airtable.mock.ts @@ -0,0 +1,22 @@ +import { Records } from 'airtable' +import { vi } from 'vitest' + +export class AirtableMock { + selectMock = { + all: vi.fn().mockReturnValue(Promise.resolve(>[])), + firstPage: vi.fn().mockReturnValue(Promise.resolve(>[])), + eachPage: vi.fn().mockReturnValue(Promise.resolve()), + } + + mockedTable = { + select: vi.fn().mockReturnValue(this.selectMock), + find: vi.fn(), + create: vi.fn(), + update: vi.fn(), + replace: vi.fn(), + destroy: vi.fn(), + } + mockedBase = vi.fn().mockReturnValue(this.mockedTable) + + base = vi.fn().mockReturnValue(this.mockedBase) +} diff --git a/packages/airtable-syncer/test/mock-log.transport.ts b/packages/airtable-syncer/test/mock-log.transport.ts new file mode 100644 index 0000000..65f2a5a --- /dev/null +++ b/packages/airtable-syncer/test/mock-log.transport.ts @@ -0,0 +1,11 @@ +import { LogLevel, LogTransport } from '@shiftcode/logger' +import { injectable } from 'inversify' +import { vi } from 'vitest' + +@injectable() +export class MockLogTransport extends LogTransport { + log = vi.fn() + constructor(logLevel: LogLevel) { + super(logLevel) + } +} diff --git a/packages/airtable-syncer/test/models/complex.model.ts b/packages/airtable-syncer/test/models/complex.model.ts new file mode 100644 index 0000000..2a6cad1 --- /dev/null +++ b/packages/airtable-syncer/test/models/complex.model.ts @@ -0,0 +1,21 @@ +import { + AirtableId, + AirtableMapping, + booleanConverter, + ImageAttachment, + keyValueMapping, + KeyValueString, +} from '@shiftcode/airtable-mapper' + +export class ComplexModel extends AirtableId { + static _mapping = new AirtableMapping('ComplexModel') + .addMapping('title', keyValueMapping, true) + .addMapping('active', null, true, booleanConverter) + .addMapping('image', null, true) + + title!: KeyValueString + + active!: boolean + + image!: ImageAttachment +} diff --git a/packages/airtable-syncer/test/models/simple.model.ts b/packages/airtable-syncer/test/models/simple.model.ts new file mode 100644 index 0000000..39aa84d --- /dev/null +++ b/packages/airtable-syncer/test/models/simple.model.ts @@ -0,0 +1,8 @@ +import { AirtableId, AirtableMapping } from '@shiftcode/airtable-mapper' + +export class SimpleModel extends AirtableId { + static _mapping = new AirtableMapping('SimpleModel').addFields(['title', 'description']) + + title!: string + description!: string +} diff --git a/packages/airtable-syncer/test/s3-helper.mock.ts b/packages/airtable-syncer/test/s3-helper.mock.ts new file mode 100644 index 0000000..0c29f7f --- /dev/null +++ b/packages/airtable-syncer/test/s3-helper.mock.ts @@ -0,0 +1,17 @@ +import { injectable } from 'inversify' +import { vi } from 'vitest' + +@injectable() +export class S3HelperMock { + /** {@link S3Helper#init} */ + init = vi.fn() + + /** {@link S3Helper#listAll} */ + listAll = vi.fn().mockReturnValue(Promise.resolve(new Map())) + + uploadJson = vi.fn().mockReturnValue(Promise.resolve()) + + get uploadJsonCalls() { + return this.uploadJson.mock.calls + } +} diff --git a/packages/airtable-syncer/test/sns-publisher.mock.ts b/packages/airtable-syncer/test/sns-publisher.mock.ts new file mode 100644 index 0000000..9694c98 --- /dev/null +++ b/packages/airtable-syncer/test/sns-publisher.mock.ts @@ -0,0 +1,10 @@ +import { injectable } from 'inversify' +import { vi } from 'vitest' + +@injectable() +export class SnsPublisherMock { + get calls() { + return this.publishMessageToTopic.mock.calls + } + publishMessageToTopic = vi.fn().mockReturnValue(Promise.resolve('foo-bar-id')) +} diff --git a/packages/airtable-syncer/test/some-items.ts b/packages/airtable-syncer/test/some-items.ts new file mode 100644 index 0000000..24354a3 --- /dev/null +++ b/packages/airtable-syncer/test/some-items.ts @@ -0,0 +1,47 @@ +import { AirtableImageAttachment, keyValueMapping } from '@shiftcode/airtable-mapper' +// eslint-disable-next-line @typescript-eslint/naming-convention +import { default as Airtable } from 'airtable' + +import { ComplexModel } from './models/complex.model.js' +import { SimpleModel } from './models/simple.model.js' + +export const kvItemId = 'key-value-item-id' +export const smItemId = 'simple-mode-item-id' +export const cmItemId = 'complex-model-item-id' + +export const airtableImgAtt: AirtableImageAttachment = { + id: 'attNCOCHulHBoZrQ7', + url: 'https://dl.airtable.com/.attachments/54affbf839c877e245d59e9569b25230/5bae61a6/ml__0000s_0007_cray.jpg', + filename: 'ml__0000s_0007_cray.jpg', + type: 'image/jpeg', + size: 5583476, + thumbnails: { + large: { + url: 'anUrl', + width: 512, + height: 704, + }, + }, +} + +export const smRecord = new (Airtable).Record(SimpleModel._mapping.tableName, smItemId, { + fields: { + title: 'title', + description: 'description', + }, +}) + +export const kvRecord = new (Airtable).Record(keyValueMapping.tableName, kvItemId, { + fields: { + de: 'de_test', + en: 'en_test', + }, +}) + +export const complexRecord = new (Airtable).Record(ComplexModel._mapping.tableName, cmItemId, { + fields: { + title: [kvItemId], + active: undefined, + image: [{ ...airtableImgAtt }], + }, +}) diff --git a/packages/airtable-syncer/test/test-attachment-url-resolver.service.ts b/packages/airtable-syncer/test/test-attachment-url-resolver.service.ts new file mode 100644 index 0000000..81f2409 --- /dev/null +++ b/packages/airtable-syncer/test/test-attachment-url-resolver.service.ts @@ -0,0 +1,27 @@ +import { inject, injectable } from 'inversify' + +import { AIRTABLE_SYNC_CONFIG, AirtableSyncConfig, AttachmentUrlResolver } from '../src/index.js' + +export const TEST_ASSET_PREFIX = 'test-assets/' + +@injectable() +export class TestAttachmentUrlResolverService extends AttachmentUrlResolver { + private get prefix(): string { + return `/${TEST_ASSET_PREFIX}` + } + + constructor(@inject(AIRTABLE_SYNC_CONFIG) private config: AirtableSyncConfig) { + super() + } + + createUrl(filename: string, id: string): string { + return `${this.prefix}${id}` + } + + getId(url: string): string { + if (url.indexOf(this.prefix) !== 0) { + throw new Error('Foo Bar') + } + return url.slice(this.prefix.length) + } +} diff --git a/packages/airtable-syncer/test/vitest-setup.ts b/packages/airtable-syncer/test/vitest-setup.ts new file mode 100644 index 0000000..3f425aa --- /dev/null +++ b/packages/airtable-syncer/test/vitest-setup.ts @@ -0,0 +1 @@ +import 'reflect-metadata' diff --git a/packages/airtable-syncer/tsconfig.json b/packages/airtable-syncer/tsconfig.json new file mode 100644 index 0000000..3c226a5 --- /dev/null +++ b/packages/airtable-syncer/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "declarationDir": "./dist", + "strictPropertyInitialization": false, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/airtable-syncer/tsconfig.lint.json b/packages/airtable-syncer/tsconfig.lint.json new file mode 100644 index 0000000..11fb48f --- /dev/null +++ b/packages/airtable-syncer/tsconfig.lint.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "types": ["node"], + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "paths": { + "@shiftcode/airtable-mapper": ["../airtable-mapper/src/index.ts"], + "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"], + "@shiftcode/lambda-utilities/s3": ["../lambda-utilities/src/s3/index.ts"] + } + }, + "include": ["src/**/*.ts", "test/**/*.ts"], + "exclude": [] +} diff --git a/packages/airtable-syncer/tsconfig.spec.json b/packages/airtable-syncer/tsconfig.spec.json new file mode 100644 index 0000000..f25dbbf --- /dev/null +++ b/packages/airtable-syncer/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.jest.json", + "compilerOptions": { + "baseUrl": ".", + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "paths": { + "@shiftcode/airtable-mapper": ["../airtable-mapper/src/index.ts"], + "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"], + "@shiftcode/logger": ["../logger/src/public-api.ts"], + "@shiftcode/lambda-utilities/s3": ["../lambda-utilities/src/s3/index.ts"], + "@shiftcode/utilities": ["../utilities/src/index.ts"] + } + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} diff --git a/packages/airtable-syncer/vitest.config.js b/packages/airtable-syncer/vitest.config.js new file mode 100644 index 0000000..bec1c9f --- /dev/null +++ b/packages/airtable-syncer/vitest.config.js @@ -0,0 +1,34 @@ +import path from 'node:path' + +import swc from 'unplugin-swc' +import { defineConfig } from 'vitest/config' + +import tsconfig from './tsconfig.spec.json' + +const alias = Object.fromEntries( + Object.entries(tsconfig.compilerOptions.paths).map(([key, [value]]) => [ + key.replace('/*', ''), + path.resolve(import.meta.dirname, value.replace('/*', '')), + ]), +) + +export default defineConfig({ + plugins: [ + swc.vite({ + jsc: { + parser: { + syntax: 'typescript', + decorators: true, + }, + transform: { + decoratorMetadata: true, + }, + target: 'es2022', + }, + }), + ], + test: { + alias, + setupFiles: ['./test/vitest-setup.ts'], + }, +}) From f94f67d7bde3f28e10be910f7ad404233fa407a8 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:17:56 +0100 Subject: [PATCH 27/55] chore: add deps for newly added libs --- package-lock.json | 856 +++++++++++++++++++++++++++++++++++----------- package.json | 4 - 2 files changed, 658 insertions(+), 202 deletions(-) diff --git a/package-lock.json b/package-lock.json index 265c0f3..2c499ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,6 @@ "workspaces": [ "packages/*" ], - "dependencies": { - "audit": "^0.0.6", - "fix": "^0.0.6" - }, "devDependencies": { "@commitlint/cli": "^20.4.1", "@commitlint/config-conventional": "^20.4.1", @@ -551,7 +547,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", @@ -567,7 +562,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -580,7 +574,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -594,7 +587,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -608,7 +600,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -623,7 +614,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -633,7 +623,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", @@ -645,7 +634,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -658,7 +646,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -672,7 +659,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -905,6 +891,57 @@ "node": ">=20.0.0" } }, + "node_modules/@aws-sdk/client-sns": { + "version": "3.983.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.983.0.tgz", + "integrity": "sha512-OdqioLVhV8mav8nj6eSbTeAySIHCEMKdq4O844UUbbQaOpTonfc+TwR3wr2lsRel7rdSEk42CK/CZrH8vtUVmg==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.6", + "@aws-sdk/credential-provider-node": "^3.972.5", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.6", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.983.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.4", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.12", + "@smithy/middleware-retry": "^4.4.29", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.28", + "@smithy/util-defaults-mode-node": "^4.2.31", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@aws-sdk/client-ssm": { "version": "3.983.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.983.0.tgz", @@ -961,7 +998,6 @@ "version": "3.982.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.982.0.tgz", "integrity": "sha512-qJrIiivmvujdGqJ0ldSUvhN3k3N7GtPesoOI1BSt0fNXovVnMz4C/JmnkhZihU7hJhDvxJaBROLYTU+lpild4w==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1011,7 +1047,6 @@ "version": "3.982.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.982.0.tgz", "integrity": "sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1028,7 +1063,6 @@ "version": "3.973.6", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.6.tgz", "integrity": "sha512-pz4ZOw3BLG0NdF25HoB9ymSYyPbMiIjwQJ2aROXRhAzt+b+EOxStfFv8s5iZyP6Kiw7aYhyWxj5G3NhmkoOTKw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1152,7 +1186,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.4.tgz", "integrity": "sha512-/8dnc7+XNMmViEom2xsNdArQxQPSgy4Z/lm6qaFPTrMFesT1bV3PsBhb19n09nmxHdrtQskYmViddUIjUQElXg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1169,7 +1202,6 @@ "version": "3.972.6", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.6.tgz", "integrity": "sha512-5ERWqRljiZv44AIdvIRQ3k+EAV0Sq2WeJHvXuK7gL7bovSxOf8Al7MLH7Eh3rdovH4KHFnlIty7J71mzvQBl5Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1191,7 +1223,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.4.tgz", "integrity": "sha512-eRUg+3HaUKuXWn/lEMirdiA5HOKmEl8hEHVuszIDt2MMBUKgVX5XNGmb3XmbgU17h6DZ+RtjbxQpjhz3SbTjZg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1217,7 +1248,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.4.tgz", "integrity": "sha512-nLGjXuvWWDlQAp505xIONI7Gam0vw2p7Qu3P6on/W2q7rjJXtYjtpHbcsaOjJ/pAju3eTvEQuSuRedcRHVQIAQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1237,7 +1267,6 @@ "version": "3.972.5", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.5.tgz", "integrity": "sha512-VWXKgSISQCI2GKN3zakTNHSiZ0+mux7v6YHmmbLQp/o3fvYUQJmKGcLZZzg2GFA+tGGBStplra9VFNf/WwxpYg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.4", @@ -1261,7 +1290,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.4.tgz", "integrity": "sha512-TCZpWUnBQN1YPk6grvd5x419OfXjHvhj5Oj44GYb84dOVChpg/+2VoEj+YVA4F4E/6huQPNnX7UYbTtxJqgihw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1279,7 +1307,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.4.tgz", "integrity": "sha512-wzsGwv9mKlwJ3vHLyembBvGE/5nPUIwRR2I51B1cBV4Cb4ql9nIIfpmHzm050XYTY5fqTOKJQnhLj7zj89VG8g==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-sso": "3.982.0", @@ -1299,7 +1326,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.4.tgz", "integrity": "sha512-hIzw2XzrG8jzsUSEatehmpkd5rWzASg5IHUfA+m01k/RtvfAML7ZJVVohuKdhAYx+wV2AThLiQJVzqn7F0khrw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1461,7 +1487,6 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1492,7 +1517,6 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1507,7 +1531,6 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1565,7 +1588,6 @@ "version": "3.972.6", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.6.tgz", "integrity": "sha512-TehLN8W/kivl0U9HcS+keryElEWORROpghDXZBLfnb40DXM7hx/i+7OOjkogXQOF3QtUraJVRkHQ07bPhrWKlw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1584,7 +1606,6 @@ "version": "3.982.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.982.0.tgz", "integrity": "sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1601,7 +1622,6 @@ "version": "3.982.0", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.982.0.tgz", "integrity": "sha512-VVkaH27digrJfdVrT64rjkllvOp4oRiZuuJvrylLXAKl18ujToJR7AqpDldL/LS63RVne3QWIpkygIymxFtliQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1651,7 +1671,6 @@ "version": "3.982.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.982.0.tgz", "integrity": "sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1668,7 +1687,6 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1703,7 +1721,6 @@ "version": "3.982.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.982.0.tgz", "integrity": "sha512-v3M0KYp2TVHYHNBT7jHD9lLTWAdS9CaWJ2jboRKt0WAB65bA7iUEpR+k4VqKYtpQN4+8kKSc4w+K6kUNZkHKQw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1722,7 +1739,6 @@ "version": "3.973.1", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -1749,7 +1765,6 @@ "version": "3.983.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.983.0.tgz", "integrity": "sha512-t/VbL2X3gvDEjC4gdySOeFFOZGQEBKwa23pRHeB7hBLBZ119BB/2OEFtTFWKyp3bnMQgxpeVeGS7/hxk6wpKJw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1766,7 +1781,6 @@ "version": "3.965.4", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.4.tgz", "integrity": "sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1779,7 +1793,6 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1792,7 +1805,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.4.tgz", "integrity": "sha512-3WFCBLiM8QiHDfosQq3Py+lIMgWlFWwFQliUHUqwEiRqLnKyhgbU3AKa7AWJF7lW2Oc/2kFNY4MlAYVnVc0i8A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.6", @@ -1817,7 +1829,6 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.4.tgz", "integrity": "sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -1832,7 +1843,6 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", - "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -3680,14 +3690,12 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.5.2.tgz", "integrity": "sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==", - "devOptional": true, "license": "MIT" }, "node_modules/@inversifyjs/container": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/@inversifyjs/container/-/container-1.15.0.tgz", "integrity": "sha512-U2xYsPrJTz5za2TExi5lg8qOWf8TEVBpN+pQM7B8BVA2rajtbRE9A66SLRHk8c1eGXmg+0K4Hdki6tWAsSQBUA==", - "devOptional": true, "license": "MIT", "dependencies": { "@inversifyjs/common": "1.5.2", @@ -3703,7 +3711,6 @@ "version": "9.2.0", "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-9.2.0.tgz", "integrity": "sha512-Nm7BR6KmpgshIHpVQWuEDehqRVb6GBm8LFEuhc2s4kSZWrArZ15RmXQzROLk4m+hkj4kMXgvMm5Qbopot/D6Sg==", - "devOptional": true, "license": "MIT", "dependencies": { "@inversifyjs/common": "1.5.2", @@ -3715,14 +3722,12 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@inversifyjs/plugin/-/plugin-0.2.0.tgz", "integrity": "sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==", - "devOptional": true, "license": "MIT" }, "node_modules/@inversifyjs/prototype-utils": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@inversifyjs/prototype-utils/-/prototype-utils-0.1.3.tgz", "integrity": "sha512-EzRamZzNgE9Sn3QtZ8NncNa2lpPMZfspqbK6BWFguWnOpK8ymp2TUuH46ruFHZhrHKnknPd7fG22ZV7iF517TQ==", - "devOptional": true, "license": "MIT", "dependencies": { "@inversifyjs/common": "1.5.2" @@ -3732,7 +3737,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-1.4.1.tgz", "integrity": "sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==", - "devOptional": true, "license": "MIT", "peerDependencies": { "reflect-metadata": "~0.2.2" @@ -4447,6 +4451,17 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -4605,6 +4620,12 @@ } } }, + "node_modules/@lerna/create/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/@lerna/create/node_modules/execa": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", @@ -4719,6 +4740,34 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@lerna/create/node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/create/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@lerna/create/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -5905,6 +5954,49 @@ "node": ">=14" } }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.57.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", @@ -6260,6 +6352,14 @@ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" }, + "node_modules/@shiftcode/airtable-mapper": { + "resolved": "packages/airtable-mapper", + "link": true + }, + "node_modules/@shiftcode/airtable-syncer": { + "resolved": "packages/airtable-syncer", + "link": true + }, "node_modules/@shiftcode/branch-utilities": { "resolved": "packages/branch-utilities", "link": true @@ -6406,7 +6506,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6447,7 +6546,6 @@ "version": "4.4.6", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.8", @@ -6465,7 +6563,6 @@ "version": "3.22.1", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^4.2.9", @@ -6487,7 +6584,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.8", @@ -6579,7 +6675,6 @@ "version": "5.3.9", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.8", @@ -6612,7 +6707,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6643,7 +6737,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6657,7 +6750,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -6685,7 +6777,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.8", @@ -6700,7 +6791,6 @@ "version": "4.4.13", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/core": "^3.22.1", @@ -6720,7 +6810,6 @@ "version": "4.4.30", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.8", @@ -6741,7 +6830,6 @@ "version": "4.2.9", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.8", @@ -6756,7 +6844,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6770,7 +6857,6 @@ "version": "4.3.8", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.8", @@ -6786,7 +6872,6 @@ "version": "4.4.9", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.2.8", @@ -6803,7 +6888,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6817,7 +6901,6 @@ "version": "5.3.8", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6831,7 +6914,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6846,7 +6928,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6860,7 +6941,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0" @@ -6873,7 +6953,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6887,7 +6966,6 @@ "version": "5.3.8", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", @@ -6907,7 +6985,6 @@ "version": "4.11.2", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/core": "^3.22.1", @@ -6926,7 +7003,6 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -6939,7 +7015,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/querystring-parser": "^4.2.8", @@ -6954,7 +7029,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^4.2.0", @@ -6969,7 +7043,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -6982,7 +7055,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -6995,7 +7067,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", @@ -7009,7 +7080,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7022,7 +7092,6 @@ "version": "4.3.29", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.8", @@ -7038,7 +7107,6 @@ "version": "4.2.32", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^4.4.6", @@ -7057,7 +7125,6 @@ "version": "3.2.8", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.8", @@ -7072,7 +7139,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7085,7 +7151,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -7099,7 +7164,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/service-error-classification": "^4.2.8", @@ -7114,7 +7178,6 @@ "version": "4.5.11", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/fetch-http-handler": "^5.3.9", @@ -7134,64 +7197,277 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", "devOptional": true, "license": "Apache-2.0", "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", - "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/core": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.11.tgz", + "integrity": "sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.11", + "@swc/core-darwin-x64": "1.15.11", + "@swc/core-linux-arm-gnueabihf": "1.15.11", + "@swc/core-linux-arm64-gnu": "1.15.11", + "@swc/core-linux-arm64-musl": "1.15.11", + "@swc/core-linux-x64-gnu": "1.15.11", + "@swc/core-linux-x64-musl": "1.15.11", + "@swc/core-win32-arm64-msvc": "1.15.11", + "@swc/core-win32-ia32-msvc": "1.15.11", + "@swc/core-win32-x64-msvc": "1.15.11" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz", + "integrity": "sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz", + "integrity": "sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz", + "integrity": "sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz", + "integrity": "sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz", + "integrity": "sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz", + "integrity": "sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz", + "integrity": "sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz", + "integrity": "sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz", + "integrity": "sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz", + "integrity": "sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=18.0.0" + "node": ">=10" } }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", - "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "license": "Apache-2.0" }, - "node_modules/@smithy/uuid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", - "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@swc/counter": "^0.1.3" } }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, "node_modules/@tokenizer/inflate": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", @@ -7944,6 +8220,24 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", + "license": "MIT" + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -7993,6 +8287,28 @@ "node": ">=8" } }, + "node_modules/airtable": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/airtable/-/airtable-0.12.2.tgz", + "integrity": "sha512-HS3VytUBTKj8A0vPl7DDr5p/w3IOGv6RXL0fv7eczOWAtj9Xe8ri4TAiZRXoOyo+Z/COADCj+oARFenbxhmkIg==", + "license": "MIT", + "dependencies": { + "@types/node": ">=8.0.0 <15", + "abort-controller": "^3.0.0", + "abortcontroller-polyfill": "^1.4.0", + "lodash": "^4.17.21", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/airtable/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -8311,14 +8627,6 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/audit": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/audit/-/audit-0.0.6.tgz", - "integrity": "sha512-xgv3Y3RIYE00N2/xk10VLlwFd1kjc7FRaX1vC8+CsOfDRe53a06vOSkp91BOSNijZfddYum47a1Fvju/2+JPcw==", - "engines": { - "node": ">= 0.5.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -8992,7 +9300,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", - "devOptional": true, "license": "MIT" }, "node_modules/brace-expansion": { @@ -10689,6 +10996,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -11720,11 +12038,19 @@ "node": ">=0.10.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/execa": { "version": "5.1.1", @@ -11857,7 +12183,6 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", - "devOptional": true, "funding": [ { "type": "github", @@ -11983,19 +12308,6 @@ "node": ">=8" } }, - "node_modules/fix": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/fix/-/fix-0.0.6.tgz", - "integrity": "sha512-UQ+8m0GnIakgpY+92a9y+pYoX3Y6eaW7WNTkPolQ7r58Fjzq7NhyRLMrZ6J6U1u4y7H7APugjRmZ+i6CAn4+Dg==", - "dependencies": { - "pipe": "0.0.2", - "underscore": "1.1.6", - "underscore.string": "1.1.4" - }, - "engines": { - "node": ">=0.4.8" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -13260,7 +13572,6 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", - "devOptional": true, "license": "MIT", "dependencies": { "@inversifyjs/common": "1.5.2", @@ -15220,6 +15531,12 @@ } } }, + "node_modules/lerna/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/lerna/node_modules/execa": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", @@ -15378,6 +15695,34 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/lerna/node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lerna/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lerna/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -15857,6 +16202,22 @@ "node": ">=8" } }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -16581,6 +16942,26 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "license": "MIT" }, + "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==", + "license": "MIT", + "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-gyp": { "version": "11.5.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz", @@ -17625,27 +18006,21 @@ } }, "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.1.0.tgz", + "integrity": "sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==", "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "eventemitter3": "^5.0.1", + "p-timeout": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-queue/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, "node_modules/p-reduce": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", @@ -17655,15 +18030,15 @@ } }, "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, "engines": { - "node": ">=8" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -18076,14 +18451,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pipe": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/pipe/-/pipe-0.0.2.tgz", - "integrity": "sha512-67s0/X7rv2PX1sl64FQqC0qQuSpd1tv8Wh6c+U1lprj6Q7NxDYulCxZTbVbDvc/HSpZLYh7Oo821xReXSCZikQ==", - "engines": { - "node": ">=0.4.8" - } - }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", @@ -18623,7 +18990,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "devOptional": true, "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { @@ -19734,7 +20100,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", - "devOptional": true, "funding": [ { "type": "github", @@ -20055,6 +20420,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -20392,25 +20763,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.6.tgz", - "integrity": "sha512-aqSzrO92Cjmeo8G7F49+ZHWBo3IJpjpsUZZaqfOHJGN61flbpLxQw/sP91p4kf/2+nkFrG6AG2WHlJh6RCf+/g==", - "engines": { - "node": "*" - } - }, - "node_modules/underscore.string": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-1.1.4.tgz", - "integrity": "sha512-WsF8NWzIbTvxUaSOpSLq+AiO0tzweXdWQZ4w9Op8S/1BT9Fh7hCS7bfrF17vZu9kJg3pcqO+8WXfQSr1ah0f2g==", - "dependencies": { - "underscore": "1.1.6" - }, - "engines": { - "node": "*" - } - }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -20457,6 +20809,50 @@ "node": ">= 10.0.0" } }, + "node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unplugin-swc": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/unplugin-swc/-/unplugin-swc-1.5.9.tgz", + "integrity": "sha512-RKwK3yf0M+MN17xZfF14bdKqfx0zMXYdtOdxLiE6jHAoidupKq3jGdJYANyIM1X/VmABhh1WpdO+/f4+Ol89+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.3.0", + "load-tsconfig": "^0.2.5", + "unplugin": "^2.3.11" + }, + "peerDependencies": { + "@swc/core": "^1.2.108" + } + }, + "node_modules/unplugin/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -20789,6 +21185,29 @@ "defaults": "^1.0.3" } }, + "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==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -21180,6 +21599,47 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/airtable-mapper": { + "name": "@shiftcode/airtable-mapper", + "version": "0.0.0-pr254.0", + "license": "MIT", + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "peerDependencies": { + "tslib": "^2.3.0" + } + }, + "packages/airtable-syncer": { + "name": "@shiftcode/airtable-syncer", + "version": "0.0.0-pr254.0", + "license": "MIT", + "dependencies": { + "airtable": "^0.12.2", + "p-queue": "^9.0.1" + }, + "devDependencies": { + "@shiftcode/airtable-mapper": "^0.0.0-pr254", + "@shiftcode/inversify-logger": "^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^0.0.0-pr254", + "@swc/core": "^1.15.11", + "unplugin-swc": "^1.5.9" + }, + "engines": { + "node": "^22.10.2 || ^24.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sns": "^3.188.0", + "@shiftcode/airtable-mapper": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/inversify-logger": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/logger": "^4.0.0", + "date-fns": "^4.0.0", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "tslib": "^2.3.0" + } + }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", "version": "5.1.1", @@ -21347,7 +21807,7 @@ "license": "MIT", "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.1", + "@shiftcode/inversify-logger": "^0.0.0-pr254", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" diff --git a/package.json b/package.json index 17e8c3f..505abc8 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,6 @@ "publish-libs": "node packages/publish-helper/dist/publish-lib", "test:ci": "lerna run test:ci" }, - "dependencies": { - "audit": "^0.0.6", - "fix": "^0.0.6" - }, "devDependencies": { "@commitlint/cli": "^20.4.1", "@commitlint/config-conventional": "^20.4.1", From 368ebc98f142138902d8a55a14697d777c78235f Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:18:38 +0100 Subject: [PATCH 28/55] docs: add badges for newly added libs --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index d3bd78f..8d3ba9a 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,18 @@ Public helper packages with commonly used utilities / helpers. shiftcode logo +> [![@shiftcode/airtable-mapper](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fairtable-mapper%2Fpackage.json&label=%40shiftcode%2Fairtable-mapper)](packages/airtable-mapper) \ +> interfaces and classes for airtable mapping + +> [![@shiftcode/airtable-syncer](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fairtable-syncer%2Fpackage.json&label=%40shiftcode%2Fairtable-syncer)](packages/airtable-syncer) \ +> base utils and services to export airtable and upload to S3 + > [![@shiftcode/branch-utilities](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fbranch-utilities%2Fpackage.json&label=%40shiftcode%2Fbranch-utilities)](packages/branch-utilities) \ > functions to read information about the current branch either locally or inside Github actions. +> [![@shiftcode/cdk-utilities](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fcdk-utilities%2Fpackage.json&label=%40shiftcode%2Fcdk-utilities)](packages/cdk-utilities) \ +> Constructs for iac with aws-cdk-lib + > [![@shiftcode/eslint-config-recommended](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Feslint-config-recommended%2Fpackage.json&label=%40shiftcode%2Feslint-config-recommended)](packages/eslint-config-recommended) \ > Our recommended config for eslint. We provide two versions, one for usage in node projects and one for Angular. @@ -21,6 +30,12 @@ Public helper packages with commonly used utilities / helpers. > [![@shiftcode/inversify-logger](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Finversify-logger%2Fpackage.json&label=%40shiftcode%2Finversify-logger)](packages/inversify-logger)\ > Inversify LogTransport to use with the @shiftcode/logger package. +> [![@shiftcode/iac-utilities](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fiac-utilities%2Fpackage.json&label=%40shiftcode%2Fiac-utilities)](packages/iac-utilities)\ +> scripts and util functions for aws iac + +> [![@shiftcode/lambda-utilities](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Flambda-utilities%2Fpackage.json&label=%40shiftcode%2Flambda-utilities)](packages/lambda-utilities)\ +> Utils for lambda functions + > [![@shiftcode/nest-logger](https://img.shields.io/github/package-json/v/shiftcode/sc-commons-public?filename=packages%2Fnest-logger%2Fpackage.json&label=%40shiftcode%2Fnest-logger)](packages/nest-logger)\ > NestJS LogTransport to use with the @shiftcode/logger package. @@ -82,3 +97,11 @@ Polyfill can be found here: https://www.npmjs.com/package/regexp-match-indices. For modern browsers the latest fully supported version is `es2023` (see [can-i-use](https://caniuse.com/?search=es2023)) which therefore is the target for `@shiftcode/utilities` package (see [package README](./packages/utilities/README.md)). + +## Utility commands: + +Clean up all `dist` folders: + +```bash +find ./packages -type d -name "dist" -exec rm -rf {} + +``` From e9e74ca020c5d8b475b113dcbe727ef4f2949128 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:22:09 +0100 Subject: [PATCH 29/55] chore: dev version for peer dep --- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index bea4f74..7dfdc98 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 660f5ef..60a8326 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.1", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -29,9 +29,9 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254", - "@shiftcode/inversify-logger": "^0.0.0-pr254", - "@shiftcode/lambda-utilities": "^0.0.0-pr254", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.1", + "@shiftcode/inversify-logger": "^0.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.1", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, From 4132d583f4096d82c9897fd70b0c8c1399b561d8 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 5 Feb 2026 14:26:25 +0000 Subject: [PATCH 30/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@0.0.0-pr254.2 - @shiftcode/airtable-syncer@0.0.0-pr254.2 - @shiftcode/cdk-utilities@0.0.0-pr254.2 - @shiftcode/iac-utilities@0.0.0-pr254.2 - @shiftcode/inversify-logger@0.0.0-pr254.2 - @shiftcode/lambda-utilities@0.0.0-pr254.2 - @shiftcode/nest-logger@0.0.0-pr254.2 --- package-lock.json | 34 +++++++++++++++++--------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 8 +++--- packages/cdk-utilities/package.json | 2 +- packages/iac-utilities/package.json | 4 +-- packages/inversify-logger/package.json | 2 +- packages/lambda-utilities/package.json | 4 +-- packages/nest-logger/package.json | 2 +- 8 files changed, 34 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2c499ab..799b8c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7303,6 +7303,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -7319,6 +7320,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -7335,6 +7337,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -7351,6 +7354,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -7367,6 +7371,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -7383,6 +7388,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -7399,6 +7405,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -7415,6 +7422,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -7431,6 +7439,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -7447,6 +7456,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -21601,7 +21611,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.2", "license": "MIT", "engines": { "node": "^22.10.2 || ^24.0.0" @@ -21612,16 +21622,16 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.0", + "version": "0.0.0-pr254.2", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254", - "@shiftcode/inversify-logger": "^0.0.0-pr254", - "@shiftcode/lambda-utilities": "^0.0.0-pr254", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.2", + "@shiftcode/inversify-logger": "^0.0.0-pr254.2", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -21653,7 +21663,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -21716,7 +21726,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -21746,7 +21756,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", "@types/yargs": "^17.0.5" }, "engines": { @@ -21785,7 +21795,7 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "license": "MIT", "devDependencies": { "@shiftcode/logger": "^4.0.0", @@ -21803,11 +21813,11 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "license": "MIT", "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254", + "@shiftcode/inversify-logger": "^0.0.0-pr254.2", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" @@ -21858,7 +21868,7 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 7dfdc98..63d89cf 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 60a8326..40d1b4c 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -29,9 +29,9 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.1", - "@shiftcode/inversify-logger": "^0.0.0-pr254.1", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.1", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.2", + "@shiftcode/inversify-logger": "^0.0.0-pr254.2", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 313733f..742d3df 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index f62aa42..f29428f 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -56,7 +56,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index e67cc4c..7120651 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 4f60ec3..c130c0e 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,7 +34,7 @@ }, "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.1", + "@shiftcode/inversify-logger": "^0.0.0-pr254.2", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 6e9ee98..603199b 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.1", + "version": "0.0.0-pr254.2", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 8acdbd88283023f5776e274456731ada1479af5f Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:37:55 +0100 Subject: [PATCH 31/55] fix: allow @ts- comments for spec/test files --- packages/eslint-config-recommended/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/eslint-config-recommended/src/index.ts b/packages/eslint-config-recommended/src/index.ts index 833af3b..7103dbc 100644 --- a/packages/eslint-config-recommended/src/index.ts +++ b/packages/eslint-config-recommended/src/index.ts @@ -243,6 +243,7 @@ export function defineScTsConfig(...configs: Parameters): R rules: { 'no-console': 'off', 'max-classes-per-file': 'off', + '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-empty-function': 'off', }, From 85d5fc19d7822abc0e44e07a45258baa95e31482 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 15:39:44 +0100 Subject: [PATCH 32/55] build: update supported node version BREAKING CHANGE: require node >= 22.10.2 --- .github/workflows/main.yml | 4 ++-- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 2 +- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- packages/eslint-config-recommended/package.json | 2 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 2 +- packages/inversify-logger/package.json | 2 +- packages/lambda-utilities/package.json | 2 +- packages/logger/package.json | 2 +- packages/nest-logger/package.json | 2 +- packages/publish-helper/package.json | 2 +- packages/utilities/package.json | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9b64f1c..db5df0a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,11 +41,11 @@ jobs: if: needs.checkExecution.outputs.shouldExecute == 'true' strategy: matrix: - # Test with Node.js v20 and v22 + # Test with Node.js 22, 24 and v25 node: - - 20 - 22 - 24 + - 25 name: Node.js v${{ matrix.node }} steps: # checkout branch diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 63d89cf..dc7c8d4 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -28,7 +28,7 @@ "tslib": "^2.3.0" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 40d1b4c..9e158ee 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -47,7 +47,7 @@ "tslib": "^2.3.0" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index bcd12af..08f2884 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -32,7 +32,7 @@ "tslib": "^2.3.0" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 742d3df..fed765d 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -33,7 +33,7 @@ "tslib": "^2.3.0" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index bc5e68e..36f4a9a 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -54,7 +54,7 @@ } }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index ab1d51f..9c04607 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -39,7 +39,7 @@ "eslint": "^9.37.0" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index f29428f..d0433ca 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -90,7 +90,7 @@ } }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 7120651..8f5501b 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -42,7 +42,7 @@ "reflect-metadata": "^0.1.13 || ^0.2.0" }, "engines": { - "node": "^22.0.0 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index c130c0e..b90f54b 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -66,7 +66,7 @@ } }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/logger/package.json b/packages/logger/package.json index 13cac62..f311489 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -43,7 +43,7 @@ "@shiftcode/utilities": "^4.0.0" }, "engines": { - "node": "^22.0.0 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 603199b..e77995a 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -44,7 +44,7 @@ "rxjs": "^7.1.0" }, "engines": { - "node": "^22.0.0 || ^24.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index c5811b9..6959306 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -39,7 +39,7 @@ "tslib": "^2.3.0" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 9cab75a..d034c3f 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -32,7 +32,7 @@ "tslib": "^2.3.0" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "publishConfig": { "directory": "dist" From 0df15077379d7d9763c27552a9f9660cacdcaa10 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 16:03:58 +0100 Subject: [PATCH 33/55] build: missing dev dep --- packages/airtable-syncer/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 9e158ee..7d43b15 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -32,6 +32,7 @@ "@shiftcode/airtable-mapper": "^0.0.0-pr254.2", "@shiftcode/inversify-logger": "^0.0.0-pr254.2", "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", + "@shiftcode/logger": "^4.0.0", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, From 362fa8ade91fa0b0125779e789d3fb540658f1a1 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 5 Feb 2026 15:07:13 +0000 Subject: [PATCH 34/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@0.0.0-pr254.3 - @shiftcode/airtable-syncer@0.0.0-pr254.3 - @shiftcode/branch-utilities@6.0.0-pr254.0 - @shiftcode/cdk-utilities@0.0.0-pr254.3 - @shiftcode/eslint-config-recommended@7.0.0-pr254.0 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.0 - @shiftcode/iac-utilities@0.0.0-pr254.3 - @shiftcode/inversify-logger@0.0.0-pr254.3 - @shiftcode/lambda-utilities@0.0.0-pr254.3 - @shiftcode/logger@5.0.0-pr254.0 - @shiftcode/nest-logger@0.0.0-pr254.3 - @shiftcode/publish-helper@6.0.0-pr254.0 - @shiftcode/utilities@5.0.0-pr254.0 --- package-lock.json | 79 ++++++++++--------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 +-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 67 insertions(+), 66 deletions(-) diff --git a/package-lock.json b/package-lock.json index 799b8c4..80b2bca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21611,10 +21611,10 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "tslib": "^2.3.0" @@ -21622,21 +21622,22 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.2", - "@shiftcode/inversify-logger": "^0.0.0-pr254.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.3", + "@shiftcode/inversify-logger": "^0.0.0-pr254.3", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.0", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@aws-sdk/client-sns": "^3.188.0", @@ -21652,10 +21653,10 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "5.1.1", + "version": "6.0.0-pr254.0", "license": "MIT", "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "tslib": "^2.3.0" @@ -21663,13 +21664,13 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "aws-cdk-lib": "^2.3.0", @@ -21679,11 +21680,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "6.1.0", + "version": "7.0.0-pr254.0", "license": "UNLICENSED", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^5.0.1", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.0", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -21695,7 +21696,7 @@ "angular-eslint": "^20.5.1" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "angular-eslint": "^20.5.1 || ^21.0.0" @@ -21708,7 +21709,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "5.0.1", + "version": "6.0.0-pr254.0", "license": "UNLICENSED", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -21718,7 +21719,7 @@ "@typescript-eslint/rule-tester": "^8.46.0" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "eslint": "^9.37.0" @@ -21726,7 +21727,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -21755,12 +21756,12 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", + "@shiftcode/branch-utilities": "^6.0.0-pr254.0", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", "@types/yargs": "^17.0.5" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@aws-sdk/client-cloudformation": "^3.204.0", @@ -21795,15 +21796,15 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0-pr254.0", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, "engines": { - "node": "^22.0.0 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@shiftcode/logger": "^4.0.0", @@ -21813,17 +21814,17 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.2", - "@shiftcode/logger": "^4.0.0", - "@shiftcode/utilities": "^4.0.0", + "@shiftcode/inversify-logger": "^0.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/utilities": "^5.0.0-pr254.0", "@types/aws-lambda": "^8.10.89" }, "engines": { - "node": "^22.10.2 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@aws-sdk/client-s3": "^3.204.0", @@ -21854,13 +21855,13 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "4.0.0", + "version": "5.0.0-pr254.0", "license": "UNLICENSED", "devDependencies": { - "@shiftcode/utilities": "^4.3.1" + "@shiftcode/utilities": "^5.0.0-pr254.0" }, "engines": { - "node": "^22.0.0 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@shiftcode/utilities": "^4.0.0" @@ -21868,18 +21869,18 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0-pr254.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, "engines": { - "node": "^22.0.0 || ^24.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@nestjs/common": "^11.0.0", @@ -21891,7 +21892,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "5.0.0", + "version": "6.0.0-pr254.0", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -21902,11 +21903,11 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^5.1.1", + "@shiftcode/branch-utilities": "^6.0.0-pr254.0", "@types/yargs": "^17.0.32" }, "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "@shiftcode/branch-utilities": "^5.1.1", @@ -21927,10 +21928,10 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "4.3.1", + "version": "5.0.0-pr254.0", "license": "MIT", "engines": { - "node": "^20.0.0 || ^22.0.0" + "node": ">=22.10.2" }, "peerDependencies": { "tslib": "^2.3.0" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index dc7c8d4..3782cab 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 7d43b15..d164b75 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -29,10 +29,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.2", - "@shiftcode/inversify-logger": "^0.0.0-pr254.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.3", + "@shiftcode/inversify-logger": "^0.0.0-pr254.3", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.0", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 08f2884..73fa6e8 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "5.1.1", + "version": "6.0.0-pr254.0", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index fed765d..14269bc 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 36f4a9a..5f1e174 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "6.1.0", + "version": "7.0.0-pr254.0", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "UNLICENSED", @@ -34,7 +34,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^5.0.1", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.0", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 9c04607..21b49f0 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "5.0.1", + "version": "6.0.0-pr254.0", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "UNLICENSED", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index d0433ca..2112615 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -55,8 +55,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.2", + "@shiftcode/branch-utilities": "^6.0.0-pr254.0", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 8f5501b..1de329b 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0-pr254.0", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index b90f54b..db78931 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,9 +34,9 @@ }, "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.2", - "@shiftcode/logger": "^4.0.0", - "@shiftcode/utilities": "^4.0.0", + "@shiftcode/inversify-logger": "^0.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/utilities": "^5.0.0-pr254.0", "@types/aws-lambda": "^8.10.89" }, "peerDependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index f311489..d46e943 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "4.0.0", + "version": "5.0.0-pr254.0", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "UNLICENSED", @@ -37,7 +37,7 @@ "test:watch": "npm run test -- --watch" }, "devDependencies": { - "@shiftcode/utilities": "^4.3.1" + "@shiftcode/utilities": "^5.0.0-pr254.0" }, "peerDependencies": { "@shiftcode/utilities": "^4.0.0" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index e77995a..3daad61 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.2", + "version": "0.0.0-pr254.3", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0-pr254.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index 6959306..de11d25 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "5.0.0", + "version": "6.0.0-pr254.0", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -30,7 +30,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^5.1.1", + "@shiftcode/branch-utilities": "^6.0.0-pr254.0", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index d034c3f..883e58c 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "4.3.1", + "version": "5.0.0-pr254.0", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From f9f8c85780976a7a9cbc3fa4148e4501b972a4bf Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 17:33:40 +0100 Subject: [PATCH 35/55] feat: add global default ignores --- packages/eslint-config-recommended/src/index.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/eslint-config-recommended/src/index.ts b/packages/eslint-config-recommended/src/index.ts index 7103dbc..435f0ad 100644 --- a/packages/eslint-config-recommended/src/index.ts +++ b/packages/eslint-config-recommended/src/index.ts @@ -7,6 +7,15 @@ import eslintPluginSimpleImportSort from 'eslint-plugin-simple-import-sort' import eslintPluginUnusedImports from 'eslint-plugin-unused-imports' import eslintTs from 'typescript-eslint' +export const DEFAULT_IGNORES: readonly string[] = [ + 'node_modules/**', + 'dist/**', + 'out-tsc/**', + '.angular/**', + 'cdk.out/**', + 'cypress/reports/**', +] + /** * define the shiftcode eslint config for typescript. * the function wraps given configs with some common settings and adds prettier rules at the end. @@ -33,6 +42,10 @@ import eslintTs from 'typescript-eslint' */ export function defineScTsConfig(...configs: Parameters): ReturnType { return defineConfig( + { + ignores: [...DEFAULT_IGNORES], + }, + { files: ['**/*.{ts,mts,cts,js,mjs,cjs}'], extends: [eslint.configs.recommended], From 5ecbbe585e074917d94a3a664ee670ecdeb723f0 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 17:37:39 +0100 Subject: [PATCH 36/55] feat: relax rules for non-src and test/spec files --- .../eslint-config-recommended/src/index.ts | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/packages/eslint-config-recommended/src/index.ts b/packages/eslint-config-recommended/src/index.ts index 435f0ad..d908dac 100644 --- a/packages/eslint-config-recommended/src/index.ts +++ b/packages/eslint-config-recommended/src/index.ts @@ -248,26 +248,21 @@ export function defineScTsConfig(...configs: Parameters): R }, }, - /* - * allow some commonly used patterns for testing to pass eslint - */ + // relax the rules for files which are not part of the src/ folder and for test files { - files: ['**/test/**/*.ts', '**/*.spec.ts', '**/*.test.ts'], + files: [ + '!src/**/*.{ts,js,mjs,cjs}', // include everything unless in src folder + 'src/**/*.{spec,test}.ts', // include test files + ], rules: { - 'no-console': 'off', - 'max-classes-per-file': 'off', - '@typescript-eslint/ban-ts-comment': 'off', + // it is ok to use dev deps and deps that are listed inside the root package.json + 'import/no-extraneous-dependencies': ['error', { packageDir: ['.', '../..'] }], + '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-empty-function': 'off', - }, - }, - - // for files which are not part of the src/ folder and for test files - // it is ok to use dependencies that are listed inside the root package.json (e.g. @shiftcode/eslint-config-recommended) - { - files: ['!**/src/**', '**/*.spec.ts', '**/*.test.ts'], - rules: { - 'import/no-extraneous-dependencies': ['error', { packageDir: ['.', '../..'] }], + '@typescript-eslint/ban-ts-comment': 'off', + 'max-classes-per-file': 'off', + 'no-console': 'off', }, }, From 0d968c0d38ee57973b7c3c962e8f285552a8ea6f Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Thu, 5 Feb 2026 17:40:24 +0100 Subject: [PATCH 37/55] chore: simplify/align configs --- .lintstagedrc.yml | 5 ----- .prettierignore | 1 - .prettierrc.yml | 5 ----- lint-staged.config.js | 10 ++++++++++ package.json | 1 - packages/airtable-mapper/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/airtable-mapper/lint-staged.config.js | 10 ++++++++++ packages/airtable-mapper/package.json | 9 ++++----- packages/airtable-mapper/tsconfig.lint.json | 2 +- packages/airtable-syncer/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/airtable-syncer/lint-staged.config.js | 10 ++++++++++ packages/airtable-syncer/package.json | 9 ++++----- packages/airtable-syncer/tsconfig.lint.json | 2 +- packages/branch-utilities/.lintstagedrc.yml | 5 ----- .../{eslint.config.mjs => eslint.config.js} | 0 packages/branch-utilities/jest.config.js | 1 + packages/branch-utilities/lint-staged.config.js | 10 ++++++++++ packages/branch-utilities/package.json | 13 ++++--------- packages/branch-utilities/tsconfig.lint.json | 2 +- packages/cdk-utilities/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/cdk-utilities/lint-staged.config.js | 10 ++++++++++ packages/cdk-utilities/package.json | 9 ++++----- packages/cdk-utilities/tsconfig.lint.json | 2 +- .../eslint-config-recommended/.lintstagedrc.yml | 5 ----- packages/eslint-config-recommended/README.md | 2 +- .../{eslint.config.mjs => eslint.config.js} | 0 .../lint-staged.config.js | 10 ++++++++++ packages/eslint-config-recommended/package.json | 16 +++++----------- .../eslint-config-recommended/tsconfig.lint.json | 4 ++-- packages/eslint-plugin-rules/.lintstagedrc.yml | 5 ----- .../{eslint.config.mjs => eslint.config.js} | 0 packages/eslint-plugin-rules/jest.config.js | 1 + .../eslint-plugin-rules/lint-staged.config.js | 10 ++++++++++ packages/eslint-plugin-rules/package.json | 16 +++++----------- packages/eslint-plugin-rules/tsconfig.lint.json | 2 +- packages/iac-utilities/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/iac-utilities/lint-staged.config.js | 10 ++++++++++ packages/iac-utilities/package.json | 9 ++++----- packages/iac-utilities/tsconfig.lint.json | 2 +- packages/inversify-logger/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/inversify-logger/lint-staged.config.js | 10 ++++++++++ packages/inversify-logger/package.json | 9 ++++----- packages/inversify-logger/tsconfig.lint.json | 2 +- packages/lambda-utilities/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/lambda-utilities/lint-staged.config.js | 10 ++++++++++ packages/lambda-utilities/package.json | 9 ++++----- packages/lambda-utilities/tsconfig.lint.json | 2 +- packages/logger/.lintstagedrc.yml | 5 ----- .../{eslint.config.mjs => eslint.config.js} | 0 packages/logger/jest.config.js | 1 + packages/logger/lint-staged.config.js | 10 ++++++++++ packages/logger/package.json | 15 +++++---------- packages/logger/tsconfig.lint.json | 2 +- packages/nest-logger/.lintstagedrc.yml | 8 -------- .../{eslint.config.mjs => eslint.config.js} | 0 packages/nest-logger/lint-staged.config.js | 10 ++++++++++ packages/nest-logger/package.json | 9 ++++----- .../src/services/logger.service.spec.ts | 1 - packages/nest-logger/tsconfig.lint.json | 2 +- packages/publish-helper/.lintstagedrc.yml | 5 ----- packages/publish-helper/eslint.config.js | 13 +++++++++++++ packages/publish-helper/jest.config.js | 1 + packages/publish-helper/lint-staged.config.js | 10 ++++++++++ packages/publish-helper/package.json | 13 ++++--------- packages/publish-helper/src/helpers.ts | 1 - packages/publish-helper/src/prepare-dist.ts | 2 +- packages/publish-helper/src/publish-lib.ts | 2 +- packages/publish-helper/tsconfig.lint.json | 2 +- packages/utilities/.lintstagedrc.yml | 5 ----- .../eslint.config.js} | 0 packages/utilities/eslint.config.mjs | 5 ----- packages/utilities/jest.config.js | 1 + packages/utilities/lint-staged.config.js | 10 ++++++++++ packages/utilities/package.json | 13 ++++--------- packages/utilities/tsconfig.lint.json | 2 +- prettier.config.js | 12 ++++++++++++ 82 files changed, 242 insertions(+), 216 deletions(-) delete mode 100644 .lintstagedrc.yml delete mode 100644 .prettierignore delete mode 100644 .prettierrc.yml create mode 100644 lint-staged.config.js delete mode 100644 packages/airtable-mapper/.lintstagedrc.yml rename packages/airtable-mapper/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/airtable-mapper/lint-staged.config.js delete mode 100644 packages/airtable-syncer/.lintstagedrc.yml rename packages/airtable-syncer/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/airtable-syncer/lint-staged.config.js delete mode 100644 packages/branch-utilities/.lintstagedrc.yml rename packages/branch-utilities/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/branch-utilities/lint-staged.config.js delete mode 100644 packages/cdk-utilities/.lintstagedrc.yml rename packages/cdk-utilities/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/cdk-utilities/lint-staged.config.js delete mode 100644 packages/eslint-config-recommended/.lintstagedrc.yml rename packages/eslint-config-recommended/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/eslint-config-recommended/lint-staged.config.js delete mode 100644 packages/eslint-plugin-rules/.lintstagedrc.yml rename packages/eslint-plugin-rules/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/eslint-plugin-rules/lint-staged.config.js delete mode 100644 packages/iac-utilities/.lintstagedrc.yml rename packages/iac-utilities/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/iac-utilities/lint-staged.config.js delete mode 100644 packages/inversify-logger/.lintstagedrc.yml rename packages/inversify-logger/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/inversify-logger/lint-staged.config.js delete mode 100644 packages/lambda-utilities/.lintstagedrc.yml rename packages/lambda-utilities/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/lambda-utilities/lint-staged.config.js delete mode 100644 packages/logger/.lintstagedrc.yml rename packages/logger/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/logger/lint-staged.config.js delete mode 100644 packages/nest-logger/.lintstagedrc.yml rename packages/nest-logger/{eslint.config.mjs => eslint.config.js} (100%) create mode 100644 packages/nest-logger/lint-staged.config.js delete mode 100644 packages/publish-helper/.lintstagedrc.yml create mode 100644 packages/publish-helper/eslint.config.js create mode 100644 packages/publish-helper/lint-staged.config.js delete mode 100644 packages/utilities/.lintstagedrc.yml rename packages/{publish-helper/eslint.config.mjs => utilities/eslint.config.js} (100%) delete mode 100644 packages/utilities/eslint.config.mjs create mode 100644 packages/utilities/lint-staged.config.js create mode 100644 prettier.config.js diff --git a/.lintstagedrc.yml b/.lintstagedrc.yml deleted file mode 100644 index 5c35b40..0000000 --- a/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -./package.json: - - npx sort-package-json - -'*': - - npm run format:staged diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 849ddff..0000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -dist/ diff --git a/.prettierrc.yml b/.prettierrc.yml deleted file mode 100644 index d86a705..0000000 --- a/.prettierrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -# https://github.com/prettier/prettier/blob/master/docs/options.md -printWidth: 120 -singleQuote: true -semi: false -trailingComma: all diff --git a/lint-staged.config.js b/lint-staged.config.js new file mode 100644 index 0000000..f984406 --- /dev/null +++ b/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/package.json b/package.json index 505abc8..02b2f60 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "build:lint:ci": "lerna run build --scope @shiftcode/eslint-plugin-rules && lerna run build --scope @shiftcode/eslint-config-recommended", "format": "prettier --write .", "format:ci": "prettier --check .", - "format:staged": "prettier --write --ignore-unknown", "lint:ci": "lerna run lint:ci", "prepare": "husky", "publish-libs": "node packages/publish-helper/dist/publish-lib", diff --git a/packages/airtable-mapper/.lintstagedrc.yml b/packages/airtable-mapper/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/airtable-mapper/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/airtable-mapper/eslint.config.mjs b/packages/airtable-mapper/eslint.config.js similarity index 100% rename from packages/airtable-mapper/eslint.config.mjs rename to packages/airtable-mapper/eslint.config.js diff --git a/packages/airtable-mapper/lint-staged.config.js b/packages/airtable-mapper/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/airtable-mapper/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 3782cab..31b624b 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -14,11 +14,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run --passWithNoTests", diff --git a/packages/airtable-mapper/tsconfig.lint.json b/packages/airtable-mapper/tsconfig.lint.json index 55845f2..f5734fb 100644 --- a/packages/airtable-mapper/tsconfig.lint.json +++ b/packages/airtable-mapper/tsconfig.lint.json @@ -5,6 +5,6 @@ "types": ["node"], "paths": {} }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/airtable-syncer/.lintstagedrc.yml b/packages/airtable-syncer/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/airtable-syncer/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/airtable-syncer/eslint.config.mjs b/packages/airtable-syncer/eslint.config.js similarity index 100% rename from packages/airtable-syncer/eslint.config.mjs rename to packages/airtable-syncer/eslint.config.js diff --git a/packages/airtable-syncer/lint-staged.config.js b/packages/airtable-syncer/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/airtable-syncer/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index d164b75..6eab190 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -14,11 +14,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src ./test", - "lint:ci": "eslint ./src ./test", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run --passWithNoTests", diff --git a/packages/airtable-syncer/tsconfig.lint.json b/packages/airtable-syncer/tsconfig.lint.json index 11fb48f..2329a8d 100644 --- a/packages/airtable-syncer/tsconfig.lint.json +++ b/packages/airtable-syncer/tsconfig.lint.json @@ -11,6 +11,6 @@ "@shiftcode/lambda-utilities/s3": ["../lambda-utilities/src/s3/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/branch-utilities/.lintstagedrc.yml b/packages/branch-utilities/.lintstagedrc.yml deleted file mode 100644 index 4ad7472..0000000 --- a/packages/branch-utilities/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'./package.json': - - sort-package-json diff --git a/packages/branch-utilities/eslint.config.mjs b/packages/branch-utilities/eslint.config.js similarity index 100% rename from packages/branch-utilities/eslint.config.mjs rename to packages/branch-utilities/eslint.config.js diff --git a/packages/branch-utilities/jest.config.js b/packages/branch-utilities/jest.config.js index 1ccdde9..dc32d1f 100644 --- a/packages/branch-utilities/jest.config.js +++ b/packages/branch-utilities/jest.config.js @@ -1,5 +1,6 @@ /* eslint-env node,es2023 */ import { pathsToModuleNameMapper } from 'ts-jest' + import tsConfig from './tsconfig.jest.json' with { type: 'json' } export default { diff --git a/packages/branch-utilities/lint-staged.config.js b/packages/branch-utilities/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/branch-utilities/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 73fa6e8..b226b0f 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -14,15 +14,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "format": "npm run format:base -- --write", - "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", - "format:ci": "npm run format:base -- --check", - "format:staged": "prettier --write --config ../../.prettierrc.yml", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", diff --git a/packages/branch-utilities/tsconfig.lint.json b/packages/branch-utilities/tsconfig.lint.json index 922aad8..aa85350 100644 --- a/packages/branch-utilities/tsconfig.lint.json +++ b/packages/branch-utilities/tsconfig.lint.json @@ -4,6 +4,6 @@ "baseUrl": "./", "types": ["jest", "node"] }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/cdk-utilities/.lintstagedrc.yml b/packages/cdk-utilities/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/cdk-utilities/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/cdk-utilities/eslint.config.mjs b/packages/cdk-utilities/eslint.config.js similarity index 100% rename from packages/cdk-utilities/eslint.config.mjs rename to packages/cdk-utilities/eslint.config.js diff --git a/packages/cdk-utilities/lint-staged.config.js b/packages/cdk-utilities/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/cdk-utilities/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 14269bc..e18255e 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -14,11 +14,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run", diff --git a/packages/cdk-utilities/tsconfig.lint.json b/packages/cdk-utilities/tsconfig.lint.json index 95d083d..8a66778 100644 --- a/packages/cdk-utilities/tsconfig.lint.json +++ b/packages/cdk-utilities/tsconfig.lint.json @@ -5,6 +5,6 @@ "types": ["node"], "paths": {} }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/eslint-config-recommended/.lintstagedrc.yml b/packages/eslint-config-recommended/.lintstagedrc.yml deleted file mode 100644 index 4ad7472..0000000 --- a/packages/eslint-config-recommended/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'./package.json': - - sort-package-json diff --git a/packages/eslint-config-recommended/README.md b/packages/eslint-config-recommended/README.md index 3ebd5e4..7289d1a 100644 --- a/packages/eslint-config-recommended/README.md +++ b/packages/eslint-config-recommended/README.md @@ -15,7 +15,7 @@ the module only exports a single function `defineScTsConfig` which can be used t it is basically a wrapper around the new eslint `defineConfig` function but already includes the setup for typescript, some rules with default configurations and will ensure the prettier rules (disabling formatting rules) are included at last. -sample `eslint.config.mjs`: +sample `eslint.config.js`: ```js import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' diff --git a/packages/eslint-config-recommended/eslint.config.mjs b/packages/eslint-config-recommended/eslint.config.js similarity index 100% rename from packages/eslint-config-recommended/eslint.config.mjs rename to packages/eslint-config-recommended/eslint.config.js diff --git a/packages/eslint-config-recommended/lint-staged.config.js b/packages/eslint-config-recommended/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/eslint-config-recommended/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 5f1e174..5060760 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -3,7 +3,7 @@ "version": "7.0.0-pr254.0", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", - "license": "UNLICENSED", + "license": "MIT", "author": "shiftcode GmbH ", "sideEffects": false, "type": "module", @@ -18,16 +18,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "build:lint:ci": "npm run build", - "format": "npm run format:base -- --write", - "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", - "format:ci": "npm run format:base -- --check", - "format:staged": "prettier --write --config ../../.prettierrc.yml", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "echo 'Error: no test specificed'", "test:ci": "npm run test" diff --git a/packages/eslint-config-recommended/tsconfig.lint.json b/packages/eslint-config-recommended/tsconfig.lint.json index f79528e..94ff8a7 100644 --- a/packages/eslint-config-recommended/tsconfig.lint.json +++ b/packages/eslint-config-recommended/tsconfig.lint.json @@ -2,11 +2,11 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": "./", - "types": ["jest", "node"], + "types": ["node"], "paths": { "@shiftcode/eslint-plugin-rules": ["../eslint-plugin-rules/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/eslint-plugin-rules/.lintstagedrc.yml b/packages/eslint-plugin-rules/.lintstagedrc.yml deleted file mode 100644 index 4ad7472..0000000 --- a/packages/eslint-plugin-rules/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'./package.json': - - sort-package-json diff --git a/packages/eslint-plugin-rules/eslint.config.mjs b/packages/eslint-plugin-rules/eslint.config.js similarity index 100% rename from packages/eslint-plugin-rules/eslint.config.mjs rename to packages/eslint-plugin-rules/eslint.config.js diff --git a/packages/eslint-plugin-rules/jest.config.js b/packages/eslint-plugin-rules/jest.config.js index 7687c57..5f93196 100644 --- a/packages/eslint-plugin-rules/jest.config.js +++ b/packages/eslint-plugin-rules/jest.config.js @@ -1,5 +1,6 @@ /* eslint-env node,es2023 */ import { pathsToModuleNameMapper } from 'ts-jest' + import tsConfig from './tsconfig.jest.json' with { type: 'json' } export default { diff --git a/packages/eslint-plugin-rules/lint-staged.config.js b/packages/eslint-plugin-rules/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/eslint-plugin-rules/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 21b49f0..caeabbf 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -3,7 +3,7 @@ "version": "6.0.0-pr254.0", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", - "license": "UNLICENSED", + "license": "MIT", "author": "shiftcode GmbH ", "sideEffects": false, "type": "module", @@ -14,16 +14,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "build:lint:ci": "npm run build", - "format": "npm run format:base -- --write", - "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", - "format:ci": "npm run format:base -- --check", - "format:staged": "prettier --write --config ../../.prettierrc.yml", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "jest", "test:ci": "npm run test" diff --git a/packages/eslint-plugin-rules/tsconfig.lint.json b/packages/eslint-plugin-rules/tsconfig.lint.json index c653bf3..d8b3624 100644 --- a/packages/eslint-plugin-rules/tsconfig.lint.json +++ b/packages/eslint-plugin-rules/tsconfig.lint.json @@ -4,6 +4,6 @@ "baseUrl": "./" }, "types": ["jest", "node"], - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/iac-utilities/.lintstagedrc.yml b/packages/iac-utilities/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/iac-utilities/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/iac-utilities/eslint.config.mjs b/packages/iac-utilities/eslint.config.js similarity index 100% rename from packages/iac-utilities/eslint.config.mjs rename to packages/iac-utilities/eslint.config.js diff --git a/packages/iac-utilities/lint-staged.config.js b/packages/iac-utilities/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/iac-utilities/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 2112615..33f6e95 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -32,11 +32,10 @@ "upload-to-s3": "./dist/upload-to-s3.js" }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run", diff --git a/packages/iac-utilities/tsconfig.lint.json b/packages/iac-utilities/tsconfig.lint.json index 67ceff7..22287de 100644 --- a/packages/iac-utilities/tsconfig.lint.json +++ b/packages/iac-utilities/tsconfig.lint.json @@ -8,6 +8,6 @@ "@shiftcode/lambda-utilities": ["../lambda-utilities/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/inversify-logger/.lintstagedrc.yml b/packages/inversify-logger/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/inversify-logger/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/inversify-logger/eslint.config.mjs b/packages/inversify-logger/eslint.config.js similarity index 100% rename from packages/inversify-logger/eslint.config.mjs rename to packages/inversify-logger/eslint.config.js diff --git a/packages/inversify-logger/lint-staged.config.js b/packages/inversify-logger/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/inversify-logger/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 1de329b..314df22 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -21,11 +21,10 @@ "dist" ], "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src ./test", - "lint:ci": "eslint ./src ./test", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run", diff --git a/packages/inversify-logger/tsconfig.lint.json b/packages/inversify-logger/tsconfig.lint.json index 8c8be89..d7d56b6 100644 --- a/packages/inversify-logger/tsconfig.lint.json +++ b/packages/inversify-logger/tsconfig.lint.json @@ -8,6 +8,6 @@ "@shiftcode/utilities": ["../utilities/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/lambda-utilities/.lintstagedrc.yml b/packages/lambda-utilities/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/lambda-utilities/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/lambda-utilities/eslint.config.mjs b/packages/lambda-utilities/eslint.config.js similarity index 100% rename from packages/lambda-utilities/eslint.config.mjs rename to packages/lambda-utilities/eslint.config.js diff --git a/packages/lambda-utilities/lint-staged.config.js b/packages/lambda-utilities/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/lambda-utilities/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index db78931..a1c2761 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -22,11 +22,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run --passWithNoTests", diff --git a/packages/lambda-utilities/tsconfig.lint.json b/packages/lambda-utilities/tsconfig.lint.json index 9de0ef2..cdf0e53 100644 --- a/packages/lambda-utilities/tsconfig.lint.json +++ b/packages/lambda-utilities/tsconfig.lint.json @@ -9,6 +9,6 @@ "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/logger/.lintstagedrc.yml b/packages/logger/.lintstagedrc.yml deleted file mode 100644 index 4ad7472..0000000 --- a/packages/logger/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'./package.json': - - sort-package-json diff --git a/packages/logger/eslint.config.mjs b/packages/logger/eslint.config.js similarity index 100% rename from packages/logger/eslint.config.mjs rename to packages/logger/eslint.config.js diff --git a/packages/logger/jest.config.js b/packages/logger/jest.config.js index 7687c57..5f93196 100644 --- a/packages/logger/jest.config.js +++ b/packages/logger/jest.config.js @@ -1,5 +1,6 @@ /* eslint-env node,es2023 */ import { pathsToModuleNameMapper } from 'ts-jest' + import tsConfig from './tsconfig.jest.json' with { type: 'json' } export default { diff --git a/packages/logger/lint-staged.config.js b/packages/logger/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/logger/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/logger/package.json b/packages/logger/package.json index d46e943..01edcf4 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -3,7 +3,7 @@ "version": "5.0.0-pr254.0", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", - "license": "UNLICENSED", + "license": "MIT", "author": "shiftcode GmbH ", "sideEffects": false, "type": "module", @@ -22,15 +22,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "format": "npm run format:base -- --write", - "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", - "format:ci": "npm run format:base -- --check", - "format:staged": "prettier --write --config ../../.prettierrc.yml", - "lint": "eslint --fix --cache ./src ./test", - "lint:ci": "eslint ./src ./test", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", diff --git a/packages/logger/tsconfig.lint.json b/packages/logger/tsconfig.lint.json index 69d6ac1..4727b0c 100644 --- a/packages/logger/tsconfig.lint.json +++ b/packages/logger/tsconfig.lint.json @@ -7,6 +7,6 @@ "@shiftcode/utilities": ["../utilities/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/nest-logger/.lintstagedrc.yml b/packages/nest-logger/.lintstagedrc.yml deleted file mode 100644 index 8fe744c..0000000 --- a/packages/nest-logger/.lintstagedrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'*': - - npx prettier --write --ignore-unknown - -./package.json: - - sort-package-json diff --git a/packages/nest-logger/eslint.config.mjs b/packages/nest-logger/eslint.config.js similarity index 100% rename from packages/nest-logger/eslint.config.mjs rename to packages/nest-logger/eslint.config.js diff --git a/packages/nest-logger/lint-staged.config.js b/packages/nest-logger/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/nest-logger/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 3daad61..38d7552 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -18,11 +18,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "lint": "eslint --fix --cache ./src ./test", - "lint:ci": "eslint ./src ./test", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", "test:ci": "vitest --no-cache --run", diff --git a/packages/nest-logger/src/services/logger.service.spec.ts b/packages/nest-logger/src/services/logger.service.spec.ts index be4de62..c2ebf11 100644 --- a/packages/nest-logger/src/services/logger.service.spec.ts +++ b/packages/nest-logger/src/services/logger.service.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ import { Inject, Injectable } from '@nestjs/common' import { Test, TestingModule } from '@nestjs/testing' import { Logger, LogLevel } from '@shiftcode/logger' diff --git a/packages/nest-logger/tsconfig.lint.json b/packages/nest-logger/tsconfig.lint.json index 8c8be89..d7d56b6 100644 --- a/packages/nest-logger/tsconfig.lint.json +++ b/packages/nest-logger/tsconfig.lint.json @@ -8,6 +8,6 @@ "@shiftcode/utilities": ["../utilities/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/publish-helper/.lintstagedrc.yml b/packages/publish-helper/.lintstagedrc.yml deleted file mode 100644 index 4ad7472..0000000 --- a/packages/publish-helper/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'./package.json': - - sort-package-json diff --git a/packages/publish-helper/eslint.config.js b/packages/publish-helper/eslint.config.js new file mode 100644 index 0000000..4044f40 --- /dev/null +++ b/packages/publish-helper/eslint.config.js @@ -0,0 +1,13 @@ +import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' + +export default defineScTsConfig( + { + languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, + }, + { + files: ['**/*.ts'], + rules: { + 'no-console': 'off', + }, + }, +) diff --git a/packages/publish-helper/jest.config.js b/packages/publish-helper/jest.config.js index 1ccdde9..dc32d1f 100644 --- a/packages/publish-helper/jest.config.js +++ b/packages/publish-helper/jest.config.js @@ -1,5 +1,6 @@ /* eslint-env node,es2023 */ import { pathsToModuleNameMapper } from 'ts-jest' + import tsConfig from './tsconfig.jest.json' with { type: 'json' } export default { diff --git a/packages/publish-helper/lint-staged.config.js b/packages/publish-helper/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/publish-helper/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index de11d25..20bb1eb 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -11,15 +11,10 @@ "publish-lib": "./dist/publish-lib.js" }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "format": "npm run format:base -- --write", - "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", - "format:ci": "npm run format:base -- --check", - "format:staged": "prettier --write --config ../../.prettierrc.yml", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ./dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js --passWithNoTests", "test:ci": "npm run test", diff --git a/packages/publish-helper/src/helpers.ts b/packages/publish-helper/src/helpers.ts index 92af897..24bfcfe 100644 --- a/packages/publish-helper/src/helpers.ts +++ b/packages/publish-helper/src/helpers.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import { execSync } from 'node:child_process' /** diff --git a/packages/publish-helper/src/prepare-dist.ts b/packages/publish-helper/src/prepare-dist.ts index ca3da2b..2017c67 100644 --- a/packages/publish-helper/src/prepare-dist.ts +++ b/packages/publish-helper/src/prepare-dist.ts @@ -1,5 +1,5 @@ #!/usr/bin/env node -/* eslint-disable no-console */ + import fs from 'node:fs' import { dirname, normalize as normalizePath } from 'node:path' import process from 'node:process' diff --git a/packages/publish-helper/src/publish-lib.ts b/packages/publish-helper/src/publish-lib.ts index aec4752..fef6326 100644 --- a/packages/publish-helper/src/publish-lib.ts +++ b/packages/publish-helper/src/publish-lib.ts @@ -1,5 +1,5 @@ #!/usr/bin/env node -/* eslint-disable no-console */ + import * as process from 'node:process' import { diff --git a/packages/publish-helper/tsconfig.lint.json b/packages/publish-helper/tsconfig.lint.json index 27da0e0..e68dd88 100644 --- a/packages/publish-helper/tsconfig.lint.json +++ b/packages/publish-helper/tsconfig.lint.json @@ -7,6 +7,6 @@ "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"] } }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/packages/utilities/.lintstagedrc.yml b/packages/utilities/.lintstagedrc.yml deleted file mode 100644 index 4ad7472..0000000 --- a/packages/utilities/.lintstagedrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -'{src,test}/**/*.(t|j)s': - - npm run lint:staged - -'./package.json': - - sort-package-json diff --git a/packages/publish-helper/eslint.config.mjs b/packages/utilities/eslint.config.js similarity index 100% rename from packages/publish-helper/eslint.config.mjs rename to packages/utilities/eslint.config.js diff --git a/packages/utilities/eslint.config.mjs b/packages/utilities/eslint.config.mjs deleted file mode 100644 index 834468a..0000000 --- a/packages/utilities/eslint.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { defineScTsConfig } from '@shiftcode/eslint-config-recommended' - -export default defineScTsConfig({ - languageOptions: { parserOptions: { project: ['./tsconfig.lint.json'] } }, -}) diff --git a/packages/utilities/jest.config.js b/packages/utilities/jest.config.js index 1ccdde9..dc32d1f 100644 --- a/packages/utilities/jest.config.js +++ b/packages/utilities/jest.config.js @@ -1,5 +1,6 @@ /* eslint-env node,es2023 */ import { pathsToModuleNameMapper } from 'ts-jest' + import tsConfig from './tsconfig.jest.json' with { type: 'json' } export default { diff --git a/packages/utilities/lint-staged.config.js b/packages/utilities/lint-staged.config.js new file mode 100644 index 0000000..165242d --- /dev/null +++ b/packages/utilities/lint-staged.config.js @@ -0,0 +1,10 @@ +/** + * @see https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript + * @type { import('lint-staged').Configuration } + */ +const config = { + 'package.json': ['npx sort-package-json'], + '*': ['eslint --fix --cache', 'npx prettier --write --ignore-unknown'], +} + +export default config diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 883e58c..4fecdfd 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -14,15 +14,10 @@ } }, "scripts": { - "prebuild": "rm -rf ./dist", - "build": "tsc", - "format": "npm run format:base -- --write", - "format:base": "prettier --config ../../.prettierrc.yml '{src,e2e,test}/**/*.ts'", - "format:ci": "npm run format:base -- --check", - "format:staged": "prettier --write --config ../../.prettierrc.yml", - "lint": "eslint --fix --cache ./src", - "lint:ci": "eslint ./src", - "lint:staged": "eslint --fix --cache", + "build": "rm -rf ./dist && tsc", + "format": "prettier --write .", + "lint": "eslint --fix --cache .", + "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", "test:ci": "npm run test", diff --git a/packages/utilities/tsconfig.lint.json b/packages/utilities/tsconfig.lint.json index 922aad8..aa85350 100644 --- a/packages/utilities/tsconfig.lint.json +++ b/packages/utilities/tsconfig.lint.json @@ -4,6 +4,6 @@ "baseUrl": "./", "types": ["jest", "node"] }, - "include": ["src/**/*.ts", "test/**/*.ts"], + "include": ["**/*.ts"], "exclude": [] } diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..3a617cd --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,12 @@ +/** + * @see https://prettier.io/docs/configuration + * @type { import('prettier').Config } + */ +const config = { + printWidth: 120, + singleQuote: true, + semi: false, + trailingComma: 'all', +} + +export default config From ad23b9a73de79b35c3b8abaa01d34c3a909c6d26 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Thu, 5 Feb 2026 16:44:05 +0000 Subject: [PATCH 38/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@0.0.0-pr254.4 - @shiftcode/airtable-syncer@0.0.0-pr254.4 - @shiftcode/branch-utilities@6.0.0-pr254.1 - @shiftcode/cdk-utilities@0.0.0-pr254.4 - @shiftcode/eslint-config-recommended@7.0.0-pr254.1 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.1 - @shiftcode/iac-utilities@0.0.0-pr254.4 - @shiftcode/inversify-logger@0.0.0-pr254.4 - @shiftcode/lambda-utilities@0.0.0-pr254.4 - @shiftcode/logger@5.0.0-pr254.1 - @shiftcode/nest-logger@0.0.0-pr254.4 - @shiftcode/publish-helper@6.0.0-pr254.1 - @shiftcode/utilities@5.0.0-pr254.1 --- package-lock.json | 60 +++++++++---------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 ++-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +-- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 57 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80b2bca..ddd4e94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21611,7 +21611,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -21622,17 +21622,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.3", - "@shiftcode/inversify-logger": "^0.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.4", + "@shiftcode/inversify-logger": "^0.0.0-pr254.4", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.1", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -21653,7 +21653,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.0", + "version": "6.0.0-pr254.1", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -21664,7 +21664,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -21680,11 +21680,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.0", - "license": "UNLICENSED", + "version": "7.0.0-pr254.1", + "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.0", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.1", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -21709,8 +21709,8 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.0", - "license": "UNLICENSED", + "version": "6.0.0-pr254.1", + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" }, @@ -21727,7 +21727,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -21756,8 +21756,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.0", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", + "@shiftcode/branch-utilities": "^6.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", "@types/yargs": "^17.0.5" }, "engines": { @@ -21796,10 +21796,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/logger": "^5.0.0-pr254.1", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -21814,13 +21814,13 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.0", - "@shiftcode/utilities": "^5.0.0-pr254.0", + "@shiftcode/inversify-logger": "^0.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/utilities": "^5.0.0-pr254.1", "@types/aws-lambda": "^8.10.89" }, "engines": { @@ -21855,10 +21855,10 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.0", - "license": "UNLICENSED", + "version": "5.0.0-pr254.1", + "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.0" + "@shiftcode/utilities": "^5.0.0-pr254.1" }, "engines": { "node": ">=22.10.2" @@ -21869,13 +21869,13 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/logger": "^5.0.0-pr254.1", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -21892,7 +21892,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.0", + "version": "6.0.0-pr254.1", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -21903,7 +21903,7 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.0", + "@shiftcode/branch-utilities": "^6.0.0-pr254.1", "@types/yargs": "^17.0.32" }, "engines": { @@ -21928,7 +21928,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.0", + "version": "5.0.0-pr254.1", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 31b624b..57f7ef4 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 6eab190..2d1c9bc 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.3", - "@shiftcode/inversify-logger": "^0.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.4", + "@shiftcode/inversify-logger": "^0.0.0-pr254.4", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.1", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index b226b0f..31e09fc 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.0", + "version": "6.0.0-pr254.1", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index e18255e..460f8b6 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 5060760..8d6a435 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.0", + "version": "7.0.0-pr254.1", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.0", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.1", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index caeabbf..bc75040 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.0", + "version": "6.0.0-pr254.1", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 33f6e95..3773ae8 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.0", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.3", + "@shiftcode/branch-utilities": "^6.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 314df22..a4bd949 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/logger": "^5.0.0-pr254.1", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index a1c2761..0cec983 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -33,9 +33,9 @@ }, "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.0", - "@shiftcode/utilities": "^5.0.0-pr254.0", + "@shiftcode/inversify-logger": "^0.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/utilities": "^5.0.0-pr254.1", "@types/aws-lambda": "^8.10.89" }, "peerDependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 01edcf4..265901b 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.0", + "version": "5.0.0-pr254.1", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "npm run test -- --watch" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.0" + "@shiftcode/utilities": "^5.0.0-pr254.1" }, "peerDependencies": { "@shiftcode/utilities": "^4.0.0" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 38d7552..0952a4c 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.3", + "version": "0.0.0-pr254.4", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.0", + "@shiftcode/logger": "^5.0.0-pr254.1", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index 20bb1eb..5e02f05 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.0", + "version": "6.0.0-pr254.1", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.0", + "@shiftcode/branch-utilities": "^6.0.0-pr254.1", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 4fecdfd..fc3a9aa 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.0", + "version": "5.0.0-pr254.1", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 99bafb12f8ab929b06f7136bf9088e08fc070c38 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 15:24:46 +0100 Subject: [PATCH 39/55] build: use vitest remove jest --- package-lock.json | 16525 +++++++--------- package.json | 4 - packages/airtable-mapper/tsconfig.json | 2 - packages/airtable-mapper/tsconfig.lint.json | 11 +- packages/airtable-mapper/tsconfig.spec.json | 5 +- packages/airtable-mapper/vitest.config.js | 3 + packages/airtable-syncer/tsconfig.json | 2 - packages/airtable-syncer/tsconfig.lint.json | 13 +- packages/airtable-syncer/tsconfig.spec.json | 11 +- packages/airtable-syncer/vitest.config.js | 13 +- packages/branch-utilities/jest.config.js | 16 - packages/branch-utilities/package.json | 6 +- .../src/lib/base.utils.spec.ts | 2 + packages/branch-utilities/tsconfig.json | 4 +- packages/branch-utilities/tsconfig.lint.json | 10 +- ...{tsconfig.jest.json => tsconfig.spec.json} | 4 +- packages/branch-utilities/vitest.config.js | 3 + .../create-basic-auth-cf-fn.function.spec.ts | 8 +- ...eate-language-redirect-cf.function.spec.ts | 20 +- packages/cdk-utilities/tsconfig.json | 2 - packages/cdk-utilities/tsconfig.lint.json | 11 +- packages/cdk-utilities/tsconfig.spec.json | 5 +- packages/cdk-utilities/vitest.config.js | 3 + .../eslint-config-recommended/tsconfig.json | 4 +- .../tsconfig.lint.json | 13 +- packages/eslint-plugin-rules/jest.config.js | 16 - packages/eslint-plugin-rules/package.json | 5 +- packages/eslint-plugin-rules/tsconfig.json | 2 - .../eslint-plugin-rules/tsconfig.lint.json | 10 +- .../tsconfig.spec.json} | 4 +- packages/eslint-plugin-rules/vitest.config.js | 8 + packages/iac-utilities/tsconfig.json | 2 - packages/iac-utilities/tsconfig.lint.json | 14 +- packages/iac-utilities/tsconfig.spec.json | 9 +- packages/iac-utilities/vitest.config.js | 3 + .../src/utils/log-transport-helper.spec.ts | 6 +- packages/inversify-logger/tsconfig.json | 2 - packages/inversify-logger/tsconfig.lint.json | 14 +- packages/inversify-logger/tsconfig.spec.json | 6 +- packages/inversify-logger/vitest.config.js | 17 +- packages/lambda-utilities/package.json | 2 +- packages/lambda-utilities/tsconfig.json | 2 - packages/lambda-utilities/tsconfig.lint.json | 15 +- packages/lambda-utilities/tsconfig.spec.json | 7 +- packages/lambda-utilities/vitest.config.js | 3 + packages/logger/jest.config.js | 16 - packages/logger/package.json | 10 +- .../console-json-log.transport.spec.ts | 2 +- .../logger/src/{public-api.ts => index.ts} | 0 .../logger/src/model/log-transport.spec.ts | 2 + packages/logger/src/model/logger.spec.ts | 6 +- .../create-console-logger.function.spec.ts | 6 +- .../node-console-log-transport.spec.ts | 2 +- .../src/services/base-logger.service.spec.ts | 13 +- .../logger/src/testing/spy-log.transport.ts | 4 +- ...t-json-stringify-replacer.function.spec.ts | 22 +- .../src/utils/json-log-object-data.spec.ts | 14 +- .../push-to-ring-buffer.function.spec.ts | 10 +- packages/logger/test/console-mock.function.ts | 22 +- packages/logger/tsconfig.jest.json | 10 - packages/logger/tsconfig.json | 6 +- packages/logger/tsconfig.lint.json | 13 +- .../tsconfig.spec.json} | 4 +- packages/logger/vitest.config.js | 3 + .../src/services/logger.service.spec.ts | 12 +- packages/nest-logger/tsconfig.json | 2 - packages/nest-logger/tsconfig.lint.json | 14 +- packages/nest-logger/tsconfig.spec.json | 6 +- packages/nest-logger/vitest.config.js | 17 +- packages/publish-helper/jest.config.js | 16 - packages/publish-helper/package.json | 6 +- .../publish-helper/src/prepare-dist.spec.ts | 2 + packages/publish-helper/tsconfig.jest.json | 10 - packages/publish-helper/tsconfig.json | 3 +- packages/publish-helper/tsconfig.lint.json | 13 +- packages/publish-helper/tsconfig.spec.json | 7 + packages/publish-helper/vitest.config.js | 3 + packages/utilities/jest.config.js | 16 - packages/utilities/package.json | 6 +- .../color-utils/hex-to-rgb.function.spec.ts | 2 + .../src/lib/compare-with/compare-with.spec.ts | 2 + .../lib/cookie/parse-cookies.function.spec.ts | 6 +- packages/utilities/src/lib/enum/enum.spec.ts | 24 +- .../src/lib/group-by/group-by.spec.ts | 8 +- .../json-stringify-replacer.function.spec.ts | 10 +- .../map-values-deep/map-values-deep.spec.ts | 2 + .../src/lib/math/clamp.function.spec.ts | 2 + .../get-value-assert-defined.function.spec.ts | 2 + .../lib/object/omit-props.function.spec.ts | 2 + ...pick-props-assert-defined.function.spec.ts | 2 + .../lib/object/pick-props.function.spec.ts | 2 + .../promise/make-deferred.function.spec.ts | 2 + .../lib/string/capitalize.function.spec.ts | 2 + .../utilities/src/lib/string/words.spec.ts | 2 + .../src/lib/ts-guards/is-array.spec.ts | 6 +- .../src/lib/ts-guards/is-boolean.spec.ts | 6 +- .../src/lib/ts-guards/is-class.spec.ts | 6 +- .../src/lib/ts-guards/is-date.spec.ts | 6 +- .../src/lib/ts-guards/is-defined.spec.ts | 6 +- .../src/lib/ts-guards/is-number.spec.ts | 8 +- .../src/lib/ts-guards/is-string.spec.ts | 6 +- packages/utilities/tsconfig.json | 6 +- packages/utilities/tsconfig.lint.json | 10 +- packages/utilities/tsconfig.spec.json | 7 + packages/utilities/vitest.config.js | 3 + tsconfig.jest.json | 12 - tsconfig.json | 2 + tsconfig.lint.json | 22 + tsconfig.spec.json | 23 + vitest.config.js | 24 + 110 files changed, 7077 insertions(+), 10291 deletions(-) create mode 100644 packages/airtable-mapper/vitest.config.js delete mode 100644 packages/branch-utilities/jest.config.js rename packages/branch-utilities/{tsconfig.jest.json => tsconfig.spec.json} (57%) create mode 100644 packages/branch-utilities/vitest.config.js create mode 100644 packages/cdk-utilities/vitest.config.js delete mode 100644 packages/eslint-plugin-rules/jest.config.js rename packages/{utilities/tsconfig.jest.json => eslint-plugin-rules/tsconfig.spec.json} (57%) create mode 100644 packages/eslint-plugin-rules/vitest.config.js create mode 100644 packages/iac-utilities/vitest.config.js create mode 100644 packages/lambda-utilities/vitest.config.js delete mode 100644 packages/logger/jest.config.js rename packages/logger/src/{public-api.ts => index.ts} (100%) delete mode 100644 packages/logger/tsconfig.jest.json rename packages/{eslint-plugin-rules/tsconfig.jest.json => logger/tsconfig.spec.json} (57%) create mode 100644 packages/logger/vitest.config.js delete mode 100644 packages/publish-helper/jest.config.js delete mode 100644 packages/publish-helper/tsconfig.jest.json create mode 100644 packages/publish-helper/tsconfig.spec.json create mode 100644 packages/publish-helper/vitest.config.js delete mode 100644 packages/utilities/jest.config.js create mode 100644 packages/utilities/tsconfig.spec.json create mode 100644 packages/utilities/vitest.config.js delete mode 100644 tsconfig.jest.json create mode 100644 tsconfig.lint.json create mode 100644 tsconfig.spec.json create mode 100644 vitest.config.js diff --git a/package-lock.json b/package-lock.json index ddd4e94..d56535b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,17 +13,13 @@ "@commitlint/cli": "^20.4.1", "@commitlint/config-conventional": "^20.4.1", "@commitlint/prompt-cli": "^20.4.1", - "@jest/globals": "^29.5.0", - "@types/jest": "^29.5.12", "@types/node": "^22.15.0", "eslint": "^9.36.0", "husky": "^9.0.11", - "jest": "^29.7.0", "lerna": "^9.0.3", "lint-staged": "^15.2.7", "prettier": "^3.3.2", "sort-package-json": "^2.10.0", - "ts-jest": "^29.2.0", "tslib": "^2.3.0", "typescript": "^5.5.3", "vitest": "^4.0.18" @@ -32,19 +28,6 @@ "node": "^22.15.0" } }, - "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, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@angular-devkit/architect": { "version": "0.2003.8", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.8.tgz", @@ -1861,851 +1844,718 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", - "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "engines": { "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@borewit/text-codec": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "node_modules/@commitlint/cli": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.4.1.tgz", + "integrity": "sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "@commitlint/format": "^20.4.0", + "@commitlint/lint": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/read": "^20.4.0", + "@commitlint/types": "^20.4.0", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=v18" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "node_modules/@commitlint/config-conventional": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.4.1.tgz", + "integrity": "sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@commitlint/types": "^20.4.0", + "conventional-changelog-conventionalcommits": "^9.1.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/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": ">=v18" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "node_modules/@commitlint/config-validator": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.4.0.tgz", + "integrity": "sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@commitlint/types": "^20.4.0", + "ajv": "^8.11.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=v18" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "node_modules/@commitlint/ensure": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.4.1.tgz", + "integrity": "sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "@commitlint/types": "^20.4.0", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "engines": { - "node": ">=6.9.0" + "node": ">=v18" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "node_modules/@commitlint/execute-rule": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", + "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=v18" } }, - "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "node_modules/@commitlint/format": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.4.0.tgz", + "integrity": "sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@commitlint/types": "^20.4.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=v18" } }, - "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "node_modules/@commitlint/is-ignored": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.4.1.tgz", + "integrity": "sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@commitlint/types": "^20.4.0", + "semver": "^7.6.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/lint": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.4.1.tgz", + "integrity": "sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@commitlint/is-ignored": "^20.4.1", + "@commitlint/parse": "^20.4.1", + "@commitlint/rules": "^20.4.1", + "@commitlint/types": "^20.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/load": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.4.0.tgz", + "integrity": "sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@commitlint/config-validator": "^20.4.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.4.0", + "@commitlint/types": "^20.4.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "is-plain-obj": "^4.1.0", + "lodash.mergewith": "^4.6.2", + "picocolors": "^1.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/message": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.0.tgz", + "integrity": "sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "license": "MIT", + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/parse": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.4.1.tgz", + "integrity": "sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@commitlint/types": "^20.4.0", + "conventional-changelog-angular": "^8.1.0", + "conventional-commits-parser": "^6.2.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "node_modules/@commitlint/parse/node_modules/conventional-changelog-angular": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", + "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", "dev": true, + "license": "ISC", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "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==", + "node_modules/@commitlint/prompt": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/prompt/-/prompt-20.4.1.tgz", + "integrity": "sha512-dLXTdNnXiWyYPHM9a5gMpZrDTbjrwoJJGICD1aS4eCviw9yc8vNKoTytxR+oNb3xXS9i/0b4Ajhr1ALy996dMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@commitlint/ensure": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/types": "^20.4.0", + "inquirer": "^9.2.15", + "picocolors": "^1.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/prompt-cli": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/prompt-cli/-/prompt-cli-20.4.1.tgz", + "integrity": "sha512-5kivMX7Sq5PkxwTqhk/KmhKG52BHIoWvt2a6qY3g+9ZCls/lNjLw1HxMV+raeGk79K+eD/g/Tj+XWWkkzZkivA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@commitlint/prompt": "^20.4.1", + "inquirer": "^9.2.15", + "tinyexec": "^1.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "commit": "cli.js" + }, + "engines": { + "node": ">=v18" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "node_modules/@commitlint/read": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.4.0.tgz", + "integrity": "sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@commitlint/top-level": "^20.4.0", + "@commitlint/types": "^20.4.0", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/resolve-extends": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.4.0.tgz", + "integrity": "sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@commitlint/config-validator": "^20.4.0", + "@commitlint/types": "^20.4.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/rules": { + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.4.1.tgz", + "integrity": "sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@commitlint/ensure": "^20.4.1", + "@commitlint/message": "^20.4.0", + "@commitlint/to-lines": "^20.0.0", + "@commitlint/types": "^20.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/to-lines": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", + "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "license": "MIT", + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/top-level": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.0.tgz", + "integrity": "sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "escalade": "^3.2.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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==", + "node_modules/@commitlint/types": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.4.0.tgz", + "integrity": "sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "conventional-commits-parser": "^6.2.1", + "picocolors": "^1.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v18" } }, - "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, + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "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, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "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, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "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/@borewit/text-codec": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@commitlint/cli": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.4.1.tgz", - "integrity": "sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/format": "^20.4.0", - "@commitlint/lint": "^20.4.1", - "@commitlint/load": "^20.4.0", - "@commitlint/read": "^20.4.0", - "@commitlint/types": "^20.4.0", - "tinyexec": "^1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/config-conventional": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.4.1.tgz", - "integrity": "sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.4.0", - "conventional-changelog-conventionalcommits": "^9.1.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/config-validator": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.4.0.tgz", - "integrity": "sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==", + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.4.0", - "ajv": "^8.11.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/ensure": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.4.1.tgz", - "integrity": "sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.4.0", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/execute-rule": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", - "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/format": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.4.0.tgz", - "integrity": "sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.4.0", - "picocolors": "^1.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/is-ignored": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.4.1.tgz", - "integrity": "sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.4.0", - "semver": "^7.6.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/lint": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.4.1.tgz", - "integrity": "sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/is-ignored": "^20.4.1", - "@commitlint/parse": "^20.4.1", - "@commitlint/rules": "^20.4.1", - "@commitlint/types": "^20.4.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/load": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.4.0.tgz", - "integrity": "sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/config-validator": "^20.4.0", - "@commitlint/execute-rule": "^20.0.0", - "@commitlint/resolve-extends": "^20.4.0", - "@commitlint/types": "^20.4.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^6.1.0", - "is-plain-obj": "^4.1.0", - "lodash.mergewith": "^4.6.2", - "picocolors": "^1.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/message": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.0.tgz", - "integrity": "sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/parse": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.4.1.tgz", - "integrity": "sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==", + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.4.0", - "conventional-changelog-angular": "^8.1.0", - "conventional-commits-parser": "^6.2.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/parse/node_modules/conventional-changelog-angular": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", - "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { "node": ">=18" } }, - "node_modules/@commitlint/prompt": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/prompt/-/prompt-20.4.1.tgz", - "integrity": "sha512-dLXTdNnXiWyYPHM9a5gMpZrDTbjrwoJJGICD1aS4eCviw9yc8vNKoTytxR+oNb3xXS9i/0b4Ajhr1ALy996dMQ==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/ensure": "^20.4.1", - "@commitlint/load": "^20.4.0", - "@commitlint/types": "^20.4.0", - "inquirer": "^9.2.15", - "picocolors": "^1.1.1" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/prompt-cli": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/prompt-cli/-/prompt-cli-20.4.1.tgz", - "integrity": "sha512-5kivMX7Sq5PkxwTqhk/KmhKG52BHIoWvt2a6qY3g+9ZCls/lNjLw1HxMV+raeGk79K+eD/g/Tj+XWWkkzZkivA==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/prompt": "^20.4.1", - "inquirer": "^9.2.15", - "tinyexec": "^1.0.0" - }, - "bin": { - "commit": "cli.js" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=v18" + "node": ">=18" } }, - "node_modules/@commitlint/read": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.4.0.tgz", - "integrity": "sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/top-level": "^20.4.0", - "@commitlint/types": "^20.4.0", - "git-raw-commits": "^4.0.0", - "minimist": "^1.2.8", - "tinyexec": "^1.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/resolve-extends": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.4.0.tgz", - "integrity": "sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/config-validator": "^20.4.0", - "@commitlint/types": "^20.4.0", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/rules": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.4.1.tgz", - "integrity": "sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/ensure": "^20.4.1", - "@commitlint/message": "^20.4.0", - "@commitlint/to-lines": "^20.0.0", - "@commitlint/types": "^20.4.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/to-lines": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", - "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/top-level": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.0.tgz", - "integrity": "sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.4.0.tgz", - "integrity": "sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-commits-parser": "^6.2.1", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", - "license": "MIT", - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { + "node_modules/@esbuild/openbsd-x64": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ - "arm" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" + "openbsd" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/android-arm64": { + "node_modules/@esbuild/openharmony-arm64": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", "cpu": [ "arm64" ], @@ -2713,16 +2563,16 @@ "license": "MIT", "optional": true, "os": [ - "android" + "openharmony" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/android-x64": { + "node_modules/@esbuild/sunos-x64": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -2730,16 +2580,16 @@ "license": "MIT", "optional": true, "os": [ - "android" + "sunos" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/win32-arm64": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -2747,588 +2597,451 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/darwin-x64": { + "node_modules/@esbuild/win32-ia32": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ - "x64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/freebsd-arm64": { + "node_modules/@esbuild/win32-x64": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "freebsd" + "win32" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=18" + "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_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "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==", "engines": { - "node": ">=18" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "dev": true, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "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" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "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": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } + "node_modules/@eslint/eslintrc/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==", + "license": "MIT" }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "dev": true, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "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==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=18.18.0" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, "engines": { - "node": ">=18" + "node": ">=18.18.0" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "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==", "engines": { - "node": ">=18" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], - "dev": true, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "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/@inquirer/core/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, + "node_modules/@inquirer/core/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==", + "license": "ISC", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", - "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", - "license": "Apache-2.0", + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "license": "MIT", "dependencies": { - "@eslint/core": "^0.16.0" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", - "license": "Apache-2.0", + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.15" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "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" + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/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/@inquirer/external-editor/node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "license": "MIT" }, - "node_modules/@eslint/js": { - "version": "9.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", - "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.16.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.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==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.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==", - "engines": { - "node": ">=12.22" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "license": "Apache-2.0", "engines": { - "node": ">=18.18" + "node": ">=0.10.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "license": "Apache-2.0", - "engines": { - "node": ">=6.9.0" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "license": "MIT", "engines": { "node": ">=18" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -3342,10 +3055,10 @@ } } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", @@ -3363,20 +3076,15 @@ } } }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -3390,36 +3098,44 @@ } } }, - "node_modules/@inquirer/core/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/core/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==", - "license": "ISC", + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, "engines": { - "node": ">=14" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -3433,13 +3149,14 @@ } } }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, @@ -3455,14 +3172,17 @@ } } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "license": "MIT", "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -3476,206 +3196,13 @@ } } }, - "node_modules/@inquirer/external-editor/node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "license": "MIT" - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "license": "MIT", - "engines": { - "node": ">=18" + "node": ">=18" }, "peerDependencies": { "@types/node": ">=18" @@ -3877,137 +3404,167 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "license": "ISC" }, - "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, - "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" - }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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, - "dependencies": { - "sprintf-js": "~1.0.2" + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "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==", + "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, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "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, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", + "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, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/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==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "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==", + "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, - "engines": { - "node": ">=8" + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "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, + "node_modules/@lerna/create": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-9.0.3.tgz", + "integrity": "sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g==", + "license": "MIT", "dependencies": { - "@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" + "@npmcli/arborist": "9.1.6", + "@npmcli/package-json": "7.0.2", + "@npmcli/run-script": "10.0.2", + "@nx/devkit": ">=21.5.2 < 23.0.0", + "@octokit/plugin-enterprise-rest": "6.0.1", + "@octokit/rest": "20.1.2", + "aproba": "2.0.0", + "byte-size": "8.1.1", + "chalk": "4.1.0", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", + "columnify": "1.6.0", + "console-control-strings": "^1.1.0", + "conventional-changelog-core": "5.0.1", + "conventional-recommended-bump": "7.0.1", + "cosmiconfig": "9.0.0", + "dedent": "1.5.3", + "execa": "5.0.0", + "fs-extra": "^11.2.0", + "get-stream": "6.0.0", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", + "has-unicode": "2.0.1", + "ini": "^1.3.8", + "init-package-json": "8.2.2", + "inquirer": "12.9.6", + "is-ci": "3.0.1", + "is-stream": "2.0.0", + "js-yaml": "4.1.1", + "libnpmpublish": "11.1.2", + "load-json-file": "6.2.0", + "make-dir": "4.0.0", + "make-fetch-happen": "15.0.2", + "minimatch": "3.0.5", + "multimatch": "5.0.0", + "npm-package-arg": "13.0.1", + "npm-packlist": "10.0.3", + "npm-registry-fetch": "19.1.0", + "nx": ">=21.5.3 < 23.0.0", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-queue": "6.6.2", + "p-reduce": "^2.1.0", + "pacote": "21.0.1", + "pify": "5.0.0", + "read-cmd-shim": "4.0.0", + "resolve-from": "5.0.0", + "rimraf": "^4.4.1", + "semver": "7.7.2", + "set-blocking": "^2.0.0", + "signal-exit": "3.0.7", + "slash": "^3.0.0", + "ssri": "12.0.0", + "string-width": "^4.2.3", + "tar": "6.2.1", + "temp-dir": "1.0.0", + "through": "2.3.8", + "tinyglobby": "0.2.12", + "upath": "2.0.1", + "uuid": "^11.1.0", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "6.0.2", + "wide-align": "1.1.5", + "write-file-atomic": "5.0.1", + "write-pkg": "4.0.0", + "yargs": "17.7.2", + "yargs-parser": "21.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { + "node_modules/@lerna/create/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": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4018,11 +3575,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/console/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, + "node_modules/@lerna/create/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4034,1060 +3591,855 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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, - "dependencies": { - "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, + "node_modules/@lerna/create/node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "license": "MIT", "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "babel-plugin-macros": "^3.1.0" }, "peerDependenciesMeta": { - "node-notifier": { + "babel-plugin-macros": { "optional": true } } }, - "node_modules/@jest/core/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, + "node_modules/@lerna/create/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/@lerna/create/node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "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": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@jest/core/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" - }, + "node_modules/@lerna/create/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "node_modules/@lerna/create/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "node_modules/@lerna/create/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/@lerna/create/node_modules/inquirer": { + "version": "12.9.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.6.tgz", + "integrity": "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==", + "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "@inquirer/ansi": "^1.0.0", + "@inquirer/core": "^10.2.2", + "@inquirer/prompts": "^7.8.6", + "@inquirer/type": "^3.0.8", + "mute-stream": "^2.0.0", + "run-async": "^4.0.5", + "rxjs": "^7.8.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "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, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, + "node_modules/@lerna/create/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "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, + "node_modules/@lerna/create/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "license": "ISC", "dependencies": { - "jest-get-type": "^29.6.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" } }, - "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, - "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" - }, + "node_modules/@lerna/create/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "node_modules/@lerna/create/node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "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, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "dependencies": { - "@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" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/reporters/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, + "node_modules/@lerna/create/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "p-finally": "^1.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/reporters/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" - }, + "node_modules/@lerna/create/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "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, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "node_modules/@lerna/create/node_modules/run-async": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", + "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.0" } }, - "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, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "node_modules/@lerna/create/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "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, + "node_modules/@lerna/create/node_modules/tinyglobby": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "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" + "fdir": "^6.4.3", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "node": ">=12.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "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, + "node_modules/@lerna/create/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "license": "ISC", "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" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/transform/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/@lerna/create/node_modules/write-file-atomic/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==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/transform/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/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "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, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "license": "MIT", "dependencies": { - "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" } }, - "node_modules/@jest/types/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/@nestjs/common": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", + "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "file-type": "21.3.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } } }, - "node_modules/@jest/types/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/@nestjs/core": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", + "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", "dev": true, + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 20" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "node_modules/@nestjs/testing": { + "version": "11.1.13", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.13.tgz", + "integrity": "sha512-bOWP8nLEZAOEEX8jAZGBCc1yU0+nv4g2ipc+QEzkVUe3eEEUKHKaeGafJ3GtDuGavlZKfkXEqflZuICdavu5dQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "tslib": "2.8.1" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", + "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==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "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, + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "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, + "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==", "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "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, + "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==", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@lerna/create": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-9.0.3.tgz", - "integrity": "sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g==", - "license": "MIT", + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "license": "ISC", "dependencies": { - "@npmcli/arborist": "9.1.6", - "@npmcli/package-json": "7.0.2", - "@npmcli/run-script": "10.0.2", - "@nx/devkit": ">=21.5.2 < 23.0.0", - "@octokit/plugin-enterprise-rest": "6.0.1", - "@octokit/rest": "20.1.2", - "aproba": "2.0.0", - "byte-size": "8.1.1", - "chalk": "4.1.0", - "cmd-shim": "6.0.3", - "color-support": "1.1.3", - "columnify": "1.6.0", - "console-control-strings": "^1.1.0", - "conventional-changelog-core": "5.0.1", - "conventional-recommended-bump": "7.0.1", - "cosmiconfig": "9.0.0", - "dedent": "1.5.3", - "execa": "5.0.0", - "fs-extra": "^11.2.0", - "get-stream": "6.0.0", - "git-url-parse": "14.0.0", - "glob-parent": "6.0.2", - "has-unicode": "2.0.1", - "ini": "^1.3.8", - "init-package-json": "8.2.2", - "inquirer": "12.9.6", - "is-ci": "3.0.1", - "is-stream": "2.0.0", - "js-yaml": "4.1.1", - "libnpmpublish": "11.1.2", - "load-json-file": "6.2.0", - "make-dir": "4.0.0", - "make-fetch-happen": "15.0.2", - "minimatch": "3.0.5", - "multimatch": "5.0.0", - "npm-package-arg": "13.0.1", - "npm-packlist": "10.0.3", - "npm-registry-fetch": "19.1.0", - "nx": ">=21.5.3 < 23.0.0", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-queue": "6.6.2", - "p-reduce": "^2.1.0", - "pacote": "21.0.1", - "pify": "5.0.0", - "read-cmd-shim": "4.0.0", - "resolve-from": "5.0.0", - "rimraf": "^4.4.1", - "semver": "7.7.2", - "set-blocking": "^2.0.0", - "signal-exit": "3.0.7", - "slash": "^3.0.0", - "ssri": "12.0.0", - "string-width": "^4.2.3", - "tar": "6.2.1", - "temp-dir": "1.0.0", - "through": "2.3.8", - "tinyglobby": "0.2.12", - "upath": "2.0.1", - "uuid": "^11.1.0", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "6.0.2", - "wide-align": "1.1.5", - "write-file-atomic": "5.0.1", - "write-pkg": "4.0.0", - "yargs": "17.7.2", - "yargs-parser": "21.1.1" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/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==", - "license": "MIT", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/arborist": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.6.tgz", + "integrity": "sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ==", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/map-workspaces": "^5.0.0", + "@npmcli/metavuln-calculator": "^9.0.2", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/query": "^4.0.0", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^10.0.0", + "bin-links": "^5.0.0", + "cacache": "^20.0.1", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^9.0.0", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^11.2.1", + "minimatch": "^10.0.3", + "nopt": "^8.0.0", + "npm-install-checks": "^7.1.0", + "npm-package-arg": "^13.0.0", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "pacote": "^21.0.2", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "proggy": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "semver": "^7.3.7", + "ssri": "^12.0.0", + "treeverse": "^3.0.0", + "walk-up-path": "^4.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "arborist": "bin/index.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "license": "MIT", + "node_modules/@npmcli/arborist/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/arborist/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/arborist/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@lerna/create/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/@lerna/create/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/@lerna/create/node_modules/execa": { + "node_modules/@npmcli/arborist/node_modules/npm-bundled": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", + "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", + "license": "ISC", "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" + "npm-normalize-package-bin": "^5.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@lerna/create/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "license": "MIT", + "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", + "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/@lerna/create/node_modules/inquirer": { - "version": "12.9.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.6.tgz", - "integrity": "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==", - "license": "MIT", + "node_modules/@npmcli/arborist/node_modules/pacote": { + "version": "21.0.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", + "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "license": "ISC", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/prompts": "^7.8.6", - "@inquirer/type": "^3.0.8", - "mute-stream": "^2.0.0", - "run-async": "^4.0.5", - "rxjs": "^7.8.2" - }, - "engines": { - "node": ">=18" + "@npmcli/git": "^7.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "@npmcli/run-script": "^10.0.0", + "cacache": "^20.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^13.0.0", + "npm-packlist": "^10.0.1", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^4.0.0", + "ssri": "^13.0.0", + "tar": "^7.4.3" }, - "peerDependencies": { - "@types/node": ">=18" + "bin": { + "pacote": "bin/index.js" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@lerna/create/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "license": "MIT", "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/@npmcli/installed-package-contents": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", + "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" }, "engines": { - "node": "*" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "license": "MIT", + "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/ssri": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", + "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "license": "ISC", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "license": "MIT", + "node_modules/@npmcli/arborist/node_modules/tar": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", + "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "license": "BlueOak-1.0.0", "dependencies": { - "p-finally": "^1.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@lerna/create/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=18" } }, - "node_modules/@lerna/create/node_modules/run-async": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", - "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", - "license": "MIT", + "node_modules/@npmcli/arborist/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=0.12.0" + "node": ">=18" } }, - "node_modules/@lerna/create/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/create/node_modules/tinyglobby": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", - "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", - "license": "MIT", "dependencies": { - "fdir": "^6.4.3", - "picomatch": "^4.0.2" + "semver": "^7.3.5" }, "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@lerna/create/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/@npmcli/git": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", + "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^6.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lerna/create/node_modules/write-file-atomic/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==", + "node_modules/@npmcli/git/node_modules/ini": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", - "dev": true, - "license": "MIT", + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", - "license": "MIT", - "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/@nestjs/common": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.13.tgz", - "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "file-type": "21.3.0", - "iterare": "1.2.1", - "load-esm": "1.0.3", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nestjs/core": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.13.tgz", - "integrity": "sha512-Tq9EIKiC30EBL8hLK93tNqaToy0hzbuVGYt29V8NhkVJUsDzlmiVf6c3hSPtzx2krIUVbTgQ2KFeaxr72rEyzQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", + "node_modules/@npmcli/git/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "license": "ISC", "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "isexe": "^3.1.1" }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" + "bin": { + "node-which": "bin/which.js" }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@nestjs/testing": { - "version": "11.1.13", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.13.tgz", - "integrity": "sha512-bOWP8nLEZAOEEX8jAZGBCc1yU0+nv4g2ipc+QEzkVUe3eEEUKHKaeGafJ3GtDuGavlZKfkXEqflZuICdavu5dQ==", - "dev": true, - "license": "MIT", + "node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", + "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", + "license": "ISC", "dependencies": { - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" + "bin": { + "installed-package-contents": "bin/index.js" }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "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==", + "node_modules/@npmcli/map-workspaces": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-5.0.3.tgz", + "integrity": "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==", + "license": "ISC", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "glob": "^13.0.0", + "minimatch": "^10.0.3" }, "engines": { - "node": ">= 8" + "node": "^20.17.0 || >=22.9.0" } }, - "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==", + "node_modules/@npmcli/map-workspaces/node_modules/@npmcli/name-from-folder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", + "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==", + "license": "ISC", "engines": { - "node": ">= 8" + "node": "^20.17.0 || >=22.9.0" } }, - "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==", + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", - "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^11.2.1", - "socks-proxy-agent": "^8.0.3" + "node": "20 || >=22" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, "engines": { "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.6.tgz", - "integrity": "sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ==", + "node_modules/@npmcli/metavuln-calculator": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz", + "integrity": "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==", "license": "ISC", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^4.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/map-workspaces": "^5.0.0", - "@npmcli/metavuln-calculator": "^9.0.2", - "@npmcli/name-from-folder": "^3.0.0", - "@npmcli/node-gyp": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/query": "^4.0.0", - "@npmcli/redact": "^3.0.0", - "@npmcli/run-script": "^10.0.0", - "bin-links": "^5.0.0", - "cacache": "^20.0.1", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^9.0.0", - "json-stringify-nice": "^1.1.4", - "lru-cache": "^11.2.1", - "minimatch": "^10.0.3", - "nopt": "^8.0.0", - "npm-install-checks": "^7.1.0", - "npm-package-arg": "^13.0.0", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "pacote": "^21.0.2", - "parse-conflict-json": "^4.0.0", - "proc-log": "^5.0.0", - "proggy": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "semver": "^7.3.7", - "ssri": "^12.0.0", - "treeverse": "^3.0.0", - "walk-up-path": "^4.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "cacache": "^20.0.0", + "json-parse-even-better-errors": "^5.0.0", + "pacote": "^21.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/arborist/node_modules/chownr": { + "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/name-from-folder": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz", + "integrity": "sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==", + "license": "ISC", "engines": { - "node": ">=18" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@npmcli/arborist/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "node_modules/@npmcli/node-gyp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", + "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.2.tgz", + "integrity": "sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==", + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "glob": "^11.0.3", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, "engines": { "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist/node_modules/minimatch": { + "node_modules/@npmcli/package-json/node_modules/minimatch": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", @@ -5102,191 +4454,120 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist/node_modules/npm-bundled": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", - "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", + "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^5.0.0" + "which": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", - "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "license": "ISC", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=16" } }, - "node_modules/@npmcli/arborist/node_modules/pacote": { - "version": "21.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", - "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", "license": "ISC", "dependencies": { - "@npmcli/git": "^7.0.0", - "@npmcli/installed-package-contents": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "@npmcli/run-script": "^10.0.0", - "cacache": "^20.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^13.0.0", - "npm-packlist": "^10.0.1", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^4.0.0", - "ssri": "^13.0.0", - "tar": "^7.4.3" + "isexe": "^3.1.1" }, "bin": { - "pacote": "bin/index.js" + "node-which": "bin/which.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/@npmcli/installed-package-contents": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", - "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", + "node_modules/@npmcli/query": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-4.0.1.tgz", + "integrity": "sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw==", "license": "ISC", "dependencies": { - "npm-bundled": "^5.0.0", - "npm-normalize-package-bin": "^5.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "node_modules/@npmcli/redact": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", + "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", "license": "ISC", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/ssri": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", - "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "node_modules/@npmcli/run-script": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.2.tgz", + "integrity": "sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==", "license": "ISC", "dependencies": { - "minipass": "^7.0.3" + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^6.0.0", + "which": "^5.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/arborist/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, + "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", + "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", + "license": "ISC", "engines": { - "node": ">=18" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/arborist/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=16" } }, - "node_modules/@npmcli/fs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", - "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", + "node_modules/@npmcli/run-script/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/git": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", - "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^9.0.0", - "ini": "^6.0.0", - "lru-cache": "^11.2.1", - "npm-pick-manifest": "^11.0.1", - "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "license": "ISC", "dependencies": { "isexe": "^3.1.1" @@ -5295,409 +4576,165 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", - "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", - "license": "ISC", + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "dev": true, + "license": "MIT", "dependencies": { - "npm-bundled": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" + "consola": "^3.2.3" }, "bin": { - "installed-package-contents": "bin/index.js" + "opencollective": "bin/opencollective.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-5.0.3.tgz", - "integrity": "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==", - "license": "ISC", + "node_modules/@nx/devkit": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", + "integrity": "sha512-ACwmelqurupbuvvTUA+hWw978H2odLGvnYtlSut3qmw/TzS7bkptd4CmPpks6dGPTOSQbJGzbwLo9OEMs36BBA==", + "license": "MIT", "dependencies": { - "@npmcli/name-from-folder": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "glob": "^13.0.0", - "minimatch": "^10.0.3" + "@zkochan/js-yaml": "0.0.7", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "minimatch": "9.0.3", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/@npmcli/name-from-folder": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", - "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "peerDependencies": { + "nx": ">= 21 <= 23 || ^22.0.0-0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "license": "BlueOak-1.0.0", + "node_modules/@nx/devkit/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "license": "ISC", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz", - "integrity": "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==", - "license": "ISC", - "dependencies": { - "cacache": "^20.0.0", - "json-parse-even-better-errors": "^5.0.0", - "pacote": "^21.0.0", - "proc-log": "^6.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } + "node_modules/@nx/nx-darwin-arm64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.1.3.tgz", + "integrity": "sha512-4D/jXGsr3jcQ0vBo8aXXZMdfmC3n4OsZ1zjFaOXlF62Ujug+RqI/IvKxycT9r7Lr09PmW2OqBC01NfIWKoBLhg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@npmcli/name-from-folder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz", - "integrity": "sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } + "node_modules/@nx/nx-darwin-x64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.1.3.tgz", + "integrity": "sha512-XmdccOBp1Lx9DXUzYDX65mkFqFvXaxUKm1d63bfA43vxIYUpR59SASB81KRQ/Q4dgvvU27C0EJuxSJbXsSkSYw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@npmcli/node-gyp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", - "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } + "node_modules/@nx/nx-freebsd-x64": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.1.3.tgz", + "integrity": "sha512-O+o4mqPwhKxfdsri4KxDbXbjwIwr04GfTSfA0TwgXs6hFf68qmc45FAmPGrPSvxIJg9+mUVDeFirdS8GcUE0jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@npmcli/package-json": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.2.tgz", - "integrity": "sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==", - "license": "ISC", - "dependencies": { - "@npmcli/git": "^7.0.0", - "glob": "^11.0.3", - "hosted-git-info": "^9.0.0", - "json-parse-even-better-errors": "^5.0.0", - "proc-log": "^6.0.0", - "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "22.1.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.1.3.tgz", + "integrity": "sha512-ZIPDgzLq8qmvrZ3Bp+bWXam5uKwahjcChBNtORVtrHQfm4mxov2RMUMKTg2ZsVAWVP64zK+gmzG5LuoZjPMm4Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", - "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", - "license": "ISC", - "dependencies": { - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/query": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-4.0.1.tgz", - "integrity": "sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw==", - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/redact": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", - "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.2.tgz", - "integrity": "sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==", - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^5.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "node-gyp": "^11.0.0", - "proc-log": "^6.0.0", - "which": "^5.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", - "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/run-script/node_modules/proc-log": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" - } - }, - "node_modules/@nx/devkit": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.1.3.tgz", - "integrity": "sha512-ACwmelqurupbuvvTUA+hWw978H2odLGvnYtlSut3qmw/TzS7bkptd4CmPpks6dGPTOSQbJGzbwLo9OEMs36BBA==", - "license": "MIT", - "dependencies": { - "@zkochan/js-yaml": "0.0.7", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "minimatch": "9.0.3", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" - }, - "peerDependencies": { - "nx": ">= 21 <= 23 || ^22.0.0-0" - } - }, - "node_modules/@nx/devkit/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@nx/devkit/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nx/nx-darwin-arm64": { + "node_modules/@nx/nx-linux-arm64-gnu": { "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.1.3.tgz", - "integrity": "sha512-4D/jXGsr3jcQ0vBo8aXXZMdfmC3n4OsZ1zjFaOXlF62Ujug+RqI/IvKxycT9r7Lr09PmW2OqBC01NfIWKoBLhg==", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.1.3.tgz", + "integrity": "sha512-wgpPaTpQKl+cCkSuE5zamTVrg14mRvT+bLAeN/yHSUgMztvGxwl3Ll+K9DgEcktBo1PLECTWNkVaW8IAsJm4Rg==", "cpu": [ "arm64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "linux" ] }, - "node_modules/@nx/nx-darwin-x64": { + "node_modules/@nx/nx-linux-arm64-musl": { "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.1.3.tgz", - "integrity": "sha512-XmdccOBp1Lx9DXUzYDX65mkFqFvXaxUKm1d63bfA43vxIYUpR59SASB81KRQ/Q4dgvvU27C0EJuxSJbXsSkSYw==", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.1.3.tgz", + "integrity": "sha512-o9XmQehSPR2y0RD4evD+Ob3lNFuwsFOL5upVJqZ3rcE6GkJIFPg8SwEP5FaRIS5MwS04fxnek20NZ18BHjjV/g==", "cpu": [ - "x64" + "arm64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "linux" ] }, - "node_modules/@nx/nx-freebsd-x64": { + "node_modules/@nx/nx-linux-x64-gnu": { "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.1.3.tgz", - "integrity": "sha512-O+o4mqPwhKxfdsri4KxDbXbjwIwr04GfTSfA0TwgXs6hFf68qmc45FAmPGrPSvxIJg9+mUVDeFirdS8GcUE0jQ==", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.1.3.tgz", + "integrity": "sha512-ekcinyDNTa2huVe02T2SFMR8oArohozRbMGO19zftbObXXI4dLdoAuLNb3vK9Pe4vYOpkhfxBVkZvcWMmx7JdA==", "cpu": [ "x64" ], "license": "MIT", "optional": true, "os": [ - "freebsd" + "linux" ] }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { + "node_modules/@nx/nx-linux-x64-musl": { "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.1.3.tgz", - "integrity": "sha512-ZIPDgzLq8qmvrZ3Bp+bWXam5uKwahjcChBNtORVtrHQfm4mxov2RMUMKTg2ZsVAWVP64zK+gmzG5LuoZjPMm4Q==", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.1.3.tgz", + "integrity": "sha512-CqpRIJeIgELCqIgjtSsYnnLi6G0uqjbp/Pw9d7w4im4/NmJXqaE9gxpdHA1eowXLgAy9W1LkfzCPS8Q2IScPuQ==", "cpu": [ - "arm" + "x64" ], "license": "MIT", "optional": true, @@ -5705,59 +4742,7 @@ "linux" ] }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.1.3.tgz", - "integrity": "sha512-wgpPaTpQKl+cCkSuE5zamTVrg14mRvT+bLAeN/yHSUgMztvGxwl3Ll+K9DgEcktBo1PLECTWNkVaW8IAsJm4Rg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.1.3.tgz", - "integrity": "sha512-o9XmQehSPR2y0RD4evD+Ob3lNFuwsFOL5upVJqZ3rcE6GkJIFPg8SwEP5FaRIS5MwS04fxnek20NZ18BHjjV/g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.1.3.tgz", - "integrity": "sha512-ekcinyDNTa2huVe02T2SFMR8oArohozRbMGO19zftbObXXI4dLdoAuLNb3vK9Pe4vYOpkhfxBVkZvcWMmx7JdA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.1.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.1.3.tgz", - "integrity": "sha512-CqpRIJeIgELCqIgjtSsYnnLi6G0uqjbp/Pw9d7w4im4/NmJXqaE9gxpdHA1eowXLgAy9W1LkfzCPS8Q2IScPuQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-win32-arm64-msvc": { + "node_modules/@nx/nx-win32-arm64-msvc": { "version": "22.1.3", "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.1.3.tgz", "integrity": "sha512-YbuWb8KQsAR9G0+7b4HA16GV962/VWtRcdS7WY2yaScmPT2W5rObl528Y2j4DuB0j/MVZj12qJKrYfUyjL+UJA==", @@ -6427,5488 +5412,3835 @@ }, "node_modules/@sigstore/protobuf-specs": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", - "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@sigstore/sign": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz", - "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==", - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", - "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.2", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/tuf": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz", - "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==", - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0", - "tuf-js": "^4.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/verify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz", - "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==", - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", - "@sigstore/protobuf-specs": "^0.5.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "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, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "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, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", - "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", - "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", - "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", - "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.8", - "@smithy/types": "^4.12.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.8", - "@smithy/util-middleware": "^4.2.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", - "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-serde": "^4.2.9", - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.8", - "@smithy/util-stream": "^4.5.11", - "@smithy/util-utf8": "^4.2.0", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", - "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.8", - "@smithy/property-provider": "^4.2.8", - "@smithy/types": "^4.12.0", - "@smithy/url-parser": "^4.2.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", - "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.12.0", - "@smithy/util-hex-encoding": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", - "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", - "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", - "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", - "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", - "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.8", - "@smithy/querystring-builder": "^4.2.8", - "@smithy/types": "^4.12.0", - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", - "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.0", - "@smithy/chunked-blob-reader-native": "^4.2.1", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", - "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", - "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", - "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", - "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/md5-js": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", - "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", - "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", - "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.22.1", - "@smithy/middleware-serde": "^4.2.9", - "@smithy/node-config-provider": "^4.3.8", - "@smithy/shared-ini-file-loader": "^4.4.3", - "@smithy/types": "^4.12.0", - "@smithy/url-parser": "^4.2.8", - "@smithy/util-middleware": "^4.2.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.4.30", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", - "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.8", - "@smithy/protocol-http": "^5.3.8", - "@smithy/service-error-classification": "^4.2.8", - "@smithy/smithy-client": "^4.11.2", - "@smithy/types": "^4.12.0", - "@smithy/util-middleware": "^4.2.8", - "@smithy/util-retry": "^4.2.8", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", - "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", - "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", - "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.8", - "@smithy/shared-ini-file-loader": "^4.4.3", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", - "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.8", - "@smithy/protocol-http": "^5.3.8", - "@smithy/querystring-builder": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", - "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", - "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", - "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "@smithy/util-uri-escape": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", - "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", - "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", - "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", - "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.8", - "@smithy/util-uri-escape": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", - "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.22.1", - "@smithy/middleware-endpoint": "^4.4.13", - "@smithy/middleware-stack": "^4.2.8", - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "@smithy/util-stream": "^4.5.11", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", - "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", - "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-base64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", - "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", - "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", - "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", - "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", - "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.29", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", - "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.8", - "@smithy/smithy-client": "^4.11.2", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.32", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", - "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^4.4.6", - "@smithy/credential-provider-imds": "^4.2.8", - "@smithy/node-config-provider": "^4.3.8", - "@smithy/property-provider": "^4.2.8", - "@smithy/smithy-client": "^4.11.2", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", - "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", - "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", - "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", - "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", - "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.9", - "@smithy/node-http-handler": "^4.4.9", - "@smithy/types": "^4.12.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", - "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", - "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", - "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/uuid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", - "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@swc/core": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.11.tgz", - "integrity": "sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==", - "devOptional": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.25" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.11", - "@swc/core-darwin-x64": "1.15.11", - "@swc/core-linux-arm-gnueabihf": "1.15.11", - "@swc/core-linux-arm64-gnu": "1.15.11", - "@swc/core-linux-arm64-musl": "1.15.11", - "@swc/core-linux-x64-gnu": "1.15.11", - "@swc/core-linux-x64-musl": "1.15.11", - "@swc/core-win32-arm64-msvc": "1.15.11", - "@swc/core-win32-ia32-msvc": "1.15.11", - "@swc/core-win32-x64-msvc": "1.15.11" - }, - "peerDependencies": { - "@swc/helpers": ">=0.5.17" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz", - "integrity": "sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz", - "integrity": "sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz", - "integrity": "sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz", - "integrity": "sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz", - "integrity": "sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz", - "integrity": "sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz", - "integrity": "sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz", - "integrity": "sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz", - "integrity": "sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz", - "integrity": "sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/types": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", - "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@tokenizer/inflate": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", - "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "token-types": "^6.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", - "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.0.0.tgz", - "integrity": "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==", - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/aws-lambda": { - "version": "8.10.160", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.160.tgz", - "integrity": "sha512-uoO4QVQNWFPJMh26pXtmtrRfGshPUSpMZGUyUQY20FhfHEElEBOPKgVmFs1z+kbpyBsRs2JnoOPT7++Z4GA9pA==", - "dev": true, - "license": "MIT" - }, - "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, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "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, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "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, - "dependencies": { - "@types/node": "*" - } - }, - "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, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "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, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.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==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.15.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", - "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "license": "MIT" - }, - "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/@typescript-eslint/eslint-plugin": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz", - "integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==", - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.0", - "@typescript-eslint/type-utils": "8.46.0", - "@typescript-eslint/utils": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.46.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", - "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz", - "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.46.0", - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz", - "integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.0", - "@typescript-eslint/types": "^8.46.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/rule-tester": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-8.46.0.tgz", - "integrity": "sha512-cIz9Z9BeL8YHKPVAHaFoSX4H359UPtbl93kRVS+Kx94HtFP48JXKmmUOBGRT/WdRQtpliu7U9pKGbCXYjv2byg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/parser": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0", - "@typescript-eslint/utils": "8.46.0", - "ajv": "^6.12.6", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "4.6.2", - "semver": "^7.6.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/@typescript-eslint/rule-tester/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": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@typescript-eslint/rule-tester/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/@typescript-eslint/scope-manager": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", - "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz", - "integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz", - "integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0", - "@typescript-eslint/utils": "8.46.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", - "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", + "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", - "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", - "license": "MIT", + "node_modules/@sigstore/sign": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz", + "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==", + "license": "Apache-2.0", "dependencies": { - "@typescript-eslint/project-service": "8.46.0", - "@typescript-eslint/tsconfig-utils": "8.46.0", - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.0.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.2", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", + "node_modules/@sigstore/tuf": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz", + "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0" + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "node_modules/@sigstore/verify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz", + "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.0.0", + "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz", - "integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==", - "license": "MIT", + "node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "license": "Apache-2.0", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.0", - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "node": ">=18.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", - "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", - "license": "MIT", + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@typescript-eslint/types": "8.46.0", - "eslint-visitor-keys": "^4.2.1" + "tslib": "^2.6.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=18.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "node_modules/@smithy/chunked-blob-reader-native": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "devOptional": true, "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", - "dev": true, - "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", - "tinyrainbow": "^3.0.3" + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", + "license": "Apache-2.0", "dependencies": { - "@vitest/spy": "4.0.18", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/mocker/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", + "license": "Apache-2.0", "dependencies": { - "tinyrainbow": "^3.0.3" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", + "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@vitest/utils": "4.0.18", - "pathe": "^2.0.3" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", + "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/snapshot/node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", + "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", + "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", + "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "license": "BSD-2-Clause" - }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", - "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", - "license": "BSD-2-Clause", + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "license": "Apache-2.0", "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18.12.0" + "node": ">=18.0.0" } }, - "node_modules/@yarnpkg/parsers/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", + "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "sprintf-js": "~1.0.2" + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "license": "MIT", + "node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", + "license": "Apache-2.0", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", - "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", - "license": "MIT", + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", + "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", + "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "argparse": "^2.0.1" + "@smithy/types": "^4.12.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/abbrev": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", - "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", - "license": "ISC", + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", "dependencies": { - "event-target-shim": "^5.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.5" + "node": ">=18.0.0" } }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", - "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", - "license": "MIT" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node_modules/@smithy/md5-js": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", + "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=18.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==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 14" + "node": ">=18.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", + "node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", + "license": "Apache-2.0", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/airtable": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/airtable/-/airtable-0.12.2.tgz", - "integrity": "sha512-HS3VytUBTKj8A0vPl7DDr5p/w3IOGv6RXL0fv7eczOWAtj9Xe8ri4TAiZRXoOyo+Z/COADCj+oARFenbxhmkIg==", - "license": "MIT", + "node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "license": "Apache-2.0", "dependencies": { - "@types/node": ">=8.0.0 <15", - "abort-controller": "^3.0.0", - "abortcontroller-polyfill": "^1.4.0", - "lodash": "^4.17.21", - "node-fetch": "^2.6.7" + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=18.0.0" } }, - "node_modules/airtable/node_modules/@types/node": { - "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "license": "MIT" - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "license": "Apache-2.0", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/angular-eslint": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/angular-eslint/-/angular-eslint-20.5.1.tgz", - "integrity": "sha512-7Vx2Vs4u5KO7Kxzo8kMAZnpubtHxK/wBWhBmHrKz/GRsrRQw2aIO13eCH6RU200EssNWpZ2OADIK0vlR9J0T0A==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/core": ">= 20.0.0 < 21.0.0", - "@angular-devkit/schematics": ">= 20.0.0 < 21.0.0", - "@angular-eslint/builder": "20.5.1", - "@angular-eslint/eslint-plugin": "20.5.1", - "@angular-eslint/eslint-plugin-template": "20.5.1", - "@angular-eslint/schematics": "20.5.1", - "@angular-eslint/template-parser": "20.5.1", - "@typescript-eslint/types": "^8.0.0", - "@typescript-eslint/utils": "^8.0.0" + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*", - "typescript-eslint": "^8.0.0" + "engines": { + "node": ">=18.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==", - "license": "MIT", + "node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=18.0.0" } }, - "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, + "node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.21.3" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/ansi-escapes/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, - "engines": { - "node": ">=10" + "node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.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/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "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" + "node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=18.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==", - "dev": true, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "license": "Apache-2.0", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=18.0.0" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "license": "ISC" - }, - "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==" - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, + "node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", + "license": "Apache-2.0", "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "license": "MIT", + "node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "license": "MIT", + "node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=18.0.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==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib": { - "version": "2.237.1", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.237.1.tgz", - "integrity": "sha512-RH8mWHLBtc14stkeUF0gFLaWdS5iS2AHUHnoT5B5LLZfEkYP9G43LjJs0AMmpdlQ5/ZQVvCZ+VB83Q9vLxILRw==", - "bundleDependencies": [ - "@balena/dockerignore", - "case", - "fs-extra", - "ignore", - "jsonschema", - "minimatch", - "punycode", - "semver", - "table", - "yaml", - "mime-types" - ], + "node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "license": "Apache-2.0", - "peer": true, "dependencies": { - "@aws-cdk/asset-awscli-v1": "2.2.263", - "@aws-cdk/asset-node-proxy-agent-v6": "^2.1.0", - "@aws-cdk/cloud-assembly-schema": "^48.20.0", - "@balena/dockerignore": "^1.0.2", - "case": "1.6.3", - "fs-extra": "^11.3.3", - "ignore": "^5.3.2", - "jsonschema": "^1.5.0", - "mime-types": "^2.1.35", - "minimatch": "^3.1.2", - "punycode": "^2.3.1", - "semver": "^7.7.3", - "table": "^6.9.0", - "yaml": "1.10.2" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "constructs": "^10.0.0" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { - "version": "1.0.2", - "inBundle": true, + "node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "license": "Apache-2.0", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/ajv": { - "version": "8.17.1", - "inBundle": true, - "license": "MIT", - "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/aws-cdk-lib/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "peer": true, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/astral-regex": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/brace-expansion": { - "version": "1.1.12", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/case": { - "version": "1.6.3", - "inBundle": true, - "license": "(MIT OR GPL-3.0-or-later)", - "peer": true, + "node_modules/@smithy/util-waiter": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { - "version": "3.1.3", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/fast-uri": { - "version": "3.1.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "inBundle": true, - "license": "BSD-3-Clause", - "peer": true + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" }, - "node_modules/aws-cdk-lib/node_modules/fs-extra": { - "version": "11.3.3", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.11.tgz", + "integrity": "sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.11", + "@swc/core-darwin-x64": "1.15.11", + "@swc/core-linux-arm-gnueabihf": "1.15.11", + "@swc/core-linux-arm64-gnu": "1.15.11", + "@swc/core-linux-arm64-musl": "1.15.11", + "@swc/core-linux-x64-gnu": "1.15.11", + "@swc/core-linux-x64-musl": "1.15.11", + "@swc/core-win32-arm64-msvc": "1.15.11", + "@swc/core-win32-ia32-msvc": "1.15.11", + "@swc/core-win32-x64-msvc": "1.15.11" }, - "engines": { - "node": ">=14.14" + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, - "node_modules/aws-cdk-lib/node_modules/graceful-fs": { - "version": "4.2.11", - "inBundle": true, - "license": "ISC", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/ignore": { - "version": "5.3.2", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz", + "integrity": "sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz", + "integrity": "sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/jsonfile": { - "version": "6.2.0", - "inBundle": true, - "license": "MIT", - "peer": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz", + "integrity": "sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/jsonschema": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz", + "integrity": "sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { - "version": "4.4.2", - "inBundle": true, - "license": "MIT", - "peer": true - }, - "node_modules/aws-cdk-lib/node_modules/mime-db": { - "version": "1.52.0", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz", + "integrity": "sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/mime-types": { - "version": "2.1.35", - "inBundle": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz", + "integrity": "sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz", + "integrity": "sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/punycode": { - "version": "2.3.1", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz", + "integrity": "sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/require-from-string": { - "version": "2.0.2", - "inBundle": true, - "license": "MIT", - "peer": true, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz", + "integrity": "sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/semver": { - "version": "7.7.3", - "inBundle": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz", + "integrity": "sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=10" } }, - "node_modules/aws-cdk-lib/node_modules/slice-ansi": { - "version": "4.0.0", - "inBundle": true, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "debug": "^4.4.3", + "token-types": "^6.1.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/aws-cdk-lib/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/aws-cdk-lib/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, + "node_modules/@tufjs/models": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.0.0.tgz", + "integrity": "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==", "license": "MIT", - "peer": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/aws-cdk-lib/node_modules/table": { - "version": "6.9.0", - "inBundle": true, - "license": "BSD-3-Clause", - "peer": true, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/aws-cdk-lib/node_modules/universalify": { - "version": "2.0.1", - "inBundle": true, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "license": "MIT", - "peer": true, - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/aws-cdk-lib/node_modules/yaml": { - "version": "1.10.2", - "inBundle": true, - "license": "ISC", - "peer": true, - "engines": { - "node": ">= 6" - } + "node_modules/@types/aws-lambda": { + "version": "8.10.160", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.160.tgz", + "integrity": "sha512-uoO4QVQNWFPJMh26pXtmtrRfGshPUSpMZGUyUQY20FhfHEElEBOPKgVmFs1z+kbpyBsRs2JnoOPT7++Z4GA9pA==", + "dev": true, + "license": "MIT" }, - "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" } }, - "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==", + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "license": "MIT" + }, + "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": { - "@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" + "@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/@typescript-eslint/eslint-plugin": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz", + "integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/type-utils": "8.46.0", + "@typescript-eslint/utils": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@typescript-eslint/parser": "^8.46.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/babel-jest/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, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz", + "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/babel-jest/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, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz", + "integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@typescript-eslint/tsconfig-utils": "^8.46.0", + "@typescript-eslint/types": "^8.46.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "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==", + "node_modules/@typescript-eslint/rule-tester": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-8.46.0.tgz", + "integrity": "sha512-cIz9Z9BeL8YHKPVAHaFoSX4H359UPtbl93kRVS+Kx94HtFP48JXKmmUOBGRT/WdRQtpliu7U9pKGbCXYjv2byg==", "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" + "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/utils": "8.46.0", + "ajv": "^6.12.6", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "4.6.2", + "semver": "^7.6.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" } }, - "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==", + "node_modules/@typescript-eslint/rule-tester/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": { - "@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" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/babel-plugin-istanbul/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/@typescript-eslint/rule-tester/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/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, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", + "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", + "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "dependencies": { - "@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" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "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" - }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz", + "integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "typescript": ">=4.8.4 <6.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==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "license": "Apache-2.0" - }, - "node_modules/bin-links": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-5.0.0.tgz", - "integrity": "sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==", - "license": "ISC", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz", + "integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==", + "license": "MIT", "dependencies": { - "cmd-shim": "^7.0.0", - "npm-normalize-package-bin": "^4.0.0", - "proc-log": "^5.0.0", - "read-cmd-shim": "^5.0.0", - "write-file-atomic": "^6.0.0" + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/utils": "8.46.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/bin-links/node_modules/cmd-shim": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-7.0.0.tgz", - "integrity": "sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/bin-links/node_modules/read-cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz", - "integrity": "sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/bin-links/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==", - "license": "ISC", + "node_modules/@typescript-eslint/types": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", + "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", + "license": "MIT", "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-6.0.0.tgz", - "integrity": "sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==", - "license": "ISC", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "balanced-match": "^1.0.0" } }, - "node_modules/bowser": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", - "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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/@typescript-eslint/utils": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz", + "integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==", + "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/browserslist": { - "version": "4.24.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", - "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", - "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" - } - ], + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001716", - "electron-to-chromium": "^1.5.149", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" }, - "bin": { - "browserslist": "cli.js" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", "dev": true, + "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "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==", + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", "dev": true, + "license": "MIT", "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "vite": { + "optional": true } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" } }, - "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==" - }, - "node_modules/byte-size": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", - "integrity": "sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==", + "node_modules/@vitest/mocker/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12.17" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/cacache": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", - "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", - "license": "ISC", + "node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/fs": "^5.0.0", - "fs-minipass": "^3.0.0", - "glob": "^13.0.0", - "lru-cache": "^11.1.0", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^13.0.0", - "unique-filename": "^5.0.0" + "tinyrainbow": "^3.0.3" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/cacache/node_modules/@npmcli/fs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", - "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", - "license": "ISC", + "node_modules/@vitest/runner": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/cacache/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "license": "BlueOak-1.0.0", + "node_modules/@vitest/snapshot": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "dev": true, + "license": "MIT", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/vitest" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, + "node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/vitest" } }, - "node_modules/cacache/node_modules/p-map": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", - "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "node_modules/cacache/node_modules/ssri": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", - "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", - "license": "ISC", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "license": "BSD-2-Clause" + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", + "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", + "license": "BSD-2-Clause", "dependencies": { - "minipass": "^7.0.3" + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.12.0" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "sprintf-js": "~1.0.2" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "license": "ISC", "engines": { - "node": ">=6" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.5" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", - "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/abortcontroller-polyfill": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", + "license": "MIT" }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "bin": { + "acorn": "bin/acorn" }, - "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/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" + "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==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "license": "MIT" }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 14" } }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, + "node_modules/airtable": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/airtable/-/airtable-0.12.2.tgz", + "integrity": "sha512-HS3VytUBTKj8A0vPl7DDr5p/w3IOGv6RXL0fv7eczOWAtj9Xe8ri4TAiZRXoOyo+Z/COADCj+oARFenbxhmkIg==", + "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "@types/node": ">=8.0.0 <15", + "abort-controller": "^3.0.0", + "abortcontroller-polyfill": "^1.4.0", + "lodash": "^4.17.21", + "node-fetch": "^2.6.7" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/cli-truncate/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, - "engines": { - "node": ">=12" + "node_modules/airtable/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/cli-truncate/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==", + "node_modules/angular-eslint": { + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/angular-eslint/-/angular-eslint-20.5.1.tgz", + "integrity": "sha512-7Vx2Vs4u5KO7Kxzo8kMAZnpubtHxK/wBWhBmHrKz/GRsrRQw2aIO13eCH6RU200EssNWpZ2OADIK0vlR9J0T0A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "@angular-devkit/core": ">= 20.0.0 < 21.0.0", + "@angular-devkit/schematics": ">= 20.0.0 < 21.0.0", + "@angular-eslint/builder": "20.5.1", + "@angular-eslint/eslint-plugin": "20.5.1", + "@angular-eslint/eslint-plugin-template": "20.5.1", + "@angular-eslint/schematics": "20.5.1", + "@angular-eslint/template-parser": "20.5.1", + "@typescript-eslint/types": "^8.0.0", + "@typescript-eslint/utils": "^8.0.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "engines": { - "node": ">= 12" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*", + "typescript-eslint": "^8.0.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==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.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==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/cliui/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/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, "dependencies": { - "color-convert": "^2.0.1" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/ansi-escapes/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, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "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==", "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/cmd-shim": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz", - "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "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==" }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">= 0.4" } }, - "node_modules/collect-v8-coverage": { + "node_modules/array-buffer-byte-length": { "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==", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dependencies": { - "color-name": "~1.1.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "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==" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "dev": true, "engines": { - "node": ">=18" - } - }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "license": "ISC" - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "node": ">=8" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "dev": true, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "license": "MIT", "engines": { - "node": "^14.18.0 || >=16.10.0" + "node": ">=8" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC" - }, - "node_modules/constructs": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.4.5.tgz", - "integrity": "sha512-fOoP70YLevMZr5avJHx2DU3LNYmC6wM8OwdrNewMZou1kZnPGOeVzBrRjZNgFDHUlulYUjkpFRSpTE3D+n+ZSg==", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dependencies": { - "compare-func": "^2.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { - "node": ">=16" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-9.1.0.tgz", - "integrity": "sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==", - "dev": true, - "license": "ISC", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dependencies": { - "compare-func": "^2.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", - "integrity": "sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==", - "license": "MIT", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^6.0.0", - "conventional-commits-parser": "^4.0.0", - "dateformat": "^3.0.3", - "get-pkg-repo": "^4.2.1", - "git-raw-commits": "^3.0.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^5.0.0", - "normalize-package-data": "^3.0.3", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", - "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", - "license": "MIT", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.3.5", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-core/node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-core/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==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", - "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==", - "license": "MIT", - "dependencies": { - "dargs": "^7.0.0", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "git-raw-commits": "cli.js" - }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "engines": { - "node": ">=14" + "node": ">= 0.4" } }, - "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, - "node_modules/conventional-changelog-core/node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "license": "MIT", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dependencies": { - "text-extensions": "^1.0.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-core/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==", - "license": "MIT", + "node_modules/aws-cdk-lib": { + "version": "2.237.1", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.237.1.tgz", + "integrity": "sha512-RH8mWHLBtc14stkeUF0gFLaWdS5iS2AHUHnoT5B5LLZfEkYP9G43LjJs0AMmpdlQ5/ZQVvCZ+VB83Q9vLxILRw==", + "bundleDependencies": [ + "@balena/dockerignore", + "case", + "fs-extra", + "ignore", + "jsonschema", + "minimatch", + "punycode", + "semver", + "table", + "yaml", + "mime-types" + ], + "license": "Apache-2.0", + "peer": true, "dependencies": { - "p-locate": "^4.1.0" + "@aws-cdk/asset-awscli-v1": "2.2.263", + "@aws-cdk/asset-node-proxy-agent-v6": "^2.1.0", + "@aws-cdk/cloud-assembly-schema": "^48.20.0", + "@balena/dockerignore": "^1.0.2", + "case": "1.6.3", + "fs-extra": "^11.3.3", + "ignore": "^5.3.2", + "jsonschema": "^1.5.0", + "mime-types": "^2.1.35", + "minimatch": "^3.1.2", + "punycode": "^2.3.1", + "semver": "^7.7.3", + "table": "^6.9.0", + "yaml": "1.10.2" }, "engines": { - "node": ">=8" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "constructs": "^10.0.0" } }, - "node_modules/conventional-changelog-core/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { + "version": "1.0.2", + "inBundle": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/ajv": { + "version": "8.17.1", + "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/aws-cdk-lib/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/aws-cdk-lib/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/aws-cdk-lib/node_modules/astral-regex": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", + "node_modules/aws-cdk-lib/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/brace-expansion": { + "version": "1.1.12", + "inBundle": true, + "license": "MIT", + "peer": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", + "node_modules/aws-cdk-lib/node_modules/case": { + "version": "1.6.3", + "inBundle": true, + "license": "(MIT OR GPL-3.0-or-later)", + "peer": true, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/conventional-changelog-core/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==", + "node_modules/aws-cdk-lib/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { - "p-try": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/conventional-changelog-core/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==", + "node_modules/aws-cdk-lib/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } + "peer": true }, - "node_modules/conventional-changelog-core/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==", + "node_modules/aws-cdk-lib/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "peer": true }, - "node_modules/conventional-changelog-core/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } + "node_modules/aws-cdk-lib/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT", + "peer": true }, - "node_modules/conventional-changelog-core/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "license": "ISC", + "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/fast-uri": { + "version": "3.1.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/fs-extra": { + "version": "11.3.3", + "inBundle": true, + "license": "MIT", + "peer": true, "dependencies": { - "readable-stream": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, - "node_modules/conventional-changelog-core/node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "node_modules/aws-cdk-lib/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/ignore": { + "version": "5.3.2", + "inBundle": true, "license": "MIT", + "peer": true, "engines": { - "node": ">=0.10" + "node": ">= 4" } }, - "node_modules/conventional-changelog-core/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", + "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/conventional-changelog-core/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==", - "license": "ISC", + "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/jsonfile": { + "version": "6.2.0", + "inBundle": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/jsonschema": { + "version": "1.5.0", + "inBundle": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/conventional-changelog-preset-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", - "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==", + "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { + "version": "4.4.2", + "inBundle": true, "license": "MIT", + "peer": true + }, + "node_modules/aws-cdk-lib/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=14" + "node": ">= 0.6" } }, - "node_modules/conventional-changelog-writer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", - "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", + "node_modules/aws-cdk-lib/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { - "conventional-commits-filter": "^3.0.0", - "dateformat": "^3.0.3", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^8.1.2", - "semver": "^7.0.0", - "split": "^1.0.1" - }, - "bin": { - "conventional-changelog-writer": "cli.js" + "mime-db": "1.52.0" }, "engines": { - "node": ">=14" + "node": ">= 0.6" } }, - "node_modules/conventional-changelog-writer/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==", - "license": "MIT", + "node_modules/aws-cdk-lib/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "peer": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/conventional-changelog-writer/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==", + "node_modules/aws-cdk-lib/node_modules/punycode": { + "version": "2.3.1", + "inBundle": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, + "peer": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/conventional-changelog-writer/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/aws-cdk-lib/node_modules/require-from-string": { + "version": "2.0.2", + "inBundle": true, "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/semver": { + "version": "7.7.3", + "inBundle": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/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==", + "node_modules/aws-cdk-lib/node_modules/slice-ansi": { + "version": "4.0.0", + "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { - "p-try": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/conventional-changelog-writer/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==", + "node_modules/aws-cdk-lib/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { - "p-limit": "^2.2.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-writer/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==", + "node_modules/aws-cdk-lib/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "license": "MIT", + "node_modules/aws-cdk-lib/node_modules/table": { + "version": "6.9.0", + "inBundle": true, + "license": "BSD-3-Clause", + "peer": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/aws-cdk-lib/node_modules/universalify": { + "version": "2.0.1", + "inBundle": true, "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, + "peer": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/aws-cdk-lib/node_modules/yaml": { + "version": "1.10.2", + "inBundle": true, + "license": "ISC", + "peer": true, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", + "node_modules/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "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==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "license": "Apache-2.0" + }, + "node_modules/bin-links": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-5.0.0.tgz", + "integrity": "sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==", + "license": "ISC", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "cmd-shim": "^7.0.0", + "npm-normalize-package-bin": "^4.0.0", + "proc-log": "^5.0.0", + "read-cmd-shim": "^5.0.0", + "write-file-atomic": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/bin-links/node_modules/cmd-shim": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-7.0.0.tgz", + "integrity": "sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==", "license": "ISC", - "bin": { - "semver": "bin/semver" + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", + "node_modules/bin-links/node_modules/read-cmd-shim": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz", + "integrity": "sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==", + "license": "ISC", "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/conventional-changelog-writer/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", + "node_modules/bin-links/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==", + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/conventional-changelog-writer/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==", + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-6.0.0.tgz", + "integrity": "sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==", "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", - "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", - "license": "MIT", "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.1" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=14" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/conventional-commits-parser": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", - "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", - "dev": true, - "license": "MIT", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { - "meow": "^13.0.0" - }, - "bin": { - "conventional-commits-parser": "dist/cli/index.js" - }, - "engines": { - "node": ">=18" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/conventional-recommended-bump": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz", - "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==", + "node_modules/bowser": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", + "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^3.0.0", - "conventional-commits-filter": "^3.0.0", - "conventional-commits-parser": "^4.0.0", - "git-raw-commits": "^3.0.0", - "git-semver-tags": "^5.0.0", - "meow": "^8.1.2" - }, - "bin": { - "conventional-recommended-bump": "cli.js" - }, - "engines": { - "node": ">=14" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", - "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", - "license": "MIT", + "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==", "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.3.5", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/conventional-recommended-bump/node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/conventional-recommended-bump/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==", + "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==" + }, + "node_modules/byte-size": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", + "integrity": "sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==", "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12.17" } }, - "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", - "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==", - "license": "MIT", + "node_modules/cacache": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", + "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", + "license": "ISC", "dependencies": { - "dargs": "^7.0.0", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "git-raw-commits": "cli.js" + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0", + "unique-filename": "^5.0.0" }, "engines": { - "node": ">=14" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/conventional-recommended-bump/node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "license": "MIT", + "node_modules/cacache/node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "license": "ISC", "dependencies": { - "text-extensions": "^1.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=0.10.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/conventional-recommended-bump/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==", - "license": "MIT", + "node_modules/cacache/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", "dependencies": { - "p-locate": "^4.1.0" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": ">=8" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/conventional-recommended-bump/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "license": "MIT", + "node_modules/cacache/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/conventional-recommended-bump/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==", + "node_modules/cacache/node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/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==", - "license": "MIT", + "node_modules/cacache/node_modules/ssri": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", + "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "license": "ISC", "dependencies": { - "p-limit": "^2.2.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/conventional-recommended-bump/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==", - "license": "MIT", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "license": "MIT", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "license": "MIT", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "node": ">=6" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-recommended-bump/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node": ">=6" } }, - "node_modules/conventional-recommended-bump/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "license": "ISC", + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "license": "MIT", "dependencies": { - "readable-stream": "^3.0.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=18" } }, - "node_modules/conventional-recommended-bump/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-recommended-bump/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==", - "license": "ISC", - "engines": { - "node": ">=10" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/convert-source-map": { + "node_modules/chownr": { "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/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" } + ], + "engines": { + "node": ">=8" } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz", - "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==", - "dev": true, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "license": "MIT", - "dependencies": { - "jiti": "^2.6.1" - }, "engines": { - "node": ">=v18" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=9", - "typescript": ">=5" + "node": ">=6" } }, - "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==", + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "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" + "restore-cursor": "^5.0.0" }, - "bin": { - "create-jest": "bin/create-jest.js" + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/create-jest/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/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/create-jest/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/cli-truncate/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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "node": ">=18" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dargs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", - "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "node_modules/cli-truncate/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": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "engines": { + "node": ">= 12" + } + }, + "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==", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "node_modules/cliui/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==", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/inspect-js" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "license": "MIT", + "node_modules/cmd-shim": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz", + "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==", + "license": "ISC", "engines": { - "node": "*" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", + "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==", "dependencies": { - "ms": "^2.1.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.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==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "dependencies": { + "delayed-stream": "~1.0.0" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "engines": { + "node": ">= 0.8" } }, - "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==" - }, - "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==", + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/define-lazy-prop": { + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "license": "ISC" }, - "node_modules/detect-indent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", - "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", - "dev": true, - "engines": { - "node": ">=12.20" - } + "node_modules/constructs": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.4.5.tgz", + "integrity": "sha512-fOoP70YLevMZr5avJHx2DU3LNYmC6wM8OwdrNewMZou1kZnPGOeVzBrRjZNgFDHUlulYUjkpFRSpTE3D+n+ZSg==", + "license": "Apache-2.0", + "peer": true }, - "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, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dependencies": { + "compare-func": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-9.1.0.tgz", + "integrity": "sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==", "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/conventional-changelog-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", + "integrity": "sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==", + "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-parser": "^4.0.0", + "dateformat": "^3.0.3", + "get-pkg-repo": "^4.2.1", + "git-raw-commits": "^3.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^5.0.0", + "normalize-package-data": "^3.0.3", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" + "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" }, - "funding": { - "url": "https://dotenvx.com" + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=14" } }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, + "node_modules/conventional-changelog-core/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/conventional-changelog-core/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==", + "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", + "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==", + "license": "MIT", "dependencies": { - "jake": "^10.8.5" + "dargs": "^7.0.0", + "meow": "^8.1.2", + "split2": "^3.2.2" }, "bin": { - "ejs": "bin/cli.js" + "git-raw-commits": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.152", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.152.tgz", - "integrity": "sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==", - "dev": true + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" }, - "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" + "node_modules/conventional-changelog-core/node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "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==" - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/conventional-changelog-core/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==", "license": "MIT", - "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/conventional-changelog-core/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "license": "MIT", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "license": "MIT", "dependencies": { - "once": "^1.4.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=8.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", - "bin": { - "envinfo": "dist/cli.js" - }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, + "node_modules/conventional-changelog-core/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==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=18" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT" - }, - "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==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "node_modules/conventional-changelog-core/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==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "node_modules/conventional-changelog-core/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==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" + "node_modules/conventional-changelog-core/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/conventional-changelog-core/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "license": "ISC", "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" + "readable-stream": "^3.0.0" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, + "node_modules/conventional-changelog-core/node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=0.10" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dependencies": { - "hasown": "^2.0.2" + "node_modules/conventional-changelog-core/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/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==", + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, + "node_modules/conventional-changelog-preset-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", + "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==", + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14" } }, - "node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, - "hasInstallScript": true, + "node_modules/conventional-changelog-writer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", + "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + }, "bin": { - "esbuild": "bin/esbuild" + "conventional-changelog-writer": "cli.js" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" + "node": ">=14" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/conventional-changelog-writer/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==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "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==", - "engines": { - "node": ">=10" + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" + }, + "node_modules/conventional-changelog-writer/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/eslint": { - "version": "9.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", - "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.4.0", - "@eslint/core": "^0.16.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.37.0", - "@eslint/plugin-kit": "^0.4.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.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" - }, - "bin": { - "eslint": "bin/eslint.js" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "node_modules/conventional-changelog-writer/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==", "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "dependencies": { + "p-try": "^2.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" + "engines": { + "node": ">=6" }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/conventional-changelog-writer/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==", + "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/conventional-changelog-writer/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==", "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">=8" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=4" + "node": ">=8" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { - "json5": "lib/cli.js" + "semver": "bin/semver" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/conventional-changelog-writer/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "node_modules/conventional-changelog-writer/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==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", + "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", + "license": "MIT", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" + }, + "engines": { + "node": ">=14" } }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", - "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "node_modules/conventional-commits-parser": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", + "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", + "dev": true, "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0" + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/eslint-plugin-unused-imports": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.2.0.tgz", - "integrity": "sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==", + "node_modules/conventional-recommended-bump": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz", + "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==", "license": "MIT", - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", - "eslint": "^9.0.0 || ^8.0.0" + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^3.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^4.0.0", + "git-raw-commits": "^3.0.0", + "git-semver-tags": "^5.0.0", + "meow": "^8.1.2" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=14" } }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "license": "BSD-2-Clause", + "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "bin": { + "conventional-commits-parser": "cli.js" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=14" } }, - "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/conventional-recommended-bump/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint/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/conventional-recommended-bump/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==", + "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" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/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/conventional-recommended-bump/node_modules/git-raw-commits": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", + "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "dargs": "^7.0.0", + "meow": "^8.1.2", + "split2": "^3.2.2" }, - "engines": { - "node": ">=8" + "bin": { + "git-raw-commits": "cli.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=14" } }, - "node_modules/eslint/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/conventional-recommended-bump/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" + }, + "node_modules/conventional-recommended-bump/node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "text-extensions": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node_modules/conventional-recommended-bump/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/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/conventional-recommended-bump/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { "node": ">=10" @@ -11917,614 +9249,664 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/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/eslint/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/conventional-recommended-bump/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==", + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/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/conventional-recommended-bump/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==", + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint/node_modules/path-exists": { + "node_modules/conventional-recommended-bump/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==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "license": "BSD-2-Clause", + "node_modules/conventional-recommended-bump/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "license": "MIT", "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" }, "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==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dependencies": { - "estraverse": "^5.1.0" - }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "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/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "license": "BSD-2-Clause", "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "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/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" + "node_modules/conventional-recommended-bump/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" + "node_modules/conventional-recommended-bump/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/conventional-recommended-bump/node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" - }, - "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" - }, + "node_modules/conventional-recommended-bump/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "node_modules/conventional-recommended-bump/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==", + "license": "ISC", "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, - "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, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "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" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz", + "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "jiti": "^2.6.1" + }, "engines": { - "node": ">=12.0.0" + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" } }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "license": "Apache-2.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==" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8.6.0" + "node": ">= 8" } }, - "node_modules/fast-glob/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==", - "dependencies": { - "is-glob": "^4.0.1" + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">= 6" + "node": ">=4" } }, - "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==" - }, - "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==" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ] - }, - "node_modules/fast-xml-parser": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", - "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], "license": "MIT", - "dependencies": { - "strnum": "^2.1.0" + "engines": { + "node": ">=12" }, - "bin": { - "fxparser": "src/cli/cli.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dependencies": { - "reusify": "^1.0.4" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dependencies": { - "bser": "2.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "license": "MIT", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dependencies": { - "escape-string-regexp": "^1.0.5" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": "*" } }, - "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/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=16.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/file-type": { - "version": "21.3.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", - "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", - "dev": true, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=20" + "node": ">=0.10.0" }, "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "dependencies": { - "minimatch": "^5.0.1" + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", + "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==" + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dependencies": { - "balanced-match": "^1.0.0" + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "brace-expansion": "^2.0.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, "engines": { - "node": ">=16" + "node": ">=0.4.0" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "license": "ISC" }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", + "node_modules/detect-indent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", + "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", + "dev": true, "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=12.20" } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dependencies": { - "is-callable": "^1.2.7" + "is-obj": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://dotenvx.com" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "license": "BSD-2-Clause", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "dotenv": "^16.4.5" }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://dotenvx.com" } }, - "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==", - "license": "ISC", - "engines": { - "node": ">=14" + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.4" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/front-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", - "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "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==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "license": "MIT", + "optional": true, "dependencies": { - "js-yaml": "^3.13.1" + "iconv-lite": "^0.6.2" } }, - "node_modules/front-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", + "optional": true, "dependencies": { - "sprintf-js": "~1.0.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/front-matter/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "once": "^1.4.0" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=14.14" + "node": ">=8.6" } }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "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==" + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } }, - "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/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT" + }, + "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==", + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "license": "MIT", "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -12533,58 +9915,73 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" } }, - "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, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" } }, - "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/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 0.4" } }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "dev": true, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">=18" + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dependencies": { + "hasown": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, - "node_modules/get-intrinsic": { + "node_modules/es-to-primitive": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -12593,322 +9990,390 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, "bin": { - "get-pkg-repo": "src/cli.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, - "node_modules/get-pkg-repo/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/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.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" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/get-pkg-repo/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==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "license": "ISC", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/get-pkg-repo/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "ms": "^2.1.1" } }, - "node_modules/get-pkg-repo/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==", + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "debug": "^3.2.7" }, "engines": { - "node": ">=10" + "node": ">=4" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/get-pkg-repo/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "ms": "^2.1.1" } }, - "node_modules/get-pkg-repo/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==", - "license": "ISC", + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, "engines": { - "node": ">=10" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "json5": "lib/cli.js" } }, - "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/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/git-hooks-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.2.0.tgz", - "integrity": "sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==", - "dev": true, - "funding": { - "url": "https://github.com/fisker/git-hooks-list?sponsor=1" + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/git-raw-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", - "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", - "dev": true, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", "license": "MIT", - "dependencies": { - "dargs": "^8.0.0", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.mjs" - }, - "engines": { - "node": ">=16" + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/git-raw-commits/node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "dev": true, + "node_modules/eslint-plugin-unused-imports": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.2.0.tgz", + "integrity": "sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==", "license": "MIT", - "engines": { - "node": ">=16.10" + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "license": "MIT", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "license": "BSD-2-Clause", "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-remote-origin-url/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", + "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==", "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-semver-tags": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz", - "integrity": "sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==", - "license": "MIT", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "meow": "^8.1.2", - "semver": "^7.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=14" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/git-semver-tags/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==", - "license": "MIT", + "node_modules/eslint/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==", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/git-semver-tags/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/git-semver-tags/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==", - "license": "MIT", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "p-locate": "^4.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/git-semver-tags/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "license": "MIT", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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==", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" @@ -12917,355 +10382,404 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/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==", - "license": "MIT", + "node_modules/eslint/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/eslint/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==", "dependencies": { - "p-try": "^2.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/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==", - "license": "MIT", + "node_modules/eslint/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==", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/node_modules/path-exists": { + "node_modules/eslint/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==", - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/git-semver-tags/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "license": "MIT", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "license": "BSD-2-Clause", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "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==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "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==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.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==", "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/git-semver-tags/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" } }, - "node_modules/git-semver-tags/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==", - "license": "ISC", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "license": "MIT", - "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" + "engines": { + "node": ">=6" } }, - "node_modules/git-url-parse": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", - "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", - "license": "MIT", - "dependencies": { - "git-up": "^7.0.0" - } + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "license": "BSD", - "dependencies": { - "ini": "^1.3.2" + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" } }, - "node_modules/gitconfiglocal/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" }, - "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, + "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==" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "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" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.6.0" } }, - "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/fast-glob/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==", "dependencies": { - "is-glob": "^4.0.3" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">= 6" } }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "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==" + }, + "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==" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] + }, + "node_modules/fast-xml-parser": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", + "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT", "dependencies": { - "ini": "4.1.1" + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "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/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "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==", + "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16.0.0" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/file-type": { + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", + "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "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==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "license": "MIT", + "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==", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "minimatch": "^5.0.1" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "engines": { - "node": ">= 0.4" + "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==", + "dependencies": { + "brace-expansion": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "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/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "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==", + "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dependencies": { - "has-symbols": "^1.0.3" + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -13274,361 +10788,371 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC" - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", - "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { - "lru-cache": "^11.1.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", + "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==", + "license": "ISC", "engines": { - "node": "20 || >=22" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause" - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" + "js-yaml": "^3.13.1" } }, - "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==", - "engines": { - "node": ">=10.17.0" + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", - "dev": true, - "bin": { - "husky": "bin.js" - }, - "engines": { - "node": ">=18" + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/typicode" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" }, - "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/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=14.14" } }, - "node_modules/ignore-walk": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", - "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "license": "ISC", "dependencies": { - "minimatch": "^10.0.3" + "minipass": "^7.0.3" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, + "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==" + }, + "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": "20 || >=22" - }, + "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==", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-fresh/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/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", "engines": { - "node": ">=4" + "node": "6.* || 8.* || >= 10.*" } }, - "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==", + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", - "dev": true, - "license": "MIT", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "license": "MIT", + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, "engines": { - "node": ">=0.8.19" + "node": ">=6.9.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/get-pkg-repo/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==", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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, + "node_modules/get-pkg-repo/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==", + "license": "ISC", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.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/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/init-package-json": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-8.2.2.tgz", - "integrity": "sha512-pXVMn67Jdw2hPKLCuJZj62NC9B2OIDd1R3JwZXTHXuEnfN3Uq5kJbKOSld6YEU+KOGfMD82EzxFTYz5o0SSJoA==", + "node_modules/get-pkg-repo/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "license": "ISC", "dependencies": { - "@npmcli/package-json": "^7.0.0", - "npm-package-arg": "^13.0.0", - "promzard": "^2.0.0", - "read": "^4.0.0", - "semver": "^7.7.2", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^6.0.2" + "yallist": "^4.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10" } }, - "node_modules/inquirer": { - "version": "9.3.8", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.8.tgz", - "integrity": "sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==", - "dev": true, + "node_modules/get-pkg-repo/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==", "license": "MIT", "dependencies": { - "@inquirer/external-editor": "^1.0.2", - "@inquirer/figures": "^1.0.3", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/get-pkg-repo/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/inversify": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", - "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", - "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2", - "@inversifyjs/container": "1.15.0", - "@inversifyjs/core": "9.2.0" + "node_modules/get-pkg-repo/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==", + "license": "ISC", + "engines": { + "node": ">=10" } }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "license": "MIT", + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "engines": { - "node": ">= 12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dependencies": { - "async-function": "^1.0.0", "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -13637,284 +11161,349 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/git-hooks-list": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.2.0.tgz", + "integrity": "sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==", + "dev": true, + "funding": { + "url": "https://github.com/fisker/git-hooks-list?sponsor=1" + } + }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.2" + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" }, "engines": { - "node": ">= 0.4" + "node": ">=16" + } + }, + "node_modules/git-raw-commits/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "node_modules/git-semver-tags": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz", + "integrity": "sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==", "license": "MIT", "dependencies": { - "ci-info": "^3.2.0" + "meow": "^8.1.2", + "semver": "^7.0.0" }, "bin": { - "is-ci": "bin.js" + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=14" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/git-semver-tags/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==", + "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" + }, + "node_modules/git-semver-tags/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==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/git-semver-tags/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/git-semver-tags/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==", + "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/git-semver-tags/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==", "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "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/git-semver-tags/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==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/git-semver-tags/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, + "node_modules/git-semver-tags/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "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==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/git-semver-tags/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "license": "MIT", + "node_modules/git-semver-tags/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==", + "license": "ISC", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/is-number": { + "node_modules/git-up": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "license": "MIT", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "node_modules/git-url-parse": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", + "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "git-up": "^7.0.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/gitconfiglocal/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "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==", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, "engines": { "node": ">= 0.4" }, @@ -13922,13 +11511,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dependencies": { - "call-bound": "^1.0.3" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "engines": { "node": ">= 0.4" }, @@ -13936,35 +11522,50 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ssh": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz", - "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==", + "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==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "license": "MIT", "dependencies": { - "protocols": "^2.0.1" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "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, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "engines": { "node": ">= 0.4" }, @@ -13972,28 +11573,31 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.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==", "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dependencies": { - "which-typed-array": "^1.1.16" + "dunder-proto": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -14002,21 +11606,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "engines": { "node": ">= 0.4" }, @@ -14024,12 +11617,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "call-bound": "^1.0.3" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -14038,1114 +11631,797 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", + "node_modules/hosted-git-info": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", + "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", + "license": "ISC", "dependencies": { - "is-docker": "^2.0.0" + "lru-cache": "^11.1.0" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "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, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=8" + "node": "20 || >=22" } }, - "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, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", "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" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "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, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "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" - }, + "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==", "engines": { - "node": ">=10" + "node": ">=10.17.0" } }, - "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==", + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "bin": { + "husky": "bin.js" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/iterare": { + "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=6" - } + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 4" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "node_modules/ignore-walk": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", + "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", + "license": "ISC", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" + "minimatch": "^10.0.3" }, "engines": { - "node": ">=10" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/jake/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/ignore-walk/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "color-convert": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jake/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/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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" - }, + "node_modules/import-fresh/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==", "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": ">=4" } }, - "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==", + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "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" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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" - }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-circus/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/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/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.17.0 || ^16.13.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, + "node_modules/init-package-json": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-8.2.2.tgz", + "integrity": "sha512-pXVMn67Jdw2hPKLCuJZj62NC9B2OIDd1R3JwZXTHXuEnfN3Uq5kJbKOSld6YEU+KOGfMD82EzxFTYz5o0SSJoA==", + "license": "ISC", "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" + "@npmcli/package-json": "^7.0.0", + "npm-package-arg": "^13.0.0", + "promzard": "^2.0.0", + "read": "^4.0.0", + "semver": "^7.7.2", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^6.0.2" }, "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": "^20.17.0 || >=22.9.0" } }, - "node_modules/jest-cli/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/inquirer": { + "version": "9.3.8", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.8.tgz", + "integrity": "sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@inquirer/external-editor": "^1.0.2", + "@inquirer/figures": "^1.0.3", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/jest-cli/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, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "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, + "node_modules/inversify": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", + "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", + "license": "MIT", "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 - } + "@inversifyjs/common": "1.5.2", + "@inversifyjs/container": "1.15.0", + "@inversifyjs/core": "9.2.0" } }, - "node_modules/jest-config/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 12" } }, - "node_modules/jest-config/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, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "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==" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/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, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dependencies": { - "color-convert": "^2.0.1" + "has-bigints": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/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, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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" - }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "license": "MIT", "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" + "ci-info": "^3.2.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/jest-each/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, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dependencies": { - "color-convert": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-each/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, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "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" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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" + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.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, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-matcher-utils/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/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils/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, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "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==", "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" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/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" - }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "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==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.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, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "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" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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" - }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve/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/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve/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, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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-runner/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/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, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/is-ssh": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz", + "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==", + "license": "MIT", "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" + "protocols": "^2.0.1" } }, - "node_modules/jest-runtime/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, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/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, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/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, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dependencies": { - "color-convert": "^2.0.1" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/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" - }, + "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==", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util/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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/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, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "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" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-validate/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, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "is-docker": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", "dev": true, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } - }, - "node_modules/jest-validate/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, + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "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" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { + "node_modules/jake/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, "dependencies": { "color-convert": "^2.0.1" }, @@ -15156,11 +12432,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/chalk": { + "node_modules/jake/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" @@ -15172,36 +12447,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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/jiti": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", @@ -15229,18 +12474,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "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", @@ -15381,15 +12614,6 @@ "node": ">=0.10.0" } }, - "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/lerna": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/lerna/-/lerna-9.0.3.tgz", @@ -15831,15 +13055,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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", @@ -16248,12 +13463,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -16475,15 +13684,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "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/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -16508,12 +13708,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, "node_modules/make-fetch-happen": { "version": "15.0.2", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz", @@ -16536,15 +13730,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "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/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -17232,24 +14417,12 @@ "node": ">=18" } }, - "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-machine-id": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "license": "MIT" }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true - }, "node_modules/nopt": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", @@ -17310,15 +14483,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, - "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-bundled": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", @@ -18335,15 +15499,6 @@ "parse-path": "^7.0.0" } }, - "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", @@ -18461,15 +15616,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "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", @@ -18610,20 +15756,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "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/proc-log": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", @@ -18679,19 +15811,6 @@ "node": ">=10" } }, - "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/promzard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/promzard/-/promzard-2.0.0.tgz", @@ -18724,22 +15843,6 @@ "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", @@ -19616,12 +16719,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "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", @@ -19772,16 +16869,6 @@ "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/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -19854,27 +16941,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "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/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -19932,19 +16998,6 @@ "node": ">=0.6.19" } }, - "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", @@ -20263,20 +17316,6 @@ "node": ">=4" } }, - "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, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -20394,12 +17433,6 @@ "node": ">=14.0.0" } }, - "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", @@ -20474,67 +17507,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-jest": { - "version": "29.3.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz", - "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==", - "dev": true, - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.1", - "type-fest": "^4.39.1", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -20588,15 +17560,6 @@ "node": ">= 0.8.0" } }, - "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, - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -20873,36 +17836,6 @@ "yarn": "*" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "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": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -20929,20 +17862,6 @@ "uuid": "dist/esm/bin/uuid" } }, - "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, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -21178,15 +18097,6 @@ "node": "20 || >=22" } }, - "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, - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -21423,19 +18333,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "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, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/write-json-file": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", @@ -21544,12 +18441,6 @@ "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/yaml": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", diff --git a/package.json b/package.json index 02b2f60..c68d0aa 100644 --- a/package.json +++ b/package.json @@ -22,17 +22,13 @@ "@commitlint/cli": "^20.4.1", "@commitlint/config-conventional": "^20.4.1", "@commitlint/prompt-cli": "^20.4.1", - "@jest/globals": "^29.5.0", - "@types/jest": "^29.5.12", "@types/node": "^22.15.0", "eslint": "^9.36.0", "husky": "^9.0.11", - "jest": "^29.7.0", "lerna": "^9.0.3", "lint-staged": "^15.2.7", "prettier": "^3.3.2", "sort-package-json": "^2.10.0", - "ts-jest": "^29.2.0", "tslib": "^2.3.0", "typescript": "^5.5.3", "vitest": "^4.0.18" diff --git a/packages/airtable-mapper/tsconfig.json b/packages/airtable-mapper/tsconfig.json index d35c4e4..f7608d2 100644 --- a/packages/airtable-mapper/tsconfig.json +++ b/packages/airtable-mapper/tsconfig.json @@ -2,9 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", "target": "es2021", - "declarationDir": "./dist", "strictPropertyInitialization": false }, "include": ["src/**/*.ts"] diff --git a/packages/airtable-mapper/tsconfig.lint.json b/packages/airtable-mapper/tsconfig.lint.json index f5734fb..1386dd5 100644 --- a/packages/airtable-mapper/tsconfig.lint.json +++ b/packages/airtable-mapper/tsconfig.lint.json @@ -1,10 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "types": ["node"], - "paths": {} - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/airtable-mapper/tsconfig.spec.json b/packages/airtable-mapper/tsconfig.spec.json index c0cdfcb..cd684dc 100644 --- a/packages/airtable-mapper/tsconfig.spec.json +++ b/packages/airtable-mapper/tsconfig.spec.json @@ -1,8 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { - "baseUrl": ".", - "paths": {} + "baseUrl": "." }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/airtable-mapper/vitest.config.js b/packages/airtable-mapper/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/airtable-mapper/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/airtable-syncer/tsconfig.json b/packages/airtable-syncer/tsconfig.json index 3c226a5..cae652c 100644 --- a/packages/airtable-syncer/tsconfig.json +++ b/packages/airtable-syncer/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", - "declarationDir": "./dist", "strictPropertyInitialization": false, "experimentalDecorators": true, "emitDecoratorMetadata": true, diff --git a/packages/airtable-syncer/tsconfig.lint.json b/packages/airtable-syncer/tsconfig.lint.json index 2329a8d..f6252c4 100644 --- a/packages/airtable-syncer/tsconfig.lint.json +++ b/packages/airtable-syncer/tsconfig.lint.json @@ -1,16 +1,9 @@ { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig.lint.json", "compilerOptions": { "baseUrl": ".", - "types": ["node"], "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "paths": { - "@shiftcode/airtable-mapper": ["../airtable-mapper/src/index.ts"], - "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"], - "@shiftcode/lambda-utilities/s3": ["../lambda-utilities/src/s3/index.ts"] - } + "emitDecoratorMetadata": true }, - "include": ["**/*.ts"], - "exclude": [] + "include": ["**/*.ts"] } diff --git a/packages/airtable-syncer/tsconfig.spec.json b/packages/airtable-syncer/tsconfig.spec.json index f25dbbf..a0c9a69 100644 --- a/packages/airtable-syncer/tsconfig.spec.json +++ b/packages/airtable-syncer/tsconfig.spec.json @@ -1,16 +1,9 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { "baseUrl": ".", "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "paths": { - "@shiftcode/airtable-mapper": ["../airtable-mapper/src/index.ts"], - "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"], - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/lambda-utilities/s3": ["../lambda-utilities/src/s3/index.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] - } + "emitDecoratorMetadata": true }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/airtable-syncer/vitest.config.js b/packages/airtable-syncer/vitest.config.js index bec1c9f..d54e45b 100644 --- a/packages/airtable-syncer/vitest.config.js +++ b/packages/airtable-syncer/vitest.config.js @@ -1,16 +1,7 @@ -import path from 'node:path' - import swc from 'unplugin-swc' import { defineConfig } from 'vitest/config' -import tsconfig from './tsconfig.spec.json' - -const alias = Object.fromEntries( - Object.entries(tsconfig.compilerOptions.paths).map(([key, [value]]) => [ - key.replace('/*', ''), - path.resolve(import.meta.dirname, value.replace('/*', '')), - ]), -) +import CONFIG from '../../vitest.config.js' export default defineConfig({ plugins: [ @@ -28,7 +19,7 @@ export default defineConfig({ }), ], test: { - alias, + ...CONFIG.test, setupFiles: ['./test/vitest-setup.ts'], }, }) diff --git a/packages/branch-utilities/jest.config.js b/packages/branch-utilities/jest.config.js deleted file mode 100644 index dc32d1f..0000000 --- a/packages/branch-utilities/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-env node,es2023 */ -import { pathsToModuleNameMapper } from 'ts-jest' - -import tsConfig from './tsconfig.jest.json' with { type: 'json' } - -export default { - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - transform: { - '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.jest.json', useESM: true }], - }, - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - ...pathsToModuleNameMapper(tsConfig.compilerOptions.paths ?? {}), - }, -} diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 31e09fc..37d4cce 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -19,9 +19,9 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", - "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", - "test:ci": "npm run test", - "test:watch": "npm run test -- --watch" + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" }, "peerDependencies": { "tslib": "^2.3.0" diff --git a/packages/branch-utilities/src/lib/base.utils.spec.ts b/packages/branch-utilities/src/lib/base.utils.spec.ts index 553d2fd..e747b6f 100644 --- a/packages/branch-utilities/src/lib/base.utils.spec.ts +++ b/packages/branch-utilities/src/lib/base.utils.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { BranchInfo, getBranchInfo, isProduction, isPullRequest, parseBranchName } from './base.utils.js' import { CustomGitHubContext, GithubActionEnv, GitHubContext } from './types/index.js' import { CustomScOverrideEnv } from './types/sc-override-env-var.type.js' diff --git a/packages/branch-utilities/tsconfig.json b/packages/branch-utilities/tsconfig.json index 6812fc3..be92441 100644 --- a/packages/branch-utilities/tsconfig.json +++ b/packages/branch-utilities/tsconfig.json @@ -1,9 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist", - "declarationDir": "./dist", + "baseUrl": ".", "types": ["node"] }, "include": ["src/**/*.ts"] diff --git a/packages/branch-utilities/tsconfig.lint.json b/packages/branch-utilities/tsconfig.lint.json index aa85350..1386dd5 100644 --- a/packages/branch-utilities/tsconfig.lint.json +++ b/packages/branch-utilities/tsconfig.lint.json @@ -1,9 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["jest", "node"] - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/branch-utilities/tsconfig.jest.json b/packages/branch-utilities/tsconfig.spec.json similarity index 57% rename from packages/branch-utilities/tsconfig.jest.json rename to packages/branch-utilities/tsconfig.spec.json index d40fa1e..cd684dc 100644 --- a/packages/branch-utilities/tsconfig.jest.json +++ b/packages/branch-utilities/tsconfig.spec.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { - "baseUrl": "./" + "baseUrl": "." }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/branch-utilities/vitest.config.js b/packages/branch-utilities/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/branch-utilities/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts index bd0548a..bc2dc27 100644 --- a/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts +++ b/packages/cdk-utilities/src/lib/utils/create-basic-auth-cf-fn.function.spec.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest' +import { describe, expect, test } from 'vitest' import type { CloudFrontFunctionEvent } from './cloudfront-function-request.type.js' import { createBasicAuthCfFn } from './create-basic-auth-cf-fn.function.js' @@ -14,12 +14,12 @@ describe('createBasicAuthCfFn', () => { return getHandler() as (event: CloudFrontFunctionEvent) => any } - it('creates an executable function', () => { + test('creates an executable function', () => { const handler = setup('user1', 'p@ssw0rD') expect(typeof handler).toBe('function') }) - it('allows access with correct credentials', () => { + test('allows access with correct credentials', () => { const handler = setup('user1', 'p@ssw0rD') const event: CloudFrontFunctionEvent = { version: '1.0', @@ -40,7 +40,7 @@ describe('createBasicAuthCfFn', () => { expect(result).toBe(event.request) }) - it('denies access with incorrect credentials', () => { + test('denies access with incorrect credentials', () => { const handler = setup('user1', 'p@ssw0rD') const event: CloudFrontFunctionEvent = { version: '1.0', diff --git a/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts index 614b241..5a4dd3a 100644 --- a/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts +++ b/packages/cdk-utilities/src/lib/utils/create-language-redirect-cf.function.spec.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest' +import { describe, expect, test } from 'vitest' import type { CloudFrontFunctionEvent } from './cloudfront-function-request.type.js' import { createLanguageRedirectCfFn } from './create-language-redirect-cf.fn.js' @@ -40,25 +40,25 @@ describe('createLanguageRedirectCfFn', () => { return getHandler() as (event: CloudFrontFunctionEvent) => any } - it('creates an executable function', () => { + test('creates an executable function', () => { const handler = setup(['en', 'de'], 'en') expect(typeof handler).toBe('function') }) - it('does not contain a "debugger" statement', () => { + test('does not contain a "debugger" statement', () => { // cuz that's the only way to debug it, and we really don't want that in prod const fnCode = createLanguageRedirectCfFn(['en', 'de'], 'en') expect(fnCode).not.toMatch(/debugger;?/) }) - it('returns the request when already on a language path', () => { + test('returns the request when already on a language path', () => { const handler = setup(['en', 'de', 'fr'], 'en') const event = createCfFunctionEvent('shiftcode.io/de/some/path') const result = handler(event) expect(result).toBe(event.request) }) - it('does not accept language paths not in the list but behaves like it is an ordinary path part', () => { + test('does not accept language paths not in the list but behaves like it is an ordinary path part', () => { const handler = setup(['en', 'de', 'fr'], 'en') const event = createCfFunctionEvent('shiftcode.io/it/some/path') const result = handler(event) @@ -72,7 +72,7 @@ describe('createLanguageRedirectCfFn', () => { }) }) - it('redirects to fallback language when no cookie or header present', () => { + test('redirects to fallback language when no cookie or header present', () => { const handler = setup(['en', 'de', 'fr'], 'en') const event = createCfFunctionEvent('shiftcode.io') const result = handler(event) @@ -85,7 +85,7 @@ describe('createLanguageRedirectCfFn', () => { }) }) - it('keeps the path when redirecting to fallback language', () => { + test('keeps the path when redirecting to fallback language', () => { const handler = setup(['en', 'de', 'fr'], 'en') const event = createCfFunctionEvent('shiftcode.io/some/path') const result = handler(event) @@ -98,7 +98,7 @@ describe('createLanguageRedirectCfFn', () => { }) }) - it('redirects by accept-language header', () => { + test('redirects by accept-language header', () => { const handler = setup(['en', 'de', 'fr'], 'en', 'LANGUAGE') const event = createCfFunctionEvent('shiftcode.io', { 'accept-language': { value: 'fr, de;q=0.8, en;q=0.6' } }) const result = handler(event) @@ -111,7 +111,7 @@ describe('createLanguageRedirectCfFn', () => { }) }) - it('redirects by custom language cookie', () => { + test('redirects by custom language cookie', () => { const handler = setup(['en', 'de', 'fr'], 'en', 'LANGUAGE') const event = createCfFunctionEvent('shiftcode.io', { cookie: { value: 'en=fr;LANGUAGE=de' } }) const result = handler(event) @@ -124,7 +124,7 @@ describe('createLanguageRedirectCfFn', () => { }) }) - it('prefers cookie over accept-language header', () => { + test('prefers cookie over accept-language header', () => { const handler = setup(['en', 'de', 'fr'], 'en', 'LANGUAGE') const event = createCfFunctionEvent('shiftcode.io', { cookie: { value: 'LANGUAGE=de' }, diff --git a/packages/cdk-utilities/tsconfig.json b/packages/cdk-utilities/tsconfig.json index b6587e6..0c602ef 100644 --- a/packages/cdk-utilities/tsconfig.json +++ b/packages/cdk-utilities/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", - "declarationDir": "./dist", "strictPropertyInitialization": false, "resolveJsonModule": true, "skipLibCheck": true, diff --git a/packages/cdk-utilities/tsconfig.lint.json b/packages/cdk-utilities/tsconfig.lint.json index 8a66778..1386dd5 100644 --- a/packages/cdk-utilities/tsconfig.lint.json +++ b/packages/cdk-utilities/tsconfig.lint.json @@ -1,10 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["node"], - "paths": {} - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/cdk-utilities/tsconfig.spec.json b/packages/cdk-utilities/tsconfig.spec.json index c0cdfcb..cd684dc 100644 --- a/packages/cdk-utilities/tsconfig.spec.json +++ b/packages/cdk-utilities/tsconfig.spec.json @@ -1,8 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { - "baseUrl": ".", - "paths": {} + "baseUrl": "." }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/cdk-utilities/vitest.config.js b/packages/cdk-utilities/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/cdk-utilities/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/eslint-config-recommended/tsconfig.json b/packages/eslint-config-recommended/tsconfig.json index 6812fc3..be92441 100644 --- a/packages/eslint-config-recommended/tsconfig.json +++ b/packages/eslint-config-recommended/tsconfig.json @@ -1,9 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist", - "declarationDir": "./dist", + "baseUrl": ".", "types": ["node"] }, "include": ["src/**/*.ts"] diff --git a/packages/eslint-config-recommended/tsconfig.lint.json b/packages/eslint-config-recommended/tsconfig.lint.json index 94ff8a7..1386dd5 100644 --- a/packages/eslint-config-recommended/tsconfig.lint.json +++ b/packages/eslint-config-recommended/tsconfig.lint.json @@ -1,12 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["node"], - "paths": { - "@shiftcode/eslint-plugin-rules": ["../eslint-plugin-rules/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/eslint-plugin-rules/jest.config.js b/packages/eslint-plugin-rules/jest.config.js deleted file mode 100644 index 5f93196..0000000 --- a/packages/eslint-plugin-rules/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-env node,es2023 */ -import { pathsToModuleNameMapper } from 'ts-jest' - -import tsConfig from './tsconfig.jest.json' with { type: 'json' } - -export default { - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - transform: { - '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.jest.json', useESM: true }], - }, - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - ...pathsToModuleNameMapper(tsConfig.compilerOptions.paths ?? {}, { prefix: '' }), - }, -} diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index bc75040..05a5d44 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -19,8 +19,9 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", - "test": "jest", - "test:ci": "npm run test" + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" }, "dependencies": { "@typescript-eslint/utils": "^8.46.0" diff --git a/packages/eslint-plugin-rules/tsconfig.json b/packages/eslint-plugin-rules/tsconfig.json index 6812fc3..5490d09 100644 --- a/packages/eslint-plugin-rules/tsconfig.json +++ b/packages/eslint-plugin-rules/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": "./", - "outDir": "./dist", - "declarationDir": "./dist", "types": ["node"] }, "include": ["src/**/*.ts"] diff --git a/packages/eslint-plugin-rules/tsconfig.lint.json b/packages/eslint-plugin-rules/tsconfig.lint.json index d8b3624..1386dd5 100644 --- a/packages/eslint-plugin-rules/tsconfig.lint.json +++ b/packages/eslint-plugin-rules/tsconfig.lint.json @@ -1,9 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./" - }, - "types": ["jest", "node"], - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/utilities/tsconfig.jest.json b/packages/eslint-plugin-rules/tsconfig.spec.json similarity index 57% rename from packages/utilities/tsconfig.jest.json rename to packages/eslint-plugin-rules/tsconfig.spec.json index d40fa1e..cd684dc 100644 --- a/packages/utilities/tsconfig.jest.json +++ b/packages/eslint-plugin-rules/tsconfig.spec.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { - "baseUrl": "./" + "baseUrl": "." }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/eslint-plugin-rules/vitest.config.js b/packages/eslint-plugin-rules/vitest.config.js new file mode 100644 index 0000000..1f66570 --- /dev/null +++ b/packages/eslint-plugin-rules/vitest.config.js @@ -0,0 +1,8 @@ +import CONFIG from '../../vitest.config.js' + +export default { + test: { + ...CONFIG.test, + globals: true, // necessary for the rule-tester to work + }, +} diff --git a/packages/iac-utilities/tsconfig.json b/packages/iac-utilities/tsconfig.json index 069b9fc..6ae5679 100644 --- a/packages/iac-utilities/tsconfig.json +++ b/packages/iac-utilities/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", - "declarationDir": "./dist", "resolveJsonModule": true, "skipLibCheck": true, "types": ["node"] diff --git a/packages/iac-utilities/tsconfig.lint.json b/packages/iac-utilities/tsconfig.lint.json index 22287de..1386dd5 100644 --- a/packages/iac-utilities/tsconfig.lint.json +++ b/packages/iac-utilities/tsconfig.lint.json @@ -1,13 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "types": ["node"], - "paths": { - "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"], - "@shiftcode/lambda-utilities": ["../lambda-utilities/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/iac-utilities/tsconfig.spec.json b/packages/iac-utilities/tsconfig.spec.json index c939125..cd684dc 100644 --- a/packages/iac-utilities/tsconfig.spec.json +++ b/packages/iac-utilities/tsconfig.spec.json @@ -1,12 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { - "baseUrl": ".", - "types": ["node"], - "paths": { - "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"], - "@shiftcode/lambda-utilities": ["../lambda-utilities/src/index.ts"] - } + "baseUrl": "." }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/iac-utilities/vitest.config.js b/packages/iac-utilities/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/iac-utilities/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/inversify-logger/src/utils/log-transport-helper.spec.ts b/packages/inversify-logger/src/utils/log-transport-helper.spec.ts index bda5539..39db367 100644 --- a/packages/inversify-logger/src/utils/log-transport-helper.spec.ts +++ b/packages/inversify-logger/src/utils/log-transport-helper.spec.ts @@ -1,6 +1,6 @@ import { LogLevel, LogTransport } from '@shiftcode/logger' import { Container } from 'inversify' -import { beforeEach, describe, expect, it } from 'vitest' +import { beforeEach, describe, expect, test } from 'vitest' import { MockLogTransport, MockLogTransportConfig } from '../../test/mock-log.transport.js' import { bindLogTransport } from './log-transport-helper.js' @@ -17,12 +17,12 @@ describe('bindLogTransport Helper Function', () => { transportInstance = container.get(LogTransport) }) - it('should bind and retrieve the transport instance correctly', () => { + test('should bind and retrieve the transport instance correctly', () => { expect(transportInstance).toBeInstanceOf(MockLogTransport) expect(transportInstance['logLevel']).toBe(LogLevel.DEBUG) }) - it('should correctly call the transport instance log method', () => { + test('should correctly call the transport instance log method', () => { const timestamp = new Date() const args = ['Test message'] transportInstance.log(LogLevel.INFO, 'TestService', '#FF0000', timestamp, args) diff --git a/packages/inversify-logger/tsconfig.json b/packages/inversify-logger/tsconfig.json index a5cb0cd..8ae2d9f 100644 --- a/packages/inversify-logger/tsconfig.json +++ b/packages/inversify-logger/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", - "declarationDir": "./dist", "strictPropertyInitialization": false, "experimentalDecorators": true, "emitDecoratorMetadata": true diff --git a/packages/inversify-logger/tsconfig.lint.json b/packages/inversify-logger/tsconfig.lint.json index d7d56b6..1386dd5 100644 --- a/packages/inversify-logger/tsconfig.lint.json +++ b/packages/inversify-logger/tsconfig.lint.json @@ -1,13 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["node"], - "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/inversify-logger/tsconfig.spec.json b/packages/inversify-logger/tsconfig.spec.json index 75097cd..a0c9a69 100644 --- a/packages/inversify-logger/tsconfig.spec.json +++ b/packages/inversify-logger/tsconfig.spec.json @@ -1,11 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { "baseUrl": ".", - "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] - }, "experimentalDecorators": true, "emitDecoratorMetadata": true }, diff --git a/packages/inversify-logger/vitest.config.js b/packages/inversify-logger/vitest.config.js index fb26931..ec160f8 100644 --- a/packages/inversify-logger/vitest.config.js +++ b/packages/inversify-logger/vitest.config.js @@ -1,16 +1,3 @@ -import path from 'node:path' +import CONFIG from '../../vitest.config.js' -import { defineConfig } from 'vitest/config' - -import tsconfig from './tsconfig.spec.json' - -const alias = Object.fromEntries( - Object.entries(tsconfig.compilerOptions.paths).map(([key, [value]]) => [ - key.replace('/*', ''), - path.resolve(import.meta.dirname, value.replace('/*', '')), - ]), -) - -export default defineConfig({ - test: { alias }, -}) +export default CONFIG diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 0cec983..6da35eb 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -27,7 +27,7 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", - "test": "vitest --cache --run", + "test": "vitest --cache --run --passWithNoTests", "test:ci": "vitest --no-cache --run --passWithNoTests", "test:watch": "vitest --cache" }, diff --git a/packages/lambda-utilities/tsconfig.json b/packages/lambda-utilities/tsconfig.json index f1f269c..ec6695f 100644 --- a/packages/lambda-utilities/tsconfig.json +++ b/packages/lambda-utilities/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", - "declarationDir": "./dist", "strictPropertyInitialization": false, "types": ["node"] }, diff --git a/packages/lambda-utilities/tsconfig.lint.json b/packages/lambda-utilities/tsconfig.lint.json index cdf0e53..1386dd5 100644 --- a/packages/lambda-utilities/tsconfig.lint.json +++ b/packages/lambda-utilities/tsconfig.lint.json @@ -1,14 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "types": ["node"], - "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"], - "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/lambda-utilities/tsconfig.spec.json b/packages/lambda-utilities/tsconfig.spec.json index a55ccb1..a0c9a69 100644 --- a/packages/lambda-utilities/tsconfig.spec.json +++ b/packages/lambda-utilities/tsconfig.spec.json @@ -1,12 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { "baseUrl": ".", - "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"], - "@shiftcode/inversify-logger": ["../inversify-logger/src/index.ts"] - }, "experimentalDecorators": true, "emitDecoratorMetadata": true }, diff --git a/packages/lambda-utilities/vitest.config.js b/packages/lambda-utilities/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/lambda-utilities/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/logger/jest.config.js b/packages/logger/jest.config.js deleted file mode 100644 index 5f93196..0000000 --- a/packages/logger/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-env node,es2023 */ -import { pathsToModuleNameMapper } from 'ts-jest' - -import tsConfig from './tsconfig.jest.json' with { type: 'json' } - -export default { - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - transform: { - '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.jest.json', useESM: true }], - }, - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - ...pathsToModuleNameMapper(tsConfig.compilerOptions.paths ?? {}, { prefix: '' }), - }, -} diff --git a/packages/logger/package.json b/packages/logger/package.json index 265901b..042ee80 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -9,8 +9,8 @@ "type": "module", "exports": { ".": { - "types": "./dist/public-api.d.ts", - "default": "./dist/public-api.js" + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./node": { "types": "./dist/node/public-api.d.ts", @@ -27,9 +27,9 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", - "test": "NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" npx jest --config jest.config.js", - "test:ci": "npm run test", - "test:watch": "npm run test -- --watch" + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" }, "devDependencies": { "@shiftcode/utilities": "^5.0.0-pr254.1" diff --git a/packages/logger/src/console-json-log-transport/console-json-log.transport.spec.ts b/packages/logger/src/console-json-log-transport/console-json-log.transport.spec.ts index e4e16a1..1bf5d9a 100644 --- a/packages/logger/src/console-json-log-transport/console-json-log.transport.spec.ts +++ b/packages/logger/src/console-json-log-transport/console-json-log.transport.spec.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, test } from '@jest/globals' +import { afterEach, beforeEach, describe, expect, test } from 'vitest' import { ConsoleMock, mockConsole, restoreConsole } from '../../test/console-mock.function.js' import { LogLevel } from '../model/log-level.enum.js' diff --git a/packages/logger/src/public-api.ts b/packages/logger/src/index.ts similarity index 100% rename from packages/logger/src/public-api.ts rename to packages/logger/src/index.ts diff --git a/packages/logger/src/model/log-transport.spec.ts b/packages/logger/src/model/log-transport.spec.ts index ef82738..0f786d2 100644 --- a/packages/logger/src/model/log-transport.spec.ts +++ b/packages/logger/src/model/log-transport.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { SpyLogTransport } from '../testing/spy-log.transport.js' import { stringToColor } from '../utils/string-to-color.function.js' import { LogLevel } from './log-level.enum.js' diff --git a/packages/logger/src/model/logger.spec.ts b/packages/logger/src/model/logger.spec.ts index c6843aa..a60bcbd 100644 --- a/packages/logger/src/model/logger.spec.ts +++ b/packages/logger/src/model/logger.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { SpyLogTransport } from '../testing/spy-log.transport.js' import { stringToColor } from '../utils/string-to-color.function.js' import { LogLevel } from './log-level.enum.js' @@ -10,7 +12,7 @@ describe('Logger behavior', () => { const className = 'TestLogger' const color = stringToColor(className) - it('should send logs to all transports', () => { + test('should send logs to all transports', () => { spyTransport1 = new SpyLogTransport(LogLevel.DEBUG) spyTransport2 = new SpyLogTransport(LogLevel.INFO) logger = new Logger(className, color, [spyTransport1, spyTransport2]) @@ -19,7 +21,7 @@ describe('Logger behavior', () => { expect(spyTransport2.calls.length).toBe(1) }) - it('should respect log level', () => { + test('should respect log level', () => { spyTransport1 = new SpyLogTransport(LogLevel.DEBUG) spyTransport2 = new SpyLogTransport(LogLevel.INFO) logger = new Logger(className, color, [spyTransport1, spyTransport2]) diff --git a/packages/logger/src/node/create-console-logger.function.spec.ts b/packages/logger/src/node/create-console-logger.function.spec.ts index b36f61c..703270c 100644 --- a/packages/logger/src/node/create-console-logger.function.spec.ts +++ b/packages/logger/src/node/create-console-logger.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { ConsoleJsonLogTransport } from '../console-json-log-transport/console-json-log.transport.js' import { LogLevel } from '../model/log-level.enum.js' import { Logger } from '../model/logger.js' @@ -5,7 +7,7 @@ import { createConsoleLogger } from './create-console-logger.function.js' import { NodeConsoleLogTransport } from './node-console-log-transport/node-console-log.transport.js' describe('createConsoleLogger', () => { - it('should create logger with NodeConsoleLogTransport when type is "node"', () => { + test('should create logger with NodeConsoleLogTransport when type is "node"', () => { const logger: Logger = createConsoleLogger( 'test-logger', { node: { logLevel: LogLevel.DEBUG }, json: { logLevel: LogLevel.ERROR } }, @@ -18,7 +20,7 @@ describe('createConsoleLogger', () => { expect(logger['loggerTransports'][0]['logLevel']).toBe(LogLevel.DEBUG) }) - it('should create logger with ConsoleJsonLogTransport when type is "json"', () => { + test('should create logger with ConsoleJsonLogTransport when type is "json"', () => { const logger: Logger = createConsoleLogger( 'test-logger', { node: { logLevel: LogLevel.DEBUG }, json: { logLevel: LogLevel.ERROR } }, diff --git a/packages/logger/src/node/node-console-log-transport/node-console-log-transport.spec.ts b/packages/logger/src/node/node-console-log-transport/node-console-log-transport.spec.ts index 39f5e0e..a1152c9 100644 --- a/packages/logger/src/node/node-console-log-transport/node-console-log-transport.spec.ts +++ b/packages/logger/src/node/node-console-log-transport/node-console-log-transport.spec.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, test } from '@jest/globals' +import { afterEach, beforeEach, describe, expect, test } from 'vitest' import { ConsoleMock, mockConsole, restoreConsole } from '../../../test/console-mock.function.js' import { LogLevel } from '../../model/log-level.enum.js' diff --git a/packages/logger/src/services/base-logger.service.spec.ts b/packages/logger/src/services/base-logger.service.spec.ts index 0985dd6..6621d9a 100644 --- a/packages/logger/src/services/base-logger.service.spec.ts +++ b/packages/logger/src/services/base-logger.service.spec.ts @@ -1,17 +1,26 @@ +import { pickProps } from '@shiftcode/utilities' +import { describe, expect, test } from 'vitest' + import { LogLevel } from '../model/log-level.enum.js' import { Logger } from '../model/logger.js' import { SpyLogTransport } from '../testing/spy-log.transport.js' import { BaseLoggerService } from './base-logger.service.js' describe('BaseLoggerService with SpyLogTransport', () => { - it('should use the spy log transport', () => { + test('picks the correct properties from the log transport config', () => { + const logTransportConfig = { logLevel: LogLevel.DEBUG, extraProp: 'should be ignored' } + const pickedConfig = pickProps(logTransportConfig, ['logLevel']) + expect(pickedConfig).toEqual({ logLevel: LogLevel.DEBUG }) + }) + + test('should use the spy log transport', () => { const baseLoggerService = new BaseLoggerService([new SpyLogTransport(LogLevel.DEBUG)]) const logger: Logger = baseLoggerService.getInstance('MyLogger', '#abcdef') expect(logger['loggerTransports'][0] instanceof SpyLogTransport).toBeTruthy() expect(logger['loggerTransports'][0]['logLevel']).toBe(LogLevel.DEBUG) }) - it('should have the custom name and color passed to the logger service', () => { + test('should have the custom name and color passed to the logger service', () => { const baseLoggerService = new BaseLoggerService([new SpyLogTransport(LogLevel.DEBUG)]) const logger: Logger = baseLoggerService.getInstance('MyLogger', '#abcdef') expect(logger['name']).toBe('MyLogger') diff --git a/packages/logger/src/testing/spy-log.transport.ts b/packages/logger/src/testing/spy-log.transport.ts index 21a1a98..47cc4e3 100644 --- a/packages/logger/src/testing/spy-log.transport.ts +++ b/packages/logger/src/testing/spy-log.transport.ts @@ -1,11 +1,11 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import { jest } from '@jest/globals' +import { vi } from 'vitest' import { LogLevel } from '../model/log-level.enum.js' import { LogTransport } from '../model/log-transport.js' export class SpyLogTransport extends LogTransport { - private logMock = jest.fn() + private logMock = vi.fn() constructor(logLevel = LogLevel.INFO) { super(logLevel) diff --git a/packages/logger/src/utils/get-json-stringify-replacer.function.spec.ts b/packages/logger/src/utils/get-json-stringify-replacer.function.spec.ts index 97c8394..9999db0 100644 --- a/packages/logger/src/utils/get-json-stringify-replacer.function.spec.ts +++ b/packages/logger/src/utils/get-json-stringify-replacer.function.spec.ts @@ -1,16 +1,16 @@ -import { expect } from '@jest/globals' +import { describe, expect, test } from 'vitest' import { getJsonStringifyReplacer } from './get-json-stringify-replacer.function.js' describe('getJsonStringifyReplacer', () => { - it('should handle BigInt values', () => { + test('should handle BigInt values', () => { const replacer = getJsonStringifyReplacer() const result = replacer('key', 123456789123456789n) expect(result).toBe('123456789123456789') }) - it('should format Error instances', () => { + test('should format Error instances', () => { const error = new Error('Test error') const replacer = getJsonStringifyReplacer() const result = replacer('key', error) @@ -24,7 +24,7 @@ describe('getJsonStringifyReplacer', () => { }) }) - it('should handle circular references', () => { + test('should handle circular references', () => { const obj: any = { name: 'test' } // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access obj.self = obj @@ -40,14 +40,14 @@ describe('getJsonStringifyReplacer', () => { expect(secondResult).toBe('') }) - it('should not alter null values', () => { + test('should not alter null values', () => { const replacer = getJsonStringifyReplacer() const result = replacer('key', null) expect(result).toBe(null) }) - it('should not alter primitive values', () => { + test('should not alter primitive values', () => { const replacer = getJsonStringifyReplacer() expect(replacer('key', 'string')).toBe('string') @@ -56,14 +56,14 @@ describe('getJsonStringifyReplacer', () => { expect(replacer('key', undefined)).toBe(undefined) }) - it('should not alter simple arrays', () => { + test('should not alter simple arrays', () => { const arr = [1, 2, 3] const replacer = getJsonStringifyReplacer() const result = replacer('arr', arr) expect(result).toBe(arr) }) - it('should apply custom replacer', () => { + test('should apply custom replacer', () => { const customReplacer = (key: string, value: unknown) => { if (key === 'secret') { return '***' @@ -76,7 +76,7 @@ describe('getJsonStringifyReplacer', () => { expect(replacer('secret', 'password123')).toBe('***') }) - it('should use custom replacer prior handling BigInt values', () => { + test('should use custom replacer prior handling BigInt values', () => { const doubleBigInts = (key: string, value: unknown) => { if (typeof value === 'bigint') { return value * 2n @@ -89,7 +89,7 @@ describe('getJsonStringifyReplacer', () => { expect(result).toBe('100') }) - it('should use custom replacer prior handling Error instances', () => { + test('should use custom replacer prior handling Error instances', () => { const wrapErrors = (key: string, value: unknown) => { if (value instanceof Error) { return new Error('Failed', { cause: value }) @@ -104,7 +104,7 @@ describe('getJsonStringifyReplacer', () => { expect(result).toHaveProperty('cause', expect.objectContaining({ message: 'Original error' })) }) - it('should work with JSON.stringify', () => { + test('should work with JSON.stringify', () => { const obj: any = { name: 'test', symbol: Symbol('test'), diff --git a/packages/logger/src/utils/json-log-object-data.spec.ts b/packages/logger/src/utils/json-log-object-data.spec.ts index 6f4073b..77ff613 100644 --- a/packages/logger/src/utils/json-log-object-data.spec.ts +++ b/packages/logger/src/utils/json-log-object-data.spec.ts @@ -1,10 +1,10 @@ -import { expect } from '@jest/globals' +import { describe, expect, test } from 'vitest' import { LogLevel } from '../model/log-level.enum.js' import { createJsonLogObjectData } from './create-json-log-object-data.function.js' describe('createJsonLogObjectData', () => { - it('should create a log object with a message', () => { + test('should create a log object with a message', () => { const result = createJsonLogObjectData(LogLevel.INFO, 'MyClass', new Date('2023-01-01T00:00:00.000Z'), [ 'Test message', ]) @@ -17,7 +17,7 @@ describe('createJsonLogObjectData', () => { }) }) - it('should create a log object with an error', () => { + test('should create a log object with an error', () => { const error = new Error('Test error') error.name = 'TestError' @@ -32,13 +32,13 @@ describe('createJsonLogObjectData', () => { name: 'TestError', message: 'Test error', cause: undefined, - location: expect.stringContaining('json-log-object-data.spec.ts'), + location: expect.any(String), stack: expect.stringContaining(error.name), }, }) }) - it('should create a log object with an message and an error', () => { + test('should create a log object with an message and an error', () => { const error = new Error('Test error') error.name = 'TestError' @@ -56,13 +56,13 @@ describe('createJsonLogObjectData', () => { name: 'TestError', message: 'Test error', cause: undefined, - location: expect.stringContaining('json-log-object-data.spec.ts'), + location: expect.any(String), stack: expect.stringContaining(error.name), }, }) }) - it('should handle additional data', () => { + test('should handle additional data', () => { const result = createJsonLogObjectData(LogLevel.DEBUG, 'MyClass', new Date('2023-01-01T00:00:00.000Z'), [ 'Test message', { key: 'value' }, diff --git a/packages/logger/src/utils/push-to-ring-buffer.function.spec.ts b/packages/logger/src/utils/push-to-ring-buffer.function.spec.ts index 946041d..1b94d27 100644 --- a/packages/logger/src/utils/push-to-ring-buffer.function.spec.ts +++ b/packages/logger/src/utils/push-to-ring-buffer.function.spec.ts @@ -1,9 +1,9 @@ -import { describe, expect } from '@jest/globals' +import { describe, expect, test } from 'vitest' import { pushToRingBuffer } from './push-to-ring-buffer.function.js' describe('pushToRingBuffer', () => { - it('should push items to the buffer and maintain max size', () => { + test('should push items to the buffer and maintain max size', () => { const buffer: number[] = [] const maxSize = 3 @@ -16,7 +16,7 @@ describe('pushToRingBuffer', () => { expect(buffer).toEqual([2, 3, 4]) }) - it('removes all items that are too many and keeps the tail', () => { + test('removes all items that are too many and keeps the tail', () => { const buffer = [1, 2, 3, 4] const maxSize = 2 @@ -24,13 +24,13 @@ describe('pushToRingBuffer', () => { expect(buffer).toEqual([4, 5]) }) - it('does not throw or fail for negative maxSize but simply clears the buffer', () => { + test('does not throw or fail for negative maxSize but simply clears the buffer', () => { const buffer1: string[] = ['foo'] pushToRingBuffer(buffer1, 'bar', -1) expect(buffer1).toEqual([]) }) - it('does not throw or fail for zero maxSize but simply clears the buffer', () => { + test('does not throw or fail for zero maxSize but simply clears the buffer', () => { const buffer2: string[] = ['foo'] pushToRingBuffer(buffer2, 'bar', 0) expect(buffer2).toEqual([]) diff --git a/packages/logger/test/console-mock.function.ts b/packages/logger/test/console-mock.function.ts index a17f668..cab1a4f 100644 --- a/packages/logger/test/console-mock.function.ts +++ b/packages/logger/test/console-mock.function.ts @@ -1,21 +1,21 @@ -import { jest } from '@jest/globals' +import { type Mock, vi } from 'vitest' const originalConsole = { ...console } export interface ConsoleMock { - debug: jest.Mock - info: jest.Mock - warn: jest.Mock - error: jest.Mock - log?: jest.Mock + debug: Mock + info: Mock + warn: Mock + error: Mock + log?: Mock } export function mockConsole() { - console.log = jest.fn() - console.debug = jest.fn() - console.info = jest.fn() - console.warn = jest.fn() - console.error = jest.fn() + console.log = vi.fn() + console.debug = vi.fn() + console.info = vi.fn() + console.warn = vi.fn() + console.error = vi.fn() return (console) } diff --git a/packages/logger/tsconfig.jest.json b/packages/logger/tsconfig.jest.json deleted file mode 100644 index 141e5f5..0000000 --- a/packages/logger/tsconfig.jest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.jest.json", - "compilerOptions": { - "baseUrl": "./", - "paths": { - "@shiftcode/utilities": ["../utilities/src"] - } - }, - "include": ["src/**/*.spec.ts", "test/**/*.ts"] -} diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json index 86dd6f1..76f4a09 100644 --- a/packages/logger/tsconfig.json +++ b/packages/logger/tsconfig.json @@ -1,10 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "rootDir": "./src", - "baseUrl": "./", - "outDir": "./dist", - "declarationDir": "./dist" + "baseUrl": ".", + "rootDir": "./src" }, "include": ["src/**/*.ts"] } diff --git a/packages/logger/tsconfig.lint.json b/packages/logger/tsconfig.lint.json index 4727b0c..1386dd5 100644 --- a/packages/logger/tsconfig.lint.json +++ b/packages/logger/tsconfig.lint.json @@ -1,12 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["jest", "node"], - "paths": { - "@shiftcode/utilities": ["../utilities/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/eslint-plugin-rules/tsconfig.jest.json b/packages/logger/tsconfig.spec.json similarity index 57% rename from packages/eslint-plugin-rules/tsconfig.jest.json rename to packages/logger/tsconfig.spec.json index d40fa1e..cd684dc 100644 --- a/packages/eslint-plugin-rules/tsconfig.jest.json +++ b/packages/logger/tsconfig.spec.json @@ -1,7 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { - "baseUrl": "./" + "baseUrl": "." }, "include": ["src/**/*.spec.ts", "test/**/*.ts"] } diff --git a/packages/logger/vitest.config.js b/packages/logger/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/logger/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/nest-logger/src/services/logger.service.spec.ts b/packages/nest-logger/src/services/logger.service.spec.ts index c2ebf11..9a64124 100644 --- a/packages/nest-logger/src/services/logger.service.spec.ts +++ b/packages/nest-logger/src/services/logger.service.spec.ts @@ -1,7 +1,7 @@ import { Inject, Injectable } from '@nestjs/common' import { Test, TestingModule } from '@nestjs/testing' import { Logger, LogLevel } from '@shiftcode/logger' -import { beforeEach, describe, expect, it } from 'vitest' +import { beforeEach, describe, expect, test } from 'vitest' import { MockLogTransport } from '../../test/mock-log.transport.js' import { LoggerModule } from '../module/logger.module.js' @@ -42,7 +42,7 @@ describe('LoggerService with Mock Transport', () => { }).compile() }) - it('should use the mock log transport', () => { + test('should use the mock log transport', () => { const createdLogger = testingModule.get(CustomService).logger expect(createdLogger['loggerTransports'][0]).toBeInstanceOf(MockLogTransport) @@ -55,17 +55,17 @@ describe('LoggerService with Mock Transport', () => { expect(injectedLogger['loggerTransports'][0].logLevel).toBe(LogLevel.DEBUG) }) - it('should have the custom name passed to the logger service', () => { + test('should have the custom name passed to the logger service', () => { const logger = testingModule.get(CustomService).logger expect(logger['name']).toBe('MyCustomService') }) - it('should have the name of the requesting service', () => { + test('should have the name of the requesting service', () => { const logger = testingModule.get(SimpleService).logger expect(logger['name']).toBe('SimpleService') }) - it('should use the same LoggerService instance across the application', () => { + test('should use the same LoggerService instance across the application', () => { const loggerService1 = testingModule.get(LoggerService) const loggerService2 = testingModule.get(LoggerService) const loggerService3 = testingModule.get(CustomService).loggerService @@ -74,7 +74,7 @@ describe('LoggerService with Mock Transport', () => { expect(loggerService2).toBe(loggerService3) }) - it('should create a new instance for every directly injected logger', () => { + test('should create a new instance for every directly injected logger', () => { const logger = testingModule.get(OtherSimpleService).logger expect(logger['name']).toBe('OtherSimpleService') diff --git a/packages/nest-logger/tsconfig.json b/packages/nest-logger/tsconfig.json index 3c226a5..cae652c 100644 --- a/packages/nest-logger/tsconfig.json +++ b/packages/nest-logger/tsconfig.json @@ -2,8 +2,6 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./dist", - "declarationDir": "./dist", "strictPropertyInitialization": false, "experimentalDecorators": true, "emitDecoratorMetadata": true, diff --git a/packages/nest-logger/tsconfig.lint.json b/packages/nest-logger/tsconfig.lint.json index d7d56b6..1386dd5 100644 --- a/packages/nest-logger/tsconfig.lint.json +++ b/packages/nest-logger/tsconfig.lint.json @@ -1,13 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["node"], - "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/nest-logger/tsconfig.spec.json b/packages/nest-logger/tsconfig.spec.json index 75097cd..a0c9a69 100644 --- a/packages/nest-logger/tsconfig.spec.json +++ b/packages/nest-logger/tsconfig.spec.json @@ -1,11 +1,7 @@ { - "extends": "../../tsconfig.jest.json", + "extends": "../../tsconfig.spec.json", "compilerOptions": { "baseUrl": ".", - "paths": { - "@shiftcode/logger": ["../logger/src/public-api.ts"], - "@shiftcode/utilities": ["../utilities/src/index.ts"] - }, "experimentalDecorators": true, "emitDecoratorMetadata": true }, diff --git a/packages/nest-logger/vitest.config.js b/packages/nest-logger/vitest.config.js index fb26931..ec160f8 100644 --- a/packages/nest-logger/vitest.config.js +++ b/packages/nest-logger/vitest.config.js @@ -1,16 +1,3 @@ -import path from 'node:path' +import CONFIG from '../../vitest.config.js' -import { defineConfig } from 'vitest/config' - -import tsconfig from './tsconfig.spec.json' - -const alias = Object.fromEntries( - Object.entries(tsconfig.compilerOptions.paths).map(([key, [value]]) => [ - key.replace('/*', ''), - path.resolve(import.meta.dirname, value.replace('/*', '')), - ]), -) - -export default defineConfig({ - test: { alias }, -}) +export default CONFIG diff --git a/packages/publish-helper/jest.config.js b/packages/publish-helper/jest.config.js deleted file mode 100644 index dc32d1f..0000000 --- a/packages/publish-helper/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-env node,es2023 */ -import { pathsToModuleNameMapper } from 'ts-jest' - -import tsConfig from './tsconfig.jest.json' with { type: 'json' } - -export default { - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - transform: { - '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.jest.json', useESM: true }], - }, - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - ...pathsToModuleNameMapper(tsConfig.compilerOptions.paths ?? {}), - }, -} diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index 5e02f05..b0210f6 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -16,9 +16,9 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ./dist/prepare-dist.js", - "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js --passWithNoTests", - "test:ci": "npm run test", - "test:watch": "npm run test -- --watch" + "test": "vitest --cache --run --passWithNoTests", + "test:ci": "vitest --no-cache --run --passWithNoTests", + "test:watch": "vitest --cache" }, "dependencies": { "conventional-changelog-angular": "^8.0.0", diff --git a/packages/publish-helper/src/prepare-dist.spec.ts b/packages/publish-helper/src/prepare-dist.spec.ts index 88eb9f3..6969329 100644 --- a/packages/publish-helper/src/prepare-dist.spec.ts +++ b/packages/publish-helper/src/prepare-dist.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { fixPackageJsonPaths } from './helpers.js' describe('prepare-dist', () => { diff --git a/packages/publish-helper/tsconfig.jest.json b/packages/publish-helper/tsconfig.jest.json deleted file mode 100644 index a2a478b..0000000 --- a/packages/publish-helper/tsconfig.jest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.jest.json", - "compilerOptions": { - "baseUrl": "./", - "paths": { - "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"] - } - }, - "include": ["src/**/*.spec.ts", "test/**/*.ts"] -} diff --git a/packages/publish-helper/tsconfig.json b/packages/publish-helper/tsconfig.json index f861ecd..7ee9f7b 100644 --- a/packages/publish-helper/tsconfig.json +++ b/packages/publish-helper/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist", + "baseUrl": ".", "declaration": false, "declarationDir": null, "types": ["node"] diff --git a/packages/publish-helper/tsconfig.lint.json b/packages/publish-helper/tsconfig.lint.json index e68dd88..1386dd5 100644 --- a/packages/publish-helper/tsconfig.lint.json +++ b/packages/publish-helper/tsconfig.lint.json @@ -1,12 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["jest", "node"], - "paths": { - "@shiftcode/branch-utilities": ["../branch-utilities/src/index.ts"] - } - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/publish-helper/tsconfig.spec.json b/packages/publish-helper/tsconfig.spec.json new file mode 100644 index 0000000..cd684dc --- /dev/null +++ b/packages/publish-helper/tsconfig.spec.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.spec.json", + "compilerOptions": { + "baseUrl": "." + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} diff --git a/packages/publish-helper/vitest.config.js b/packages/publish-helper/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/publish-helper/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/packages/utilities/jest.config.js b/packages/utilities/jest.config.js deleted file mode 100644 index dc32d1f..0000000 --- a/packages/utilities/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-env node,es2023 */ -import { pathsToModuleNameMapper } from 'ts-jest' - -import tsConfig from './tsconfig.jest.json' with { type: 'json' } - -export default { - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - transform: { - '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.jest.json', useESM: true }], - }, - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - ...pathsToModuleNameMapper(tsConfig.compilerOptions.paths ?? {}), - }, -} diff --git a/packages/utilities/package.json b/packages/utilities/package.json index fc3a9aa..6283459 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -19,9 +19,9 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", - "test": "NODE_OPTIONS=\"--experimental-vm-modules --trace-warnings\" npx jest --config jest.config.js", - "test:ci": "npm run test", - "test:watch": "npm run test -- --watch" + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run", + "test:watch": "vitest --cache" }, "peerDependencies": { "tslib": "^2.3.0" diff --git a/packages/utilities/src/lib/color-utils/hex-to-rgb.function.spec.ts b/packages/utilities/src/lib/color-utils/hex-to-rgb.function.spec.ts index c97190f..eaa2aee 100644 --- a/packages/utilities/src/lib/color-utils/hex-to-rgb.function.spec.ts +++ b/packages/utilities/src/lib/color-utils/hex-to-rgb.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { hexToRgb } from './hex-to-rgb.function.js' describe('hexToRgb', () => { diff --git a/packages/utilities/src/lib/compare-with/compare-with.spec.ts b/packages/utilities/src/lib/compare-with/compare-with.spec.ts index 64b1a21..956d710 100644 --- a/packages/utilities/src/lib/compare-with/compare-with.spec.ts +++ b/packages/utilities/src/lib/compare-with/compare-with.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { compareWith } from './compare-with.js' function isGreeting(value: any) { diff --git a/packages/utilities/src/lib/cookie/parse-cookies.function.spec.ts b/packages/utilities/src/lib/cookie/parse-cookies.function.spec.ts index cb73637..c1754e5 100644 --- a/packages/utilities/src/lib/cookie/parse-cookies.function.spec.ts +++ b/packages/utilities/src/lib/cookie/parse-cookies.function.spec.ts @@ -1,12 +1,14 @@ +import { describe, expect, test } from 'vitest' + import { parseCookies } from './parse-cookies.function.js' describe('parse-cookies', () => { - it('does not fail on empty', () => { + test('does not fail on empty', () => { expect(parseCookies('')).toEqual({}) expect(parseCookies(null)).toEqual({}) expect(parseCookies()).toEqual({}) }) - it('returns key value object of each cookie', () => { + test('returns key value object of each cookie', () => { expect(parseCookies('LANG=DE')).toEqual({ LANG: 'DE' }) expect(parseCookies('LANG=DE;OK=true;')).toEqual({ LANG: 'DE', OK: 'true' }) }) diff --git a/packages/utilities/src/lib/enum/enum.spec.ts b/packages/utilities/src/lib/enum/enum.spec.ts index 0b969c5..9c9add5 100644 --- a/packages/utilities/src/lib/enum/enum.spec.ts +++ b/packages/utilities/src/lib/enum/enum.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { getEnumKeyFromNum, getEnumKeyFromValue, getEnumKeys, getEnumValues, isValueFromEnum } from './enum.js' // string enum with key=val @@ -42,53 +44,53 @@ function assertType(_: T): void { describe('enum helper', () => { describe('getEnumValues', () => { - it('works for number enums', () => { + test('works for number enums', () => { expect(getEnumValues(Num)).toEqual([25, 26, 27]) assertType(getEnumValues(Num)) expect(getEnumValues(Num2)).toEqual([0, 1]) }) - it('works for string enums', () => { + test('works for string enums', () => { expect(getEnumValues(Str)).toEqual(['A', 'B']) assertType(getEnumValues(Str)) expect(getEnumValues(Str2)).toEqual(['200_OK', '400_ERROR']) assertType(getEnumValues(Str2)) }) - it('works for mixed enums', () => { + test('works for mixed enums', () => { expect(getEnumValues(Mix)).toEqual([7, 42, 'C', 'FOO']) assertType>(getEnumValues(Mix)) }) }) describe('getEnumKeys', () => { - it('works for number enums', () => { + test('works for number enums', () => { expect(getEnumKeys(Num)).toEqual(['A', 'B', 'C']) assertType>(getEnumKeys(Num)) expect(getEnumKeys(Num2)).toEqual(['OK', 'NOK']) }) - it('works for string enums', () => { + test('works for string enums', () => { expect(getEnumKeys(Str)).toEqual(['A', 'B']) assertType>(getEnumKeys(Str)) expect(getEnumKeys(Str2)).toEqual(['OK', 'ERROR']) }) - it('works for mixed enums', () => { + test('works for mixed enums', () => { expect(getEnumKeys(Mix)).toEqual(['A', 'B', 'C', 'D']) assertType>(getEnumKeys(Str)) }) }) describe('getEnumKeyFromValue', () => { - it('works for number enums', () => { + test('works for number enums', () => { expect(getEnumKeyFromValue(Num, Num.A)).toEqual('A') expect(getEnumKeyFromValue(Num, 'A')).toEqual(null) expect(getEnumKeyFromValue(Num2, Num2.NOK)).toEqual('NOK') expect(getEnumKeyFromValue(Num2, -1)).toEqual(null) expect(getEnumKeyFromValue(Num2, 'OK')).toEqual(null) }) - it('works for string enums', () => { + test('works for string enums', () => { expect(getEnumKeyFromValue(Str, Str.A)).toEqual('A') expect(getEnumKeyFromValue(Str2, Str2.ERROR)).toEqual('ERROR') expect(getEnumKeyFromValue(Str2, '500_SERVICE_FAIL')).toEqual(null) expect(getEnumKeyFromValue(Str2, 'OK')).toEqual(null) }) - it('works for mixed enums', () => { + test('works for mixed enums', () => { expect(getEnumKeyFromValue(Mix, Mix.B)).toEqual('B') expect(getEnumKeyFromValue(Mix, 'B')).toEqual(null) expect(getEnumKeyFromValue(Mix, Mix.C)).toEqual('C') @@ -97,13 +99,13 @@ describe('enum helper', () => { }) }) describe('getEnumKeyFromNum', () => { - it('works for number enums', () => { + test('works for number enums', () => { expect(getEnumKeyFromNum(Num, Num.A)).toEqual('A') expect(getEnumKeyFromNum(Num2, Num2.OK)).toEqual('OK') }) }) describe('isValueFromEnum', () => { - it('works for StringEnums', () => { + test('works for StringEnums', () => { expect(isValueFromEnum(Str, 'C')).toEqual(false) expect(isValueFromEnum(Str, 'A')).toEqual(true) diff --git a/packages/utilities/src/lib/group-by/group-by.spec.ts b/packages/utilities/src/lib/group-by/group-by.spec.ts index 0b23aa6..462f801 100644 --- a/packages/utilities/src/lib/group-by/group-by.spec.ts +++ b/packages/utilities/src/lib/group-by/group-by.spec.ts @@ -1,20 +1,22 @@ +import { describe, expect, test } from 'vitest' + import { groupBy } from './group-by.js' describe('group by', () => { - it('numbers floor', () => { + test('numbers floor', () => { expect(groupBy([3.5, 3.2, 5.1, 5.0, 6], Math.floor)).toEqual({ 3: [3.5, 3.2], 5: [5.1, 5.0], 6: [6], }) }) - it('string length', () => { + test('string length', () => { expect(groupBy(['a', 'cc', 'dd', 'b'], 'length')).toEqual({ 1: ['a', 'b'], 2: ['cc', 'dd'], }) }) - it('objects prop', () => { + test('objects prop', () => { const o1 = { a: true, b: 'ok' } const o2 = { a: false, b: 'nok' } expect(groupBy([o1, o2], 'a')).toEqual({ diff --git a/packages/utilities/src/lib/json-stringify-replacer/json-stringify-replacer.function.spec.ts b/packages/utilities/src/lib/json-stringify-replacer/json-stringify-replacer.function.spec.ts index 46f3e0c..eb9b124 100644 --- a/packages/utilities/src/lib/json-stringify-replacer/json-stringify-replacer.function.spec.ts +++ b/packages/utilities/src/lib/json-stringify-replacer/json-stringify-replacer.function.spec.ts @@ -1,13 +1,15 @@ +import { describe, expect, test } from 'vitest' + import { jsonMapSetStringifyReplacer } from './json-stringify-replacer.function.js' describe('jsonMapSetStringifyReplacer', () => { describe('replaces sets', () => { - it('basically works', () => { + test('basically works', () => { const val = new Set(['a', 'b']) expect(jsonMapSetStringifyReplacer('', val)).toEqual({ type: 'scStringifiedSet', values: ['a', 'b'] }) }) - it('works with JSON.stringify', () => { + test('works with JSON.stringify', () => { const val = { propA: ['a', 'b'], propB: new Set(['a', 'b']), @@ -18,12 +20,12 @@ describe('jsonMapSetStringifyReplacer', () => { }) }) describe('replaces maps', () => { - it('basically works', () => { + test('basically works', () => { const val = new Map().set(5, '5') expect(jsonMapSetStringifyReplacer('', val)).toEqual({ type: 'scStringifiedMap', entries: [[5, '5']] }) }) - it('works with JSON.stringify', () => { + test('works with JSON.stringify', () => { const val = { propA: ['5'], propB: new Map().set(5, '5'), diff --git a/packages/utilities/src/lib/map-values-deep/map-values-deep.spec.ts b/packages/utilities/src/lib/map-values-deep/map-values-deep.spec.ts index 0feaa36..d040a4c 100644 --- a/packages/utilities/src/lib/map-values-deep/map-values-deep.spec.ts +++ b/packages/utilities/src/lib/map-values-deep/map-values-deep.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + /* eslint-disable @typescript-eslint/no-unsafe-return */ import { mapValuesDeep } from './map-values-deep.js' diff --git a/packages/utilities/src/lib/math/clamp.function.spec.ts b/packages/utilities/src/lib/math/clamp.function.spec.ts index 1fa6061..a721f99 100644 --- a/packages/utilities/src/lib/math/clamp.function.spec.ts +++ b/packages/utilities/src/lib/math/clamp.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { clamp } from './clamp.function.js' describe('clamp', () => { diff --git a/packages/utilities/src/lib/object/get-value-assert-defined.function.spec.ts b/packages/utilities/src/lib/object/get-value-assert-defined.function.spec.ts index 2874d96..4aba6f9 100644 --- a/packages/utilities/src/lib/object/get-value-assert-defined.function.spec.ts +++ b/packages/utilities/src/lib/object/get-value-assert-defined.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { getValueAssertDefined } from './get-value-assert-defined.function.js' describe('getValueAssertDefined', () => { diff --git a/packages/utilities/src/lib/object/omit-props.function.spec.ts b/packages/utilities/src/lib/object/omit-props.function.spec.ts index c61667d..1817b58 100644 --- a/packages/utilities/src/lib/object/omit-props.function.spec.ts +++ b/packages/utilities/src/lib/object/omit-props.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { omitProps } from './omit-props.function.js' describe('omitProps', () => { diff --git a/packages/utilities/src/lib/object/pick-props-assert-defined.function.spec.ts b/packages/utilities/src/lib/object/pick-props-assert-defined.function.spec.ts index 1caa104..67167a4 100644 --- a/packages/utilities/src/lib/object/pick-props-assert-defined.function.spec.ts +++ b/packages/utilities/src/lib/object/pick-props-assert-defined.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { pickPropsAssertDefined } from './pick-props-assert-defined.function.js' describe('pickPropsAssertDefined', () => { diff --git a/packages/utilities/src/lib/object/pick-props.function.spec.ts b/packages/utilities/src/lib/object/pick-props.function.spec.ts index 1f68b9a..b82d1dd 100644 --- a/packages/utilities/src/lib/object/pick-props.function.spec.ts +++ b/packages/utilities/src/lib/object/pick-props.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { pickProps } from './pick-props.function.js' describe('pickProps', () => { diff --git a/packages/utilities/src/lib/promise/make-deferred.function.spec.ts b/packages/utilities/src/lib/promise/make-deferred.function.spec.ts index 7129b83..2863c45 100644 --- a/packages/utilities/src/lib/promise/make-deferred.function.spec.ts +++ b/packages/utilities/src/lib/promise/make-deferred.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { makeDeferred } from './make-deferred.function.js' describe('makeDeferred', () => { diff --git a/packages/utilities/src/lib/string/capitalize.function.spec.ts b/packages/utilities/src/lib/string/capitalize.function.spec.ts index 0903e83..65289e9 100644 --- a/packages/utilities/src/lib/string/capitalize.function.spec.ts +++ b/packages/utilities/src/lib/string/capitalize.function.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { capitalize } from './capitalize.function.js' describe('capitalize', () => { diff --git a/packages/utilities/src/lib/string/words.spec.ts b/packages/utilities/src/lib/string/words.spec.ts index fa8a087..b7468d4 100644 --- a/packages/utilities/src/lib/string/words.spec.ts +++ b/packages/utilities/src/lib/string/words.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { words } from './words.js' const emojiVar = '\ufe0f', diff --git a/packages/utilities/src/lib/ts-guards/is-array.spec.ts b/packages/utilities/src/lib/ts-guards/is-array.spec.ts index 02e36b1..5e2c492 100644 --- a/packages/utilities/src/lib/ts-guards/is-array.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-array.spec.ts @@ -1,7 +1,9 @@ +import { describe, expect, test } from 'vitest' + import { isArray } from './is-array.js' describe('isArray', () => { - it('should return true for array values', () => { + test('should return true for array values', () => { expect(isArray([])).toBe(true) expect(isArray([1, 2, 3])).toBe(true) expect(isArray(['a', 'b', 'c'])).toBe(true) @@ -10,7 +12,7 @@ describe('isArray', () => { expect(isArray(new Array())).toBe(true) }) - it('should return false for non-array values', () => { + test('should return false for non-array values', () => { expect(isArray('array')).toBe(false) expect(isArray(123)).toBe(false) expect(isArray(true)).toBe(false) diff --git a/packages/utilities/src/lib/ts-guards/is-boolean.spec.ts b/packages/utilities/src/lib/ts-guards/is-boolean.spec.ts index 520d1f6..746b71b 100644 --- a/packages/utilities/src/lib/ts-guards/is-boolean.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-boolean.spec.ts @@ -1,12 +1,14 @@ +import { describe, expect, test } from 'vitest' + import { isBoolean } from './is-boolean.js' describe('isBoolean', () => { - it('should return true for boolean values', () => { + test('should return true for boolean values', () => { expect(isBoolean(true)).toBe(true) expect(isBoolean(false)).toBe(true) }) - it('should return false for non-boolean values', () => { + test('should return false for non-boolean values', () => { expect(isBoolean(1)).toBe(false) expect(isBoolean(0)).toBe(false) expect(isBoolean('true')).toBe(false) diff --git a/packages/utilities/src/lib/ts-guards/is-class.spec.ts b/packages/utilities/src/lib/ts-guards/is-class.spec.ts index 93356e0..21a1347 100644 --- a/packages/utilities/src/lib/ts-guards/is-class.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-class.spec.ts @@ -1,3 +1,5 @@ +import { describe, expect, test } from 'vitest' + import { isClass } from './is-class.js' class TestClass { @@ -7,11 +9,11 @@ class TestClass { } describe('isClass', () => { - it('should return true for classes', () => { + test('should return true for classes', () => { expect(isClass(TestClass)).toBe(true) }) - it('should return false for non-class values', () => { + test('should return false for non-class values', () => { expect(isClass('string')).toBe(false) expect(isClass(123)).toBe(false) expect(isClass(true)).toBe(false) diff --git a/packages/utilities/src/lib/ts-guards/is-date.spec.ts b/packages/utilities/src/lib/ts-guards/is-date.spec.ts index 4026291..36449ba 100644 --- a/packages/utilities/src/lib/ts-guards/is-date.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-date.spec.ts @@ -1,14 +1,16 @@ +import { describe, expect, test } from 'vitest' + import { isDate } from './is-date.js' describe('isDate', () => { - it('should return true for Date objects', () => { + test('should return true for Date objects', () => { expect(isDate(new Date())).toBe(true) expect(isDate(new Date('2023-01-01'))).toBe(true) expect(isDate(new Date(2023, 0, 1))).toBe(true) expect(isDate(new Date(Date.now()))).toBe(true) }) - it('should return false for non-Date values', () => { + test('should return false for non-Date values', () => { expect(isDate('2023-01-01')).toBe(false) expect(isDate(1672531200000)).toBe(false) expect(isDate(true)).toBe(false) diff --git a/packages/utilities/src/lib/ts-guards/is-defined.spec.ts b/packages/utilities/src/lib/ts-guards/is-defined.spec.ts index 8e54c8c..e45009f 100644 --- a/packages/utilities/src/lib/ts-guards/is-defined.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-defined.spec.ts @@ -1,7 +1,9 @@ +import { describe, expect, test } from 'vitest' + import { isDefined } from './is-defined.js' describe('isDefined', () => { - it('should return true for defined values', () => { + test('should return true for defined values', () => { expect(isDefined('')).toBe(true) expect(isDefined(0)).toBe(true) expect(isDefined(false)).toBe(true) @@ -11,7 +13,7 @@ describe('isDefined', () => { expect(isDefined(123)).toBe(true) }) - it('should return false for undefined values', () => { + test('should return false for undefined values', () => { expect(isDefined(undefined)).toBe(false) expect(isDefined(null)).toBe(false) }) diff --git a/packages/utilities/src/lib/ts-guards/is-number.spec.ts b/packages/utilities/src/lib/ts-guards/is-number.spec.ts index 2061ea1..75d96c6 100644 --- a/packages/utilities/src/lib/ts-guards/is-number.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-number.spec.ts @@ -1,7 +1,9 @@ +import { describe, expect, test } from 'vitest' + import { isNumber } from './is-number.js' describe('isNumber', () => { - it('should return true for valid number values', () => { + test('should return true for valid number values', () => { expect(isNumber(0)).toBe(true) expect(isNumber(123)).toBe(true) expect(isNumber(-456)).toBe(true) @@ -10,11 +12,11 @@ describe('isNumber', () => { expect(isNumber(-Infinity)).toBe(true) }) - it('should return false for NaN', () => { + test('should return false for NaN', () => { expect(isNumber(NaN)).toBe(false) }) - it('should return false for non-number values', () => { + test('should return false for non-number values', () => { expect(isNumber('123')).toBe(false) expect(isNumber(true)).toBe(false) expect(isNumber(false)).toBe(false) diff --git a/packages/utilities/src/lib/ts-guards/is-string.spec.ts b/packages/utilities/src/lib/ts-guards/is-string.spec.ts index 75d4787..3660815 100644 --- a/packages/utilities/src/lib/ts-guards/is-string.spec.ts +++ b/packages/utilities/src/lib/ts-guards/is-string.spec.ts @@ -1,14 +1,16 @@ +import { describe, expect, test } from 'vitest' + import { isString } from './is-string.js' describe('isString', () => { - it('should return true for string values', () => { + test('should return true for string values', () => { expect(isString('')).toBe(true) expect(isString('hello')).toBe(true) expect(isString('123')).toBe(true) expect(isString(' ')).toBe(true) }) - it('should return false for non-string values', () => { + test('should return false for non-string values', () => { expect(isString(123)).toBe(false) expect(isString(true)).toBe(false) expect(isString(false)).toBe(false) diff --git a/packages/utilities/tsconfig.json b/packages/utilities/tsconfig.json index 7ae32b7..f53f2ff 100644 --- a/packages/utilities/tsconfig.json +++ b/packages/utilities/tsconfig.json @@ -1,10 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "baseUrl": "./", - "target": "es2023", - "outDir": "./dist/", - "declarationDir": "./dist/" + "baseUrl": ".", + "target": "es2023" }, "include": ["src/**/*.ts"] } diff --git a/packages/utilities/tsconfig.lint.json b/packages/utilities/tsconfig.lint.json index aa85350..1386dd5 100644 --- a/packages/utilities/tsconfig.lint.json +++ b/packages/utilities/tsconfig.lint.json @@ -1,9 +1,5 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": "./", - "types": ["jest", "node"] - }, - "include": ["**/*.ts"], - "exclude": [] + "extends": "../../tsconfig.lint.json", + "compilerOptions": { "baseUrl": "." }, + "include": ["**/*.ts"] } diff --git a/packages/utilities/tsconfig.spec.json b/packages/utilities/tsconfig.spec.json new file mode 100644 index 0000000..cd684dc --- /dev/null +++ b/packages/utilities/tsconfig.spec.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.spec.json", + "compilerOptions": { + "baseUrl": "." + }, + "include": ["src/**/*.spec.ts", "test/**/*.ts"] +} diff --git a/packages/utilities/vitest.config.js b/packages/utilities/vitest.config.js new file mode 100644 index 0000000..ec160f8 --- /dev/null +++ b/packages/utilities/vitest.config.js @@ -0,0 +1,3 @@ +import CONFIG from '../../vitest.config.js' + +export default CONFIG diff --git a/tsconfig.jest.json b/tsconfig.jest.json deleted file mode 100644 index e67cf8f..0000000 --- a/tsconfig.jest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "declaration": false, - "declarationDir": null, - "noEmit": true, - "types": ["jest", "node"], - "strictPropertyInitialization": false, - "resolveJsonModule": true - }, - "exclude": [] -} diff --git a/tsconfig.json b/tsconfig.json index 45b0803..93abcba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,6 +4,8 @@ "moduleResolution": "nodenext", "target": "es2023", "strict": true, + "outDir": "${configDir}/dist", + "declarationDir": "${configDir}/dist", "sourceMap": true, "declaration": true, "importHelpers": true diff --git a/tsconfig.lint.json b/tsconfig.lint.json new file mode 100644 index 0000000..fcf91a0 --- /dev/null +++ b/tsconfig.lint.json @@ -0,0 +1,22 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": false, + "declarationDir": null, + "noEmit": true, + "types": ["node"], + "strictPropertyInitialization": false, + "resolveJsonModule": true, + "paths": { + "@shiftcode/airtable-mapper": ["${configDir}/../airtable-mapper/src/index.ts"], + "@shiftcode/eslint-plugin-rules": ["${configDir}/../eslint-plugin-rules/src/index.ts"], + "@shiftcode/utilities": ["${configDir}/../utilities/src/index.ts"], + "@shiftcode/logger": ["${configDir}/../logger/src/index.ts"], + "@shiftcode/inversify-logger": ["${configDir}/../inversify-logger/src/index.ts"], + "@shiftcode/branch-utilities": ["${configDir}/../branch-utilities/src/index.ts"], + "@shiftcode/lambda-utilities": ["${configDir}/../lambda-utilities/src/index.ts"], + "@shiftcode/lambda-utilities/s3": ["${configDir}/../lambda-utilities/src/s3/index.ts"] + } + }, + "exclude": [] +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000..708e342 --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,23 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "declaration": false, + "declarationDir": null, + "noEmit": true, + "types": ["node"], + "strictPropertyInitialization": false, + "resolveJsonModule": true, + "paths": { + "@shiftcode/airtable-mapper": ["${configDir}/../airtable-mapper/src/index.ts"], + "@shiftcode/eslint-plugin-rules": ["${configDir}/../eslint-plugin-rules/src/index.ts"], + "@shiftcode/utilities": ["${configDir}/../utilities/src/index.ts"], + "@shiftcode/logger": ["${configDir}/../logger/src/index.ts"], + "@shiftcode/inversify-logger": ["${configDir}/../inversify-logger/src/index.ts"], + "@shiftcode/branch-utilities": ["${configDir}/../branch-utilities/src/index.ts"], + "@shiftcode/lambda-utilities/s3": ["${configDir}/../lambda-utilities/src/s3/index.ts"], + "@shiftcode/lambda-utilities": ["${configDir}/../lambda-utilities/src/index.ts"] + } + }, + "exclude": [] +} diff --git a/vitest.config.js b/vitest.config.js new file mode 100644 index 0000000..33664fd --- /dev/null +++ b/vitest.config.js @@ -0,0 +1,24 @@ +import { defineConfig } from 'vitest/config' +import path from 'node:path' +import tsconfig from './tsconfig.spec.json' + +// hacky but works.. --> the `${configDir}` variable is a TypeScript-config feature. +// but i didnt find a way to get the tsconfig parsed with the variable resolved... + +const alias = Object.fromEntries( + Object.entries(tsconfig.compilerOptions.paths ?? {}) + // order matters. we need the more specific (=the longer) entries first (deep import) + // as it will be used with `startsWith` from vitest. + .sort((a, b) => b[0].length - a[0].length) + .map(([key, [value]]) => [ + key, + path.resolve(import.meta.dirname, value.replace('${configDir}/../', './packages/')), + ]), +) + +export default defineConfig({ + test: { + globals: false, + alias, + }, +}) From d8a98db50aeca83cc82901a24348d9fe24da0f35 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 6 Feb 2026 14:29:32 +0000 Subject: [PATCH 40/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@0.0.0-pr254.5 - @shiftcode/airtable-syncer@0.0.0-pr254.5 - @shiftcode/branch-utilities@6.0.0-pr254.2 - @shiftcode/cdk-utilities@0.0.0-pr254.5 - @shiftcode/eslint-config-recommended@7.0.0-pr254.2 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.2 - @shiftcode/iac-utilities@0.0.0-pr254.5 - @shiftcode/inversify-logger@0.0.0-pr254.5 - @shiftcode/lambda-utilities@0.0.0-pr254.5 - @shiftcode/logger@5.0.0-pr254.2 - @shiftcode/nest-logger@0.0.0-pr254.5 - @shiftcode/publish-helper@6.0.0-pr254.2 - @shiftcode/utilities@5.0.0-pr254.2 --- package-lock.json | 64 +++++++++++-------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 +-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +-- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 64 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index d56535b..d24bc88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6264,6 +6264,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -6280,6 +6281,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -6296,6 +6298,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6312,6 +6315,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6328,6 +6332,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6344,6 +6349,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6360,6 +6366,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6376,6 +6383,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -6392,6 +6400,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -6408,6 +6417,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -18502,7 +18512,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18513,17 +18523,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.4", - "@shiftcode/inversify-logger": "^0.0.0-pr254.4", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", - "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.5", + "@shiftcode/inversify-logger": "^0.0.0-pr254.5", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.2", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -18544,7 +18554,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.1", + "version": "6.0.0-pr254.2", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18555,7 +18565,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -18571,11 +18581,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.1", + "version": "7.0.0-pr254.2", "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.1", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.2", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -18600,7 +18610,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.1", + "version": "6.0.0-pr254.2", "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -18618,7 +18628,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -18647,8 +18657,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.1", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", + "@shiftcode/branch-utilities": "^6.0.0-pr254.2", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", "@types/yargs": "^17.0.5" }, "engines": { @@ -18687,10 +18697,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.2", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -18705,13 +18715,13 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.4", - "@shiftcode/logger": "^5.0.0-pr254.1", - "@shiftcode/utilities": "^5.0.0-pr254.1", + "@shiftcode/inversify-logger": "^0.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/utilities": "^5.0.0-pr254.2", "@types/aws-lambda": "^8.10.89" }, "engines": { @@ -18746,10 +18756,10 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.1", + "version": "5.0.0-pr254.2", "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.1" + "@shiftcode/utilities": "^5.0.0-pr254.2" }, "engines": { "node": ">=22.10.2" @@ -18760,13 +18770,13 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.2", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -18783,7 +18793,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.1", + "version": "6.0.0-pr254.2", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -18794,7 +18804,7 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.1", + "@shiftcode/branch-utilities": "^6.0.0-pr254.2", "@types/yargs": "^17.0.32" }, "engines": { @@ -18819,7 +18829,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.1", + "version": "5.0.0-pr254.2", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 57f7ef4..54a522f 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 2d1c9bc..d19dab6 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.4", - "@shiftcode/inversify-logger": "^0.0.0-pr254.4", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", - "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.5", + "@shiftcode/inversify-logger": "^0.0.0-pr254.5", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.2", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 37d4cce..b98302c 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.1", + "version": "6.0.0-pr254.2", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 460f8b6..6b0d84b 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 8d6a435..d8dece4 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.1", + "version": "7.0.0-pr254.2", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.1", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.2", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 05a5d44..c73af7a 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.1", + "version": "6.0.0-pr254.2", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 3773ae8..ebfc6aa 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.1", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.4", + "@shiftcode/branch-utilities": "^6.0.0-pr254.2", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index a4bd949..ad51799 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.2", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 6da35eb..384d77f 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -33,9 +33,9 @@ }, "devDependencies": { "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.4", - "@shiftcode/logger": "^5.0.0-pr254.1", - "@shiftcode/utilities": "^5.0.0-pr254.1", + "@shiftcode/inversify-logger": "^0.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/utilities": "^5.0.0-pr254.2", "@types/aws-lambda": "^8.10.89" }, "peerDependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 042ee80..5cab842 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.1", + "version": "5.0.0-pr254.2", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.1" + "@shiftcode/utilities": "^5.0.0-pr254.2" }, "peerDependencies": { "@shiftcode/utilities": "^4.0.0" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 0952a4c..5a88c87 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.4", + "version": "0.0.0-pr254.5", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.2", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index b0210f6..c7c711b 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.1", + "version": "6.0.0-pr254.2", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.1", + "@shiftcode/branch-utilities": "^6.0.0-pr254.2", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 6283459..e70d887 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.1", + "version": "5.0.0-pr254.2", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From fa5e23015c48b564eda9a8107f6ed61205826786 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 15:35:20 +0100 Subject: [PATCH 41/55] ci: run tsc on specs in ci --- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 2 +- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- packages/eslint-config-recommended/package.json | 4 ++-- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 2 +- packages/inversify-logger/package.json | 2 +- packages/logger/package.json | 2 +- packages/nest-logger/package.json | 2 +- packages/publish-helper/package.json | 4 ++-- packages/utilities/package.json | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 54a522f..f32ce8d 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -20,7 +20,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run --passWithNoTests", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "peerDependencies": { diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index d19dab6..da6d122 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -20,7 +20,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run --passWithNoTests", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "dependencies": { diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index b98302c..b54a719 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -20,7 +20,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "peerDependencies": { diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 6b0d84b..688f1e0 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -20,7 +20,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "dependencies": { diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index d8dece4..82a8c89 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -23,8 +23,8 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", - "test": "echo 'Error: no test specificed'", - "test:ci": "npm run test" + "test": "echo 'no test'", + "test:ci": "echo 'No tests'" }, "dependencies": { "@eslint/js": "^9.37.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index c73af7a..9a0240d 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -20,7 +20,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "dependencies": { diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index ebfc6aa..9991eea 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -38,7 +38,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "dependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index ad51799..c7525ea 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -27,7 +27,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "devDependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 5cab842..f9176b0 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -28,7 +28,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "devDependencies": { diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 5a88c87..64b7a45 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -24,7 +24,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "devDependencies": { diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index c7c711b..be4d5aa 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -16,8 +16,8 @@ "lint": "eslint --fix --cache .", "lint:ci": "eslint .", "prepublish": "node ./dist/prepare-dist.js", - "test": "vitest --cache --run --passWithNoTests", - "test:ci": "vitest --no-cache --run --passWithNoTests", + "test": "vitest --cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "dependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index e70d887..1cb6333 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -20,7 +20,7 @@ "lint:ci": "eslint .", "prepublish": "node ../publish-helper/dist/prepare-dist.js", "test": "vitest --cache --run", - "test:ci": "vitest --no-cache --run", + "test:ci": "vitest --no-cache --run && tsc -p ./tsconfig.spec.json", "test:watch": "vitest --cache" }, "peerDependencies": { From 876fd7707a5583e4fc8e11b7a86470b9c37b7368 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 15:46:37 +0100 Subject: [PATCH 42/55] fix: deep exports from ssm and s3 BREAKING CHANGE: - `fetchSsmStringParamValue` now exported from `@shiftcode/lambda-utilities/ssm` - `S3Helper` now exported from `@shiftcode/lambda-utilities/s3` --- package-lock.json | 63 ++++++++++--------- packages/lambda-utilities/package.json | 16 +++-- packages/lambda-utilities/src/index.ts | 4 +- .../src/{static => lib}/http-response.ts | 2 +- .../is-aws-lambda-env.function.ts | 0 .../fetch-ssm-string-param-value.function.ts | 0 packages/lambda-utilities/src/ssm/index.ts | 1 + packages/lambda-utilities/src/static/index.ts | 3 - 8 files changed, 51 insertions(+), 38 deletions(-) rename packages/lambda-utilities/src/{static => lib}/http-response.ts (98%) rename packages/lambda-utilities/src/{static => lib}/is-aws-lambda-env.function.ts (100%) rename packages/lambda-utilities/src/{static => ssm}/fetch-ssm-string-param-value.function.ts (100%) create mode 100644 packages/lambda-utilities/src/ssm/index.ts delete mode 100644 packages/lambda-utilities/src/static/index.ts diff --git a/package-lock.json b/package-lock.json index d24bc88..ba06bb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -447,7 +447,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -462,7 +462,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -474,7 +474,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", @@ -489,7 +489,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -502,7 +502,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -516,7 +516,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -811,7 +811,7 @@ "version": "3.983.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.983.0.tgz", "integrity": "sha512-V40PT2irPh3lj+Z95tZI6batVrjaTrWEOXRNVBuoZSgpM3Ak1jiE9ZXwVLkMcbb9/GH4xVpB3EsGM7gbxmgFLQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", @@ -1070,7 +1070,7 @@ "version": "3.972.0", "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.0.tgz", "integrity": "sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -1409,7 +1409,7 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.3.tgz", "integrity": "sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1428,7 +1428,7 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.3.tgz", "integrity": "sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1444,7 +1444,7 @@ "version": "3.972.4", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.972.4.tgz", "integrity": "sha512-xOxsUkF3O3BtIe3tf54OpPo94eZepjFm3z0Dd2TZKbsPxMiRTFXurC04wJ58o/wPW9YHVO9VqZik3MfoPfrKlw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -1485,7 +1485,7 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.3.tgz", "integrity": "sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1530,7 +1530,7 @@ "version": "3.972.6", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.6.tgz", "integrity": "sha512-Xq7wM6kbgJN1UO++8dvH/efPb1nTwWqFCpZCR7RCLOETP7xAUAhVo7JmsCnML5Di/iC4Oo5VrJ4QmkYcMZniLw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.973.6", @@ -1556,7 +1556,7 @@ "version": "3.972.3", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.3.tgz", "integrity": "sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.1", @@ -1686,7 +1686,7 @@ "version": "3.983.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.983.0.tgz", "integrity": "sha512-11FCcxI/WKRufKDdPgKPXtrhjDArhkOPb4mf66rICZUnPHlD8Cb7cjZZS/eFC+iuwoHBosrxo0hYsvK3s7DxGw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-sdk-s3": "^3.972.6", @@ -1735,7 +1735,7 @@ "version": "3.972.2", "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz", "integrity": "sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5480,7 +5480,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5493,7 +5493,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-base64": "^4.3.0", @@ -5561,7 +5561,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -5577,7 +5577,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.8", @@ -5592,7 +5592,7 @@ "version": "4.3.8", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -5606,7 +5606,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.8", @@ -5621,7 +5621,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-codec": "^4.2.8", @@ -5652,7 +5652,7 @@ "version": "4.2.9", "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", @@ -5683,7 +5683,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -5723,7 +5723,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.12.0", @@ -6183,7 +6183,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.2.8", @@ -18718,17 +18718,21 @@ "version": "0.0.0-pr254.5", "license": "MIT", "devDependencies": { + "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "^0.0.0-pr254.5", "@shiftcode/logger": "^5.0.0-pr254.2", "@shiftcode/utilities": "^5.0.0-pr254.2", - "@types/aws-lambda": "^8.10.89" + "@types/aws-lambda": "^8.10.89", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0" }, "engines": { "node": ">=22.10.2" }, "peerDependencies": { "@aws-sdk/client-s3": "^3.204.0", + "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", @@ -18740,6 +18744,9 @@ "@aws-sdk/client-s3": { "optional": true }, + "@aws-sdk/client-ssm": { + "optional": true + }, "@shiftcode/inversify-logger": { "optional": true }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 384d77f..a81755a 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -16,9 +16,9 @@ "types": "./dist/s3/index.d.ts", "default": "./dist/s3/index.js" }, - "./static": { - "types": "./dist/static/index.d.ts", - "default": "./dist/static/index.js" + "./ssm": { + "types": "./dist/ssm/index.d.ts", + "default": "./dist/ssm/index.js" } }, "scripts": { @@ -32,17 +32,22 @@ "test:watch": "vitest --cache" }, "devDependencies": { + "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "^0.0.0-pr254.5", "@shiftcode/logger": "^5.0.0-pr254.2", "@shiftcode/utilities": "^5.0.0-pr254.2", - "@types/aws-lambda": "^8.10.89" + "@types/aws-lambda": "^8.10.89", + "inversify": "^7.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0" }, "peerDependencies": { "@aws-sdk/client-s3": "^3.204.0", + "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", + "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "tslib": "^2.3.0" @@ -51,6 +56,9 @@ "@aws-sdk/client-s3": { "optional": true }, + "@aws-sdk/client-ssm": { + "optional": true + }, "@shiftcode/inversify-logger": { "optional": true }, diff --git a/packages/lambda-utilities/src/index.ts b/packages/lambda-utilities/src/index.ts index 023c7ba..6561781 100644 --- a/packages/lambda-utilities/src/index.ts +++ b/packages/lambda-utilities/src/index.ts @@ -1,2 +1,2 @@ -export * from './s3/index.js' -export * from './static/index.js' +export * from './lib/http-response.js' +export * from './lib/is-aws-lambda-env.function.js' diff --git a/packages/lambda-utilities/src/static/http-response.ts b/packages/lambda-utilities/src/lib/http-response.ts similarity index 98% rename from packages/lambda-utilities/src/static/http-response.ts rename to packages/lambda-utilities/src/lib/http-response.ts index d46ca5c..4ad2b8e 100644 --- a/packages/lambda-utilities/src/static/http-response.ts +++ b/packages/lambda-utilities/src/lib/http-response.ts @@ -1,5 +1,5 @@ import { CommonHttpHeader, ContentType, CorsHeader, HttpMethod, HttpStatusCode } from '@shiftcode/utilities' -import { APIGatewayProxyResult } from 'aws-lambda' +import type { APIGatewayProxyResult } from 'aws-lambda' export class HttpResponse implements APIGatewayProxyResult { static readonly EMPTY_204 = new HttpResponse('', HttpStatusCode.NO_CONTENT) diff --git a/packages/lambda-utilities/src/static/is-aws-lambda-env.function.ts b/packages/lambda-utilities/src/lib/is-aws-lambda-env.function.ts similarity index 100% rename from packages/lambda-utilities/src/static/is-aws-lambda-env.function.ts rename to packages/lambda-utilities/src/lib/is-aws-lambda-env.function.ts diff --git a/packages/lambda-utilities/src/static/fetch-ssm-string-param-value.function.ts b/packages/lambda-utilities/src/ssm/fetch-ssm-string-param-value.function.ts similarity index 100% rename from packages/lambda-utilities/src/static/fetch-ssm-string-param-value.function.ts rename to packages/lambda-utilities/src/ssm/fetch-ssm-string-param-value.function.ts diff --git a/packages/lambda-utilities/src/ssm/index.ts b/packages/lambda-utilities/src/ssm/index.ts new file mode 100644 index 0000000..5584426 --- /dev/null +++ b/packages/lambda-utilities/src/ssm/index.ts @@ -0,0 +1 @@ +export * from './fetch-ssm-string-param-value.function.js' diff --git a/packages/lambda-utilities/src/static/index.ts b/packages/lambda-utilities/src/static/index.ts deleted file mode 100644 index ee80e7b..0000000 --- a/packages/lambda-utilities/src/static/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './fetch-ssm-string-param-value.function.js' -export * from './http-response.js' -export * from './is-aws-lambda-env.function.js' From a1ec24e8380d4a6489010a738ab8fd61ff40b366 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 15:57:39 +0100 Subject: [PATCH 43/55] chore: update vulnerable libs --- package-lock.json | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba06bb7..0708d66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3279,9 +3279,9 @@ } }, "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -4177,9 +4177,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", + "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -6264,7 +6264,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=10" } @@ -6281,7 +6280,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=10" } @@ -6298,7 +6296,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=10" } @@ -6315,7 +6312,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=10" } @@ -6332,7 +6328,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=10" } @@ -6349,7 +6344,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=10" } @@ -6366,7 +6360,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=10" } @@ -6383,7 +6376,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=10" } @@ -6400,7 +6392,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=10" } @@ -6417,7 +6408,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=10" } @@ -14364,9 +14354,9 @@ } }, "node_modules/node-gyp/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", + "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -15391,9 +15381,9 @@ } }, "node_modules/pacote/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", + "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -18736,6 +18726,7 @@ "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", + "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "tslib": "^2.3.0" From 1e7ae5cb84a549589ff673bc4fb06c5770cd9b51 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 16:16:32 +0100 Subject: [PATCH 44/55] fix: correct order of export definitions --- packages/eslint-plugin-rules/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 9a0240d..d707b7b 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -9,8 +9,8 @@ "type": "module", "exports": { ".": { - "default": "./dist/index.js", - "types": "./dist/index.d.ts" + "types": "./dist/index.d.ts", + "default": "./dist/index.js" } }, "scripts": { From 117f7ba379856416987673ab528371c5a0f9f64b Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 6 Feb 2026 15:20:00 +0000 Subject: [PATCH 45/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@0.0.0-pr254.6 - @shiftcode/airtable-syncer@0.0.0-pr254.6 - @shiftcode/branch-utilities@6.0.0-pr254.3 - @shiftcode/cdk-utilities@0.0.0-pr254.6 - @shiftcode/eslint-config-recommended@7.0.0-pr254.3 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.3 - @shiftcode/iac-utilities@0.0.0-pr254.6 - @shiftcode/inversify-logger@0.0.0-pr254.6 - @shiftcode/lambda-utilities@0.0.0-pr254.6 - @shiftcode/logger@5.0.0-pr254.3 - @shiftcode/nest-logger@0.0.0-pr254.6 - @shiftcode/publish-helper@6.0.0-pr254.3 - @shiftcode/utilities@5.0.0-pr254.3 --- package-lock.json | 64 +++++++++++-------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 +-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +-- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 64 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0708d66..64b5d73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6264,6 +6264,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -6280,6 +6281,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -6296,6 +6298,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6312,6 +6315,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6328,6 +6332,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6344,6 +6349,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6360,6 +6366,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -6376,6 +6383,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -6392,6 +6400,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -6408,6 +6417,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -18502,7 +18512,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18513,17 +18523,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.5", - "@shiftcode/inversify-logger": "^0.0.0-pr254.5", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.6", + "@shiftcode/inversify-logger": "^0.0.0-pr254.6", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.3", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -18544,7 +18554,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.2", + "version": "6.0.0-pr254.3", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18555,7 +18565,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -18571,11 +18581,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.2", + "version": "7.0.0-pr254.3", "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.2", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.3", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -18600,7 +18610,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.2", + "version": "6.0.0-pr254.3", "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -18618,7 +18628,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -18647,8 +18657,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", + "@shiftcode/branch-utilities": "^6.0.0-pr254.3", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", "@types/yargs": "^17.0.5" }, "engines": { @@ -18687,10 +18697,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.3", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -18705,14 +18715,14 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.5", - "@shiftcode/logger": "^5.0.0-pr254.2", - "@shiftcode/utilities": "^5.0.0-pr254.2", + "@shiftcode/inversify-logger": "^0.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/utilities": "^5.0.0-pr254.3", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" @@ -18754,10 +18764,10 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.2", + "version": "5.0.0-pr254.3", "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.2" + "@shiftcode/utilities": "^5.0.0-pr254.3" }, "engines": { "node": ">=22.10.2" @@ -18768,13 +18778,13 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.3", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -18791,7 +18801,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.2", + "version": "6.0.0-pr254.3", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -18802,7 +18812,7 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.2", + "@shiftcode/branch-utilities": "^6.0.0-pr254.3", "@types/yargs": "^17.0.32" }, "engines": { @@ -18827,7 +18837,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.2", + "version": "5.0.0-pr254.3", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index f32ce8d..20c0b86 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index da6d122..113af4f 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.5", - "@shiftcode/inversify-logger": "^0.0.0-pr254.5", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/airtable-mapper": "^0.0.0-pr254.6", + "@shiftcode/inversify-logger": "^0.0.0-pr254.6", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.3", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index b54a719..7f6ef89 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.2", + "version": "6.0.0-pr254.3", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 688f1e0..bdedee2 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 82a8c89..525df12 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.2", + "version": "7.0.0-pr254.3", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.2", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.3", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index d707b7b..3e71b2f 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.2", + "version": "6.0.0-pr254.3", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 9991eea..f0f89d4 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.2", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.5", + "@shiftcode/branch-utilities": "^6.0.0-pr254.3", + "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index c7525ea..19d7267 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.3", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index a81755a..a52f8e4 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,9 +34,9 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.5", - "@shiftcode/logger": "^5.0.0-pr254.2", - "@shiftcode/utilities": "^5.0.0-pr254.2", + "@shiftcode/inversify-logger": "^0.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/utilities": "^5.0.0-pr254.3", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" diff --git a/packages/logger/package.json b/packages/logger/package.json index f9176b0..1158d2b 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.2", + "version": "5.0.0-pr254.3", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.2" + "@shiftcode/utilities": "^5.0.0-pr254.3" }, "peerDependencies": { "@shiftcode/utilities": "^4.0.0" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 64b7a45..4d6e937 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.5", + "version": "0.0.0-pr254.6", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.3", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index be4d5aa..293c256 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.2", + "version": "6.0.0-pr254.3", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.2", + "@shiftcode/branch-utilities": "^6.0.0-pr254.3", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 1cb6333..5ce0f2b 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.2", + "version": "5.0.0-pr254.3", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From c76360b4af24946e2095b4a352dd4466430f135a Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 16:33:08 +0100 Subject: [PATCH 46/55] build: set version of new backages to 1.0.0-pr --- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 14 +++++++------- packages/cdk-utilities/package.json | 2 +- packages/iac-utilities/package.json | 6 +++--- packages/inversify-logger/package.json | 4 ++-- packages/lambda-utilities/package.json | 6 +++--- packages/nest-logger/package.json | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 20c0b86..27d8664 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 113af4f..f0d0352 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,18 +28,18 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.6", - "@shiftcode/inversify-logger": "^0.0.0-pr254.6", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.0", + "@shiftcode/inversify-logger": "^1.0.0-pr254.0", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.0", "@shiftcode/logger": "^5.0.0-pr254.3", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, "peerDependencies": { "@aws-sdk/client-sns": "^3.188.0", - "@shiftcode/airtable-mapper": "^1.0.0 || ^0.0.0-pr254", - "@shiftcode/inversify-logger": "^1.0.0 || ^0.0.0-pr254", - "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/airtable-mapper": "^1.0.0 || ^1.0.0-pr254", + "@shiftcode/inversify-logger": "^1.0.0 || ^1.0.0-pr254", + "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", "@shiftcode/logger": "^4.0.0", "date-fns": "^4.0.0", "inversify": "^7.0.0", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index bdedee2..7346dc3 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index f0f89d4..4ada5dc 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -55,7 +55,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^6.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.0", "@types/yargs": "^17.0.5" }, "peerDependencies": { @@ -65,7 +65,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", "tslib": "^2.3.0" }, "peerDependenciesMeta": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 19d7267..a4ba3bb 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.2", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index a52f8e4..4e846e9 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,7 +34,7 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.6", + "@shiftcode/inversify-logger": "^1.0.0-pr254.0", "@shiftcode/logger": "^5.0.0-pr254.3", "@shiftcode/utilities": "^5.0.0-pr254.3", "@types/aws-lambda": "^8.10.89", @@ -44,7 +44,7 @@ "peerDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", + "@shiftcode/inversify-logger": "^1.0.0 || 1.0.0-pr254", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89", diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 4d6e937..9872d5d 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.0", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 58a1787c5153481e7d0f4442b08146b869f71eb1 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 16:59:29 +0100 Subject: [PATCH 47/55] build: change how vitest is used in tests --- .../src/rules/deny-parent-index-file-import.spec.ts | 2 +- .../src/rules/import-denylist.spec.ts | 2 +- .../src/rules/prefix-builtin-module-import.spec.ts | 2 +- .../{src/utils => test}/rule-tester.ts | 12 ++++++++---- packages/eslint-plugin-rules/vitest.config.js | 9 ++++++--- 5 files changed, 17 insertions(+), 10 deletions(-) rename packages/eslint-plugin-rules/{src/utils => test}/rule-tester.ts (50%) diff --git a/packages/eslint-plugin-rules/src/rules/deny-parent-index-file-import.spec.ts b/packages/eslint-plugin-rules/src/rules/deny-parent-index-file-import.spec.ts index f08d354..21076f3 100644 --- a/packages/eslint-plugin-rules/src/rules/deny-parent-index-file-import.spec.ts +++ b/packages/eslint-plugin-rules/src/rules/deny-parent-index-file-import.spec.ts @@ -1,4 +1,4 @@ -import { createRuleTester } from '../utils/rule-tester.js' +import { createRuleTester } from '../../test/rule-tester.js' import { DenyParentIndexFileImportMessageIds, denyParentIndexFileImportRule } from './deny-parent-index-file-import.js' const ruleTester = createRuleTester() diff --git a/packages/eslint-plugin-rules/src/rules/import-denylist.spec.ts b/packages/eslint-plugin-rules/src/rules/import-denylist.spec.ts index 93b7813..02f4ab4 100644 --- a/packages/eslint-plugin-rules/src/rules/import-denylist.spec.ts +++ b/packages/eslint-plugin-rules/src/rules/import-denylist.spec.ts @@ -1,4 +1,4 @@ -import { createRuleTester } from '../utils/rule-tester.js' +import { createRuleTester } from '../../test/rule-tester.js' import { ImportDenylistMessageIds, importDenyListRule } from './import-denylist.js' const ruleTester = createRuleTester() diff --git a/packages/eslint-plugin-rules/src/rules/prefix-builtin-module-import.spec.ts b/packages/eslint-plugin-rules/src/rules/prefix-builtin-module-import.spec.ts index 69467b9..4a8c772 100644 --- a/packages/eslint-plugin-rules/src/rules/prefix-builtin-module-import.spec.ts +++ b/packages/eslint-plugin-rules/src/rules/prefix-builtin-module-import.spec.ts @@ -1,4 +1,4 @@ -import { createRuleTester } from '../utils/rule-tester.js' +import { createRuleTester } from '../../test/rule-tester.js' import { prefixBuiltinModuleImportRule, PrefixNodeModuleImportMessageIds } from './prefix-builtin-module-import.js' const ruleTester = createRuleTester() diff --git a/packages/eslint-plugin-rules/src/utils/rule-tester.ts b/packages/eslint-plugin-rules/test/rule-tester.ts similarity index 50% rename from packages/eslint-plugin-rules/src/utils/rule-tester.ts rename to packages/eslint-plugin-rules/test/rule-tester.ts index d698a11..64f9c84 100644 --- a/packages/eslint-plugin-rules/src/utils/rule-tester.ts +++ b/packages/eslint-plugin-rules/test/rule-tester.ts @@ -1,9 +1,13 @@ -import { join } from 'node:path' - import * as parser from '@typescript-eslint/parser' import { RuleTester } from '@typescript-eslint/rule-tester' +import * as vitest from 'vitest' -const tsRootDirectory = join(__dirname, '../..', 'test') +// https://typescript-eslint.io/packages/rule-tester/#vitest +// since we don't want to use vitest with globals +RuleTester.afterAll = vitest.afterAll +RuleTester.it = vitest.it +RuleTester.itOnly = vitest.it.only +RuleTester.describe = vitest.describe export function createRuleTester(): RuleTester { return new RuleTester({ @@ -11,7 +15,7 @@ export function createRuleTester(): RuleTester { parser, parserOptions: { ecmaVersion: 2023, - tsconfigRootDir: tsRootDirectory, + tsconfigRootDir: import.meta.dirname, project: './tsconfig.json', }, }, diff --git a/packages/eslint-plugin-rules/vitest.config.js b/packages/eslint-plugin-rules/vitest.config.js index 1f66570..03c371e 100644 --- a/packages/eslint-plugin-rules/vitest.config.js +++ b/packages/eslint-plugin-rules/vitest.config.js @@ -1,8 +1,11 @@ +import { defineConfig } from 'vitest/config' + import CONFIG from '../../vitest.config.js' -export default { +export default defineConfig({ test: { ...CONFIG.test, - globals: true, // necessary for the rule-tester to work + testTimeout: 10_000, + teardownTimeout: 10_000, }, -} +}) From c3ab6cbc7b545b39516e10407df089cab4102f13 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 6 Feb 2026 16:14:03 +0000 Subject: [PATCH 48/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@1.0.0-pr254.1 - @shiftcode/airtable-syncer@1.0.0-pr254.1 - @shiftcode/branch-utilities@6.0.0-pr254.4 - @shiftcode/cdk-utilities@1.0.0-pr254.1 - @shiftcode/eslint-config-recommended@7.0.0-pr254.4 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.4 - @shiftcode/iac-utilities@1.0.0-pr254.1 - @shiftcode/inversify-logger@1.0.0-pr254.1 - @shiftcode/lambda-utilities@1.0.0-pr254.1 - @shiftcode/logger@5.0.0-pr254.4 - @shiftcode/nest-logger@1.0.0-pr254.1 - @shiftcode/publish-helper@6.0.0-pr254.4 - @shiftcode/utilities@5.0.0-pr254.4 --- package-lock.json | 64 +++++++++---------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 +-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +-- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 59 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64b5d73..4e6e9f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18512,7 +18512,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18523,17 +18523,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^0.0.0-pr254.6", - "@shiftcode/inversify-logger": "^0.0.0-pr254.6", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", - "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.1", + "@shiftcode/inversify-logger": "^1.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.4", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -18542,9 +18542,9 @@ }, "peerDependencies": { "@aws-sdk/client-sns": "^3.188.0", - "@shiftcode/airtable-mapper": "^1.0.0 || ^0.0.0-pr254", - "@shiftcode/inversify-logger": "^1.0.0 || ^0.0.0-pr254", - "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/airtable-mapper": "^1.0.0 || ^1.0.0-pr254", + "@shiftcode/inversify-logger": "^1.0.0 || ^1.0.0-pr254", + "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", "@shiftcode/logger": "^4.0.0", "date-fns": "^4.0.0", "inversify": "^7.0.0", @@ -18554,7 +18554,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.3", + "version": "6.0.0-pr254.4", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18565,7 +18565,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -18581,11 +18581,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.3", + "version": "7.0.0-pr254.4", "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.3", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.4", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -18610,7 +18610,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.3", + "version": "6.0.0-pr254.4", "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -18628,7 +18628,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -18657,8 +18657,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^0.0.0-pr254.6", + "@shiftcode/branch-utilities": "^6.0.0-pr254.4", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", "@types/yargs": "^17.0.5" }, "engines": { @@ -18671,7 +18671,7 @@ "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", "@shiftcode/branch-utilities": "^5.0.2", - "@shiftcode/lambda-utilities": "^1.0.0 || ^0.0.0-pr254", + "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", "tslib": "^2.3.0" }, "peerDependenciesMeta": { @@ -18697,10 +18697,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.4", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -18715,14 +18715,14 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^0.0.0-pr254.6", - "@shiftcode/logger": "^5.0.0-pr254.3", - "@shiftcode/utilities": "^5.0.0-pr254.3", + "@shiftcode/inversify-logger": "^1.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/utilities": "^5.0.0-pr254.4", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" @@ -18733,7 +18733,7 @@ "peerDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0 || 0.0.0-pr254", + "@shiftcode/inversify-logger": "^1.0.0 || 1.0.0-pr254", "@shiftcode/logger": "^4.0.0", "@shiftcode/utilities": "^4.0.0", "@types/aws-lambda": "^8.10.89", @@ -18764,10 +18764,10 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.3", + "version": "5.0.0-pr254.4", "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.3" + "@shiftcode/utilities": "^5.0.0-pr254.4" }, "engines": { "node": ">=22.10.2" @@ -18778,13 +18778,13 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "0.0.0-pr254.6", + "version": "1.0.0-pr254.1", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.4", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -18801,7 +18801,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.3", + "version": "6.0.0-pr254.4", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -18812,7 +18812,7 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.3", + "@shiftcode/branch-utilities": "^6.0.0-pr254.4", "@types/yargs": "^17.0.32" }, "engines": { @@ -18837,7 +18837,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.3", + "version": "5.0.0-pr254.4", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 27d8664..de697f5 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index f0d0352..dd2554b 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.0", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.0", - "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.1", + "@shiftcode/inversify-logger": "^1.0.0-pr254.1", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.4", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 7f6ef89..166df66 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.3", + "version": "6.0.0-pr254.4", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 7346dc3..6f2a97f 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 525df12..3b142be 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.3", + "version": "7.0.0-pr254.4", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.3", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.4", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 3e71b2f..94301b9 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.3", + "version": "6.0.0-pr254.4", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 4ada5dc..4035d3e 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.0", + "@shiftcode/branch-utilities": "^6.0.0-pr254.4", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index a4ba3bb..16152d2 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.4", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 4e846e9..af9bd77 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,9 +34,9 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.0", - "@shiftcode/logger": "^5.0.0-pr254.3", - "@shiftcode/utilities": "^5.0.0-pr254.3", + "@shiftcode/inversify-logger": "^1.0.0-pr254.1", + "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/utilities": "^5.0.0-pr254.4", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" diff --git a/packages/logger/package.json b/packages/logger/package.json index 1158d2b..f91b987 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.3", + "version": "5.0.0-pr254.4", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.3" + "@shiftcode/utilities": "^5.0.0-pr254.4" }, "peerDependencies": { "@shiftcode/utilities": "^4.0.0" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 9872d5d..e3d5e7b 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.0", + "version": "1.0.0-pr254.1", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.4", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index 293c256..d6b6867 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.3", + "version": "6.0.0-pr254.4", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.3", + "@shiftcode/branch-utilities": "^6.0.0-pr254.4", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 5ce0f2b..b87f893 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.3", + "version": "5.0.0-pr254.4", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From e2fba02f0cad444919f419dd0d84fe914c3b1108 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 17:31:05 +0100 Subject: [PATCH 49/55] build: peer dependency versions --- packages/airtable-syncer/package.json | 2 +- packages/cdk-utilities/package.json | 4 ++++ packages/iac-utilities/package.json | 2 +- packages/inversify-logger/package.json | 2 +- packages/lambda-utilities/package.json | 4 ++-- packages/logger/package.json | 2 +- packages/nest-logger/package.json | 2 +- packages/publish-helper/package.json | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index dd2554b..eaff72f 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -40,7 +40,7 @@ "@shiftcode/airtable-mapper": "^1.0.0 || ^1.0.0-pr254", "@shiftcode/inversify-logger": "^1.0.0 || ^1.0.0-pr254", "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || 5.0.0-pr254", "date-fns": "^4.0.0", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 6f2a97f..15fef6e 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -26,6 +26,10 @@ "dependencies": { "just-pascal-case": "^3.2.0" }, + "devDependencies": { + "aws-cdk-lib": "^2.3.0", + "constructs": "^10.0.0" + }, "peerDependencies": { "aws-cdk-lib": "^2.3.0", "constructs": "^10.0.0", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 4035d3e..b2398b1 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -64,7 +64,7 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^5.0.2", + "@shiftcode/branch-utilities": "^6.0.0 || ^6.0.0-pr254", "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", "tslib": "^2.3.0" }, diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 16152d2..c1dba2c 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -36,7 +36,7 @@ "reflect-metadata": "^0.2.0" }, "peerDependencies": { - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || ^5.0.0-pr254", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index af9bd77..602c921 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -45,8 +45,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "^1.0.0 || 1.0.0-pr254", - "@shiftcode/logger": "^4.0.0", - "@shiftcode/utilities": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || ^5.0.0-pr254", + "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", diff --git a/packages/logger/package.json b/packages/logger/package.json index f91b987..44a5270 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -35,7 +35,7 @@ "@shiftcode/utilities": "^5.0.0-pr254.4" }, "peerDependencies": { - "@shiftcode/utilities": "^4.0.0" + "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254" }, "engines": { "node": ">=22.10.2" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index e3d5e7b..54d48a7 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -38,7 +38,7 @@ "peerDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || ^5.0.0-pr254", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index d6b6867..32f4335 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -29,7 +29,7 @@ "@types/yargs": "^17.0.32" }, "peerDependencies": { - "@shiftcode/branch-utilities": "^5.1.1", + "@shiftcode/branch-utilities": "^6.0.0 || ^6.0.0-pr254", "lerna": "^9.0.3", "tslib": "^2.3.0" }, From 0d0a8a852bc9af94d3abfcb875933f5b2d951cb3 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 6 Feb 2026 16:34:46 +0000 Subject: [PATCH 50/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@1.0.0-pr254.2 - @shiftcode/airtable-syncer@1.0.0-pr254.2 - @shiftcode/branch-utilities@6.0.0-pr254.5 - @shiftcode/cdk-utilities@1.0.0-pr254.2 - @shiftcode/eslint-config-recommended@7.0.0-pr254.5 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.5 - @shiftcode/iac-utilities@1.0.0-pr254.2 - @shiftcode/inversify-logger@1.0.0-pr254.2 - @shiftcode/lambda-utilities@1.0.0-pr254.2 - @shiftcode/logger@5.0.0-pr254.5 - @shiftcode/nest-logger@1.0.0-pr254.2 - @shiftcode/publish-helper@6.0.0-pr254.5 - @shiftcode/utilities@5.0.0-pr254.5 --- package-lock.json | 182 +++++++++--------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 +- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 120 insertions(+), 116 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e6e9f5..c34943c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -394,15 +394,15 @@ "version": "2.2.263", "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.263.tgz", "integrity": "sha512-X9JvcJhYcb7PHs8R7m4zMablO5C9PGb/hYfLnxds9h/rKJu6l7MiXE/SabCibuehxPnuO/vk+sVVJiUWrccarQ==", - "license": "Apache-2.0", - "peer": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz", "integrity": "sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A==", - "license": "Apache-2.0", - "peer": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@aws-cdk/cloud-assembly-schema": { "version": "48.20.0", @@ -412,8 +412,8 @@ "jsonschema", "semver" ], + "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "jsonschema": "~1.4.1", "semver": "^7.7.2" @@ -424,18 +424,18 @@ }, "node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema": { "version": "1.4.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } }, "node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver": { "version": "7.7.2", + "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -7514,8 +7514,8 @@ "yaml", "mime-types" ], + "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-cdk/asset-awscli-v1": "2.2.263", "@aws-cdk/asset-node-proxy-agent-v6": "^2.1.0", @@ -7541,15 +7541,15 @@ }, "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { "version": "1.0.2", + "dev": true, "inBundle": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/aws-cdk-lib/node_modules/ajv": { "version": "8.17.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -7563,18 +7563,18 @@ }, "node_modules/aws-cdk-lib/node_modules/ansi-regex": { "version": "5.0.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, "node_modules/aws-cdk-lib/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -7587,24 +7587,24 @@ }, "node_modules/aws-cdk-lib/node_modules/astral-regex": { "version": "2.0.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, "node_modules/aws-cdk-lib/node_modules/balanced-match": { "version": "1.0.2", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/brace-expansion": { "version": "1.1.12", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7612,18 +7612,18 @@ }, "node_modules/aws-cdk-lib/node_modules/case": { "version": "1.6.3", + "dev": true, "inBundle": true, "license": "(MIT OR GPL-3.0-or-later)", - "peer": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/aws-cdk-lib/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -7633,30 +7633,31 @@ }, "node_modules/aws-cdk-lib/node_modules/color-name": { "version": "1.1.4", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/concat-map": { "version": "0.0.1", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { "version": "3.1.3", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/fast-uri": { "version": "3.1.0", + "dev": true, "funding": [ { "type": "github", @@ -7668,14 +7669,13 @@ } ], "inBundle": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/aws-cdk-lib/node_modules/fs-extra": { "version": "11.3.3", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7687,39 +7687,39 @@ }, "node_modules/aws-cdk-lib/node_modules/graceful-fs": { "version": "4.2.11", + "dev": true, "inBundle": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/aws-cdk-lib/node_modules/ignore": { "version": "5.3.2", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } }, "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { "version": "1.0.0", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/jsonfile": { "version": "6.2.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "universalify": "^2.0.0" }, @@ -7729,33 +7729,33 @@ }, "node_modules/aws-cdk-lib/node_modules/jsonschema": { "version": "1.5.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } }, "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { "version": "4.4.2", + "dev": true, "inBundle": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/aws-cdk-lib/node_modules/mime-db": { "version": "1.52.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } }, "node_modules/aws-cdk-lib/node_modules/mime-types": { "version": "2.1.35", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -7765,9 +7765,9 @@ }, "node_modules/aws-cdk-lib/node_modules/minimatch": { "version": "3.1.2", + "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7777,27 +7777,27 @@ }, "node_modules/aws-cdk-lib/node_modules/punycode": { "version": "2.3.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } }, "node_modules/aws-cdk-lib/node_modules/require-from-string": { "version": "2.0.2", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/aws-cdk-lib/node_modules/semver": { "version": "7.7.3", + "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -7807,9 +7807,9 @@ }, "node_modules/aws-cdk-lib/node_modules/slice-ansi": { "version": "4.0.0", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -7824,9 +7824,9 @@ }, "node_modules/aws-cdk-lib/node_modules/string-width": { "version": "4.2.3", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7838,9 +7838,9 @@ }, "node_modules/aws-cdk-lib/node_modules/strip-ansi": { "version": "6.0.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7850,9 +7850,9 @@ }, "node_modules/aws-cdk-lib/node_modules/table": { "version": "6.9.0", + "dev": true, "inBundle": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -7866,18 +7866,18 @@ }, "node_modules/aws-cdk-lib/node_modules/universalify": { "version": "2.0.1", + "dev": true, "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.0.0" } }, "node_modules/aws-cdk-lib/node_modules/yaml": { "version": "1.10.2", + "dev": true, "inBundle": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 6" } @@ -8576,8 +8576,8 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.4.5.tgz", "integrity": "sha512-fOoP70YLevMZr5avJHx2DU3LNYmC6wM8OwdrNewMZou1kZnPGOeVzBrRjZNgFDHUlulYUjkpFRSpTE3D+n+ZSg==", - "license": "Apache-2.0", - "peer": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/conventional-changelog-angular": { "version": "7.0.0", @@ -18512,7 +18512,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18523,17 +18523,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.1", - "@shiftcode/inversify-logger": "^1.0.0-pr254.1", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", - "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.2", + "@shiftcode/inversify-logger": "^1.0.0-pr254.2", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.5", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -18545,7 +18545,7 @@ "@shiftcode/airtable-mapper": "^1.0.0 || ^1.0.0-pr254", "@shiftcode/inversify-logger": "^1.0.0 || ^1.0.0-pr254", "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || 5.0.0-pr254", "date-fns": "^4.0.0", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", @@ -18554,7 +18554,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.4", + "version": "6.0.0-pr254.5", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18565,11 +18565,15 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" }, + "devDependencies": { + "aws-cdk-lib": "^2.3.0", + "constructs": "^10.0.0" + }, "engines": { "node": ">=22.10.2" }, @@ -18581,11 +18585,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.4", + "version": "7.0.0-pr254.5", "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.4", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.5", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -18610,7 +18614,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.4", + "version": "6.0.0-pr254.5", "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -18628,7 +18632,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -18657,8 +18661,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.4", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", + "@shiftcode/branch-utilities": "^6.0.0-pr254.5", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", "@types/yargs": "^17.0.5" }, "engines": { @@ -18670,7 +18674,7 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^5.0.2", + "@shiftcode/branch-utilities": "^6.0.0 || ^6.0.0-pr254", "@shiftcode/lambda-utilities": "^1.0.0 || ^1.0.0-pr254", "tslib": "^2.3.0" }, @@ -18697,10 +18701,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.5", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -18708,21 +18712,21 @@ "node": ">=22.10.2" }, "peerDependencies": { - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || ^5.0.0-pr254", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" } }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.1", - "@shiftcode/logger": "^5.0.0-pr254.4", - "@shiftcode/utilities": "^5.0.0-pr254.4", + "@shiftcode/inversify-logger": "^1.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/utilities": "^5.0.0-pr254.5", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" @@ -18734,8 +18738,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", "@shiftcode/inversify-logger": "^1.0.0 || 1.0.0-pr254", - "@shiftcode/logger": "^4.0.0", - "@shiftcode/utilities": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || ^5.0.0-pr254", + "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", @@ -18764,27 +18768,27 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.4", + "version": "5.0.0-pr254.5", "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.4" + "@shiftcode/utilities": "^5.0.0-pr254.5" }, "engines": { "node": ">=22.10.2" }, "peerDependencies": { - "@shiftcode/utilities": "^4.0.0" + "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254" } }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.5", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -18794,14 +18798,14 @@ "peerDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", - "@shiftcode/logger": "^4.0.0", + "@shiftcode/logger": "^5.0.0 || ^5.0.0-pr254", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" } }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.4", + "version": "6.0.0-pr254.5", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -18812,14 +18816,14 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.4", + "@shiftcode/branch-utilities": "^6.0.0-pr254.5", "@types/yargs": "^17.0.32" }, "engines": { "node": ">=22.10.2" }, "peerDependencies": { - "@shiftcode/branch-utilities": "^5.1.1", + "@shiftcode/branch-utilities": "^6.0.0 || ^6.0.0-pr254", "lerna": "^9.0.3", "tslib": "^2.3.0" } @@ -18837,7 +18841,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.4", + "version": "5.0.0-pr254.5", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index de697f5..f274e18 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index eaff72f..9001003 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.1", - "@shiftcode/inversify-logger": "^1.0.0-pr254.1", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", - "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.2", + "@shiftcode/inversify-logger": "^1.0.0-pr254.2", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.5", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 166df66..1a805a0 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.4", + "version": "6.0.0-pr254.5", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index 15fef6e..f513b80 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index 3b142be..f1425a2 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.4", + "version": "7.0.0-pr254.5", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.4", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.5", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 94301b9..2411df6 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.4", + "version": "6.0.0-pr254.5", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index b2398b1..5751f4f 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.4", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.1", + "@shiftcode/branch-utilities": "^6.0.0-pr254.5", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index c1dba2c..8c34ffa 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.5", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 602c921..554dc63 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,9 +34,9 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.1", - "@shiftcode/logger": "^5.0.0-pr254.4", - "@shiftcode/utilities": "^5.0.0-pr254.4", + "@shiftcode/inversify-logger": "^1.0.0-pr254.2", + "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/utilities": "^5.0.0-pr254.5", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" diff --git a/packages/logger/package.json b/packages/logger/package.json index 44a5270..2b36119 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.4", + "version": "5.0.0-pr254.5", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.4" + "@shiftcode/utilities": "^5.0.0-pr254.5" }, "peerDependencies": { "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index 54d48a7..b68947b 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.1", + "version": "1.0.0-pr254.2", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.5", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index 32f4335..8e3b65f 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.4", + "version": "6.0.0-pr254.5", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.4", + "@shiftcode/branch-utilities": "^6.0.0-pr254.5", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index b87f893..0306ab5 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.4", + "version": "5.0.0-pr254.5", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From 9f1412ebd5dda7af97be6fb1f0878c9a7b609d70 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 17:55:19 +0100 Subject: [PATCH 51/55] fix: package name --- packages/iac-utilities/src/aws-sso-configure-profiles.ts | 2 +- .../src/scripts/aws-sso-configure-profiles.function.ts | 2 +- packages/iac-utilities/src/scripts/upload-to-s3.function.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/iac-utilities/src/aws-sso-configure-profiles.ts b/packages/iac-utilities/src/aws-sso-configure-profiles.ts index 94aa267..3ee439e 100644 --- a/packages/iac-utilities/src/aws-sso-configure-profiles.ts +++ b/packages/iac-utilities/src/aws-sso-configure-profiles.ts @@ -7,7 +7,7 @@ const args = yargs(process.argv) .option('config', { alias: 'c', type: 'string', - description: `path to the config file (default .${DEFAULT_PATH_TO_AWS_SSO_CONFIG}) from which the profiles will be copied to ~.aws/config. The content must match the schema defined in @shiftcode/iac-helper/aws-sso-config-schema.json`, + description: `path to the config file (default .${DEFAULT_PATH_TO_AWS_SSO_CONFIG}) from which the profiles will be copied to ~.aws/config. The content must match the schema defined in @shiftcode/iac-utilities/aws-sso-config-schema.json`, demandOption: true, }) .option('verbose', { diff --git a/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts b/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts index 99ef308..4c5b455 100644 --- a/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts +++ b/packages/iac-utilities/src/scripts/aws-sso-configure-profiles.function.ts @@ -9,7 +9,7 @@ import awsSsoProfileConfigSchema from '../json-schemas/aws-sso-profiles-definiti export const DEFAULT_PATH_TO_AWS_SSO_CONFIG = '/aws/sso.config.json' -export const AWS_SSO_CONFIG_SCHEMA_NAME = '@shiftcode/iac-helper/aws-sso-profile-config-schema.json' +export const AWS_SSO_CONFIG_SCHEMA_NAME = '@shiftcode/iac-utilities/aws-sso-profile-config-schema.json' type AwsSsoConfigDefSchemaName = `${string}${typeof AWS_SSO_CONFIG_SCHEMA_NAME}` diff --git a/packages/iac-utilities/src/scripts/upload-to-s3.function.ts b/packages/iac-utilities/src/scripts/upload-to-s3.function.ts index e449dbb..6e884aa 100644 --- a/packages/iac-utilities/src/scripts/upload-to-s3.function.ts +++ b/packages/iac-utilities/src/scripts/upload-to-s3.function.ts @@ -11,7 +11,7 @@ import mime from 'mime' import s3DefinitionSchema from '../json-schemas/s3-upload-definition-schema.json' with { type: 'json' } import { colorize, readFromStackOutput } from './script-utils.js' -export const S3_UPLOAD_DEFINITION_SCHEMA_NAME = '@shiftcode/iac-helper/s3-upload-definition-schema.json' +export const S3_UPLOAD_DEFINITION_SCHEMA_NAME = '@shiftcode/iac-utilities/s3-upload-definition-schema.json' type S3UploadDefSchemaName = `${string}${typeof S3_UPLOAD_DEFINITION_SCHEMA_NAME}` From 776a3ac4ad492f534cbb43fea8c1299b50ebd847 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 17:55:34 +0100 Subject: [PATCH 52/55] docs: readme --- packages/lambda-utilities/README.md | 53 ++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/packages/lambda-utilities/README.md b/packages/lambda-utilities/README.md index e779eee..adfa5bf 100644 --- a/packages/lambda-utilities/README.md +++ b/packages/lambda-utilities/README.md @@ -1,18 +1,45 @@ -# lambda-utils +# lambda-utilities -> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023)) +> 🎯 Target runtime: es2023 ([Node >= 22](https://node.green/#ES2023)) -This package contains some utils for lambda functions. +This package contains utilities for AWS Lambda functions. -## services (deep-import) +## Exports -- require the following peer dependencies (when used): - - `reflect-metadata` - - `inversify` - - `aws-sdk` - - `@shiftcode/logger` - - `@shiftcode/logger-inversify` +### Main Export -* [S3Helper](./src/s3/s3-helper.service.ts) import from `@shiftcode/lambda-utils/s3` - - requires LoggerService (`@shiftcode/logger-inversify`), Logger(`@shiftcode/logger`) & `inversify` to be provided - - provides `init` function which needs to be called first `s3Helper.init('bucket')` +Import from `@shiftcode/lambda-utilities` + +- **HttpResponse** - Response builder for API Gateway Lambda functions +- **isAwsLambdaEnv** - Detect if running in AWS Lambda environment + +**Required peer dependencies:** + +- `@shiftcode/utilities` +- `@types/aws-lambda` + +### Deep Imports + +#### S3 Helper + +Import from `@shiftcode/lambda-utilities/s3` + +- **S3Helper** - Injectable service for S3 operations (list, upload, download) + +**Required peer dependencies:** + +- `@aws-sdk/client-s3` +- `@shiftcode/inversify-logger` +- `@shiftcode/logger` +- `inversify` +- `reflect-metadata` + +#### SSM Parameters + +Import from `@shiftcode/lambda-utilities/ssm` + +- **fetchSsmStringParamValue** - Fetch SSM parameters via Lambda extension layer + +**Required peer dependencies:** + +- `@aws-sdk/client-ssm` From a2cfa68bac431ea8badb0c7fd2211ccc99cf0dd5 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 6 Feb 2026 16:59:20 +0000 Subject: [PATCH 53/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@1.0.0-pr254.3 - @shiftcode/airtable-syncer@1.0.0-pr254.3 - @shiftcode/branch-utilities@6.0.0-pr254.6 - @shiftcode/cdk-utilities@1.0.0-pr254.3 - @shiftcode/eslint-config-recommended@7.0.0-pr254.6 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.6 - @shiftcode/iac-utilities@1.0.0-pr254.3 - @shiftcode/inversify-logger@1.0.0-pr254.3 - @shiftcode/lambda-utilities@1.0.0-pr254.3 - @shiftcode/logger@5.0.0-pr254.6 - @shiftcode/nest-logger@1.0.0-pr254.3 - @shiftcode/publish-helper@6.0.0-pr254.6 - @shiftcode/utilities@5.0.0-pr254.6 --- package-lock.json | 54 +++++++++---------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 ++-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +-- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +-- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 54 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index c34943c..1bc9abf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18512,7 +18512,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18523,17 +18523,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.2", - "@shiftcode/inversify-logger": "^1.0.0-pr254.2", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", - "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.3", + "@shiftcode/inversify-logger": "^1.0.0-pr254.3", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.6", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -18554,7 +18554,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.5", + "version": "6.0.0-pr254.6", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18565,7 +18565,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -18585,11 +18585,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.5", + "version": "7.0.0-pr254.6", "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.5", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.6", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -18614,7 +18614,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.5", + "version": "6.0.0-pr254.6", "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -18632,7 +18632,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -18661,8 +18661,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.5", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", + "@shiftcode/branch-utilities": "^6.0.0-pr254.6", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", "@types/yargs": "^17.0.5" }, "engines": { @@ -18701,10 +18701,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.6", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -18719,14 +18719,14 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.2", - "@shiftcode/logger": "^5.0.0-pr254.5", - "@shiftcode/utilities": "^5.0.0-pr254.5", + "@shiftcode/inversify-logger": "^1.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/utilities": "^5.0.0-pr254.6", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" @@ -18768,10 +18768,10 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.5", + "version": "5.0.0-pr254.6", "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.5" + "@shiftcode/utilities": "^5.0.0-pr254.6" }, "engines": { "node": ">=22.10.2" @@ -18782,13 +18782,13 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.6", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -18805,7 +18805,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.5", + "version": "6.0.0-pr254.6", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -18816,7 +18816,7 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.5", + "@shiftcode/branch-utilities": "^6.0.0-pr254.6", "@types/yargs": "^17.0.32" }, "engines": { @@ -18841,7 +18841,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.5", + "version": "5.0.0-pr254.6", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index f274e18..9f28dae 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index 9001003..b80c8db 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.2", - "@shiftcode/inversify-logger": "^1.0.0-pr254.2", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", - "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.3", + "@shiftcode/inversify-logger": "^1.0.0-pr254.3", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.6", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 1a805a0..02537da 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.5", + "version": "6.0.0-pr254.6", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index f513b80..e3eb0e3 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index f1425a2..bb4c3a1 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.5", + "version": "7.0.0-pr254.6", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.5", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.6", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 2411df6..2817ddb 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.5", + "version": "6.0.0-pr254.6", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index 5751f4f..b3fb37c 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.5", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.2", + "@shiftcode/branch-utilities": "^6.0.0-pr254.6", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index 8c34ffa..d4032e4 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.6", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 554dc63..2195e99 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,9 +34,9 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.2", - "@shiftcode/logger": "^5.0.0-pr254.5", - "@shiftcode/utilities": "^5.0.0-pr254.5", + "@shiftcode/inversify-logger": "^1.0.0-pr254.3", + "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/utilities": "^5.0.0-pr254.6", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" diff --git a/packages/logger/package.json b/packages/logger/package.json index 2b36119..233ae93 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.5", + "version": "5.0.0-pr254.6", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.5" + "@shiftcode/utilities": "^5.0.0-pr254.6" }, "peerDependencies": { "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index b68947b..c673bee 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.2", + "version": "1.0.0-pr254.3", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.5", + "@shiftcode/logger": "^5.0.0-pr254.6", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index 8e3b65f..abafe33 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.5", + "version": "6.0.0-pr254.6", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.5", + "@shiftcode/branch-utilities": "^6.0.0-pr254.6", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 0306ab5..cf7546e 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.5", + "version": "5.0.0-pr254.6", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", From f449f2544056f6c964f1f74f77a16f4fc998f576 Mon Sep 17 00:00:00 2001 From: Simon Mumenthaler Date: Fri, 6 Feb 2026 19:18:52 +0100 Subject: [PATCH 54/55] fix: correct rule for all non-src files --- packages/eslint-config-recommended/src/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/eslint-config-recommended/src/index.ts b/packages/eslint-config-recommended/src/index.ts index d908dac..8d6018b 100644 --- a/packages/eslint-config-recommended/src/index.ts +++ b/packages/eslint-config-recommended/src/index.ts @@ -249,10 +249,14 @@ export function defineScTsConfig(...configs: Parameters): R }, // relax the rules for files which are not part of the src/ folder and for test files + // only change file/ignore globs with care! { files: [ - '!src/**/*.{ts,js,mjs,cjs}', // include everything unless in src folder - 'src/**/*.{spec,test}.ts', // include test files + '**/*.{ts,mts,cts,js,mjs,cjs}', // include all ts/js files + ], + ignores: [ + 'src/**/*', // ignore all files inside src/ + '!src/**/*.{spec,test}.ts', // un-ignore test files ], rules: { // it is ok to use dev deps and deps that are listed inside the root package.json From bb77a79b8c607ea87fe47de3874bd326c0371289 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 6 Feb 2026 18:22:31 +0000 Subject: [PATCH 55/55] build(release): next version [skip_build] - @shiftcode/airtable-mapper@1.0.0-pr254.4 - @shiftcode/airtable-syncer@1.0.0-pr254.4 - @shiftcode/branch-utilities@6.0.0-pr254.7 - @shiftcode/cdk-utilities@1.0.0-pr254.4 - @shiftcode/eslint-config-recommended@7.0.0-pr254.7 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.7 - @shiftcode/iac-utilities@1.0.0-pr254.4 - @shiftcode/inversify-logger@1.0.0-pr254.4 - @shiftcode/lambda-utilities@1.0.0-pr254.4 - @shiftcode/logger@5.0.0-pr254.7 - @shiftcode/nest-logger@1.0.0-pr254.4 - @shiftcode/publish-helper@6.0.0-pr254.7 - @shiftcode/utilities@5.0.0-pr254.7 --- package-lock.json | 54 +++++++++---------- packages/airtable-mapper/package.json | 2 +- packages/airtable-syncer/package.json | 10 ++-- packages/branch-utilities/package.json | 2 +- packages/cdk-utilities/package.json | 2 +- .../eslint-config-recommended/package.json | 4 +- packages/eslint-plugin-rules/package.json | 2 +- packages/iac-utilities/package.json | 6 +-- packages/inversify-logger/package.json | 4 +- packages/lambda-utilities/package.json | 8 +-- packages/logger/package.json | 4 +- packages/nest-logger/package.json | 4 +- packages/publish-helper/package.json | 4 +- packages/utilities/package.json | 2 +- 14 files changed, 54 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1bc9abf..08ff734 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18512,7 +18512,7 @@ }, "packages/airtable-mapper": { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18523,17 +18523,17 @@ }, "packages/airtable-syncer": { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "dependencies": { "airtable": "^0.12.2", "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.3", - "@shiftcode/inversify-logger": "^1.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.4", + "@shiftcode/inversify-logger": "^1.0.0-pr254.4", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.7", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, @@ -18554,7 +18554,7 @@ }, "packages/branch-utilities": { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.6", + "version": "6.0.0-pr254.7", "license": "MIT", "engines": { "node": ">=22.10.2" @@ -18565,7 +18565,7 @@ }, "packages/cdk-utilities": { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "dependencies": { "just-pascal-case": "^3.2.0" @@ -18585,11 +18585,11 @@ }, "packages/eslint-config-recommended": { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.6", + "version": "7.0.0-pr254.7", "license": "MIT", "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.6", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.7", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", @@ -18614,7 +18614,7 @@ }, "packages/eslint-plugin-rules": { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.6", + "version": "6.0.0-pr254.7", "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.46.0" @@ -18632,7 +18632,7 @@ }, "packages/iac-utilities": { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "dependencies": { "ajv": "^8.16.0", @@ -18661,8 +18661,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.6", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", + "@shiftcode/branch-utilities": "^6.0.0-pr254.7", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.4", "@types/yargs": "^17.0.5" }, "engines": { @@ -18701,10 +18701,10 @@ }, "packages/inversify-logger": { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.7", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, @@ -18719,14 +18719,14 @@ }, "packages/lambda-utilities": { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.6", - "@shiftcode/utilities": "^5.0.0-pr254.6", + "@shiftcode/inversify-logger": "^1.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.7", + "@shiftcode/utilities": "^5.0.0-pr254.7", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" @@ -18768,10 +18768,10 @@ }, "packages/logger": { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.6", + "version": "5.0.0-pr254.7", "license": "MIT", "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.6" + "@shiftcode/utilities": "^5.0.0-pr254.7" }, "engines": { "node": ">=22.10.2" @@ -18782,13 +18782,13 @@ }, "packages/nest-logger": { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "license": "MIT", "devDependencies": { "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.7", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -18805,7 +18805,7 @@ }, "packages/publish-helper": { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.6", + "version": "6.0.0-pr254.7", "license": "MIT", "dependencies": { "conventional-changelog-angular": "^8.0.0", @@ -18816,7 +18816,7 @@ "publish-lib": "dist/publish-lib.js" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.6", + "@shiftcode/branch-utilities": "^6.0.0-pr254.7", "@types/yargs": "^17.0.32" }, "engines": { @@ -18841,7 +18841,7 @@ }, "packages/utilities": { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.6", + "version": "5.0.0-pr254.7", "license": "MIT", "engines": { "node": ">=22.10.2" diff --git a/packages/airtable-mapper/package.json b/packages/airtable-mapper/package.json index 9f28dae..36cedaa 100644 --- a/packages/airtable-mapper/package.json +++ b/packages/airtable-mapper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-mapper", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "interfaces and classes for airtable mapping", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/airtable-syncer/package.json b/packages/airtable-syncer/package.json index b80c8db..bb5dfdf 100644 --- a/packages/airtable-syncer/package.json +++ b/packages/airtable-syncer/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/airtable-syncer", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "base utils and services to export airtable and upload to S3", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,10 +28,10 @@ "p-queue": "^9.0.1" }, "devDependencies": { - "@shiftcode/airtable-mapper": "^1.0.0-pr254.3", - "@shiftcode/inversify-logger": "^1.0.0-pr254.3", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/airtable-mapper": "^1.0.0-pr254.4", + "@shiftcode/inversify-logger": "^1.0.0-pr254.4", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.7", "@swc/core": "^1.15.11", "unplugin-swc": "^1.5.9" }, diff --git a/packages/branch-utilities/package.json b/packages/branch-utilities/package.json index 02537da..ff7a9e7 100644 --- a/packages/branch-utilities/package.json +++ b/packages/branch-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/branch-utilities", - "version": "6.0.0-pr254.6", + "version": "6.0.0-pr254.7", "description": "Utilities for local and ci to get branch name and stage", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/cdk-utilities/package.json b/packages/cdk-utilities/package.json index e3eb0e3..8487bca 100644 --- a/packages/cdk-utilities/package.json +++ b/packages/cdk-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/cdk-utilities", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "Constructs for iac with aws-cdk-lib", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/eslint-config-recommended/package.json b/packages/eslint-config-recommended/package.json index bb4c3a1..7250324 100644 --- a/packages/eslint-config-recommended/package.json +++ b/packages/eslint-config-recommended/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-config-recommended", - "version": "7.0.0-pr254.6", + "version": "7.0.0-pr254.7", "description": "default shiftcode config for eslint", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -28,7 +28,7 @@ }, "dependencies": { "@eslint/js": "^9.37.0", - "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.6", + "@shiftcode/eslint-plugin-rules": "^6.0.0-pr254.7", "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", diff --git a/packages/eslint-plugin-rules/package.json b/packages/eslint-plugin-rules/package.json index 2817ddb..bd8f81a 100644 --- a/packages/eslint-plugin-rules/package.json +++ b/packages/eslint-plugin-rules/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/eslint-plugin-rules", - "version": "6.0.0-pr254.6", + "version": "6.0.0-pr254.7", "description": "eslint-rules for shiftcode-specific eslint rules", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", diff --git a/packages/iac-utilities/package.json b/packages/iac-utilities/package.json index b3fb37c..324f3ae 100644 --- a/packages/iac-utilities/package.json +++ b/packages/iac-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/iac-utilities", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "scripts and util functions for aws iac", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -54,8 +54,8 @@ "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/credential-providers": "^3.204.0", "@aws-sdk/types": "^3.201.0", - "@shiftcode/branch-utilities": "^6.0.0-pr254.6", - "@shiftcode/lambda-utilities": "^1.0.0-pr254.3", + "@shiftcode/branch-utilities": "^6.0.0-pr254.7", + "@shiftcode/lambda-utilities": "^1.0.0-pr254.4", "@types/yargs": "^17.0.5" }, "peerDependencies": { diff --git a/packages/inversify-logger/package.json b/packages/inversify-logger/package.json index d4032e4..7e72243 100644 --- a/packages/inversify-logger/package.json +++ b/packages/inversify-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/inversify-logger", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "InversifyJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.7", "inversify": "^7.0.0", "reflect-metadata": "^0.2.0" }, diff --git a/packages/lambda-utilities/package.json b/packages/lambda-utilities/package.json index 2195e99..2441436 100644 --- a/packages/lambda-utilities/package.json +++ b/packages/lambda-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/lambda-utilities", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "Utils for lambda functions", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -34,9 +34,9 @@ "devDependencies": { "@aws-sdk/client-s3": "^3.204.0", "@aws-sdk/client-ssm": "^3.204.0", - "@shiftcode/inversify-logger": "^1.0.0-pr254.3", - "@shiftcode/logger": "^5.0.0-pr254.6", - "@shiftcode/utilities": "^5.0.0-pr254.6", + "@shiftcode/inversify-logger": "^1.0.0-pr254.4", + "@shiftcode/logger": "^5.0.0-pr254.7", + "@shiftcode/utilities": "^5.0.0-pr254.7", "@types/aws-lambda": "^8.10.89", "inversify": "^7.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0" diff --git a/packages/logger/package.json b/packages/logger/package.json index 233ae93..15291d2 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/logger", - "version": "5.0.0-pr254.6", + "version": "5.0.0-pr254.7", "description": "logger for local and aws lambda execution", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -32,7 +32,7 @@ "test:watch": "vitest --cache" }, "devDependencies": { - "@shiftcode/utilities": "^5.0.0-pr254.6" + "@shiftcode/utilities": "^5.0.0-pr254.7" }, "peerDependencies": { "@shiftcode/utilities": "^5.0.0 || ^5.0.0-pr254" diff --git a/packages/nest-logger/package.json b/packages/nest-logger/package.json index c673bee..06e63b2 100644 --- a/packages/nest-logger/package.json +++ b/packages/nest-logger/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/nest-logger", - "version": "1.0.0-pr254.3", + "version": "1.0.0-pr254.4", "description": "NestJS support for the logger package", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -31,7 +31,7 @@ "@nestjs/common": "^11.0.0", "@nestjs/core": "^11.0.0", "@nestjs/testing": "^11.0.0", - "@shiftcode/logger": "^5.0.0-pr254.6", + "@shiftcode/logger": "^5.0.0-pr254.7", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.1.0" }, diff --git a/packages/publish-helper/package.json b/packages/publish-helper/package.json index abafe33..1a30948 100644 --- a/packages/publish-helper/package.json +++ b/packages/publish-helper/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/publish-helper", - "version": "6.0.0-pr254.6", + "version": "6.0.0-pr254.7", "description": "scripts for conventional (pre)releases", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT", @@ -25,7 +25,7 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@shiftcode/branch-utilities": "^6.0.0-pr254.6", + "@shiftcode/branch-utilities": "^6.0.0-pr254.7", "@types/yargs": "^17.0.32" }, "peerDependencies": { diff --git a/packages/utilities/package.json b/packages/utilities/package.json index cf7546e..f184907 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@shiftcode/utilities", - "version": "5.0.0-pr254.6", + "version": "5.0.0-pr254.7", "description": "Contains some utilities", "repository": "https://github.com/shiftcode/sc-commons-public", "license": "MIT",