diff --git a/.github/actions/lint-test-coverage/action.yaml b/.github/actions/lint-test-coverage/action.yaml index e51f928b8..b31358def 100755 --- a/.github/actions/lint-test-coverage/action.yaml +++ b/.github/actions/lint-test-coverage/action.yaml @@ -10,6 +10,14 @@ inputs: description: "Whether to upload coverage to Codecov (true/false). Default false." required: false default: "false" + ecr_pull_role_arn: + description: "AWS IAM role ARN used to authenticate to private ECR for data-access IT tests." + required: false + default: "" + aws_region: + description: "AWS region for ECR authentication." + required: false + default: "us-east-1" runs: using: "composite" @@ -26,6 +34,17 @@ runs: spacecat-shared: - 'packages/spacecat-shared-data-access/**' + - name: Configure AWS credentials (private ECR pull) + if: steps.changes.outputs.spacecat-shared == 'true' && inputs.ecr_pull_role_arn != '' + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ inputs.ecr_pull_role_arn }} + aws-region: ${{ inputs.aws_region }} + + - name: Login to Amazon ECR + if: steps.changes.outputs.spacecat-shared == 'true' && inputs.ecr_pull_role_arn != '' + uses: aws-actions/amazon-ecr-login@v2 + - name: Run Integration Tests if: steps.changes.outputs.spacecat-shared == 'true' run: npm run --prefix packages/spacecat-shared-data-access test:it diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9a24380e2..7e4c5531f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -32,6 +32,9 @@ jobs: - name: Lint, Test, Coverage Upload uses: ./.github/actions/lint-test-coverage + with: + ecr_pull_role_arn: ${{ secrets.AWS_ECR_PULL_ROLE_ARN }} + aws_region: us-east-1 - name: Semantic Release (Dry Run) if: github.ref != 'refs/heads/main' diff --git a/package-lock.json b/package-lock.json index 743820b3b..5de674ea0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,8 +42,6 @@ }, "node_modules/@actions/core": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", - "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", "dev": true, "license": "MIT", "dependencies": { @@ -53,8 +51,6 @@ }, "node_modules/@actions/exec": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", - "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", "dev": true, "license": "MIT", "dependencies": { @@ -63,8 +59,6 @@ }, "node_modules/@actions/http-client": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", "dev": true, "license": "MIT", "dependencies": { @@ -74,15 +68,11 @@ }, "node_modules/@actions/io": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", - "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", "dev": true, "license": "MIT" }, "node_modules/@adobe/eslint-config-helix": { "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@adobe/eslint-config-helix/-/eslint-config-helix-3.0.18.tgz", - "integrity": "sha512-8JDqLn3TgaxS2Y3jd1sRfhy6mNOjBxHFAhS+7EjU0O0bRR41mvgyZfWBg9m0bVLvHrLkUNWR6iJsQ9LDwkEMnQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -99,8 +89,6 @@ }, "node_modules/@adobe/eslint-config-helix/node_modules/@eslint/config-helpers": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.1.tgz", - "integrity": "sha512-QN8067dXsXAl9HIvqws7STEviheRFojX3zek5OpC84oBxDGqizW9731ByF/ASxqQihbWrVDdZXS+Ihnsckm9dg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -112,8 +100,6 @@ }, "node_modules/@adobe/fetch": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@adobe/fetch/-/fetch-4.2.3.tgz", - "integrity": "sha512-Sn1oRY9WMnLWTIa0nibWJkuck/LWypnckZk1Ude/COAQbanI0mn3jLecJMP0DcGITsl7lWfdcoUpT+a5DpBy8g==", "license": "Apache-2.0", "dependencies": { "debug": "4.4.3", @@ -126,8 +112,6 @@ }, "node_modules/@adobe/fetch/node_modules/lru-cache": { "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "license": "ISC", "engines": { "node": ">=12" @@ -135,8 +119,6 @@ }, "node_modules/@adobe/helix-docx2md": { "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@adobe/helix-docx2md/-/helix-docx2md-1.9.6.tgz", - "integrity": "sha512-braLGxXoPnCeklNN791Tr7DUN/Cl9f1lMRXMURoTO4IKP9iPVFYU/8CMr201a2QjCaEF64APWUx5OqD2g0GN2g==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-markdown-support": "7.1.16", @@ -159,8 +141,6 @@ }, "node_modules/@adobe/helix-docx2md/node_modules/@adobe/mdast-util-gridtables": { "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@adobe/mdast-util-gridtables/-/mdast-util-gridtables-4.0.15.tgz", - "integrity": "sha512-MllmezhRuVH+fhtU/9dMtG32rE/NFy6L894Hta5oP109AYma5Q4ZH0qiZGDsgJ90AXmeeuzvWKv1bfa+f9/uFg==", "license": "Apache-2.0", "dependencies": { "@adobe/micromark-extension-gridtables": "^2.0.4", @@ -172,8 +152,6 @@ }, "node_modules/@adobe/helix-markdown-support": { "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@adobe/helix-markdown-support/-/helix-markdown-support-7.1.16.tgz", - "integrity": "sha512-Qpe1rP/RA3TKIuSgLkMJbFJuJmbSD+1WUsLT7JrlLo/N8mOlNM+ZIG8tbFpd3v5muVzjekt4ggRRLQlKdBmLjQ==", "license": "Apache-2.0", "dependencies": { "hast-util-to-html": "9.0.5", @@ -204,8 +182,6 @@ }, "node_modules/@adobe/helix-markdown-support/node_modules/mdast-util-to-hast": { "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -225,8 +201,6 @@ }, "node_modules/@adobe/helix-md2docx": { "version": "2.2.30", - "resolved": "https://registry.npmjs.org/@adobe/helix-md2docx/-/helix-md2docx-2.2.30.tgz", - "integrity": "sha512-mjq+FoIGEorb50tpRROoWzYe3Dy7GBmMmMOjngW/E+fyGxZQmUHG9+7FeUjZwODvcICGX8j75MFBiwxUeCbpcQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -249,8 +223,6 @@ }, "node_modules/@adobe/helix-md2docx/node_modules/@adobe/mdast-util-gridtables": { "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@adobe/mdast-util-gridtables/-/mdast-util-gridtables-4.0.15.tgz", - "integrity": "sha512-MllmezhRuVH+fhtU/9dMtG32rE/NFy6L894Hta5oP109AYma5Q4ZH0qiZGDsgJ90AXmeeuzvWKv1bfa+f9/uFg==", "license": "Apache-2.0", "dependencies": { "@adobe/micromark-extension-gridtables": "^2.0.4", @@ -262,8 +234,6 @@ }, "node_modules/@adobe/helix-md2docx/node_modules/@adobe/remark-gridtables": { "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@adobe/remark-gridtables/-/remark-gridtables-3.0.16.tgz", - "integrity": "sha512-V5Ai1A2jr+fiziRBB9LxUYiEI7xhAoF0ZMzeMwDbjLe4ULoMScH1tffSbCtFU9gKnPNcTF9OJdkZizHCslTj3Q==", "license": "Apache-2.0", "dependencies": { "@adobe/mdast-util-gridtables": "4.0.15", @@ -272,14 +242,10 @@ }, "node_modules/@adobe/helix-shared-async": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@adobe/helix-shared-async/-/helix-shared-async-2.0.2.tgz", - "integrity": "sha512-I510DKZI7Vf1ikqm9asKN5ZG9oEEx6VQpttdtzM1BGkrXWA7t/QeG6O54TLKGYMXDhdhpH+8kaleS3OfhQyDOQ==", "license": "Apache-2.0" }, "node_modules/@adobe/helix-shared-process-queue": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@adobe/helix-shared-process-queue/-/helix-shared-process-queue-3.1.3.tgz", - "integrity": "sha512-lDxc6nURab94VKkmSnIf075aKW+Dy0UE+KtFeLSdufBLs4/GEVsUkYlLvt2H+XYjT1u5IIr7z3k1WlO3/FtH0w==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-shared-async": "2.0.2" @@ -287,14 +253,10 @@ }, "node_modules/@adobe/helix-shared-wrap": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@adobe/helix-shared-wrap/-/helix-shared-wrap-2.0.2.tgz", - "integrity": "sha512-5cjL0LtqTp7YG6SaYOeW3t+/aRD1DDKhgt6zQKoeoVkpPKo5EsnDDbGUL4naYlxzOnpBx7FdERX6fUA4Kd+T1w==", "license": "Apache-2.0" }, "node_modules/@adobe/helix-universal": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@adobe/helix-universal/-/helix-universal-5.4.0.tgz", - "integrity": "sha512-3ZfFdjYtpv7RCgul9yyOBsRVsxLNapwt0YjASBhyzJGNjnPxrWDlqDtbpBdwAgA1Nuh9nmjzFDFu8CJWv6BMKw==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -303,8 +265,6 @@ }, "node_modules/@adobe/mammoth": { "version": "1.7.1-bleeding.2", - "resolved": "https://registry.npmjs.org/@adobe/mammoth/-/mammoth-1.7.1-bleeding.2.tgz", - "integrity": "sha512-xqtsc3BznvDLkZ43lwRjn8D3b2dteq+9L128Znn1cOgCiEEbDDJKTeKRZguYazOIOMf1oWOffhPWnEyWCxbWiw==", "license": "BSD-2-Clause", "dependencies": { "@xmldom/xmldom": "^0.8.6", @@ -327,8 +287,6 @@ }, "node_modules/@adobe/mammoth/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" @@ -336,14 +294,10 @@ }, "node_modules/@adobe/mammoth/node_modules/bluebird": { "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", "license": "MIT" }, "node_modules/@adobe/mdast-util-gridtables": { "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@adobe/mdast-util-gridtables/-/mdast-util-gridtables-4.0.14.tgz", - "integrity": "sha512-qBXNrWsVyejpqjcZyK7Z0IxHQ2Rhed7DaoiGU9dIJtxVpq5BbTReIq9Nc+373HxJnB36qIO57YKoIop2MAqDwg==", "license": "Apache-2.0", "dependencies": { "@adobe/micromark-extension-gridtables": "^2.0.4", @@ -355,8 +309,6 @@ }, "node_modules/@adobe/mdast-util-gridtables/node_modules/mdast-util-to-hast": { "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -376,8 +328,6 @@ }, "node_modules/@adobe/micromark-extension-gridtables": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@adobe/micromark-extension-gridtables/-/micromark-extension-gridtables-2.0.4.tgz", - "integrity": "sha512-mzyRI2d0StuUv75VFnffYsHXRUo8J9RlK1EvjfmgHahwda1gNwe1Fqh4AYEZSWChf1HD/QBRcL6hEnxj9hedMg==", "license": "Apache-2.0", "dependencies": { "micromark": "^4.0.0", @@ -387,8 +337,6 @@ }, "node_modules/@adobe/remark-gridtables": { "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@adobe/remark-gridtables/-/remark-gridtables-3.0.15.tgz", - "integrity": "sha512-WJkRv5Ws8c5jzCVj8tXn/Ib186uetP/IfwPknYUf0wsKpLfUP4a+SLVFSufKqZQIclETGxDITGbD/stIIhK/0A==", "license": "Apache-2.0", "dependencies": { "@adobe/mdast-util-gridtables": "4.0.14", @@ -397,14 +345,10 @@ }, "node_modules/@adobe/rum-distiller": { "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@adobe/rum-distiller/-/rum-distiller-1.23.0.tgz", - "integrity": "sha512-iHfI/Yme77Ayux8YjsVuFtRitgVp+XIrwnZbbQ3/w9LU32H6zCT3NlV5p4E/rZ8E3sS8IzC9cCCAL4vpavIQWg==", "license": "Apache-2.0" }, "node_modules/@adobe/spacecat-helix-content-sdk": { "version": "1.4.33", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-helix-content-sdk/-/spacecat-helix-content-sdk-1.4.33.tgz", - "integrity": "sha512-uzGsC26bEwNKd8wA24GOMWwi9o33H2/fey4qoC3LGXpyVwSO5Xkh08vmYGGjlylOQvihVsUpRwtiVo4SBEPI4g==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -435,8 +379,6 @@ }, "node_modules/@adobe/spacecat-helix-content-sdk/node_modules/@adobe/helix-docx2md": { "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@adobe/helix-docx2md/-/helix-docx2md-1.9.7.tgz", - "integrity": "sha512-fMjydLP4+8uNxZoWftmmLMlaHFGqicXbLqT0TZwtt0Qmbrd9gK1immES0mzaG937Cpc+c9uzU175ufRGueBkVQ==", "license": "Apache-2.0", "dependencies": { "@adobe/helix-markdown-support": "7.1.16", @@ -459,8 +401,6 @@ }, "node_modules/@adobe/spacecat-helix-content-sdk/node_modules/@adobe/mdast-util-gridtables": { "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@adobe/mdast-util-gridtables/-/mdast-util-gridtables-4.0.15.tgz", - "integrity": "sha512-MllmezhRuVH+fhtU/9dMtG32rE/NFy6L894Hta5oP109AYma5Q4ZH0qiZGDsgJ90AXmeeuzvWKv1bfa+f9/uFg==", "license": "Apache-2.0", "dependencies": { "@adobe/micromark-extension-gridtables": "^2.0.4", @@ -472,8 +412,6 @@ }, "node_modules/@adobe/spacecat-helix-content-sdk/node_modules/@adobe/remark-gridtables": { "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@adobe/remark-gridtables/-/remark-gridtables-3.0.16.tgz", - "integrity": "sha512-V5Ai1A2jr+fiziRBB9LxUYiEI7xhAoF0ZMzeMwDbjLe4ULoMScH1tffSbCtFU9gKnPNcTF9OJdkZizHCslTj3Q==", "license": "Apache-2.0", "dependencies": { "@adobe/mdast-util-gridtables": "4.0.15", @@ -558,8 +496,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -572,8 +508,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -583,8 +517,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", @@ -597,8 +529,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -609,8 +539,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -622,8 +550,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -635,8 +561,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", @@ -650,8 +574,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -662,8 +584,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -675,8 +595,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -688,8 +606,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -702,8 +618,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -711,8 +625,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", @@ -722,8 +634,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -734,8 +644,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -747,8 +655,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -760,8 +666,6 @@ }, "node_modules/@aws-sdk/client-athena": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-athena/-/client-athena-3.940.0.tgz", - "integrity": "sha512-2kawzH9vCb0PVDsInKUjHOPCV42Djkj5uNYr+mrqT2I+l8opYt/pgb/TnDSBnXDuqg+EMV2+C2EDFE8T+CHMYg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -810,8 +714,6 @@ }, "node_modules/@aws-sdk/client-cloudfront": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.940.0.tgz", - "integrity": "sha512-9n5kvQ4A72Fm5+yEIAPEOLSXQdmHOV8lh88ZIjMw5NRRvcTBNUc1616QdX8M+kbLGyYGoygeuBNN7yktafexSQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -862,9 +764,8 @@ }, "node_modules/@aws-sdk/client-dynamodb": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.940.0.tgz", - "integrity": "sha512-u2sXsNJazJbuHeWICvsj6RvNyJh3isedEfPvB21jK/kxcriK+dE/izlKC2cyxUjERCmku0zTFNzY9FhrLbYHjQ==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -914,8 +815,6 @@ }, "node_modules/@aws-sdk/client-s3": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.940.0.tgz", - "integrity": "sha512-Wi4qnBT6shRRMXuuTgjMFTU5mu2KFWisgcigEMPptjPGUtJvBVi4PTGgS64qsLoUk/obqDAyOBOfEtRZ2ddC2w==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", @@ -980,8 +879,6 @@ }, "node_modules/@aws-sdk/client-secrets-manager": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.940.0.tgz", - "integrity": "sha512-fpxSRsGyuXmyNqEwdGJUDWVgN0v8xR7tr32Quls3K+HnYlnBGFmISu5Pcc+BfwmrZHnPaVpPc+S3PUzTnFpOJg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1030,8 +927,6 @@ }, "node_modules/@aws-sdk/client-sqs": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.940.0.tgz", - "integrity": "sha512-tXPi9OlELbiewGDb9maXDMhdYW617I9osGo/C1GAR6eLYwj40/TfOBeOQf3tX9EcH8NpDBuMksxoAvkpvqYIKw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1082,8 +977,6 @@ }, "node_modules/@aws-sdk/client-sso": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.940.0.tgz", - "integrity": "sha512-SdqJGWVhmIURvCSgkDditHRO+ozubwZk9aCX9MK8qxyOndhobCndW1ozl3hX9psvMAo9Q4bppjuqy/GHWpjB+A==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1131,8 +1024,6 @@ }, "node_modules/@aws-sdk/core": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.940.0.tgz", - "integrity": "sha512-KsGD2FLaX5ngJao1mHxodIVU9VYd1E8810fcYiGwO1PFHDzf5BEkp6D9IdMeQwT8Q6JLYtiiT1Y/o3UCScnGoA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1155,8 +1046,6 @@ }, "node_modules/@aws-sdk/credential-provider-env": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.940.0.tgz", - "integrity": "sha512-/G3l5/wbZYP2XEQiOoIkRJmlv15f1P3MSd1a0gz27lHEMrOJOGq66rF1Ca4OJLzapWt3Fy9BPrZAepoAX11kMw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1171,8 +1060,6 @@ }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.940.0.tgz", - "integrity": "sha512-dOrc03DHElNBD6N9Okt4U0zhrG4Wix5QUBSZPr5VN8SvmjD9dkrrxOkkJaMCl/bzrW7kbQEp7LuBdbxArMmOZQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1192,8 +1079,6 @@ }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.940.0.tgz", - "integrity": "sha512-gn7PJQEzb/cnInNFTOaDoCN/hOKqMejNmLof1W5VW95Qk0TPO52lH8R4RmJPnRrwFMswOWswTOpR1roKNLIrcw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1217,8 +1102,6 @@ }, "node_modules/@aws-sdk/credential-provider-login": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.940.0.tgz", - "integrity": "sha512-fOKC3VZkwa9T2l2VFKWRtfHQPQuISqqNl35ZhcXjWKVwRwl/o7THPMkqI4XwgT2noGa7LLYVbWMwnsgSsBqglg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1236,8 +1119,6 @@ }, "node_modules/@aws-sdk/credential-provider-node": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.940.0.tgz", - "integrity": "sha512-M8NFAvgvO6xZjiti5kztFiAYmSmSlG3eUfr4ZHSfXYZUA/KUdZU/D6xJyaLnU8cYRWBludb6K9XPKKVwKfqm4g==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.940.0", @@ -1259,8 +1140,6 @@ }, "node_modules/@aws-sdk/credential-provider-process": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.940.0.tgz", - "integrity": "sha512-pILBzt5/TYCqRsJb7vZlxmRIe0/T+FZPeml417EK75060ajDGnVJjHcuVdLVIeKoTKm9gmJc9l45gon6PbHyUQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1276,8 +1155,6 @@ }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.940.0.tgz", - "integrity": "sha512-q6JMHIkBlDCOMnA3RAzf8cGfup+8ukhhb50fNpghMs1SNBGhanmaMbZSgLigBRsPQW7fOk2l8jnzdVLS+BB9Uw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-sso": "3.940.0", @@ -1295,8 +1172,6 @@ }, "node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.940.0.tgz", - "integrity": "sha512-9QLTIkDJHHaYL0nyymO41H8g3ui1yz6Y3GmAN1gYQa6plXisuFBnGAbmKVj7zNvjWaOKdF0dV3dd3AFKEDoJ/w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1313,8 +1188,6 @@ }, "node_modules/@aws-sdk/endpoint-cache": { "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.893.0.tgz", - "integrity": "sha512-KSwTfyLZyNLszz5f/yoLC+LC+CRKpeJii/+zVAy7JUOQsKhSykiRUPYUx7o2Sdc4oJfqqUl26A/jSttKYnYtAA==", "license": "Apache-2.0", "dependencies": { "mnemonist": "0.38.3", @@ -1326,8 +1199,6 @@ }, "node_modules/@aws-sdk/lib-dynamodb": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.940.0.tgz", - "integrity": "sha512-5ApYAix2wvJuMszj1lrpg8lm4ipoZMFO8crxtzsdAvxM8TV5bKSRQQ2GA3CMIODrBuSzpXvWueHHrfkx05ZAQw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1346,8 +1217,6 @@ }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.936.0.tgz", - "integrity": "sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1364,8 +1233,6 @@ }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.936.0.tgz", - "integrity": "sha512-wNJZ8PDw0eQK2x4z1q8JqiDvw9l9xd36EoklVT2CIBt8FnqGdrMGjAx93RRbH3G6Fmvwoe+D3VJXbWHBlhD0Bw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/endpoint-cache": "3.893.0", @@ -1381,8 +1248,6 @@ }, "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.936.0.tgz", - "integrity": "sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1396,8 +1261,6 @@ }, "node_modules/@aws-sdk/middleware-flexible-checksums": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.940.0.tgz", - "integrity": "sha512-WdsxDAVj5qaa5ApAP+JbpCOMHFGSmzjs2Y2OBSbWPeR9Ew7t/Okj+kUub94QJPsgzhvU1/cqNejhsw5VxeFKSQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -1420,8 +1283,6 @@ }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", - "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1435,8 +1296,6 @@ }, "node_modules/@aws-sdk/middleware-location-constraint": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.936.0.tgz", - "integrity": "sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1449,8 +1308,6 @@ }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", - "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1463,8 +1320,6 @@ }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", - "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1479,8 +1334,6 @@ }, "node_modules/@aws-sdk/middleware-sdk-s3": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.940.0.tgz", - "integrity": "sha512-JYkLjgS1wLoKHJ40G63+afM1ehmsPsjcmrHirKh8+kSCx4ip7+nL1e/twV4Zicxr8RJi9Y0Ahq5mDvneilDDKQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1504,8 +1357,6 @@ }, "node_modules/@aws-sdk/middleware-sdk-sqs": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.936.0.tgz", - "integrity": "sha512-39WohFCCPeD6LV8zLQq7CyYbIieetEDDNLsEPeGJSh2Uv9qpY9r6zJRSTjb8hTuQbHDSEOGntHMYKpLoHdoxdQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1521,8 +1372,6 @@ }, "node_modules/@aws-sdk/middleware-ssec": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.936.0.tgz", - "integrity": "sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1535,8 +1384,6 @@ }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.940.0.tgz", - "integrity": "sha512-nJbLrUj6fY+l2W2rIB9P4Qvpiy0tnTdg/dmixRxrU1z3e8wBdspJlyE+AZN4fuVbeL6rrRrO/zxQC1bB3cw5IA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1553,8 +1400,6 @@ }, "node_modules/@aws-sdk/nested-clients": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.940.0.tgz", - "integrity": "sha512-x0mdv6DkjXqXEcQj3URbCltEzW6hoy/1uIL+i8gExP6YKrnhiZ7SzuB4gPls2UOpK5UqLiqXjhRLfBb1C9i4Dw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1602,8 +1447,6 @@ }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", - "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1618,8 +1461,6 @@ }, "node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.940.0.tgz", - "integrity": "sha512-ugHZEoktD/bG6mdgmhzLDjMP2VrYRAUPRPF1DpCyiZexkH7DCU7XrSJyXMvkcf0DHV+URk0q2sLf/oqn1D2uYw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.940.0", @@ -1635,8 +1476,6 @@ }, "node_modules/@aws-sdk/token-providers": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.940.0.tgz", - "integrity": "sha512-k5qbRe/ZFjW9oWEdzLIa2twRVIEx7p/9rutofyrRysrtEnYh3HAWCngAnwbgKMoiwa806UzcTRx0TjyEpnKcCg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.940.0", @@ -1653,8 +1492,6 @@ }, "node_modules/@aws-sdk/types": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.936.0.tgz", - "integrity": "sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -1666,8 +1503,6 @@ }, "node_modules/@aws-sdk/util-arn-parser": { "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", - "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1678,8 +1513,6 @@ }, "node_modules/@aws-sdk/util-dynamodb": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.940.0.tgz", - "integrity": "sha512-T8UTYtCYSPxktnk68fKBdWztnqdTQItJwi/8N9lsvp20alJ15wCQsvQR+GKB5p4TCKxOPyNEirkcrNlf5TKppA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1693,8 +1526,6 @@ }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", - "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1709,8 +1540,6 @@ }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", - "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1721,8 +1550,6 @@ }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", - "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", @@ -1733,8 +1560,6 @@ }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.940.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.940.0.tgz", - "integrity": "sha512-dlD/F+L/jN26I8Zg5x0oDGJiA+/WEQmnSE27fi5ydvYnpfQLwThtQo9SsNS47XSR/SOULaaoC9qx929rZuo74A==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-user-agent": "3.940.0", @@ -1757,8 +1582,6 @@ }, "node_modules/@aws-sdk/xml-builder": { "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", - "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -1771,8 +1594,6 @@ }, "node_modules/@aws/lambda-invoke-store": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.1.tgz", - "integrity": "sha512-sIyFcoPZkTtNu9xFeEoynMef3bPJIAbOfUh+ueYcfhVl6xm2VRtMcMclSxmZCMnHHd4hlYKJeq/aggmBEWynww==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -1780,8 +1601,6 @@ }, "node_modules/@azure/msal-common": { "version": "15.13.3", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.3.tgz", - "integrity": "sha512-shSDU7Ioecya+Aob5xliW9IGq1Ui8y4EVSdWGyI1Gbm4Vg61WpP95LuzcY214/wEjSn6w4PZYD4/iVldErHayQ==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -1789,8 +1608,6 @@ }, "node_modules/@azure/msal-node": { "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.4.tgz", - "integrity": "sha512-lvuAwsDpPDE/jSuVQOBMpLbXuVuLsPNRwWCyK3/6bPlBk0fGWegqoZ0qjZclMWyQ2JNvIY3vHY7hoFmFmFQcOw==", "license": "MIT", "dependencies": { "@azure/msal-common": "15.13.3", @@ -1803,8 +1620,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -1818,8 +1633,6 @@ }, "node_modules/@babel/compat-data": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", - "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "dev": true, "license": "MIT", "engines": { @@ -1828,10 +1641,9 @@ }, "node_modules/@babel/core": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1859,8 +1671,6 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", - "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", "dev": true, "license": "MIT", "dependencies": { @@ -1878,8 +1688,6 @@ }, "node_modules/@babel/generator": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1895,8 +1703,6 @@ }, "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": { @@ -1912,8 +1718,6 @@ }, "node_modules/@babel/helper-globals": { "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", "engines": { @@ -1922,8 +1726,6 @@ }, "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": { @@ -1936,8 +1738,6 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, "license": "MIT", "dependencies": { @@ -1954,8 +1754,6 @@ }, "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", "engines": { @@ -1964,8 +1762,6 @@ }, "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", "engines": { @@ -1974,8 +1770,6 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -1984,8 +1778,6 @@ }, "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", "engines": { @@ -1994,8 +1786,6 @@ }, "node_modules/@babel/helpers": { "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, "license": "MIT", "dependencies": { @@ -2008,8 +1798,6 @@ }, "node_modules/@babel/parser": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2024,8 +1812,6 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "license": "MIT", "dependencies": { @@ -2040,8 +1826,6 @@ }, "node_modules/@babel/runtime": { "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2049,8 +1833,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -2064,8 +1846,6 @@ }, "node_modules/@babel/traverse": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2083,8 +1863,6 @@ }, "node_modules/@babel/types": { "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, "license": "MIT", "dependencies": { @@ -2097,8 +1875,6 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", "engines": { @@ -2107,8 +1883,6 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", "optional": true, @@ -2118,8 +1892,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2137,8 +1909,6 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2150,8 +1920,6 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -2160,8 +1928,6 @@ }, "node_modules/@eslint/config-array": { "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2175,8 +1941,6 @@ }, "node_modules/@eslint/config-array/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==", "dev": true, "license": "MIT", "dependencies": { @@ -2186,8 +1950,6 @@ }, "node_modules/@eslint/config-array/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -2199,8 +1961,6 @@ }, "node_modules/@eslint/config-helpers": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.0.tgz", - "integrity": "sha512-OCt2pY98qw68AXjNDGn+9q3vnqvBh4OFTZWmzaWH2thEpAugBZCBDRMHZa7oGsX+/ZybKOiKjJ6XX1E8hxcxGg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2212,8 +1972,6 @@ }, "node_modules/@eslint/core": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.1.tgz", - "integrity": "sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2225,8 +1983,6 @@ }, "node_modules/@eslint/eslintrc": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2249,8 +2005,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2266,8 +2020,6 @@ }, "node_modules/@eslint/eslintrc/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==", "dev": true, "license": "MIT", "dependencies": { @@ -2277,8 +2029,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { @@ -2290,8 +2040,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -2300,15 +2048,11 @@ }, "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==", "dev": true, "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -2320,8 +2064,6 @@ }, "node_modules/@eslint/js": { "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -2333,8 +2075,6 @@ }, "node_modules/@eslint/object-schema": { "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2343,8 +2083,6 @@ }, "node_modules/@eslint/plugin-kit": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2357,8 +2095,6 @@ }, "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2370,8 +2106,6 @@ }, "node_modules/@fastify/busboy": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "dev": true, "license": "MIT", "engines": { @@ -2380,8 +2114,6 @@ }, "node_modules/@googleapis/docs": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@googleapis/docs/-/docs-8.1.1.tgz", - "integrity": "sha512-A9pC+vnFK6vBb1scrsaG/3XKrH7heXuiYt+bKVsqbYJPUYpx378aF9aeRgcyitNchzasETjCwMJDIq1U8juYgA==", "license": "Apache-2.0", "dependencies": { "googleapis-common": "^8.0.0" @@ -2392,8 +2124,6 @@ }, "node_modules/@googleapis/drive": { "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@googleapis/drive/-/drive-19.2.0.tgz", - "integrity": "sha512-XzhQ+CNwW54umLecZLzQ5Q2RborJD1+u2YzJIT/BOpne+VJfsCyxWVG0nxYQmcGdiFXJPeW5+V3sdP/A/nt3eA==", "license": "Apache-2.0", "dependencies": { "googleapis-common": "^8.0.0" @@ -2404,8 +2134,6 @@ }, "node_modules/@googleapis/sheets": { "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@googleapis/sheets/-/sheets-12.0.0.tgz", - "integrity": "sha512-VCJAm3Vzz1nzuUrPP9ETOujlC7kuwdeWiWLdgXAeg+NWu7tKUzu+pe5l55GDqYAEEpCXrxkAlw4gSx+A44zgLg==", "license": "Apache-2.0", "dependencies": { "googleapis-common": "^8.0.0" @@ -2416,8 +2144,6 @@ }, "node_modules/@hapi/address": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", - "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^11.0.2" @@ -2428,26 +2154,18 @@ }, "node_modules/@hapi/formula": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", - "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", "license": "BSD-3-Clause" }, "node_modules/@hapi/hoek": { "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", - "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", "license": "BSD-3-Clause" }, "node_modules/@hapi/pinpoint": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", - "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", "license": "BSD-3-Clause" }, "node_modules/@hapi/tlds": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.4.tgz", - "integrity": "sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==", "license": "BSD-3-Clause", "engines": { "node": ">=14.0.0" @@ -2455,8 +2173,6 @@ }, "node_modules/@hapi/topo": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", - "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^11.0.2" @@ -2464,8 +2180,6 @@ }, "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==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2474,8 +2188,6 @@ }, "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==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2488,8 +2200,6 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2502,8 +2212,6 @@ }, "node_modules/@humanwhocodes/retry": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2516,8 +2224,6 @@ }, "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", @@ -2533,8 +2239,6 @@ }, "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": ">=12" @@ -2545,14 +2249,10 @@ }, "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": { "eastasianwidth": "^0.2.0", @@ -2568,8 +2268,6 @@ }, "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", @@ -2585,8 +2283,6 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { @@ -2595,8 +2291,6 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { @@ -2606,8 +2300,6 @@ }, "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": { @@ -2617,8 +2309,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -2627,8 +2317,6 @@ }, "node_modules/@jridgewell/source-map": { "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", "dependencies": { @@ -2638,15 +2326,11 @@ }, "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.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -2656,8 +2340,6 @@ }, "node_modules/@jsdoc/salty": { "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", - "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2669,14 +2351,10 @@ }, "node_modules/@json2csv/formatters": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@json2csv/formatters/-/formatters-7.0.6.tgz", - "integrity": "sha512-hjIk1H1TR4ydU5ntIENEPgoMGW+Q7mJ+537sDFDbsk+Y3EPl2i4NfFVjw0NJRgT+ihm8X30M67mA8AS6jPidSA==", "license": "MIT" }, "node_modules/@json2csv/plainjs": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@json2csv/plainjs/-/plainjs-7.0.6.tgz", - "integrity": "sha512-4Md7RPDCSYpmW1HWIpWBOqCd4vWfIqm53S3e/uzQ62iGi7L3r34fK/8nhOMEe+/eVfCx8+gdSCt1d74SlacQHw==", "license": "MIT", "dependencies": { "@json2csv/formatters": "^7.0.6", @@ -2685,14 +2363,10 @@ }, "node_modules/@launchdarkly/js-sdk-common": { "version": "2.20.0", - "resolved": "https://registry.npmjs.org/@launchdarkly/js-sdk-common/-/js-sdk-common-2.20.0.tgz", - "integrity": "sha512-g1Lyi5xL7AXAP6BP8BzRcqVqIhqOSVpA5Bx8Vvj8A/4A6sIHVz2vIZluykD/bJiKg1+G9ojm+OCfdL/c0ebi0A==", "license": "Apache-2.0" }, "node_modules/@launchdarkly/js-server-sdk-common": { "version": "2.17.1", - "resolved": "https://registry.npmjs.org/@launchdarkly/js-server-sdk-common/-/js-server-sdk-common-2.17.1.tgz", - "integrity": "sha512-rAFzuBgYFhF/R6N26403J79T7wJ0nBXfdxfnS3gKMcQm+n/oioiZBes5MbrHk8Q4JAZYYhlBCL80xxsoBFPxdg==", "license": "Apache-2.0", "dependencies": { "@launchdarkly/js-sdk-common": "2.20.0", @@ -2701,8 +2375,6 @@ }, "node_modules/@launchdarkly/js-server-sdk-common/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": { "yallist": "^4.0.0" @@ -2713,8 +2385,6 @@ }, "node_modules/@launchdarkly/js-server-sdk-common/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -2728,14 +2398,10 @@ }, "node_modules/@launchdarkly/js-server-sdk-common/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/@launchdarkly/node-server-sdk": { "version": "9.10.5", - "resolved": "https://registry.npmjs.org/@launchdarkly/node-server-sdk/-/node-server-sdk-9.10.5.tgz", - "integrity": "sha512-vsq+afEcbC3UNd7XXC0ZNwjP0pU9jpO7Jx+m2OO2csFeWLf6HBoIVSABbY/1A0iIUuBIjj6OeuZWWhMYXF98bg==", "license": "Apache-2.0", "dependencies": { "@launchdarkly/js-server-sdk-common": "2.17.1", @@ -2745,8 +2411,6 @@ }, "node_modules/@microsoft/microsoft-graph-client": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.7.tgz", - "integrity": "sha512-/AazAV/F+HK4LIywF9C+NYHcJo038zEnWkteilcxC1FM/uK/4NVGDKGrxx7nNq1ybspAroRKT4I1FHfxQzxkUw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", @@ -2772,14 +2436,10 @@ }, "node_modules/@mixmark-io/domino": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", - "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", "license": "BSD-2-Clause" }, "node_modules/@mswjs/interceptors": { "version": "0.39.8", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.8.tgz", - "integrity": "sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==", "dev": true, "license": "MIT", "dependencies": { @@ -2796,8 +2456,6 @@ }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "license": "MIT", "dependencies": { @@ -2806,8 +2464,6 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -2820,8 +2476,6 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -2830,8 +2484,6 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -2844,8 +2496,6 @@ }, "node_modules/@octokit/auth-token": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", - "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "dev": true, "license": "MIT", "engines": { @@ -2854,10 +2504,9 @@ }, "node_modules/@octokit/core": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", - "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.3", @@ -2873,8 +2522,6 @@ }, "node_modules/@octokit/endpoint": { "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", - "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2887,8 +2534,6 @@ }, "node_modules/@octokit/graphql": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", - "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "dev": true, "license": "MIT", "dependencies": { @@ -2902,15 +2547,11 @@ }, "node_modules/@octokit/openapi-types": { "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", - "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", - "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "dev": true, "license": "MIT", "dependencies": { @@ -2925,8 +2566,6 @@ }, "node_modules/@octokit/plugin-retry": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.3.tgz", - "integrity": "sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==", "dev": true, "license": "MIT", "dependencies": { @@ -2943,8 +2582,6 @@ }, "node_modules/@octokit/plugin-throttling": { "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", - "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", "dev": true, "license": "MIT", "dependencies": { @@ -2960,8 +2597,6 @@ }, "node_modules/@octokit/request": { "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz", - "integrity": "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==", "dev": true, "license": "MIT", "dependencies": { @@ -2977,8 +2612,6 @@ }, "node_modules/@octokit/request-error": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", - "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", "dev": true, "license": "MIT", "dependencies": { @@ -2990,8 +2623,6 @@ }, "node_modules/@octokit/types": { "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", - "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "dev": true, "license": "MIT", "dependencies": { @@ -3000,15 +2631,11 @@ }, "node_modules/@open-draft/deferred-promise": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", - "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", "dev": true, "license": "MIT" }, "node_modules/@open-draft/logger": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", - "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3018,15 +2645,11 @@ }, "node_modules/@open-draft/until": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", - "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true, "license": "MIT" }, "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": { @@ -3035,8 +2658,6 @@ }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, "license": "MIT", "engines": { @@ -3045,8 +2666,6 @@ }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, "license": "MIT", "dependencies": { @@ -3058,15 +2677,11 @@ }, "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true, "license": "ISC" }, "node_modules/@pnpm/npm-conf": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, "license": "MIT", "dependencies": { @@ -3080,8 +2695,6 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", - "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", "dev": true, "license": "MIT", "dependencies": { @@ -3105,8 +2718,6 @@ }, "node_modules/@rollup/plugin-terser": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", - "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", "dev": true, "license": "MIT", "dependencies": { @@ -3128,8 +2739,6 @@ }, "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": { @@ -3151,8 +2760,6 @@ }, "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": { @@ -3162,38 +2769,8 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", - "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", - "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", - "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", "cpu": [ "arm64" ], @@ -3204,290 +2781,18 @@ "darwin" ] }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", - "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", - "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", - "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", - "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", - "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", - "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", - "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", - "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", - "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", - "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", - "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", - "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", - "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", - "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", - "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", - "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", - "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", - "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", - "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@rtsao/scc": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "dev": true, "license": "MIT" }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "dev": true, "license": "MIT" }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", - "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", "dev": true, "license": "MIT", "dependencies": { @@ -3505,8 +2810,6 @@ }, "node_modules/@semantic-release/commit-analyzer": { "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.1.tgz", - "integrity": "sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3528,8 +2831,6 @@ }, "node_modules/@semantic-release/error": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, "license": "MIT", "engines": { @@ -3538,8 +2839,6 @@ }, "node_modules/@semantic-release/git": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, "license": "MIT", "dependencies": { @@ -3561,8 +2860,6 @@ }, "node_modules/@semantic-release/github": { "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-12.0.2.tgz", - "integrity": "sha512-qyqLS+aSGH1SfXIooBKjs7mvrv0deg8v+jemegfJg1kq6ji+GJV8CO08VJDEsvjp3O8XJmTTIAjjZbMzagzsdw==", "dev": true, "license": "MIT", "dependencies": { @@ -3593,8 +2890,6 @@ }, "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", "engines": { @@ -3603,8 +2898,6 @@ }, "node_modules/@semantic-release/github/node_modules/aggregate-error": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "license": "MIT", "dependencies": { @@ -3620,8 +2913,6 @@ }, "node_modules/@semantic-release/github/node_modules/clean-stack": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", - "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { @@ -3636,8 +2927,6 @@ }, "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", "engines": { @@ -3649,8 +2938,6 @@ }, "node_modules/@semantic-release/github/node_modules/indent-string": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { @@ -3662,8 +2949,6 @@ }, "node_modules/@semantic-release/github/node_modules/undici": { "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", "dev": true, "license": "MIT", "engines": { @@ -3672,8 +2957,6 @@ }, "node_modules/@semantic-release/npm": { "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-13.1.2.tgz", - "integrity": "sha512-9rtshDTNlzYrC7uSBtB1vHqFzFZaNHigqkkCH5Ls4N/BSlVOenN5vtwHYxjAR4jf1hNvWSVwL4eIFTHONYckkw==", "dev": true, "license": "MIT", "dependencies": { @@ -3702,8 +2985,6 @@ }, "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", "engines": { @@ -3712,8 +2993,6 @@ }, "node_modules/@semantic-release/npm/node_modules/aggregate-error": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "license": "MIT", "dependencies": { @@ -3729,8 +3008,6 @@ }, "node_modules/@semantic-release/npm/node_modules/clean-stack": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", - "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { @@ -3745,8 +3022,6 @@ }, "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", "engines": { @@ -3758,8 +3033,6 @@ }, "node_modules/@semantic-release/npm/node_modules/execa": { "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", "dev": true, "license": "MIT", "dependencies": { @@ -3785,8 +3058,6 @@ }, "node_modules/@semantic-release/npm/node_modules/get-stream": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { @@ -3802,8 +3073,6 @@ }, "node_modules/@semantic-release/npm/node_modules/human-signals": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3812,8 +3081,6 @@ }, "node_modules/@semantic-release/npm/node_modules/indent-string": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { @@ -3825,8 +3092,6 @@ }, "node_modules/@semantic-release/npm/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, "license": "MIT", "engines": { @@ -3838,8 +3103,6 @@ }, "node_modules/@semantic-release/npm/node_modules/is-stream": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", "engines": { @@ -3851,8 +3114,6 @@ }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, "license": "MIT", "dependencies": { @@ -3868,8 +3129,6 @@ }, "node_modules/@semantic-release/npm/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { @@ -3881,8 +3140,6 @@ }, "node_modules/@semantic-release/npm/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -3894,8 +3151,6 @@ }, "node_modules/@semantic-release/npm/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -3907,8 +3162,6 @@ }, "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", "engines": { @@ -3920,8 +3173,6 @@ }, "node_modules/@semantic-release/release-notes-generator": { "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.1.0.tgz", - "integrity": "sha512-CcyDRk7xq+ON/20YNR+1I/jP7BYKICr1uKd1HHpROSnnTdGqOTburi4jcRiTYz0cpfhxSloQO3cGhnoot7IEkA==", "dev": true, "license": "MIT", "dependencies": { @@ -3945,8 +3196,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, "license": "MIT", "engines": { @@ -3958,8 +3207,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/hosted-git-info": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", "dependencies": { @@ -3971,15 +3218,11 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3993,8 +3236,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/read-package-up": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", - "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4011,8 +3252,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, "license": "MIT", "dependencies": { @@ -4031,8 +3270,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -4044,8 +3281,6 @@ }, "node_modules/@semantic-release/release-notes-generator/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, "license": "(MIT OR CC0-1.0)", "engines": { @@ -4057,8 +3292,6 @@ }, "node_modules/@semantic-release/release-notes-generator/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, "license": "MIT", "engines": { @@ -4070,8 +3303,6 @@ }, "node_modules/@sindresorhus/is": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "license": "MIT", "engines": { @@ -4083,8 +3314,6 @@ }, "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", "engines": { @@ -4096,8 +3325,6 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4106,8 +3333,6 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4116,8 +3341,6 @@ }, "node_modules/@sinonjs/samsam": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", - "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4127,8 +3350,6 @@ }, "node_modules/@sinonjs/samsam/node_modules/type-detect": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", "engines": { @@ -4137,15 +3358,11 @@ }, "node_modules/@sinonjs/text-encoding": { "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", - "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@slack/logger": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-4.0.0.tgz", - "integrity": "sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==", "license": "MIT", "dependencies": { "@types/node": ">=18.0.0" @@ -4157,8 +3374,6 @@ }, "node_modules/@slack/types": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@slack/types/-/types-2.19.0.tgz", - "integrity": "sha512-7+QZ38HGcNh/b/7MpvPG6jnw7mliV6UmrquJLqgdxkzJgQEYUcEztvFWRU49z0x4vthF0ixL5lTK601AXrS8IA==", "license": "MIT", "engines": { "node": ">= 12.13.0", @@ -4167,8 +3382,6 @@ }, "node_modules/@slack/web-api": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.13.0.tgz", - "integrity": "sha512-ERcExbWrnkDN8ovoWWe6Wgt/usanj1dWUd18dJLpctUI4mlPS0nKt81Joh8VI+OPbNnY1lIilVt9gdMBD9U2ig==", "license": "MIT", "dependencies": { "@slack/logger": "^4.0.0", @@ -4191,8 +3404,6 @@ }, "node_modules/@smithy/abort-controller": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", - "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4204,8 +3415,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -4216,8 +3425,6 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@smithy/util-base64": "^4.3.0", @@ -4229,8 +3436,6 @@ }, "node_modules/@smithy/config-resolver": { "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", - "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -4246,8 +3451,6 @@ }, "node_modules/@smithy/core": { "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.5.tgz", - "integrity": "sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==", "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^4.2.6", @@ -4267,8 +3470,6 @@ }, "node_modules/@smithy/credential-provider-imds": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", - "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -4283,8 +3484,6 @@ }, "node_modules/@smithy/eventstream-codec": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", - "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -4298,8 +3497,6 @@ }, "node_modules/@smithy/eventstream-serde-browser": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", - "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.5", @@ -4312,8 +3509,6 @@ }, "node_modules/@smithy/eventstream-serde-config-resolver": { "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", - "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4325,8 +3520,6 @@ }, "node_modules/@smithy/eventstream-serde-node": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", - "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.5", @@ -4339,8 +3532,6 @@ }, "node_modules/@smithy/eventstream-serde-universal": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", - "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-codec": "^4.2.5", @@ -4353,8 +3544,6 @@ }, "node_modules/@smithy/fetch-http-handler": { "version": "5.3.6", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", - "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.5", @@ -4369,8 +3558,6 @@ }, "node_modules/@smithy/hash-blob-browser": { "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", - "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", @@ -4384,8 +3571,6 @@ }, "node_modules/@smithy/hash-node": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", - "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4399,8 +3584,6 @@ }, "node_modules/@smithy/hash-stream-node": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", - "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4413,8 +3596,6 @@ }, "node_modules/@smithy/invalid-dependency": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", - "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4426,8 +3607,6 @@ }, "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" @@ -4438,8 +3617,6 @@ }, "node_modules/@smithy/md5-js": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", - "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4452,8 +3629,6 @@ }, "node_modules/@smithy/middleware-content-length": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", - "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.5", @@ -4466,8 +3641,6 @@ }, "node_modules/@smithy/middleware-endpoint": { "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.12.tgz", - "integrity": "sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==", "license": "Apache-2.0", "dependencies": { "@smithy/core": "^3.18.5", @@ -4485,8 +3658,6 @@ }, "node_modules/@smithy/middleware-retry": { "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.12.tgz", - "integrity": "sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==", "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -4505,8 +3676,6 @@ }, "node_modules/@smithy/middleware-serde": { "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", - "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.5", @@ -4519,8 +3688,6 @@ }, "node_modules/@smithy/middleware-stack": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", - "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4532,8 +3699,6 @@ }, "node_modules/@smithy/node-config-provider": { "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", - "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.5", @@ -4547,8 +3712,6 @@ }, "node_modules/@smithy/node-http-handler": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", - "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.2.5", @@ -4563,8 +3726,6 @@ }, "node_modules/@smithy/property-provider": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", - "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4576,8 +3737,6 @@ }, "node_modules/@smithy/protocol-http": { "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", - "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4589,8 +3748,6 @@ }, "node_modules/@smithy/querystring-builder": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", - "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4603,8 +3760,6 @@ }, "node_modules/@smithy/querystring-parser": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", - "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4616,8 +3771,6 @@ }, "node_modules/@smithy/service-error-classification": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", - "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0" @@ -4628,8 +3781,6 @@ }, "node_modules/@smithy/shared-ini-file-loader": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", - "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4641,8 +3792,6 @@ }, "node_modules/@smithy/signature-v4": { "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", - "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", @@ -4660,8 +3809,6 @@ }, "node_modules/@smithy/smithy-client": { "version": "4.9.8", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.8.tgz", - "integrity": "sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==", "license": "Apache-2.0", "dependencies": { "@smithy/core": "^3.18.5", @@ -4678,8 +3825,6 @@ }, "node_modules/@smithy/types": { "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", - "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -4690,8 +3835,6 @@ }, "node_modules/@smithy/url-parser": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", - "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", "license": "Apache-2.0", "dependencies": { "@smithy/querystring-parser": "^4.2.5", @@ -4704,8 +3847,6 @@ }, "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", @@ -4718,8 +3859,6 @@ }, "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" @@ -4730,8 +3869,6 @@ }, "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" @@ -4742,8 +3879,6 @@ }, "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", @@ -4755,8 +3890,6 @@ }, "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" @@ -4767,8 +3900,6 @@ }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.11.tgz", - "integrity": "sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==", "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.5", @@ -4782,8 +3913,6 @@ }, "node_modules/@smithy/util-defaults-mode-node": { "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.14.tgz", - "integrity": "sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==", "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^4.4.3", @@ -4800,8 +3929,6 @@ }, "node_modules/@smithy/util-endpoints": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", - "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -4814,8 +3941,6 @@ }, "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" @@ -4826,8 +3951,6 @@ }, "node_modules/@smithy/util-middleware": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", - "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -4839,8 +3962,6 @@ }, "node_modules/@smithy/util-retry": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", - "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", "license": "Apache-2.0", "dependencies": { "@smithy/service-error-classification": "^4.2.5", @@ -4853,8 +3974,6 @@ }, "node_modules/@smithy/util-stream": { "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", - "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", "license": "Apache-2.0", "dependencies": { "@smithy/fetch-http-handler": "^5.3.6", @@ -4872,8 +3991,6 @@ }, "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" @@ -4884,8 +4001,6 @@ }, "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", @@ -4897,8 +4012,6 @@ }, "node_modules/@smithy/util-waiter": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", - "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.2.5", @@ -4911,8 +4024,6 @@ }, "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" @@ -4923,20 +4034,31 @@ }, "node_modules/@standard-schema/spec": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", "license": "MIT" }, "node_modules/@streamparser/json": { "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.20.tgz", - "integrity": "sha512-VqAAkydywPpkw63WQhPVKCD3SdwXuihCUVZbbiY3SfSTGQyHmwRoq27y4dmJdZuJwd5JIlQoMPyGvMbUPY0RKQ==", "license": "MIT" }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.21.4", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, "node_modules/@types/body-parser": { "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "license": "MIT", "dependencies": { "@types/connect": "*", @@ -4945,8 +4067,6 @@ }, "node_modules/@types/cls-hooked": { "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.9.tgz", - "integrity": "sha512-CMtHMz6Q/dkfcHarq9nioXH8BDPP+v5xvd+N90lBQ2bdmu06UvnLDqxTKoOJzz4SzIwb/x9i4UXGAAcnUDuIvg==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -4954,8 +4074,6 @@ }, "node_modules/@types/connect": { "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -4963,8 +4081,6 @@ }, "node_modules/@types/debug": { "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "license": "MIT", "dependencies": { "@types/ms": "*" @@ -4972,15 +4088,11 @@ }, "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==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.5.tgz", - "integrity": "sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==", "license": "MIT", "dependencies": { "@types/body-parser": "*", @@ -4990,8 +4102,6 @@ }, "node_modules/@types/express-serve-static-core": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", - "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -5002,8 +4112,6 @@ }, "node_modules/@types/hast": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "license": "MIT", "dependencies": { "@types/unist": "*" @@ -5011,22 +4119,15 @@ }, "node_modules/@types/http-errors": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "license": "MIT" }, "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, "license": "MIT" }, "node_modules/@types/joi": { "version": "17.2.3", - "resolved": "https://registry.npmjs.org/@types/joi/-/joi-17.2.3.tgz", - "integrity": "sha512-dGjs/lhrWOa+eO0HwgxCSnDm5eMGCsXuvLglMghJq32F6q5LyyNuXb41DHzrg501CKNOSSAHmfB7FDGeUnDmzw==", - "deprecated": "This is a stub types definition. joi provides its own type definitions, so you do not need this installed.", "license": "MIT", "dependencies": { "joi": "*" @@ -5034,31 +4135,24 @@ }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "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==", "dev": true, "license": "MIT" }, "node_modules/@types/linkify-it": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", "dev": true, "license": "MIT" }, "node_modules/@types/markdown-it": { "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" @@ -5066,8 +4160,6 @@ }, "node_modules/@types/mdast": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", "dependencies": { "@types/unist": "*" @@ -5075,27 +4167,19 @@ }, "node_modules/@types/mdurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", "dev": true, "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "license": "MIT" }, "node_modules/@types/ms": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "license": "MIT" }, "node_modules/@types/mysql": { "version": "2.15.27", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", - "integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -5103,8 +4187,6 @@ }, "node_modules/@types/node": { "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -5112,15 +4194,11 @@ }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, "license": "MIT" }, "node_modules/@types/pg": { "version": "8.15.6", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", - "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -5130,33 +4208,23 @@ }, "node_modules/@types/qs": { "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "dev": true, "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "license": "MIT" }, "node_modules/@types/send": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -5164,8 +4232,6 @@ }, "node_modules/@types/serve-static": { "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", - "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "license": "MIT", "dependencies": { "@types/http-errors": "*", @@ -5175,8 +4241,6 @@ }, "node_modules/@types/serve-static/node_modules/@types/send": { "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", - "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", "license": "MIT", "dependencies": { "@types/mime": "^1", @@ -5185,8 +4249,6 @@ }, "node_modules/@types/sinon": { "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", - "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", "dev": true, "license": "MIT", "dependencies": { @@ -5195,28 +4257,20 @@ }, "node_modules/@types/sinonjs__fake-timers": { "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", - "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", "dev": true, "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, "node_modules/@types/validator": { "version": "13.15.10", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", - "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz", - "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5245,10 +4299,9 @@ }, "node_modules/@typescript-eslint/parser": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz", - "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/types": "8.48.0", @@ -5270,8 +4323,6 @@ }, "node_modules/@typescript-eslint/project-service": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.0.tgz", - "integrity": "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==", "dev": true, "license": "MIT", "dependencies": { @@ -5292,8 +4343,6 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.0.tgz", - "integrity": "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5310,8 +4359,6 @@ }, "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz", - "integrity": "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==", "dev": true, "license": "MIT", "engines": { @@ -5327,8 +4374,6 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz", - "integrity": "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==", "dev": true, "license": "MIT", "dependencies": { @@ -5352,8 +4397,6 @@ }, "node_modules/@typescript-eslint/types": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz", - "integrity": "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==", "dev": true, "license": "MIT", "engines": { @@ -5366,8 +4409,6 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.0.tgz", - "integrity": "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5394,8 +4435,6 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -5407,8 +4446,6 @@ }, "node_modules/@typescript-eslint/utils": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.0.tgz", - "integrity": "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5431,8 +4468,6 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.0.tgz", - "integrity": "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==", "dev": true, "license": "MIT", "dependencies": { @@ -5449,8 +4484,6 @@ }, "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==", "dev": true, "license": "Apache-2.0", "engines": { @@ -5462,14 +4495,10 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, "node_modules/@xmldom/xmldom": { "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -5477,10 +4506,9 @@ }, "node_modules/acorn": { "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5490,8 +4518,6 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -5500,8 +4526,6 @@ }, "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": ">= 14" @@ -5509,8 +4533,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -5523,8 +4545,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -5540,8 +4560,6 @@ }, "node_modules/ansi-escapes": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", - "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", "dev": true, "license": "MIT", "dependencies": { @@ -5556,8 +4574,6 @@ }, "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": ">=12" @@ -5568,8 +4584,6 @@ }, "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" @@ -5583,28 +4597,20 @@ }, "node_modules/any-promise": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/argv-formatter": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", "dev": true, "license": "MIT" }, "node_modules/array-back": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, "license": "MIT", "engines": { @@ -5613,8 +4619,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -5629,15 +4633,11 @@ }, "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==", "dev": true, "license": "MIT" }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -5659,8 +4659,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -5669,8 +4667,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -5691,8 +4687,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -5710,8 +4704,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==", "dev": true, "license": "MIT", "dependencies": { @@ -5729,8 +4721,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -5751,8 +4741,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -5761,8 +4749,6 @@ }, "node_modules/async-hook-jl": { "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", "license": "MIT", "dependencies": { "stack-chain": "^1.3.7" @@ -5773,20 +4759,14 @@ }, "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/atomic-batcher": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", - "integrity": "sha512-EFGCRj4kLX1dHv1cDzTk+xbjBFj1GnJDpui52YmEcxxHHEWjYyT6l51U7n6WQ28osZH4S9gSybxe56Vm7vB61Q==", "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==", "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -5800,8 +4780,6 @@ }, "node_modules/aws-sdk-client-mock": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.1.0.tgz", - "integrity": "sha512-h/tOYTkXEsAcV3//6C1/7U4ifSpKyJvb6auveAepqqNJl6TdZaPFEtKjBQNf8UxQdDP850knB2i/whq4zlsxJw==", "dev": true, "license": "MIT", "dependencies": { @@ -5812,8 +4790,6 @@ }, "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/fake-timers": { "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5822,8 +4798,6 @@ }, "node_modules/aws-sdk-client-mock/node_modules/diff": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -5832,8 +4806,6 @@ }, "node_modules/aws-sdk-client-mock/node_modules/sinon": { "version": "18.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.1.tgz", - "integrity": "sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5851,8 +4823,6 @@ }, "node_modules/aws-xray-sdk": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.12.0.tgz", - "integrity": "sha512-P8FuyV74Gfbagr5nDX7PJLOWyBnN3BVPGgT4Rvk0BCpNBI5opi+EZmPQrQQKEet9w0z1OmpQFCXtdp6UJkr8qA==", "license": "Apache-2.0", "dependencies": { "aws-xray-sdk-core": "3.12.0", @@ -5866,9 +4836,8 @@ }, "node_modules/aws-xray-sdk-core": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.12.0.tgz", - "integrity": "sha512-lwalRdxXRy+Sn49/vN7W507qqmBRk5Fy2o0a9U6XTjL9IV+oR5PUiiptoBrOcaYCiVuGld8OEbNqhm6wvV3m6A==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@aws-sdk/types": "^3.4.1", "@smithy/service-error-classification": "^2.0.4", @@ -5883,8 +4852,6 @@ }, "node_modules/aws-xray-sdk-core/node_modules/@smithy/service-error-classification": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", - "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^2.12.0" @@ -5895,8 +4862,6 @@ }, "node_modules/aws-xray-sdk-core/node_modules/@smithy/types": { "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5907,8 +4872,6 @@ }, "node_modules/aws-xray-sdk-core/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5919,8 +4882,6 @@ }, "node_modules/aws-xray-sdk-express": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.12.0.tgz", - "integrity": "sha512-S+9WxvkSVNvn9w257c7mXvWlm4QdaXe4TvVmm1phsQKoUi2MbcXxJPrVp+MmQq+GhfELV6fTvNRQA8chtIIJ1w==", "license": "Apache-2.0", "dependencies": { "@types/express": "*" @@ -5934,8 +4895,6 @@ }, "node_modules/aws-xray-sdk-mysql": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.12.0.tgz", - "integrity": "sha512-ifQ05a3MPiJvO/f7OuEVwXERF8gzBdfAA2qT8gDLYH5m1ViEEsD22IpwichjZY3FI7hmDsw6oPA55PeDxA/U7Q==", "license": "Apache-2.0", "dependencies": { "@types/mysql": "*" @@ -5949,8 +4908,6 @@ }, "node_modules/aws-xray-sdk-postgres": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.12.0.tgz", - "integrity": "sha512-Pt2cMowa51MHC++gqYI2AsJfIBqpMmdAvf4nmIvZkyZSAY+BvBksEVc4tK6+jQ+suz7KUVOidSkFmNFAW2c3LQ==", "license": "Apache-2.0", "dependencies": { "@types/pg": "*" @@ -5964,14 +4921,10 @@ }, "node_modules/aws4": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", "license": "MIT" }, "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", @@ -5981,8 +4934,6 @@ }, "node_modules/bail": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "license": "MIT", "funding": { "type": "github", @@ -5991,14 +4942,10 @@ }, "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==", "license": "MIT" }, "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", @@ -6017,8 +4964,6 @@ }, "node_modules/baseline-browser-mapping": { "version": "2.8.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", - "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6027,15 +4972,11 @@ }, "node_modules/before-after-hook": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", - "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/bignumber.js": { "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", "engines": { "node": "*" @@ -6043,34 +4984,24 @@ }, "node_modules/bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true, "license": "MIT" }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, "node_modules/bottleneck": { "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", "dev": true, "license": "MIT" }, "node_modules/bowser": { "version": "2.13.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.0.tgz", - "integrity": "sha512-yHAbSRuT6LTeKi6k2aS40csueHqgAsFEgmrOsfRyFpJnFv5O2hl9FYmWEUZ97gZ/dG17U4IQQcTx4YAFYPuWRQ==", "license": "MIT" }, "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" @@ -6078,8 +5009,6 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { @@ -6091,15 +5020,11 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, "license": "ISC" }, "node_modules/browserslist": { "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -6116,6 +5041,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -6132,8 +5058,6 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "license": "MIT", "engines": { "node": "*" @@ -6141,21 +5065,15 @@ }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, "node_modules/c8": { "version": "10.1.3", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", - "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", "dev": true, "license": "ISC", "dependencies": { @@ -6188,8 +5106,6 @@ }, "node_modules/cache-point": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-3.0.1.tgz", - "integrity": "sha512-itTIMLEKbh6Dw5DruXbxAgcyLnh/oPGVLBfTPqBOftASxHe8bAeXy7JkO4F0LvHqht7XqP5O/09h5UcHS2w0FA==", "dev": true, "license": "MIT", "dependencies": { @@ -6209,8 +5125,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -6227,8 +5141,6 @@ }, "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6240,8 +5152,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -6256,8 +5166,6 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -6266,8 +5174,6 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { @@ -6279,8 +5185,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001757", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", - "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "dev": true, "funding": [ { @@ -6300,8 +5204,6 @@ }, "node_modules/catharsis": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", "dev": true, "license": "MIT", "dependencies": { @@ -6313,8 +5215,6 @@ }, "node_modules/ccount": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "license": "MIT", "funding": { "type": "github", @@ -6323,18 +5223,15 @@ }, "node_modules/chai": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", - "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" } }, "node_modules/chai-as-promised": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-8.0.2.tgz", - "integrity": "sha512-1GadL+sEJVLzDjcawPM4kjfnL+p/9vrxiEUonowKOAzvVg0PixJUdtuDzdkDeQhK3zfOE76GqGkZIQ7/Adcrqw==", "dev": true, "license": "MIT", "dependencies": { @@ -6346,8 +5243,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -6363,8 +5258,6 @@ }, "node_modules/chalk-template": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, "license": "MIT", "dependencies": { @@ -6379,8 +5272,6 @@ }, "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, "license": "MIT", "engines": { @@ -6389,8 +5280,6 @@ }, "node_modules/character-entities": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "license": "MIT", "funding": { "type": "github", @@ -6399,8 +5288,6 @@ }, "node_modules/character-entities-html4": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "license": "MIT", "funding": { "type": "github", @@ -6409,8 +5296,6 @@ }, "node_modules/character-entities-legacy": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "license": "MIT", "funding": { "type": "github", @@ -6419,8 +5304,6 @@ }, "node_modules/check-error": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "license": "MIT", "engines": { @@ -6429,8 +5312,6 @@ }, "node_modules/cheerio": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", @@ -6454,8 +5335,6 @@ }, "node_modules/cheerio-select": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -6471,8 +5350,6 @@ }, "node_modules/cheerio/node_modules/entities": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -6483,8 +5360,6 @@ }, "node_modules/cheerio/node_modules/parse5": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { "entities": "^6.0.0" @@ -6495,8 +5370,6 @@ }, "node_modules/cheerio/node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "license": "MIT", "dependencies": { "domhandler": "^5.0.3", @@ -6508,8 +5381,6 @@ }, "node_modules/cheerio/node_modules/undici": { "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", "license": "MIT", "engines": { "node": ">=20.18.1" @@ -6517,8 +5388,6 @@ }, "node_modules/chokidar": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { @@ -6533,8 +5402,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -6543,8 +5410,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -6559,8 +5424,6 @@ }, "node_modules/cli-highlight": { "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, "license": "ISC", "dependencies": { @@ -6581,8 +5444,6 @@ }, "node_modules/cli-highlight/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -6591,8 +5452,6 @@ }, "node_modules/cli-highlight/node_modules/cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "license": "ISC", "dependencies": { @@ -6603,8 +5462,6 @@ }, "node_modules/cli-highlight/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -6613,8 +5470,6 @@ }, "node_modules/cli-highlight/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6628,8 +5483,6 @@ }, "node_modules/cli-highlight/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -6641,8 +5494,6 @@ }, "node_modules/cli-highlight/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6659,8 +5510,6 @@ }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { @@ -6678,8 +5527,6 @@ }, "node_modules/cli-highlight/node_modules/yargs-parser": { "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", "engines": { @@ -6688,8 +5535,6 @@ }, "node_modules/cli-table3": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6704,8 +5549,6 @@ }, "node_modules/cli-table3/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -6714,8 +5557,6 @@ }, "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -6724,8 +5565,6 @@ }, "node_modules/cli-table3/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6739,8 +5578,6 @@ }, "node_modules/cli-table3/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -6752,8 +5589,6 @@ }, "node_modules/cli-truncate": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", - "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", "dev": true, "license": "MIT", "dependencies": { @@ -6769,8 +5604,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -6784,8 +5617,6 @@ }, "node_modules/cliui/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -6794,8 +5625,6 @@ }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -6804,8 +5633,6 @@ }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6819,8 +5646,6 @@ }, "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -6832,8 +5657,6 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6850,8 +5673,6 @@ }, "node_modules/cls-hooked": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", "license": "BSD-2-Clause", "dependencies": { "async-hook-jl": "^1.7.6", @@ -6864,8 +5685,6 @@ }, "node_modules/cls-hooked/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" @@ -6873,8 +5692,6 @@ }, "node_modules/collapse-white-space": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "license": "MIT", "funding": { "type": "github", @@ -6883,8 +5700,6 @@ }, "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==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -6895,21 +5710,15 @@ }, "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==", "license": "MIT" }, "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, "license": "MIT" }, "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", "dependencies": { "delayed-stream": "~1.0.0" @@ -6920,8 +5729,6 @@ }, "node_modules/comma-separated-tokens": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "license": "MIT", "funding": { "type": "github", @@ -6930,8 +5737,6 @@ }, "node_modules/command-line-args": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.1.tgz", - "integrity": "sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==", "dev": true, "license": "MIT", "dependencies": { @@ -6954,8 +5759,6 @@ }, "node_modules/command-line-usage": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", - "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6970,8 +5773,6 @@ }, "node_modules/commander": { "version": "14.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", - "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "dev": true, "license": "MIT", "engines": { @@ -6980,8 +5781,6 @@ }, "node_modules/common-sequence": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-3.0.0.tgz", - "integrity": "sha512-g/CgSYk93y+a1IKm50tKl7kaT/OjjTYVQlEbUlt/49ZLV1mcKpUU7iyDiqTAeLdb4QDtQfq3ako8y8v//fzrWQ==", "dev": true, "license": "MIT", "engines": { @@ -6990,8 +5789,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7001,15 +5798,11 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/config-chain": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7019,8 +5812,6 @@ }, "node_modules/config-master": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", - "integrity": "sha512-n7LBL1zBzYdTpF1mx5DNcZnZn05CWIdsdvtPL4MosvqbBUK3Rq6VWEtGUuF3Y0s9/CIhMejezqlSkP6TnCJ/9g==", "dev": true, "license": "MIT", "dependencies": { @@ -7029,8 +5820,6 @@ }, "node_modules/config-master/node_modules/walk-back": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz", - "integrity": "sha512-Nb6GvBR8UWX1D+Le+xUq0+Q1kFmRBIWVrfLnQAOmcpEzA9oAxwJ9gIr36t9TWYfzvWRvuMtjHiVsJYEkXWaTAQ==", "dev": true, "license": "MIT", "engines": { @@ -7039,8 +5828,6 @@ }, "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": { @@ -7052,8 +5839,6 @@ }, "node_modules/conventional-changelog-writer": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.2.0.tgz", - "integrity": "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -7071,8 +5856,6 @@ }, "node_modules/conventional-changelog-writer/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -7084,8 +5867,6 @@ }, "node_modules/conventional-commits-filter": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", - "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", "dev": true, "license": "MIT", "engines": { @@ -7094,8 +5875,6 @@ }, "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", "dependencies": { @@ -7110,8 +5889,6 @@ }, "node_modules/convert-hrtime": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", "dev": true, "license": "MIT", "engines": { @@ -7123,21 +5900,15 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7163,8 +5934,6 @@ }, "node_modules/cosmiconfig/node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -7182,8 +5951,6 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -7196,8 +5963,6 @@ }, "node_modules/crypto-random-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, "license": "MIT", "dependencies": { @@ -7212,8 +5977,6 @@ }, "node_modules/crypto-random-string/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -7225,8 +5988,6 @@ }, "node_modules/css-select": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -7241,8 +6002,6 @@ }, "node_modules/css-selector-parser": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.2.0.tgz", - "integrity": "sha512-L1bdkNKUP5WYxiW5dW6vA2hd3sL8BdRNLy2FCX0rLVise4eNw9nBdeBuJHxlELieSE2H1f6bYQFfwVUwWCV9rQ==", "funding": [ { "type": "github", @@ -7257,8 +6016,6 @@ }, "node_modules/css-what": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -7269,8 +6026,6 @@ }, "node_modules/current-module-paths": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/current-module-paths/-/current-module-paths-1.1.3.tgz", - "integrity": "sha512-7AH+ZTRKikdK4s1RmY0l6067UD/NZc7p3zZVZxvmnH80G31kr0y0W0E6ibYM4IS01MEm8DiC5FnTcgcgkbFHoA==", "dev": true, "license": "MIT", "engines": { @@ -7279,8 +6034,6 @@ }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "engines": { "node": ">= 12" @@ -7288,8 +6041,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7306,8 +6057,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7324,8 +6073,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7342,8 +6089,6 @@ }, "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", "funding": { "type": "github", @@ -7352,8 +6097,6 @@ }, "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": { "ms": "^2.1.3" @@ -7369,8 +6112,6 @@ }, "node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "license": "MIT", "engines": { @@ -7382,8 +6123,6 @@ }, "node_modules/decode-named-character-reference": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -7395,8 +6134,6 @@ }, "node_modules/deep-equal": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", @@ -7427,8 +6164,6 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", "engines": { @@ -7437,15 +6172,11 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "license": "MIT", "engines": { @@ -7454,8 +6185,6 @@ }, "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==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -7471,8 +6200,6 @@ }, "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==", "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -7488,8 +6215,6 @@ }, "node_modules/del": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "license": "MIT", "dependencies": { @@ -7511,8 +6236,6 @@ }, "node_modules/del/node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7527,8 +6250,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==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -7536,8 +6257,6 @@ }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", "engines": { "node": ">=6" @@ -7545,8 +6264,6 @@ }, "node_modules/devlop": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "license": "MIT", "dependencies": { "dequal": "^2.0.0" @@ -7558,8 +6275,6 @@ }, "node_modules/diff": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7568,14 +6283,10 @@ }, "node_modules/dingbat-to-unicode": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", - "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==", "license": "BSD-2-Clause" }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { @@ -7587,14 +6298,10 @@ }, "node_modules/dirname-filename-esm": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/dirname-filename-esm/-/dirname-filename-esm-1.1.2.tgz", - "integrity": "sha512-mMhH2imzJN95KnX/iDAhC0QDG0VU833c88U3SXCaQzATu7YlO9YTFD/CF9Nn2xhSwFlV9iWEKb/YyGJ4TwCcPg==", "license": "MIT" }, "node_modules/dmd": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/dmd/-/dmd-7.1.1.tgz", - "integrity": "sha512-Ap2HP6iuOek7eShReDLr9jluNJm9RMZESlt29H/Xs1qrVMkcS9X6m5h1mBC56WMxNiSo0wvjGICmZlYUSFjwZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7620,8 +6327,6 @@ }, "node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -7633,8 +6338,6 @@ }, "node_modules/docx": { "version": "9.5.1", - "resolved": "https://registry.npmjs.org/docx/-/docx-9.5.1.tgz", - "integrity": "sha512-ABDI7JEirFD2+bHhOBlsGZxaG1UgZb2M/QMKhLSDGgVNhxDesTCDcP+qoDnDGjZ4EOXTRfUjUgwHVuZ6VSTfWQ==", "license": "MIT", "dependencies": { "@types/node": "^24.0.1", @@ -7650,8 +6353,6 @@ }, "node_modules/dom-serializer": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", @@ -7664,8 +6365,6 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", @@ -7676,8 +6375,6 @@ }, "node_modules/domhandler": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" @@ -7691,8 +6388,6 @@ }, "node_modules/domutils": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -7705,8 +6400,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7718,8 +6411,6 @@ }, "node_modules/duck": { "version": "0.1.12", - "resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz", - "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", "license": "BSD", "dependencies": { "underscore": "^1.13.1" @@ -7727,8 +6418,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -7741,37 +6430,18 @@ }, "node_modules/duplexer2": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, - "node_modules/dynamo-db-local": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/dynamo-db-local/-/dynamo-db-local-9.6.0.tgz", - "integrity": "sha512-/q0bPbYmQqpnRbM6qYiz4/+WgO86ZaYNQxvjfZHkXSwYL2oF5wgp3WBRYEKlEU+N3cHdYD12fMibIz0ECNXxIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18.2.0" - } - }, "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/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -7779,8 +6449,6 @@ }, "node_modules/electrodb": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/electrodb/-/electrodb-3.5.0.tgz", - "integrity": "sha512-msJyMTQmx6AC/otRKSre0rktE3E0RUw7ez9u2F25ZU4iXEqzxeu/OyRJcR53hh+jv4Fefi/3F9R+JopgIUZJHQ==", "license": "ISC", "dependencies": { "@aws-sdk/lib-dynamodb": "^3.654.0", @@ -7790,15 +6458,11 @@ }, "node_modules/electron-to-chromium": { "version": "1.5.262", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", - "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "dev": true, "license": "ISC" }, "node_modules/emitter-listener": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", "license": "BSD-2-Clause", "dependencies": { "shimmer": "^1.2.0" @@ -7806,21 +6470,15 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/emojilib": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", "dev": true, "license": "MIT" }, "node_modules/encoding-sniffer": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", @@ -7832,8 +6490,6 @@ }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -7844,8 +6500,6 @@ }, "node_modules/env-ci": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz", - "integrity": "sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==", "dev": true, "license": "MIT", "dependencies": { @@ -7858,8 +6512,6 @@ }, "node_modules/env-ci/node_modules/execa": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", "dependencies": { @@ -7882,8 +6534,6 @@ }, "node_modules/env-ci/node_modules/get-stream": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "license": "MIT", "engines": { @@ -7895,8 +6545,6 @@ }, "node_modules/env-ci/node_modules/human-signals": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -7905,8 +6553,6 @@ }, "node_modules/env-ci/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "license": "MIT", "engines": { @@ -7918,8 +6564,6 @@ }, "node_modules/env-ci/node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "license": "MIT", "engines": { @@ -7931,8 +6575,6 @@ }, "node_modules/env-ci/node_modules/npm-run-path": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7947,8 +6589,6 @@ }, "node_modules/env-ci/node_modules/onetime": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7963,8 +6603,6 @@ }, "node_modules/env-ci/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { @@ -7976,8 +6614,6 @@ }, "node_modules/env-ci/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -7989,8 +6625,6 @@ }, "node_modules/env-ci/node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "license": "MIT", "engines": { @@ -8002,8 +6636,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -8012,8 +6644,6 @@ }, "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, "license": "MIT", "engines": { @@ -8025,8 +6655,6 @@ }, "node_modules/error-ex": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8035,8 +6663,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8104,8 +6730,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8113,8 +6737,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8122,8 +6744,6 @@ }, "node_modules/es-get-iterator": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -8142,8 +6762,6 @@ }, "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -8154,8 +6772,6 @@ }, "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -8169,8 +6785,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8182,8 +6796,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8200,8 +6812,6 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -8210,8 +6820,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==", "dev": true, "license": "MIT", "engines": { @@ -8223,10 +6831,9 @@ }, "node_modules/eslint": { "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -8283,8 +6890,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8295,8 +6900,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8305,8 +6908,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8323,8 +6924,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8333,8 +6932,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8367,8 +6964,6 @@ }, "node_modules/eslint-plugin-import/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==", "dev": true, "license": "MIT", "dependencies": { @@ -8378,8 +6973,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8388,8 +6981,6 @@ }, "node_modules/eslint-plugin-import/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -8401,8 +6992,6 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8415,8 +7004,6 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8425,8 +7012,6 @@ }, "node_modules/eslint/node_modules/@eslint/config-helpers": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -8438,8 +7023,6 @@ }, "node_modules/eslint/node_modules/@eslint/core": { "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -8451,8 +7034,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8468,8 +7049,6 @@ }, "node_modules/eslint/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==", "dev": true, "license": "MIT", "dependencies": { @@ -8479,8 +7058,6 @@ }, "node_modules/eslint/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==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8496,8 +7073,6 @@ }, "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==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8509,8 +7084,6 @@ }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -8519,8 +7092,6 @@ }, "node_modules/eslint/node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -8529,15 +7100,11 @@ }, "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==", "dev": true, "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -8549,8 +7116,6 @@ }, "node_modules/esmock": { "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esmock/-/esmock-2.7.3.tgz", - "integrity": "sha512-/M/YZOjgyLaVoY6K83pwCsGE1AJQnj4S4GyXLYgi/Y79KL8EeW6WU7Rmjc89UO7jv6ec8+j34rKeWOfiLeEu0A==", "dev": true, "license": "ISC", "engines": { @@ -8559,8 +7124,6 @@ }, "node_modules/espree": { "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8577,8 +7140,6 @@ }, "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==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8590,8 +7151,6 @@ }, "node_modules/esquery": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8603,8 +7162,6 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -8613,8 +7170,6 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8626,8 +7181,6 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -8636,8 +7189,6 @@ }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -8646,15 +7197,11 @@ }, "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/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -8663,14 +7210,10 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { @@ -8693,14 +7236,10 @@ }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, "node_modules/fast-content-type-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", - "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", "dev": true, "funding": [ { @@ -8716,15 +7255,11 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { @@ -8740,8 +7275,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -8753,22 +7286,16 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -8784,8 +7311,6 @@ }, "node_modules/fast-xml-parser": { "version": "5.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", - "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "funding": [ { "type": "github", @@ -8802,8 +7327,6 @@ }, "node_modules/fastq": { "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -8812,8 +7335,6 @@ }, "node_modules/fetch-blob": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "funding": [ { "type": "github", @@ -8835,8 +7356,6 @@ }, "node_modules/figures": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "license": "MIT", "dependencies": { @@ -8851,8 +7370,6 @@ }, "node_modules/figures/node_modules/is-unicode-supported": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { @@ -8864,8 +7381,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -8877,8 +7392,6 @@ }, "node_modules/file-set": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/file-set/-/file-set-5.3.0.tgz", - "integrity": "sha512-FKCxdjLX0J6zqTWdT0RXIxNF/n7MyXXnsSUp0syLEOCKdexvPZ02lNNv2a+gpK9E3hzUYF3+eFZe32ci7goNUg==", "dev": true, "license": "MIT", "dependencies": { @@ -8899,8 +7412,6 @@ }, "node_modules/file-url": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", "dev": true, "license": "MIT", "engines": { @@ -8909,8 +7420,6 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -8922,8 +7431,6 @@ }, "node_modules/find-replace": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz", - "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==", "dev": true, "license": "MIT", "engines": { @@ -8940,8 +7447,6 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { @@ -8957,8 +7462,6 @@ }, "node_modules/find-up-simple": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", "engines": { @@ -8970,8 +7473,6 @@ }, "node_modules/find-versions": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", - "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, "license": "MIT", "dependencies": { @@ -8987,8 +7488,6 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { @@ -8997,8 +7496,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9011,15 +7508,11 @@ }, "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==", "dev": true, "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", @@ -9038,8 +7531,6 @@ }, "node_modules/for-each": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -9053,8 +7544,6 @@ }, "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": { "cross-spawn": "^7.0.6", @@ -9069,8 +7558,6 @@ }, "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" @@ -9081,8 +7568,6 @@ }, "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": { "asynckit": "^0.4.0", @@ -9097,8 +7582,6 @@ }, "node_modules/formdata-polyfill": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" @@ -9109,8 +7592,6 @@ }, "node_modules/franc-min": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/franc-min/-/franc-min-6.2.0.tgz", - "integrity": "sha512-1uDIEUSlUZgvJa2AKYR/dmJC66v/PvGQ9mWfI9nOr/kPpMFyvswK0gPXOwpYJYiYD008PpHLkGfG58SPjQJFxw==", "license": "MIT", "dependencies": { "trigram-utils": "^2.0.0" @@ -9122,8 +7603,6 @@ }, "node_modules/from2": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "license": "MIT", "dependencies": { @@ -9133,8 +7612,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9148,17 +7625,12 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -9170,8 +7642,6 @@ }, "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==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9179,8 +7649,6 @@ }, "node_modules/function-timeout": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", - "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", "dev": true, "license": "MIT", "engines": { @@ -9192,8 +7660,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9213,8 +7679,6 @@ }, "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==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9222,8 +7686,6 @@ }, "node_modules/gaxios": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.3.tgz", - "integrity": "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==", "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", @@ -9237,8 +7699,6 @@ }, "node_modules/gaxios/node_modules/rimraf": { "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "license": "ISC", "dependencies": { "glob": "^10.3.7" @@ -9252,8 +7712,6 @@ }, "node_modules/gcp-metadata": { "version": "8.1.2", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", - "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", "license": "Apache-2.0", "dependencies": { "gaxios": "^7.0.0", @@ -9266,8 +7724,6 @@ }, "node_modules/generator-function": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, "license": "MIT", "engines": { @@ -9276,8 +7732,6 @@ }, "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, "license": "MIT", "engines": { @@ -9286,8 +7740,6 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { @@ -9296,8 +7748,6 @@ }, "node_modules/get-east-asian-width": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "dev": true, "license": "MIT", "engines": { @@ -9309,8 +7759,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -9333,8 +7781,6 @@ }, "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==", "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -9346,8 +7792,6 @@ }, "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, "license": "MIT", "engines": { @@ -9359,8 +7803,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9377,8 +7819,6 @@ }, "node_modules/git-log-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", - "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9392,14 +7832,10 @@ }, "node_modules/github-slugger": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", "license": "ISC" }, "node_modules/glob": { "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -9418,8 +7854,6 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { @@ -9431,8 +7865,6 @@ }, "node_modules/globals": { "version": "17.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.1.0.tgz", - "integrity": "sha512-8HoIcWI5fCvG5NADj4bDav+er9B9JMj2vyL2pI8D0eismKyUvPLTSs+Ln3wqhwcp306i73iyVnEKx3F6T47TGw==", "dev": true, "license": "MIT", "engines": { @@ -9444,8 +7876,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9461,8 +7891,6 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { @@ -9482,8 +7910,6 @@ }, "node_modules/globby/node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -9492,8 +7918,6 @@ }, "node_modules/google-auth-library": { "version": "10.5.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.5.0.tgz", - "integrity": "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==", "license": "Apache-2.0", "dependencies": { "base64-js": "^1.3.0", @@ -9510,8 +7934,6 @@ }, "node_modules/google-logging-utils": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", - "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", "license": "Apache-2.0", "engines": { "node": ">=14" @@ -9519,8 +7941,6 @@ }, "node_modules/googleapis": { "version": "164.1.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-164.1.0.tgz", - "integrity": "sha512-dIN768H8so9qGucFtjYPBZJ+OCEgDi/xYyvYQHniPL1ZCYvrRDBTmtbjVjKCPG1CuOhG4CKHZDXiFe6QZ2qBeQ==", "license": "Apache-2.0", "dependencies": { "google-auth-library": "^10.2.0", @@ -9532,8 +7952,6 @@ }, "node_modules/googleapis-common": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.1.tgz", - "integrity": "sha512-eCzNACUXPb1PW5l0ULTzMHaL/ltPRADoPgjBlT8jWsTbxkCp6siv+qKJ/1ldaybCthGwsYFYallF7u9AkU4L+A==", "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", @@ -9548,8 +7966,6 @@ }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9560,28 +7976,20 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/graph-data-structure": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/graph-data-structure/-/graph-data-structure-4.5.0.tgz", - "integrity": "sha512-OCeIzpK9JnV5js4gtDJgwebRbcOsZpoN9CNIwEooHkV/FNol+OykWPOugSTXBH/QICEW2N6U+6L2d9DcK4YBcw==", "license": "MIT" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "node_modules/gtoken": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", - "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", "license": "MIT", "dependencies": { "gaxios": "^7.0.0", @@ -9593,8 +8001,6 @@ }, "node_modules/handlebars": { "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9615,8 +8021,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9627,8 +8031,6 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -9637,8 +8039,6 @@ }, "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==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -9649,8 +8049,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -9665,8 +8063,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9677,8 +8073,6 @@ }, "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==", "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -9692,8 +8086,6 @@ }, "node_modules/hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -9702,8 +8094,6 @@ }, "node_modules/hasown": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -9714,8 +8104,6 @@ }, "node_modules/hast-util-embedded": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", - "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9728,8 +8116,6 @@ }, "node_modules/hast-util-from-html": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9746,8 +8132,6 @@ }, "node_modules/hast-util-from-html/node_modules/entities": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -9758,8 +8142,6 @@ }, "node_modules/hast-util-from-html/node_modules/parse5": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { "entities": "^6.0.0" @@ -9770,8 +8152,6 @@ }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", - "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9790,8 +8170,6 @@ }, "node_modules/hast-util-has-property": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", - "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -9803,8 +8181,6 @@ }, "node_modules/hast-util-is-body-ok-link": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", - "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -9816,8 +8192,6 @@ }, "node_modules/hast-util-is-element": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -9829,8 +8203,6 @@ }, "node_modules/hast-util-minify-whitespace": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", - "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9846,8 +8218,6 @@ }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -9859,8 +8229,6 @@ }, "node_modules/hast-util-phrasing": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9876,8 +8244,6 @@ }, "node_modules/hast-util-to-html": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9899,8 +8265,6 @@ }, "node_modules/hast-util-to-mdast": { "version": "10.1.2", - "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz", - "integrity": "sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9925,8 +8289,6 @@ }, "node_modules/hast-util-to-text": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9941,8 +8303,6 @@ }, "node_modules/hast-util-whitespace": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -9954,8 +8314,6 @@ }, "node_modules/hastscript": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -9971,8 +8329,6 @@ }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", "bin": { @@ -9981,8 +8337,6 @@ }, "node_modules/highlight.js": { "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -9991,8 +8345,6 @@ }, "node_modules/hook-std": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-4.0.0.tgz", - "integrity": "sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==", "dev": true, "license": "MIT", "engines": { @@ -10004,8 +8356,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -10017,8 +8367,6 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", "dev": true, "license": "ISC", "engines": { @@ -10027,15 +8375,11 @@ }, "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, "license": "MIT" }, "node_modules/html-void-elements": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "license": "MIT", "funding": { "type": "github", @@ -10044,8 +8388,6 @@ }, "node_modules/htmlparser2": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -10063,8 +8405,6 @@ }, "node_modules/htmlparser2/node_modules/entities": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -10075,14 +8415,10 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10095,8 +8431,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==", "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -10108,8 +8442,6 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -10118,8 +8450,6 @@ }, "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, "license": "MIT", "bin": { @@ -10134,8 +8464,6 @@ }, "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", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -10146,8 +8474,6 @@ }, "node_modules/ignore": { "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -10156,8 +8482,6 @@ }, "node_modules/image-size": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", - "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", "license": "MIT", "bin": { "image-size": "bin/image-size.js" @@ -10168,14 +8492,10 @@ }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10191,8 +8511,6 @@ }, "node_modules/import-from-esm": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-2.0.0.tgz", - "integrity": "sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==", "dev": true, "license": "MIT", "dependencies": { @@ -10205,8 +8523,6 @@ }, "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", "funding": { @@ -10216,8 +8532,6 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -10226,8 +8540,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -10236,8 +8548,6 @@ }, "node_modules/index-to-position": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", - "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", "dev": true, "license": "MIT", "engines": { @@ -10249,9 +8559,6 @@ }, "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, "license": "ISC", "dependencies": { @@ -10261,21 +8568,15 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC" }, "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -10288,8 +8589,6 @@ }, "node_modules/into-stream": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", - "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", "dev": true, "license": "MIT", "dependencies": { @@ -10305,8 +8604,6 @@ }, "node_modules/is-arguments": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10321,8 +8618,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -10338,15 +8633,11 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10365,8 +8656,6 @@ }, "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==", "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" @@ -10380,8 +8669,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10396,8 +8683,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10408,8 +8693,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10424,8 +8707,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10442,8 +8723,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10458,14 +8737,10 @@ }, "node_modules/is-electron": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", - "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", "license": "MIT" }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { @@ -10474,8 +8749,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10490,8 +8763,6 @@ }, "node_modules/is-fullwidth-code-point": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10506,8 +8777,6 @@ }, "node_modules/is-generator-function": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { @@ -10526,8 +8795,6 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { @@ -10539,8 +8806,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10551,15 +8816,11 @@ }, "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true, "license": "MIT" }, "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==", "dev": true, "license": "MIT", "engines": { @@ -10571,15 +8832,11 @@ }, "node_modules/is-node-process": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", - "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", "dev": true, "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -10588,8 +8845,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10604,8 +8859,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -10614,8 +8867,6 @@ }, "node_modules/is-path-cwd": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, "license": "MIT", "engines": { @@ -10624,8 +8875,6 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", "engines": { @@ -10634,8 +8883,6 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", "engines": { @@ -10644,8 +8891,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10662,8 +8907,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10674,8 +8917,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -10689,8 +8930,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">=8" @@ -10701,8 +8940,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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10717,8 +8954,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10734,8 +8969,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10750,8 +8983,6 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -10763,8 +8994,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10775,8 +9004,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -10791,8 +9018,6 @@ }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10807,20 +9032,14 @@ }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/iso-639-3": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/iso-639-3/-/iso-639-3-3.0.1.tgz", - "integrity": "sha512-SdljCYXOexv/JmbQ0tvigHN43yECoscVpe2y2hlEqy/CStXQlroPhZLj7zKLRiGqLJfw8k7B973UAMDoQczVgQ==", "license": "MIT", "funding": { "type": "github", @@ -10829,8 +9048,6 @@ }, "node_modules/issue-parser": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", - "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", "dev": true, "license": "MIT", "dependencies": { @@ -10846,8 +9063,6 @@ }, "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, "license": "BSD-3-Clause", "engines": { @@ -10856,8 +9071,6 @@ }, "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, "license": "BSD-3-Clause", "dependencies": { @@ -10871,8 +9084,6 @@ }, "node_modules/istanbul-reports": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -10885,8 +9096,6 @@ }, "node_modules/jackspeak": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -10900,8 +9109,6 @@ }, "node_modules/java-properties": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, "license": "MIT", "engines": { @@ -10910,8 +9117,6 @@ }, "node_modules/joi": { "version": "18.0.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz", - "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==", "license": "BSD-3-Clause", "dependencies": { "@hapi/address": "^5.1.1", @@ -10928,8 +9133,6 @@ }, "node_modules/jose": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.2.tgz", - "integrity": "sha512-MpcPtHLE5EmztuFIqB0vzHAWJPpmN1E6L4oo+kze56LIs3MyXIj9ZHMDxqOvkP38gBR7K1v3jqd4WU2+nrfONQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -10937,15 +9140,11 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -10956,8 +9155,6 @@ }, "node_modules/js2xmlparser": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10966,8 +9163,6 @@ }, "node_modules/jsdoc": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.5.tgz", - "integrity": "sha512-P4C6MWP9yIlMiK8nwoZvxN84vb6MsnXcHuy7XzVOvQoCizWX5JFCBsWIIWKXBltpoRZXddUOVQmCTOZt9yDj9g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10996,8 +9191,6 @@ }, "node_modules/jsdoc-api": { "version": "9.3.5", - "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-9.3.5.tgz", - "integrity": "sha512-TQwh1jA8xtCkIbVwm/XA3vDRAa5JjydyKx1cC413Sh3WohDFxcMdwKSvn4LOsq2xWyAmOU/VnSChTQf6EF0R8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11023,8 +9216,6 @@ }, "node_modules/jsdoc-parse": { "version": "6.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.2.5.tgz", - "integrity": "sha512-8JaSNjPLr2IuEY4Das1KM6Z4oLHZYUnjRrr27hKSa78Cj0i5Lur3DzNnCkz+DfrKBDoljGMoWOiBVQbtUZJBPw==", "dev": true, "license": "MIT", "dependencies": { @@ -11038,8 +9229,6 @@ }, "node_modules/jsdoc-to-markdown": { "version": "9.1.3", - "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-9.1.3.tgz", - "integrity": "sha512-i9wi+6WHX0WKziv0ar88T8h7OmxA0LWdQaV23nY6uQyKvdUPzVt0o6YAaOceFuKRF5Rvlju5w/KnZBfdpDAlnw==", "dev": true, "license": "MIT", "dependencies": { @@ -11069,8 +9258,6 @@ }, "node_modules/jsdoc/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, "license": "MIT", "engines": { @@ -11079,8 +9266,6 @@ }, "node_modules/jsesc": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -11092,8 +9277,6 @@ }, "node_modules/json-bigint": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", "license": "MIT", "dependencies": { "bignumber.js": "^9.0.0" @@ -11101,50 +9284,36 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -11156,8 +9325,6 @@ }, "node_modules/jsonfile": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -11169,8 +9336,6 @@ }, "node_modules/jsonschema": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.7.tgz", - "integrity": "sha512-3dFMg9hmI9LdHag/BRIhMefCfbq1hicvYMy8YhZQorAdzOzWz7NjniSpn39yjpzUAMIWtGyyZuH2KNBloH7ZLw==", "license": "MIT", "engines": { "node": "*" @@ -11178,8 +9343,6 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "license": "MIT", "dependencies": { "jws": "^3.2.2", @@ -11200,8 +9363,6 @@ }, "node_modules/jsonwebtoken/node_modules/jwa": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", "license": "MIT", "dependencies": { "buffer-equal-constant-time": "^1.0.1", @@ -11211,8 +9372,6 @@ }, "node_modules/jsonwebtoken/node_modules/jws": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "license": "MIT", "dependencies": { "jwa": "^1.4.1", @@ -11221,8 +9380,6 @@ }, "node_modules/jsonwebtoken/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -11233,8 +9390,6 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", @@ -11245,15 +9400,11 @@ }, "node_modules/just-extend": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true, "license": "MIT" }, "node_modules/jwa": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "license": "MIT", "dependencies": { "buffer-equal-constant-time": "^1.0.1", @@ -11263,8 +9414,6 @@ }, "node_modules/jws": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", "license": "MIT", "dependencies": { "jwa": "^2.0.0", @@ -11273,8 +9422,6 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -11283,8 +9430,6 @@ }, "node_modules/klaw": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", "dev": true, "license": "MIT", "dependencies": { @@ -11293,8 +9438,6 @@ }, "node_modules/launchdarkly-eventsource": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/launchdarkly-eventsource/-/launchdarkly-eventsource-2.2.0.tgz", - "integrity": "sha512-u38fYlLSq/m6oFz0MS1/76Sj2xzlYhTKZ+sf/vju6PA86PMc6fPlY5k8CdU79edLXjNwsvIQTDvDNy3llDqB8A==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -11302,8 +9445,6 @@ }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11316,8 +9457,6 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "license": "MIT", "dependencies": { "immediate": "~3.0.5" @@ -11325,15 +9464,11 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, "node_modules/linkify-it": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11342,8 +9477,6 @@ }, "node_modules/lint-staged": { "version": "16.2.7", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.2.7.tgz", - "integrity": "sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==", "dev": true, "license": "MIT", "dependencies": { @@ -11367,8 +9500,6 @@ }, "node_modules/listr2": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", - "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", "dev": true, "license": "MIT", "dependencies": { @@ -11385,8 +9516,6 @@ }, "node_modules/load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "license": "MIT", "dependencies": { @@ -11401,8 +9530,6 @@ }, "node_modules/load-json-file/node_modules/parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "license": "MIT", "dependencies": { @@ -11415,8 +9542,6 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -11431,105 +9556,73 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/lodash.capitalize": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", "dev": true, "license": "MIT" }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", "dev": true, "license": "MIT" }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "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==", "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, "node_modules/lodash.iteratee": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz", - "integrity": "sha512-yv3cSQZmfpbIKo4Yo45B1taEvxjNvcpF1CEOc0Y6dEyvhPIfEJE3twDwPgWTPQubcSgXyBwBKG6wpQvWMDOf6Q==", "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, "node_modules/lodash.uniqby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", "dev": true, "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -11545,8 +9638,6 @@ }, "node_modules/log-update": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, "license": "MIT", "dependencies": { @@ -11565,8 +9656,6 @@ }, "node_modules/longest-streak": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", "license": "MIT", "funding": { "type": "github", @@ -11575,8 +9664,6 @@ }, "node_modules/lop": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/lop/-/lop-0.4.2.tgz", - "integrity": "sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==", "license": "BSD-2-Clause", "dependencies": { "duck": "^0.1.12", @@ -11586,8 +9673,6 @@ }, "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, "license": "ISC", "dependencies": { @@ -11596,8 +9681,6 @@ }, "node_modules/make-asynchronous": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.0.1.tgz", - "integrity": "sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11614,8 +9697,6 @@ }, "node_modules/make-asynchronous/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, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11627,8 +9708,6 @@ }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { @@ -11643,8 +9722,6 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -11656,10 +9733,9 @@ }, "node_modules/markdown-it": { "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -11674,8 +9750,6 @@ }, "node_modules/markdown-it-anchor": { "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", "dev": true, "license": "Unlicense", "peerDependencies": { @@ -11685,8 +9759,6 @@ }, "node_modules/markdown-table": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", "license": "MIT", "funding": { "type": "github", @@ -11695,10 +9767,9 @@ }, "node_modules/marked": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -11708,8 +9779,6 @@ }, "node_modules/marked-terminal": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz", - "integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==", "dev": true, "license": "MIT", "dependencies": { @@ -11730,8 +9799,6 @@ }, "node_modules/marked-terminal/node_modules/chalk": { "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -11743,8 +9810,6 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -11752,8 +9817,6 @@ }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11768,8 +9831,6 @@ }, "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "license": "MIT", "engines": { "node": ">=12" @@ -11780,8 +9841,6 @@ }, "node_modules/mdast-util-from-markdown": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11804,8 +9863,6 @@ }, "node_modules/mdast-util-gfm": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", @@ -11823,8 +9880,6 @@ }, "node_modules/mdast-util-gfm-autolink-literal": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11840,8 +9895,6 @@ }, "node_modules/mdast-util-gfm-footnote": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11857,8 +9910,6 @@ }, "node_modules/mdast-util-gfm-strikethrough": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11872,8 +9923,6 @@ }, "node_modules/mdast-util-gfm-table": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11889,8 +9938,6 @@ }, "node_modules/mdast-util-gfm-task-list-item": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11905,8 +9952,6 @@ }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11919,8 +9964,6 @@ }, "node_modules/mdast-util-to-hast": { "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", - "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -11940,8 +9983,6 @@ }, "node_modules/mdast-util-to-markdown": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11961,8 +10002,6 @@ }, "node_modules/mdast-util-to-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" @@ -11974,15 +10013,11 @@ }, "node_modules/mdurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, "license": "MIT" }, "node_modules/meow": { "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, "license": "MIT", "engines": { @@ -11994,15 +10029,11 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -12011,8 +10042,6 @@ }, "node_modules/micromark": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", "funding": [ { "type": "GitHub Sponsors", @@ -12046,8 +10075,6 @@ }, "node_modules/micromark-core-commonmark": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", "funding": [ { "type": "GitHub Sponsors", @@ -12080,8 +10107,6 @@ }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", @@ -12100,8 +10125,6 @@ }, "node_modules/micromark-extension-gfm-autolink-literal": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", @@ -12116,8 +10139,6 @@ }, "node_modules/micromark-extension-gfm-footnote": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -12136,8 +10157,6 @@ }, "node_modules/micromark-extension-gfm-strikethrough": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -12154,8 +10173,6 @@ }, "node_modules/micromark-extension-gfm-table": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -12171,8 +10188,6 @@ }, "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" @@ -12184,8 +10199,6 @@ }, "node_modules/micromark-extension-gfm-task-list-item": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -12201,8 +10214,6 @@ }, "node_modules/micromark-factory-destination": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", "funding": [ { "type": "GitHub Sponsors", @@ -12222,8 +10233,6 @@ }, "node_modules/micromark-factory-label": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", "funding": [ { "type": "GitHub Sponsors", @@ -12244,8 +10253,6 @@ }, "node_modules/micromark-factory-space": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", "funding": [ { "type": "GitHub Sponsors", @@ -12264,8 +10271,6 @@ }, "node_modules/micromark-factory-title": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", "funding": [ { "type": "GitHub Sponsors", @@ -12286,8 +10291,6 @@ }, "node_modules/micromark-factory-whitespace": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", "funding": [ { "type": "GitHub Sponsors", @@ -12308,8 +10311,6 @@ }, "node_modules/micromark-util-character": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", "funding": [ { "type": "GitHub Sponsors", @@ -12328,8 +10329,6 @@ }, "node_modules/micromark-util-chunked": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", "funding": [ { "type": "GitHub Sponsors", @@ -12347,8 +10346,6 @@ }, "node_modules/micromark-util-classify-character": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", "funding": [ { "type": "GitHub Sponsors", @@ -12368,8 +10365,6 @@ }, "node_modules/micromark-util-combine-extensions": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", "funding": [ { "type": "GitHub Sponsors", @@ -12388,8 +10383,6 @@ }, "node_modules/micromark-util-decode-numeric-character-reference": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", "funding": [ { "type": "GitHub Sponsors", @@ -12407,8 +10400,6 @@ }, "node_modules/micromark-util-decode-string": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", "funding": [ { "type": "GitHub Sponsors", @@ -12429,8 +10420,6 @@ }, "node_modules/micromark-util-encode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", "funding": [ { "type": "GitHub Sponsors", @@ -12445,8 +10434,6 @@ }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", "funding": [ { "type": "GitHub Sponsors", @@ -12461,8 +10448,6 @@ }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", "funding": [ { "type": "GitHub Sponsors", @@ -12480,8 +10465,6 @@ }, "node_modules/micromark-util-resolve-all": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", "funding": [ { "type": "GitHub Sponsors", @@ -12499,8 +10482,6 @@ }, "node_modules/micromark-util-sanitize-uri": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", "funding": [ { "type": "GitHub Sponsors", @@ -12520,8 +10501,6 @@ }, "node_modules/micromark-util-subtokenize": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "funding": [ { "type": "GitHub Sponsors", @@ -12542,8 +10521,6 @@ }, "node_modules/micromark-util-symbol": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", "funding": [ { "type": "GitHub Sponsors", @@ -12558,8 +10535,6 @@ }, "node_modules/micromark-util-types": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "funding": [ { "type": "GitHub Sponsors", @@ -12574,8 +10549,6 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -12588,8 +10561,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" ], @@ -12603,8 +10574,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -12612,8 +10581,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -12624,8 +10591,6 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -12634,8 +10599,6 @@ }, "node_modules/mimic-function": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "license": "MIT", "engines": { @@ -12647,14 +10610,10 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "license": "ISC" }, "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" @@ -12668,8 +10627,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -12678,8 +10635,6 @@ }, "node_modules/minipass": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -12687,8 +10642,6 @@ }, "node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", "bin": { @@ -12700,8 +10653,6 @@ }, "node_modules/mnemonist": { "version": "0.38.3", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", - "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", "license": "MIT", "dependencies": { "obliterator": "^1.6.1" @@ -12709,8 +10660,6 @@ }, "node_modules/mocha": { "version": "11.7.5", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz", - "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", "dev": true, "license": "MIT", "dependencies": { @@ -12746,8 +10695,6 @@ }, "node_modules/mocha-multi-reporters": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", - "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", "dev": true, "license": "MIT", "dependencies": { @@ -12763,8 +10710,6 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12779,14 +10724,10 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12797,8 +10738,6 @@ }, "node_modules/n-gram": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/n-gram/-/n-gram-2.0.2.tgz", - "integrity": "sha512-S24aGsn+HLBxUGVAUFOwGpKs7LBcG4RudKU//eWzt/mQ97/NMKQxDWHyHx63UNWk/OOdihgmzoETn1tf5nQDzQ==", "license": "MIT", "funding": { "type": "github", @@ -12807,8 +10746,6 @@ }, "node_modules/nano-spawn": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.0.0.tgz", - "integrity": "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==", "dev": true, "license": "MIT", "engines": { @@ -12820,8 +10757,6 @@ }, "node_modules/nanoid": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", - "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", "funding": [ { "type": "github", @@ -12838,29 +10773,21 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, "node_modules/nerf-dart": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true, "license": "MIT" }, "node_modules/nise": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", - "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -12873,8 +10800,6 @@ }, "node_modules/nock": { "version": "14.0.10", - "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.10.tgz", - "integrity": "sha512-Q7HjkpyPeLa0ZVZC5qpxBt5EyLczFJ91MEewQiIi9taWuA0KB/MDJlUWtON+7dGouVdADTQsf9RA7TZk6D8VMw==", "dev": true, "license": "MIT", "dependencies": { @@ -12888,9 +10813,6 @@ }, "node_modules/node-domexception": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", "funding": [ { "type": "github", @@ -12908,8 +10830,6 @@ }, "node_modules/node-emoji": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", - "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", "dev": true, "license": "MIT", "dependencies": { @@ -12924,8 +10844,6 @@ }, "node_modules/node-fetch": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", @@ -12942,15 +10860,11 @@ }, "node_modules/node-releases": { "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, "node_modules/normalize-package-data": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz", - "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -12964,8 +10878,6 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -12977,8 +10889,6 @@ }, "node_modules/normalize-url": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", - "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==", "dev": true, "license": "MIT", "engines": { @@ -12990,8 +10900,6 @@ }, "node_modules/npm": { "version": "11.6.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-11.6.4.tgz", - "integrity": "sha512-ERjKtGoFpQrua/9bG0+h3xiv/4nVdGViCjUYA1AmlV24fFvfnSB7B7dIfZnySQ1FDLd0ZVrWPsLLp78dCtJdRQ==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -13147,8 +11055,6 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { @@ -15007,6 +12913,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -15141,8 +13048,6 @@ }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" @@ -15153,8 +13058,6 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", "engines": { @@ -15163,8 +13066,6 @@ }, "node_modules/object-inspect": { "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -15175,8 +13076,6 @@ }, "node_modules/object-is": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -15191,8 +13090,6 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -15200,8 +13097,6 @@ }, "node_modules/object-to-spawn-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz", - "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==", "dev": true, "license": "MIT", "engines": { @@ -15210,8 +13105,6 @@ }, "node_modules/object.assign": { "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -15230,8 +13123,6 @@ }, "node_modules/object.fromentries": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15249,8 +13140,6 @@ }, "node_modules/object.groupby": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15264,8 +13153,6 @@ }, "node_modules/object.values": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -15283,14 +13170,10 @@ }, "node_modules/obliterator": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", "license": "MIT" }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -15299,8 +13182,6 @@ }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -15315,14 +13196,10 @@ }, "node_modules/option": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz", - "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==", "license": "BSD-2-Clause" }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -15339,15 +13216,11 @@ }, "node_modules/outvariant": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", - "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "dev": true, "license": "MIT" }, "node_modules/own-keys": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, "license": "MIT", "dependencies": { @@ -15364,8 +13237,6 @@ }, "node_modules/p-each-series": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", - "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "dev": true, "license": "MIT", "engines": { @@ -15377,8 +13248,6 @@ }, "node_modules/p-event": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", - "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", "dev": true, "license": "MIT", "dependencies": { @@ -15393,8 +13262,6 @@ }, "node_modules/p-filter": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", - "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, "license": "MIT", "dependencies": { @@ -15409,8 +13276,6 @@ }, "node_modules/p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "license": "MIT", "engines": { "node": ">=4" @@ -15418,8 +13283,6 @@ }, "node_modules/p-is-promise": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true, "license": "MIT", "engines": { @@ -15428,8 +13291,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15444,8 +13305,6 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -15460,8 +13319,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -15473,8 +13330,6 @@ }, "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", @@ -15489,14 +13344,10 @@ }, "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-queue/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" @@ -15507,8 +13358,6 @@ }, "node_modules/p-reduce": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, "license": "MIT", "engines": { @@ -15517,8 +13366,6 @@ }, "node_modules/p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "license": "MIT", "dependencies": { "@types/retry": "0.12.0", @@ -15530,8 +13377,6 @@ }, "node_modules/p-timeout": { "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", "dev": true, "license": "MIT", "engines": { @@ -15543,8 +13388,6 @@ }, "node_modules/p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "license": "MIT", "engines": { @@ -15553,20 +13396,14 @@ }, "node_modules/package-json-from-dist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -15578,8 +13415,6 @@ }, "node_modules/parse-json": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15596,8 +13431,6 @@ }, "node_modules/parse-json/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, "license": "(MIT OR CC0-1.0)", "engines": { @@ -15609,8 +13442,6 @@ }, "node_modules/parse-ms": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, "license": "MIT", "engines": { @@ -15622,15 +13453,11 @@ }, "node_modules/parse5": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "dev": true, "license": "MIT" }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "license": "MIT", "dependencies": { @@ -15639,15 +13466,11 @@ }, "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, "license": "MIT" }, "node_modules/parse5-parser-stream": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "license": "MIT", "dependencies": { "parse5": "^7.0.0" @@ -15658,8 +13481,6 @@ }, "node_modules/parse5-parser-stream/node_modules/entities": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -15670,8 +13491,6 @@ }, "node_modules/parse5-parser-stream/node_modules/parse5": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { "entities": "^6.0.0" @@ -15682,8 +13501,6 @@ }, "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, "license": "MIT", "engines": { @@ -15692,8 +13509,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15701,8 +13516,6 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" @@ -15710,15 +13523,11 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", @@ -15733,14 +13542,10 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, "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==", "dev": true, "license": "MIT", "funding": { @@ -15750,8 +13555,6 @@ }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { @@ -15760,29 +13563,21 @@ }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "license": "MIT" }, "node_modules/pg-int8": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", "license": "ISC", "engines": { "node": ">=4.0.0" } }, "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "version": "1.11.0", "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "license": "MIT", "dependencies": { "pg-int8": "1.0.1", @@ -15797,15 +13592,11 @@ }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -15817,8 +13608,6 @@ }, "node_modules/pidtree": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, "license": "MIT", "bin": { @@ -15830,8 +13619,6 @@ }, "node_modules/pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "license": "MIT", "engines": { @@ -15840,8 +13627,6 @@ }, "node_modules/pkg-conf": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", "dev": true, "license": "MIT", "dependencies": { @@ -15854,8 +13639,6 @@ }, "node_modules/pkg-conf/node_modules/find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15867,8 +13650,6 @@ }, "node_modules/pkg-conf/node_modules/locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "license": "MIT", "dependencies": { @@ -15881,8 +13662,6 @@ }, "node_modules/pkg-conf/node_modules/p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -15894,8 +13673,6 @@ }, "node_modules/pkg-conf/node_modules/p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "license": "MIT", "dependencies": { @@ -15907,8 +13684,6 @@ }, "node_modules/pkg-conf/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "license": "MIT", "engines": { @@ -15917,8 +13692,6 @@ }, "node_modules/pkg-up": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "dev": true, "license": "MIT", "dependencies": { @@ -15930,8 +13703,6 @@ }, "node_modules/pkg-up/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "license": "MIT", "dependencies": { @@ -15943,8 +13714,6 @@ }, "node_modules/pkg-up/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "license": "MIT", "dependencies": { @@ -15957,8 +13726,6 @@ }, "node_modules/pkg-up/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -15973,8 +13740,6 @@ }, "node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15986,8 +13751,6 @@ }, "node_modules/pkg-up/node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -15996,8 +13759,6 @@ }, "node_modules/pkg-up/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "license": "MIT", "engines": { @@ -16006,8 +13767,6 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "license": "MIT", "engines": { "node": ">=4" @@ -16015,8 +13774,6 @@ }, "node_modules/possible-typed-array-names": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -16024,8 +13781,6 @@ }, "node_modules/postgres-array": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", "license": "MIT", "engines": { "node": ">=4" @@ -16033,8 +13788,6 @@ }, "node_modules/postgres-bytea": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -16042,8 +13795,6 @@ }, "node_modules/postgres-date": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -16051,8 +13802,6 @@ }, "node_modules/postgres-interval": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "license": "MIT", "dependencies": { "xtend": "^4.0.0" @@ -16063,8 +13812,6 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { @@ -16073,8 +13820,6 @@ }, "node_modules/pretty-ms": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16089,14 +13834,10 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, "node_modules/propagate": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true, "license": "MIT", "engines": { @@ -16105,8 +13846,6 @@ }, "node_modules/property-information": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", - "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", "license": "MIT", "funding": { "type": "github", @@ -16115,22 +13854,15 @@ }, "node_modules/proto-list": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, "license": "ISC" }, "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, "node_modules/punycode": { - "name": "punycode.js", "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, "license": "MIT", "engines": { @@ -16139,8 +13871,6 @@ }, "node_modules/punycode.js": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, "license": "MIT", "engines": { @@ -16149,8 +13879,6 @@ }, "node_modules/qs": { "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -16164,8 +13892,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -16185,15 +13911,11 @@ }, "node_modules/ramda": { "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", "dev": true, "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16202,8 +13924,6 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { @@ -16218,8 +13938,6 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", "engines": { @@ -16228,8 +13946,6 @@ }, "node_modules/read-package-up": { "version": "12.0.0", - "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-12.0.0.tgz", - "integrity": "sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==", "dev": true, "license": "MIT", "dependencies": { @@ -16246,8 +13962,6 @@ }, "node_modules/read-pkg": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz", - "integrity": "sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==", "dev": true, "license": "MIT", "dependencies": { @@ -16266,8 +13980,6 @@ }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -16281,14 +13993,10 @@ }, "node_modules/readable-stream/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/readdirp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { @@ -16301,8 +14009,6 @@ }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { @@ -16324,8 +14030,6 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -16344,8 +14048,6 @@ }, "node_modules/registry-auth-token": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", - "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", "dev": true, "license": "MIT", "dependencies": { @@ -16357,8 +14059,6 @@ }, "node_modules/rehype-minify-whitespace": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", - "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -16371,8 +14071,6 @@ }, "node_modules/rehype-parse": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -16386,8 +14084,6 @@ }, "node_modules/remark-gfm": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -16404,8 +14100,6 @@ }, "node_modules/remark-parse": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -16420,8 +14114,6 @@ }, "node_modules/remark-stringify": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -16435,8 +14127,6 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -16445,8 +14135,6 @@ }, "node_modules/require-from-string": { "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, "license": "MIT", "engines": { @@ -16455,8 +14143,6 @@ }, "node_modules/requizzle": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", - "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", "dev": true, "license": "MIT", "dependencies": { @@ -16465,8 +14151,6 @@ }, "node_modules/resolve": { "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16486,8 +14170,6 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -16496,8 +14178,6 @@ }, "node_modules/restore-cursor": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "license": "MIT", "dependencies": { @@ -16513,8 +14193,6 @@ }, "node_modules/restore-cursor/node_modules/onetime": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16529,8 +14207,6 @@ }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -16542,8 +14218,6 @@ }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "license": "MIT", "engines": { "node": ">= 4" @@ -16551,8 +14225,6 @@ }, "node_modules/reusify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -16562,16 +14234,11 @@ }, "node_modules/rfdc": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true, "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -16586,8 +14253,6 @@ }, "node_modules/rimraf/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==", "dev": true, "license": "MIT", "dependencies": { @@ -16597,9 +14262,6 @@ }, "node_modules/rimraf/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, "license": "ISC", "dependencies": { @@ -16619,8 +14281,6 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -16632,10 +14292,9 @@ }, "node_modules/rollup": { "version": "4.53.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", - "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -16674,8 +14333,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -16698,8 +14355,6 @@ }, "node_modules/safe-array-concat": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -16718,14 +14373,10 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/safe-push-apply": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, "license": "MIT", "dependencies": { @@ -16741,8 +14392,6 @@ }, "node_modules/safe-regex-test": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -16758,22 +14407,17 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/sax": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", "license": "BlueOak-1.0.0" }, "node_modules/semantic-release": { "version": "25.0.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.2.tgz", - "integrity": "sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@semantic-release/commit-analyzer": "^13.0.1", "@semantic-release/error": "^4.0.0", @@ -16814,8 +14458,6 @@ }, "node_modules/semantic-release-monorepo": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/semantic-release-monorepo/-/semantic-release-monorepo-8.0.2.tgz", - "integrity": "sha512-TQC6KKIA0ATjii1OT0ZmQqcVzBJoaetJaJBC8FmKkg1IbDR4wBsuX6gl6UHDdijRDl8YyXqahj2hkJNyV6m9Jg==", "dev": true, "license": "MIT", "dependencies": { @@ -16839,8 +14481,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/crypto-random-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, "license": "MIT", "engines": { @@ -16849,8 +14489,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16864,15 +14502,11 @@ }, "node_modules/semantic-release-monorepo/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==", "dev": true, "license": "ISC" }, "node_modules/semantic-release-monorepo/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==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -16884,8 +14518,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/p-each-series": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true, "license": "MIT", "engines": { @@ -16897,8 +14529,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -16916,8 +14546,6 @@ }, "node_modules/semantic-release-monorepo/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==", "dev": true, "license": "MIT", "dependencies": { @@ -16932,8 +14560,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { @@ -16942,8 +14568,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/temp-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "dev": true, "license": "MIT", "engines": { @@ -16952,8 +14576,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/tempy": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", "dev": true, "license": "MIT", "dependencies": { @@ -16972,8 +14594,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -16985,8 +14605,6 @@ }, "node_modules/semantic-release-monorepo/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==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -16995,8 +14613,6 @@ }, "node_modules/semantic-release-monorepo/node_modules/unique-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "license": "MIT", "dependencies": { @@ -17008,8 +14624,6 @@ }, "node_modules/semantic-release-plugin-decorators": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semantic-release-plugin-decorators/-/semantic-release-plugin-decorators-4.0.0.tgz", - "integrity": "sha512-5eqaITbgGJu7AWCqY/ZwDh3TCS84Q9i470AImwP9vw3YcFRyR8sEb499Zbnqa076bv02yFUn88GtloQMXQsBrg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -17018,8 +14632,6 @@ }, "node_modules/semantic-release/node_modules/@semantic-release/error": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", "engines": { @@ -17028,8 +14640,6 @@ }, "node_modules/semantic-release/node_modules/aggregate-error": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "license": "MIT", "dependencies": { @@ -17045,8 +14655,6 @@ }, "node_modules/semantic-release/node_modules/clean-stack": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", - "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { @@ -17061,8 +14669,6 @@ }, "node_modules/semantic-release/node_modules/cliui": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, "license": "ISC", "dependencies": { @@ -17076,15 +14682,11 @@ }, "node_modules/semantic-release/node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/semantic-release/node_modules/escape-string-regexp": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", "engines": { @@ -17096,8 +14698,6 @@ }, "node_modules/semantic-release/node_modules/execa": { "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", "dev": true, "license": "MIT", "dependencies": { @@ -17123,8 +14723,6 @@ }, "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { @@ -17140,8 +14738,6 @@ }, "node_modules/semantic-release/node_modules/human-signals": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -17150,8 +14746,6 @@ }, "node_modules/semantic-release/node_modules/indent-string": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { @@ -17163,8 +14757,6 @@ }, "node_modules/semantic-release/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, "license": "MIT", "engines": { @@ -17176,8 +14768,6 @@ }, "node_modules/semantic-release/node_modules/is-stream": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", "engines": { @@ -17189,8 +14779,6 @@ }, "node_modules/semantic-release/node_modules/marked": { "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", "dev": true, "license": "MIT", "bin": { @@ -17202,8 +14790,6 @@ }, "node_modules/semantic-release/node_modules/npm-run-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, "license": "MIT", "dependencies": { @@ -17219,8 +14805,6 @@ }, "node_modules/semantic-release/node_modules/p-reduce": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", - "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, "license": "MIT", "engines": { @@ -17232,8 +14816,6 @@ }, "node_modules/semantic-release/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { @@ -17245,8 +14827,6 @@ }, "node_modules/semantic-release/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { @@ -17255,8 +14835,6 @@ }, "node_modules/semantic-release/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -17268,8 +14846,6 @@ }, "node_modules/semantic-release/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -17281,8 +14857,6 @@ }, "node_modules/semantic-release/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, "license": "MIT", "dependencies": { @@ -17299,8 +14873,6 @@ }, "node_modules/semantic-release/node_modules/strip-final-newline": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", "engines": { @@ -17312,8 +14884,6 @@ }, "node_modules/semantic-release/node_modules/yargs": { "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { @@ -17330,8 +14900,6 @@ }, "node_modules/semantic-release/node_modules/yargs-parser": { "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, "license": "ISC", "engines": { @@ -17340,8 +14908,6 @@ }, "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": "ISC", "bin": { @@ -17350,9 +14916,6 @@ }, "node_modules/semver-diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-5.0.0.tgz", - "integrity": "sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==", - "deprecated": "Deprecated as the semver package now supports this built-in.", "dev": true, "license": "MIT", "dependencies": { @@ -17367,8 +14930,6 @@ }, "node_modules/semver-diff/node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -17380,8 +14941,6 @@ }, "node_modules/semver-regex": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", "dev": true, "license": "MIT", "engines": { @@ -17393,8 +14952,6 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -17403,8 +14960,6 @@ }, "node_modules/set-function-length": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -17420,8 +14975,6 @@ }, "node_modules/set-function-name": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -17435,8 +14988,6 @@ }, "node_modules/set-proto": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, "license": "MIT", "dependencies": { @@ -17450,14 +15001,10 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -17468,8 +15015,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { "node": ">=8" @@ -17477,14 +15022,10 @@ }, "node_modules/shimmer": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", "license": "BSD-2-Clause" }, "node_modules/side-channel": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -17502,8 +15043,6 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -17518,8 +15057,6 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -17536,8 +15073,6 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -17555,15 +15090,11 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/signale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, "license": "MIT", "dependencies": { @@ -17577,8 +15108,6 @@ }, "node_modules/signale/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", "dependencies": { @@ -17590,8 +15119,6 @@ }, "node_modules/signale/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17605,8 +15132,6 @@ }, "node_modules/signale/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { @@ -17615,15 +15140,11 @@ }, "node_modules/signale/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, "node_modules/signale/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -17632,8 +15153,6 @@ }, "node_modules/signale/node_modules/figures": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "license": "MIT", "dependencies": { @@ -17645,8 +15164,6 @@ }, "node_modules/signale/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", "engines": { @@ -17655,8 +15172,6 @@ }, "node_modules/signale/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { @@ -17668,10 +15183,9 @@ }, "node_modules/sinon": { "version": "21.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", - "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "@sinonjs/commons": "^3.0.1", "@sinonjs/fake-timers": "^13.0.5", @@ -17686,8 +15200,6 @@ }, "node_modules/sinon-chai": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-4.0.1.tgz", - "integrity": "sha512-xMKEEV3cYHC1G+boyr7QEqi80gHznYsxVdC9CdjP5JnCWz/jPGuXQzJz3PtBcb0CcHAxar15Y5sjLBoAs6a0yA==", "dev": true, "license": "(BSD-2-Clause OR WTFPL)", "peerDependencies": { @@ -17697,8 +15209,6 @@ }, "node_modules/skin-tone": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", - "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "dev": true, "license": "MIT", "dependencies": { @@ -17710,15 +15220,11 @@ }, "node_modules/slack-block-builder": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/slack-block-builder/-/slack-block-builder-2.8.0.tgz", - "integrity": "sha512-iisM+j99iKRuQFVfdWo0FiszDAl3r8Snq704oZH6C0RbDqvoVQStiptt6Y7kc6RX/5hSAqTqjhgvZ/di8cvaIA==", "dev": true, "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -17727,8 +15233,6 @@ }, "node_modules/slice-ansi": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { @@ -17744,8 +15248,6 @@ }, "node_modules/slice-ansi/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==", "dev": true, "license": "MIT", "engines": { @@ -17757,15 +15259,11 @@ }, "node_modules/smob": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", - "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", "dev": true, "license": "MIT" }, "node_modules/sort-array": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-5.1.1.tgz", - "integrity": "sha512-EltS7AIsNlAFIM9cayrgKrM6XP94ATWwXP4LCL4IQbvbYhELSt2hZTrixg+AaQwnWFs/JGJgqU3rxMcNNWxGAA==", "dev": true, "license": "MIT", "dependencies": { @@ -17786,8 +15284,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -17796,8 +15292,6 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -17807,8 +15301,6 @@ }, "node_modules/space-separated-tokens": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "license": "MIT", "funding": { "type": "github", @@ -17817,15 +15309,11 @@ }, "node_modules/spawn-error-forwarder": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", "dev": true, "license": "MIT" }, "node_modules/spdx-correct": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -17835,15 +15323,11 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -17853,15 +15337,11 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, "node_modules/split2": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, "license": "ISC", "dependencies": { @@ -17870,20 +15350,14 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause" }, "node_modules/stack-chain": { "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==", "license": "MIT" }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -17895,8 +15369,6 @@ }, "node_modules/stream-combiner2": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, "license": "MIT", "dependencies": { @@ -17906,15 +15378,11 @@ }, "node_modules/strict-event-emitter": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", - "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", "dev": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -17922,8 +15390,6 @@ }, "node_modules/string-argv": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "license": "MIT", "engines": { @@ -17932,8 +15398,6 @@ }, "node_modules/string-width": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", - "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", "dev": true, "license": "MIT", "dependencies": { @@ -17950,8 +15414,6 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -17964,8 +15426,6 @@ }, "node_modules/string-width-cjs/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==", "license": "MIT", "engines": { "node": ">=8" @@ -17973,8 +15433,6 @@ }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -17982,8 +15440,6 @@ }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -17994,8 +15450,6 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { @@ -18016,8 +15470,6 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18035,8 +15487,6 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", "dependencies": { @@ -18053,8 +15503,6 @@ }, "node_modules/stringify-entities": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", @@ -18067,8 +15515,6 @@ }, "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": { "ansi-regex": "^6.0.1" @@ -18083,8 +15529,6 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -18095,8 +15539,6 @@ }, "node_modules/strip-ansi-cjs/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==", "license": "MIT", "engines": { "node": ">=8" @@ -18104,8 +15546,6 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", "engines": { @@ -18114,8 +15554,6 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { @@ -18124,8 +15562,6 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -18137,8 +15573,6 @@ }, "node_modules/strnum": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "funding": [ { "type": "github", @@ -18149,8 +15583,6 @@ }, "node_modules/super-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.1.0.tgz", - "integrity": "sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18167,8 +15599,6 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -18180,8 +15610,6 @@ }, "node_modules/supports-hyperlinks": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", - "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -18197,8 +15625,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -18210,8 +15636,6 @@ }, "node_modules/table-layout": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", - "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dev": true, "license": "MIT", "dependencies": { @@ -18224,8 +15648,6 @@ }, "node_modules/tagged-tag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", - "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", "dev": true, "license": "MIT", "engines": { @@ -18237,8 +15659,6 @@ }, "node_modules/temp-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, "license": "MIT", "engines": { @@ -18247,8 +15667,6 @@ }, "node_modules/tempy": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, "license": "MIT", "dependencies": { @@ -18266,8 +15684,6 @@ }, "node_modules/tempy/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "license": "MIT", "engines": { @@ -18279,8 +15695,6 @@ }, "node_modules/tempy/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -18292,8 +15706,6 @@ }, "node_modules/terser": { "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -18311,15 +15723,11 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT" }, "node_modules/test-exclude": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, "license": "ISC", "dependencies": { @@ -18333,8 +15741,6 @@ }, "node_modules/thenify": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "license": "MIT", "dependencies": { @@ -18343,8 +15749,6 @@ }, "node_modules/thenify-all": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "license": "MIT", "dependencies": { @@ -18356,8 +15760,6 @@ }, "node_modules/through2": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18367,8 +15769,6 @@ }, "node_modules/time-span": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", "dev": true, "license": "MIT", "dependencies": { @@ -18383,8 +15783,6 @@ }, "node_modules/tinyglobby": { "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18400,8 +15798,6 @@ }, "node_modules/tinyglobby/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": { @@ -18418,10 +15814,9 @@ }, "node_modules/tinyglobby/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", + "peer": true, "engines": { "node": ">=12" }, @@ -18431,8 +15826,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18442,10 +15835,12 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, "node_modules/traverse": { "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, "license": "MIT", "engines": { @@ -18457,8 +15852,6 @@ }, "node_modules/trigram-utils": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/trigram-utils/-/trigram-utils-2.0.1.tgz", - "integrity": "sha512-nfWIXHEaB+HdyslAfMxSqWKDdmqY9I32jS7GnqpdWQnLH89r6A5sdk3fDVYqGAZ0CrT8ovAFSAo6HRiWcWNIGQ==", "license": "MIT", "dependencies": { "collapse-white-space": "^2.0.0", @@ -18471,8 +15864,6 @@ }, "node_modules/trim-lines": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", "license": "MIT", "funding": { "type": "github", @@ -18481,8 +15872,6 @@ }, "node_modules/trim-trailing-lines": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", - "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", "license": "MIT", "funding": { "type": "github", @@ -18491,8 +15880,6 @@ }, "node_modules/trough": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", "license": "MIT", "funding": { "type": "github", @@ -18501,8 +15888,6 @@ }, "node_modules/ts-api-utils": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -18514,8 +15899,6 @@ }, "node_modules/tsconfig-paths": { "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", "dependencies": { @@ -18527,8 +15910,6 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "dependencies": { @@ -18540,14 +15921,10 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/tunnel": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true, "license": "MIT", "engines": { @@ -18556,8 +15933,6 @@ }, "node_modules/turndown": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.2.tgz", - "integrity": "sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ==", "license": "MIT", "dependencies": { "@mixmark-io/domino": "^2.2.0" @@ -18565,8 +15940,6 @@ }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -18578,8 +15951,6 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { @@ -18588,8 +15959,6 @@ }, "node_modules/type-fest": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.2.0.tgz", - "integrity": "sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==", "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { @@ -18604,8 +15973,6 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { @@ -18619,8 +15986,6 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { @@ -18639,8 +16004,6 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18661,8 +16024,6 @@ }, "node_modules/typed-array-length": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { @@ -18682,10 +16043,9 @@ }, "node_modules/typescript": { "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18696,8 +16056,6 @@ }, "node_modules/typical": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", - "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", "dev": true, "license": "MIT", "engines": { @@ -18706,15 +16064,11 @@ }, "node_modules/uc.micro": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true, "license": "MIT" }, "node_modules/uglify-js": { "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -18727,8 +16081,6 @@ }, "node_modules/unbox-primitive": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { @@ -18746,14 +16098,10 @@ }, "node_modules/underscore": { "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "license": "MIT" }, "node_modules/undici": { "version": "5.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", - "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "dev": true, "license": "MIT", "dependencies": { @@ -18765,14 +16113,10 @@ }, "node_modules/undici-types": { "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", - "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "dev": true, "license": "MIT", "engines": { @@ -18781,8 +16125,6 @@ }, "node_modules/unicorn-magic": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { @@ -18794,9 +16136,8 @@ }, "node_modules/unified": { "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", + "peer": true, "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -18813,8 +16154,6 @@ }, "node_modules/unified/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==", "license": "MIT", "engines": { "node": ">=12" @@ -18825,8 +16164,6 @@ }, "node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18841,8 +16178,6 @@ }, "node_modules/unist-util-find": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find/-/unist-util-find-3.0.0.tgz", - "integrity": "sha512-T7ZqS7immLjYyC4FCp2hDo3ksZ1v+qcbb+e5+iWxc2jONgHOLXPCpms1L8VV4hVxCXgWTxmBHDztuEZFVwC+Gg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18856,8 +16191,6 @@ }, "node_modules/unist-util-find-after": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18870,8 +16203,6 @@ }, "node_modules/unist-util-find-all-after": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-5.0.0.tgz", - "integrity": "sha512-nGmOYvTSdGcI4RvrUNfe0mOsqqbbJOtqCQsppsY9KZjmv3nwM3YRgNBwFPdZ8Y+iv9Z/2PDjR9u6u+uK62XTTg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18884,8 +16215,6 @@ }, "node_modules/unist-util-find-all-before": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-all-before/-/unist-util-find-all-before-5.0.0.tgz", - "integrity": "sha512-zir6a7GsXfdn4YAWR4F3hLNKZjTjLBJurdyquysvmX38xbftS1+qwvEhutxxHLq0Pp1tW5V1TDiuj+qluuOnKw==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18898,8 +16227,6 @@ }, "node_modules/unist-util-find-all-between": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-find-all-between/-/unist-util-find-all-between-2.1.0.tgz", - "integrity": "sha512-OCCUtDD8UHKeODw3TPXyFDxPCbpgBzbGTTaDpR68nvxkwiVcawBqMVrokfBMvUi7ij2F5q7S4s4Jq5dvkcBt+w==", "license": "MIT", "dependencies": { "unist-util-find": "^1.0.1", @@ -18911,14 +16238,10 @@ }, "node_modules/unist-util-find-all-between/node_modules/@types/unist": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "license": "MIT" }, "node_modules/unist-util-find-all-between/node_modules/unist-util-find": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-util-find/-/unist-util-find-1.0.4.tgz", - "integrity": "sha512-T5vI7IkhroDj7KxAIy057VbIeGnCXfso4d4GoUsjbAmDLQUkzAeszlBtzx1+KHgdsYYBygaqUBvrbYCfePedZw==", "license": "MIT", "dependencies": { "lodash.iteratee": "^4.7.0", @@ -18927,8 +16250,6 @@ }, "node_modules/unist-util-find-all-between/node_modules/unist-util-is": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "license": "MIT", "funding": { "type": "opencollective", @@ -18937,8 +16258,6 @@ }, "node_modules/unist-util-find-all-between/node_modules/unist-util-visit": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -18952,8 +16271,6 @@ }, "node_modules/unist-util-find-all-between/node_modules/unist-util-visit-parents": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -18966,8 +16283,6 @@ }, "node_modules/unist-util-is": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", - "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -18979,8 +16294,6 @@ }, "node_modules/unist-util-position": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -18992,8 +16305,6 @@ }, "node_modules/unist-util-select": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-5.1.0.tgz", - "integrity": "sha512-4A5mfokSHG/rNQ4g7gSbdEs+H586xyd24sdJqF1IWamqrLHvYb+DH48fzxowyOhOfK7YSqX+XlCojAyuuyyT2A==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19009,8 +16320,6 @@ }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -19022,8 +16331,6 @@ }, "node_modules/unist-util-visit": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19037,8 +16344,6 @@ }, "node_modules/unist-util-visit-parents": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", - "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19051,15 +16356,11 @@ }, "node_modules/universal-user-agent": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", - "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", "dev": true, "license": "ISC" }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -19068,8 +16369,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "dev": true, "funding": [ { @@ -19099,8 +16398,6 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -19109,14 +16406,10 @@ }, "node_modules/urijs": { "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "license": "MIT" }, "node_modules/url-join": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", - "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true, "license": "MIT", "engines": { @@ -19125,20 +16418,14 @@ }, "node_modules/url-template": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", "license": "BSD" }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -19146,8 +16433,6 @@ }, "node_modules/v8-to-istanbul": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { @@ -19161,8 +16446,6 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -19172,8 +16455,6 @@ }, "node_modules/validator": { "version": "13.15.23", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.23.tgz", - "integrity": "sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -19181,8 +16462,6 @@ }, "node_modules/vfile": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19195,8 +16474,6 @@ }, "node_modules/vfile-location": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19209,8 +16486,6 @@ }, "node_modules/vfile-message": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", - "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19223,8 +16498,6 @@ }, "node_modules/walk-back": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", - "integrity": "sha512-e/FRLDVdZQWFrAzU6Hdvpm7D7m2ina833gIKLptQykRK49mmCYHLHq7UqjPDbxbKLZkTkW1rFqbengdE3sLfdw==", "dev": true, "license": "MIT", "engines": { @@ -19233,8 +16506,6 @@ }, "node_modules/web-namespaces": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", "license": "MIT", "funding": { "type": "github", @@ -19243,8 +16514,6 @@ }, "node_modules/web-streams-polyfill": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "license": "MIT", "engines": { "node": ">= 8" @@ -19252,15 +16521,15 @@ }, "node_modules/web-worker": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", - "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==", "dev": true, "license": "Apache-2.0" }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" + }, "node_modules/whatwg-encoding": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -19271,17 +16540,21 @@ }, "node_modules/whatwg-mimetype": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "license": "MIT", "engines": { "node": ">=18" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "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", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -19295,8 +16568,6 @@ }, "node_modules/which-boxed-primitive": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -19314,8 +16585,6 @@ }, "node_modules/which-builtin-type": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -19342,8 +16611,6 @@ }, "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -19360,8 +16627,6 @@ }, "node_modules/which-typed-array": { "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -19381,8 +16646,6 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -19391,15 +16654,11 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, "license": "MIT" }, "node_modules/wordwrapjs": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz", - "integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==", "dev": true, "license": "MIT", "engines": { @@ -19408,20 +16667,14 @@ }, "node_modules/workerpool": { "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true, "license": "Apache-2.0" }, "node_modules/world-countries": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/world-countries/-/world-countries-5.1.0.tgz", - "integrity": "sha512-CXR6EBvTbArDlDDIWU3gfKb7Qk0ck2WNZ234b/A0vuecPzIfzzxH+O6Ejnvg1sT8XuiZjVlzOH0h08ZtaO7g0w==" + "version": "5.1.0" }, "node_modules/wrap-ansi": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { @@ -19439,8 +16692,6 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -19456,8 +16707,6 @@ }, "node_modules/wrap-ansi-cjs/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==", "license": "MIT", "engines": { "node": ">=8" @@ -19465,8 +16714,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -19474,8 +16721,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -19488,8 +16733,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -19500,8 +16743,6 @@ }, "node_modules/wrap-ansi/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==", "dev": true, "license": "MIT", "engines": { @@ -19513,15 +16754,11 @@ }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/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, "license": "MIT", "dependencies": { @@ -19538,21 +16775,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/xml": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "license": "MIT" }, "node_modules/xml-js": { "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", "license": "MIT", "dependencies": { "sax": "^1.2.4" @@ -19563,8 +16794,6 @@ }, "node_modules/xmlbuilder": { "version": "10.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", - "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", "license": "MIT", "engines": { "node": ">=4.0" @@ -19572,15 +16801,11 @@ }, "node_modules/xmlcreate": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "dev": true, "license": "Apache-2.0" }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "license": "MIT", "engines": { "node": ">=0.4" @@ -19588,8 +16813,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -19598,15 +16821,11 @@ }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yaml": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "bin": { @@ -19618,8 +16837,6 @@ }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -19637,8 +16854,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -19647,8 +16862,6 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "license": "MIT", "dependencies": { @@ -19663,8 +16876,6 @@ }, "node_modules/yargs/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -19673,8 +16884,6 @@ }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -19683,8 +16892,6 @@ }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -19698,8 +16905,6 @@ }, "node_modules/yargs/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -19711,8 +16916,6 @@ }, "node_modules/yauzl": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz", - "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==", "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -19724,8 +16927,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -19737,8 +16938,6 @@ }, "node_modules/yoctocolors": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", "dev": true, "license": "MIT", "engines": { @@ -19750,8 +16949,6 @@ }, "node_modules/zod": { "version": "4.1.13", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", - "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -19759,8 +16956,6 @@ }, "node_modules/zwitch": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", "license": "MIT", "funding": { "type": "github", @@ -19791,8 +16986,6 @@ }, "packages/spacecat-shared-ahrefs-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -19835,8 +17028,6 @@ }, "packages/spacecat-shared-athena-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.82.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.82.1.tgz", - "integrity": "sha512-gky9atfMt2u0Vqg5V/zxMMBnw/ghHp6lqWBNRYm/EGyWrdoBoPFmVkLScoAUsfQVm3J85n34qAhAyFJPNBJYvQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -19885,8 +17076,6 @@ }, "packages/spacecat-shared-brand-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.5", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.5.tgz", - "integrity": "sha512-wwkCpZkzyFZuP340RC4ywfEOpj59nHA+XonaUSE/ybqe0yiam6uz8mC2KEnhFxD+pToUbR2e/0j+XCo5vmyJ6A==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -19905,8 +17094,6 @@ }, "packages/spacecat-shared-brand-client/node_modules/@adobe/spacecat-shared-ims-client": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-ims-client/-/spacecat-shared-ims-client-1.11.6.tgz", - "integrity": "sha512-tmCpHVDUHyTjHowm+c6Mrsclyoa86hXDkUqClvnTSrRHWINJHZl2wyEQcsmpugKjTyzu8u94lEDlKs50d4AVZg==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -19923,8 +17110,6 @@ }, "packages/spacecat-shared-brand-client/node_modules/@adobe/spacecat-shared-ims-client/node_modules/@adobe/helix-universal": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@adobe/helix-universal/-/helix-universal-5.3.0.tgz", - "integrity": "sha512-1eKFpKZMNamJHhq6eFm9gMLhgQunsf34mEFbaqg9ChEXZYk18SYgUu5GeNTvzk5Rzo0h9AuSwLtnI2Up2OSiSA==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -19933,8 +17118,6 @@ }, "packages/spacecat-shared-brand-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -19984,8 +17167,6 @@ }, "packages/spacecat-shared-content-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.7", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.7.tgz", - "integrity": "sha512-bjxeNC4ElK1paKhGkIgnl6v3OPZtw021bZ9cD6X6QfdiM8OYPAGa6T5uvnTuhcy9yqJlwZuF8F7HMnBWu8JOXw==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20004,8 +17185,6 @@ }, "packages/spacecat-shared-content-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20032,19 +17211,16 @@ "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", - "@aws-sdk/client-dynamodb": "3.940.0", "@aws-sdk/client-s3": "^3.940.0", - "@aws-sdk/lib-dynamodb": "3.940.0", + "@supabase/postgrest-js": "^1.21.4", "@types/joi": "17.2.3", "aws-xray-sdk": "3.12.0", - "electrodb": "3.5.0", "joi": "18.0.2", "pluralize": "8.0.0" }, "devDependencies": { "chai": "6.2.1", "chai-as-promised": "8.0.2", - "dynamo-db-local": "9.6.0", "nock": "14.0.10", "sinon": "21.0.0", "sinon-chai": "4.0.1" @@ -20056,8 +17232,6 @@ }, "packages/spacecat-shared-data-access/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20124,8 +17298,6 @@ }, "packages/spacecat-shared-google-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.5", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.5.tgz", - "integrity": "sha512-wwkCpZkzyFZuP340RC4ywfEOpj59nHA+XonaUSE/ybqe0yiam6uz8mC2KEnhFxD+pToUbR2e/0j+XCo5vmyJ6A==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20144,8 +17316,6 @@ }, "packages/spacecat-shared-google-client/node_modules/@adobe/spacecat-shared-http-utils": { "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-http-utils/-/spacecat-shared-http-utils-1.19.3.tgz", - "integrity": "sha512-4ZD+dSxXXs7WsDybX120FNNTOfjntw+FvkrzggU5BwkkOXJWxINM0i6V30RjecfZRyPz8ndtFaRSmLQTo60Kyw==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20160,8 +17330,6 @@ }, "packages/spacecat-shared-google-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20207,8 +17375,6 @@ }, "packages/spacecat-shared-gpt-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.5", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.5.tgz", - "integrity": "sha512-wwkCpZkzyFZuP340RC4ywfEOpj59nHA+XonaUSE/ybqe0yiam6uz8mC2KEnhFxD+pToUbR2e/0j+XCo5vmyJ6A==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20227,8 +17393,6 @@ }, "packages/spacecat-shared-gpt-client/node_modules/@adobe/spacecat-shared-ims-client": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-ims-client/-/spacecat-shared-ims-client-1.11.6.tgz", - "integrity": "sha512-tmCpHVDUHyTjHowm+c6Mrsclyoa86hXDkUqClvnTSrRHWINJHZl2wyEQcsmpugKjTyzu8u94lEDlKs50d4AVZg==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20245,8 +17409,6 @@ }, "packages/spacecat-shared-gpt-client/node_modules/@adobe/spacecat-shared-ims-client/node_modules/@adobe/helix-universal": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@adobe/helix-universal/-/helix-universal-5.3.0.tgz", - "integrity": "sha512-1eKFpKZMNamJHhq6eFm9gMLhgQunsf34mEFbaqg9ChEXZYk18SYgUu5GeNTvzk5Rzo0h9AuSwLtnI2Up2OSiSA==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20255,8 +17417,6 @@ }, "packages/spacecat-shared-gpt-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20302,8 +17462,6 @@ }, "packages/spacecat-shared-html-analyzer/node_modules/marked": { "version": "16.4.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", - "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", "license": "MIT", "bin": { "marked": "bin/marked.js" @@ -20335,8 +17493,6 @@ }, "packages/spacecat-shared-http-utils/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.7", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.7.tgz", - "integrity": "sha512-bjxeNC4ElK1paKhGkIgnl6v3OPZtw021bZ9cD6X6QfdiM8OYPAGa6T5uvnTuhcy9yqJlwZuF8F7HMnBWu8JOXw==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20355,8 +17511,6 @@ }, "packages/spacecat-shared-http-utils/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20404,8 +17558,6 @@ }, "packages/spacecat-shared-ims-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.7", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.7.tgz", - "integrity": "sha512-bjxeNC4ElK1paKhGkIgnl6v3OPZtw021bZ9cD6X6QfdiM8OYPAGa6T5uvnTuhcy9yqJlwZuF8F7HMnBWu8JOXw==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20424,8 +17576,6 @@ }, "packages/spacecat-shared-ims-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20471,8 +17621,6 @@ }, "packages/spacecat-shared-launchdarkly-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20521,8 +17669,6 @@ }, "packages/spacecat-shared-rum-api-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20567,8 +17713,6 @@ }, "packages/spacecat-shared-scrape-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.101.0", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.101.0.tgz", - "integrity": "sha512-y93xMOt6Ilt9eDsZ8KY1C/N9E0lbfCrD8WNiRvvsbB5Tc7rTH9oupYs7D4E98FKZd082hRPuRqHB5w3dRR6zQQ==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20588,8 +17732,6 @@ }, "packages/spacecat-shared-scrape-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20635,8 +17777,6 @@ }, "packages/spacecat-shared-slack-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20682,8 +17822,6 @@ }, "packages/spacecat-shared-splunk-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20729,8 +17867,6 @@ }, "packages/spacecat-shared-tier-client/node_modules/@adobe/spacecat-shared-data-access": { "version": "2.88.7", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-data-access/-/spacecat-shared-data-access-2.88.7.tgz", - "integrity": "sha512-bjxeNC4ElK1paKhGkIgnl6v3OPZtw021bZ9cD6X6QfdiM8OYPAGa6T5uvnTuhcy9yqJlwZuF8F7HMnBWu8JOXw==", "license": "Apache-2.0", "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", @@ -20749,8 +17885,6 @@ }, "packages/spacecat-shared-tier-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20801,8 +17935,6 @@ }, "packages/spacecat-shared-tokowaka-client/node_modules/@adobe/spacecat-shared-utils": { "version": "1.81.1", - "resolved": "https://registry.npmjs.org/@adobe/spacecat-shared-utils/-/spacecat-shared-utils-1.81.1.tgz", - "integrity": "sha512-GSQuLJsPsT6SDJNydhozgRNHl5qat4f+W7/IwyAvNfAqgPrF6Eb7+h4ZUz8Nb01Rm13Z18f6NY/u/wW12sdxtQ==", "license": "Apache-2.0", "dependencies": { "@adobe/fetch": "4.2.3", @@ -20825,8 +17957,6 @@ }, "packages/spacecat-shared-tokowaka-client/node_modules/uuid": { "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" diff --git a/packages/spacecat-shared-data-access/README.md b/packages/spacecat-shared-data-access/README.md index 93ad6adfb..a1185f135 100644 --- a/packages/spacecat-shared-data-access/README.md +++ b/packages/spacecat-shared-data-access/README.md @@ -1,6 +1,11 @@ -# SpaceCat Shared Data Access +# Spacecat Shared Data Access -This Node.js module, `spacecat-shared-data-access`, is a data access layer for managing sites and their audits, leveraging Amazon DynamoDB. +`@adobe/spacecat-shared-data-access` is the shared data-access layer used by Spacecat services. + +This package is **v3 Postgres-first**: +- Primary datastore: **Postgres via PostgREST** (`@supabase/postgrest-js`) +- Optional secondary datastore: **S3** (for `Configuration`) +- No ElectroDB/DynamoDB runtime dependency in v3 behavior ## Installation @@ -8,293 +13,303 @@ This Node.js module, `spacecat-shared-data-access`, is a data access layer for m npm install @adobe/spacecat-shared-data-access ``` +## What You Get + +The package provides: +- `createDataAccess(config, log?, client?)` +- `dataAccessWrapper(fn)` (default export) for Helix/Lambda style handlers +- Entity collections/models with stable external API shape for services + +## Quick Start + +```js +import { createDataAccess } from '@adobe/spacecat-shared-data-access'; + +const dataAccess = createDataAccess({ + postgrestUrl: process.env.POSTGREST_URL, + postgrestSchema: process.env.POSTGREST_SCHEMA || 'public', + postgrestApiKey: process.env.POSTGREST_API_KEY, + // Only needed if you use Configuration entity: + s3Bucket: process.env.S3_CONFIG_BUCKET, + region: process.env.AWS_REGION, +}, console); + +const site = await dataAccess.Site.findById('0983c6da-0dee-45cc-b897-3f1fed6b460b'); +console.log(site?.getBaseURL()); +``` + +## Configuration + +### `createDataAccess` config + +- `postgrestUrl` (required): Base URL of PostgREST server +- `postgrestSchema` (optional): Postgres schema exposed by PostgREST, default `public` +- `postgrestApiKey` (optional): Added as `apikey` and `Authorization: Bearer ...` +- `postgrestHeaders` (optional): Extra headers for PostgREST client +- `s3Bucket` (optional): Required only for `Configuration` entity +- `region` (optional): AWS region for S3 client + +### Custom PostgREST client + +You can inject an already-constructed PostgREST client as third argument: + +```js +import { PostgrestClient } from '@supabase/postgrest-js'; +import { createDataAccess } from '@adobe/spacecat-shared-data-access'; + +const client = new PostgrestClient(process.env.POSTGREST_URL, { schema: 'public' }); +const dataAccess = createDataAccess({ postgrestUrl: process.env.POSTGREST_URL }, console, client); +``` + +## Wrapper Usage + +Default export is a wrapper that attaches `context.dataAccess`. + +```js +import wrap from '@adobe/helix-shared-wrap'; +import dataAccessWrapper from '@adobe/spacecat-shared-data-access'; + +async function run(request, context) { + const { dataAccess } = context; + const site = await dataAccess.Site.findById(request.params.siteId); + return { + statusCode: site ? 200 : 404, + body: site ? site.toJSON() : { error: 'not found' }, + }; +} + +export const main = wrap(run) + .with(dataAccessWrapper); +``` + +The wrapper reads from `context.env`: +- `POSTGREST_URL` (default fallback: `http://localhost:3000`) +- `POSTGREST_SCHEMA` +- `POSTGREST_API_KEY` +- `S3_CONFIG_BUCKET` +- `AWS_REGION` + +## Field Mapping Behavior + +Public model API remains camelCase while Postgres/PostgREST tables are snake_case. + +Examples: +- `site.siteId` <-> `sites.id` +- `site.baseURL` <-> `sites.base_url` + +The mapping is handled in the base PostgREST utilities and applied on both read and write paths. + ## Entities -### Sites -- **id** (String): Unique identifier for a site. -- **baseURL** (String): Base URL of the site. -- **imsOrgId** (String): Organization ID associated with the site. -- **createdAt** (String): Timestamp of creation. -- **updatedAt** (String): Timestamp of the last update. -- **GSI1PK** (String): Partition key for the Global Secondary Index. - -### SiteCandidates -- **baseURL** (String): Base URL of the site candidate. -- **status** (String): Status of the site candidate (PENDING, IGNORED, APPROVED, ERROR). -- **createdAt** (String): Timestamp of creation. -- **updatedAt** (String): Timestamp of the last update. -- **updatedBy** (String): Slack id of the last person updated the site candidate. - -### Audits -- **siteId** (String): Identifier of the site being audited. -- **SK** (String): Sort key, typically a composite of audit type and timestamp. -- **auditedAt** (String): Timestamp of the audit. -- **auditResult** (Map): Results of the audit. -- **auditType** (String): Type of the audit. -- **expiresAt** (Number): Expiry timestamp of the audit. -- **fullAuditRef** (String): Reference to the full audit details. - -### SiteTopPages -- **siteId** (String): Identifier of the site. -- **url** (String): URL of the top page. -- **traffic** (Number): Traffic of the top page. -- **source** (String): Source of the data. -- **geo** (String): Geo of the top page. -- **importedAt** (String): Timestamp of the import. - -### Organization -- **id** (String): Unique identifier for an organization. -- **createdAt** (String): Timestamp of creation. -- **updatedAt** (String): Timestamp of the last update. - -### OrganizationIdentityProvider -- **id** (String): Unique identifier for the identity provider. -- **metadata** (Map): Metadata for the identity provider. -- **provider** (String): Type of identity provider. (IMS, MICROSOFT, GOOGLE) -- **externalId** (String): External identifier from the provider. -- **createdAt** (String): Timestamp of creation. - -### TrialUser -- **id** (String): Unique identifier for the trial user. -- **externalUserId** (String): External user identifier. -- **status** (String): Status of the trial user. (REGISTERED, VERIFIED, BLOCKED, DELETED) -- **provider** (String): Type of identity provider. (IMS, MICROSOFT, GOOGLE) -- **lastSeenAt** (String): Timestamp of last activity. -- **createdAt** (String): Timestamp of creation. -- **metadata** (Map): Metadata for the trial user. -- **updatedAt** (String): Timestamp of the last update. - -### TrialUserActivity -- **id** (String): Unique identifier for the trial user activity. -- **type** (String): Type of activity performed. (SIGN_UP, SIGN_IN, CREATE_SITE, RUN_AUDIT, PROMPT_RUN, DOWNLOAD) -- **details** (Map): Details of the activity. -- **createdAt** (String): Timestamp of creation. -- **productCode** (String): Product code associated with the activity. (LLMO, ASO, etc.) - -### Entitlement -- **id** (String): Unique identifier for the entitlement. -- **productCode** (String): Product code for the entitlement. (LLMO, ASO, etc.) -- **tier** (String): Tier level of the entitlement. (FREE_TRIAL, PAID) -- **status** (String): Status of the entitlement. (ACTIVE, SUSPENDED, ENDED) -- **createdAt** (String): Timestamp of creation. -- **updatedAt** (String): Timestamp of the last update. -- **quotas** (Map): Quota information for the entitlement. - -### SiteEnrollment -- **id** (String): Unique identifier for the site enrollment. -- **status** (String): Status of the enrollment. (ACTIVE, SUSPENDED, ENDED) -- **createdAt** (String): Timestamp of creation. - -### FixEntity -- **fixEntityId** (String): Unique identifier for the fix entity. -- **opportunityId** (String): ID of the associated opportunity. -- **createdAt** (String): Timestamp of creation. -- **updatedAt** (String): Timestamp of the last update. -- **type** (String): Type of the fix entity (from Suggestion.TYPES). -- **status** (String): Status of the fix entity (PENDING, DEPLOYED, PUBLISHED, FAILED, ROLLED_BACK). -- **executedBy** (String): Who executed the fix. -- **executedAt** (String): When the fix was executed. -- **publishedAt** (String): When the fix was published. -- **changeDetails** (Object): Details of the changes made. - -### Suggestion -- **suggestionId** (String): Unique identifier for the suggestion. -- **opportunityId** (String): ID of the associated opportunity. -- **updatedAt** (String): Timestamp of the last update. -- **createdAt** (String): Timestamp of creation. -- **status** (String): Status of the suggestion (NEW, APPROVED, IN_PROGRESS, SKIPPED, FIXED, ERROR, OUTDATED, PENDING_VALIDATION, REJECTED). -- **type** (String): Type of the suggestion (CODE_CHANGE, CONTENT_UPDATE, REDIRECT_UPDATE, METADATA_UPDATE, AI_INSIGHTS, CONFIG_UPDATE). -- **rank** (Number): Rank/priority of the suggestion. -- **data** (Object): Data payload for the suggestion. -- **kpiDeltas** (Object): KPI delta information (optional). - -### FixEntitySuggestion -- **suggestionId** (String): ID of the associated suggestion (primary partition key). -- **fixEntityId** (String): ID of the associated fix entity (primary sort key). -- **opportunityId** (String): ID of the associated opportunity. -- **fixEntityCreatedAt** (String): Creation timestamp of the fix entity. -- **fixEntityCreatedDate** (String): Date portion of fixEntityCreatedAt (auto-generated). -- **createdAt** (String): Timestamp of creation. -- **updatedAt** (String): Timestamp of the last update. - -## DynamoDB Data Model - -The module is designed to work with the following DynamoDB tables: - -1. **Sites Table**: Manages site records. -2. **Audits Table**: Stores audit information for each site. -3. **Latest Audits Table**: Holds only the latest audit for each site for quick access. -4. **Site Candidates Table**: Manages site candidates. -5. **Site Top Pages Table**: Stores top pages for each site. - -Each table is designed with scalability and efficient querying in mind, utilizing both key and non-key attributes effectively. - -For a detailed schema, refer to `docs/schema.json`. This schema is importable to Amazon NoSQL Workbench and used by the integration tests. - -## Integration Testing - -The module includes comprehensive integration tests embedding a local DynamoDB server with in-memory storage for testing: +Current exported entities include: +- `ApiKey` +- `AsyncJob` +- `Audit` +- `AuditUrl` +- `Configuration` +- `Entitlement` +- `Experiment` +- `FixEntity` +- `FixEntitySuggestion` +- `ImportJob` +- `ImportUrl` +- `KeyEvent` +- `LatestAudit` +- `Opportunity` +- `Organization` +- `PageCitability` +- `PageIntent` +- `Project` +- `Report` +- `ScrapeJob` +- `ScrapeUrl` +- `SentimentGuideline` +- `SentimentTopic` +- `Site` +- `SiteCandidate` +- `SiteEnrollment` +- `SiteTopForm` +- `SiteTopPage` +- `Suggestion` +- `TrialUser` +- `TrialUserActivity` + +## V3 Behavior Notes + +- `Configuration` remains S3-backed in v3. +- `KeyEvent` is deprecated in v3 and intentionally throws on access/mutation methods. +- `LatestAudit` is virtual in v3 and derived from `Audit` queries (no dedicated table required). + +## Migrating from V2 + +If you are upgrading from DynamoDB/ElectroDB-based v2: + +### What stays the same + +- You still use `createDataAccess(...)`. +- You still access collections through `dataAccess.` (for example `dataAccess.Site`). +- Model/collection APIs are intended to stay stable for service callers. + +### What changes + +- Backing store is now Postgres via PostgREST, not DynamoDB/ElectroDB. +- You must provide `postgrestUrl` (or `POSTGREST_URL` via wrapper env). +- `Configuration` remains S3-backed (requires `s3Bucket`/`S3_CONFIG_BUCKET` when used). +- `KeyEvent` is deprecated in v3 and now throws. +- `LatestAudit` is no longer a dedicated table and is computed from `Audit` queries. + +### Required environment/config updates + +- Replace old Dynamo-specific configuration with: + - `POSTGREST_URL` + - optional `POSTGREST_SCHEMA` + - optional `POSTGREST_API_KEY` +- Keep S3 config envs only if using `Configuration`: + - `S3_CONFIG_BUCKET` + - `AWS_REGION` + +## Development + +## Local Development + +### First-time setup + +From the monorepo root: ```bash -npm run test:it +npm install ``` -These tests create the schema, generate sample data, and test the data access patterns against the local DynamoDB instance. +Optional: verify package tooling from this workspace: -## Data Access API +```bash +cd packages/spacecat-shared-data-access +node -v +npm -v +``` -The module provides the following DAOs: +### Day-to-day workflow -### Site Functions -- `getSites` -- `getSitesToAudit` -- `getSitesWithLatestAudit` -- `getSiteByBaseURL` -- `getSiteByBaseURLWithAuditInfo` -- `getSiteByBaseURLWithAudits` -- `getSiteByBaseURLWithLatestAudit` -- `addSite` -- `updateSite` -- `removeSite` -- `findByPreviewURL` -- `findByExternalOwnerIdAndExternalSiteId` +1. Create/switch to a feature branch. +2. Make code changes in `src/` and tests in `test/unit` and `test/it`. +3. Run unit tests while iterating. +4. Run integration tests before opening/merging a PR. +5. Run lint and fix issues. -### Site Candidate Functions -- `getSiteCandidateByBaseURL` -- `upsertSiteCandidate` -- `siteCandidateExists` -- `updateSiteCandidate` +### Common commands (from `packages/spacecat-shared-data-access`) -### Audit Functions -- `getAuditsForSite` -- `getAuditForSite` -- `getLatestAudits` -- `getLatestAuditForSite` -- `addAudit` +### Run unit tests -### Site Top Pages Functions -- `getTopPagesForSite` -- `addSiteTopPage` +```bash +npm test +``` -### FixEntity Functions -- `getSuggestionsByFixEntityId` - Gets all suggestions associated with a specific FixEntity -- `setSuggestionsForFixEntity` - Sets suggestions for a FixEntity by managing junction table relationships +### Run unit tests with debugger -### Suggestion Functions -- `bulkUpdateStatus` - Updates the status of multiple suggestions in bulk -- `getFixEntitiesBySuggestionId` - Gets all FixEntities associated with a specific Suggestion +```bash +npm run test:debug +``` -### FixEntitySuggestion Functions -- `allBySuggestionId` - Gets all junction records associated with a specific Suggestion -- `allByFixEntityId` - Gets all junction records associated with a specific FixEntity +### Run integration tests -## Integrating Data Access in AWS Lambda Functions +```bash +npm run test:it +``` -Our `spacecat-shared-data-access` module includes a wrapper that can be easily integrated into AWS Lambda functions using `@adobe/helix-shared-wrap`. -This integration allows your Lambda functions to access and manipulate data. +### Run lint -### Steps for Integration +```bash +npm run lint +``` -1. **Import the Data Access Wrapper** +### Auto-fix lint issues - Along with other wrappers and utilities, import the `dataAccessWrapper`. +```bash +npm run lint:fix +``` - ```javascript - import dataAccessWrapper from '@adobe/spacecat-shared-data-access'; - ``` +### Clean local install artifacts -2. **Provide Required Environment Variables** +```bash +npm run clean +``` - The `dataAccessWrapper` requires the `DYNAMO_TABLE_NAME_DATA` environment variable to be set via AWS - secret assigned to your Lambda function. +The integration suite under `test/it` is PostgREST-based and runs via Docker. - ```javascript - const { DYNAMO_TABLE_NAME_DATA } = context.env; - ``` +## Integration Tests -3. **Modify Your Lambda Wrapper Script** +Integration tests run a local Postgres + PostgREST stack via Docker Compose and execute +the mocha suite under `test/it`. - Include `dataAccessWrapper` in the chain of wrappers when defining your Lambda handler. +### Prerequisites - ```javascript - export const main = wrap(run) - .with(sqsEventAdapter) - .with(dataAccessWrapper) // Add this line - .with(sqs) - .with(secrets) - .with(helixStatus); - ``` +- Docker Desktop (or equivalent Docker daemon) +- AWS CLI configured with credentials that can access the Spacecat Development AWS account + ECR repository (only needed when pulling the default private ECR image) -4. **Access Data in Your Lambda Function** +### Default image used by IT harness - Use the `dataAccess` object from the context to interact with your data layer. +- Repository: `682033462621.dkr.ecr.us-east-1.amazonaws.com/mysticat-data-service` +- Tag: `v1.11.0` (override via env var) - ```javascript - async function run(message, context) { - const { dataAccess } = context; - - // Example: Retrieve all sites - const sites = await dataAccess.Site.getSites(); - // ... more logic ... - } - ``` +### Authenticate Docker to ECR -### Example +The default image is in a private ECR repo in: +- **SpaceCat Development (AWS3338)** -Here's a complete example of a Lambda function utilizing the data access wrapper: +If you are setting this up for the first time: +1. Get AWS credentials for **SpaceCat Development (AWS3338)** from `klam.corp.adobe.com`. +2. Add them to `~/.aws/credentials` under a profile name you choose. +3. Use that profile in the ECR login command. -```javascript -import wrap from '@adobe/helix-shared-wrap'; -import dataAccessWrapper from '@adobe/spacecat-shared-data-access'; -import sqsEventAdapter from './sqsEventAdapter'; -import sqs from './sqs'; -import secrets from '@adobe/helix-shared-secrets'; -import helixStatus from '@adobe/helix-status'; +Example `~/.aws/credentials` entry: -async function run(message, context) { - const { dataAccess } = context; - try { - const sites = await dataAccess.Site.getSites(); - // Function logic here - } catch (error) { - // Error handling - } -} +```ini +[spacecat-dev] +aws_access_key_id = +aws_secret_access_key = +``` -export const main = wrap(run) - .with(sqsEventAdapter) - .with(dataAccessWrapper) - .with(sqs) - .with(secrets) - .with(helixStatus); +Repository: + +- `682033462621.dkr.ecr.us-east-1.amazonaws.com/mysticat-data-service` + +Then authenticate Docker to ECR: + +```bash +aws ecr get-login-password --profile spacecat-dev --region us-east-1 \ + | docker login --username AWS --password-stdin 682033462621.dkr.ecr.us-east-1.amazonaws.com ``` -## Contributing +### Run -Contributions to `spacecat-shared-data-access` are welcome. Please adhere to the standard Git workflow and submit pull requests for proposed changes. +```bash +npm run test:it +``` -## Local Development and Testing +### Useful overrides -### Testing with Dependent Projects Before Merging +- `MYSTICAT_DATA_SERVICE_TAG`: override image tag (recommended for version bumps) +- `MYSTICAT_DATA_SERVICE_REPOSITORY`: override image repository +- `MYSTICAT_DATA_SERVICE_PLATFORM`: override container platform (default `linux/amd64`) +- `IT_POSTGREST_PORT`: override exposed PostgREST port (default `3300`) +- `IT_POSTGRES_PORT`: override exposed Postgres port (default `55432`) -When making changes to this package, you can test them in dependent projects (like `spacecat-api-service`) before merging using the following approach: +```bash +export MYSTICAT_DATA_SERVICE_TAG=v1.11.0 +export MYSTICAT_DATA_SERVICE_PLATFORM=linux/amd64 +# optional if repository changes +export MYSTICAT_DATA_SERVICE_REPOSITORY=682033462621.dkr.ecr.us-east-1.amazonaws.com/mysticat-data-service +``` -1. Commit and push your changes to a branch in this repository -2. Get the commit ID of your push -3. In your dependent project, temporarily modify the package.json dependency: +## TypeScript - ```json - // From: - "@adobe/spacecat-shared-data-access": "2.13.1", - - // To: - "@adobe/spacecat-shared-data-access": "https://gitpkg.now.sh/adobe/spacecat-shared/packages/spacecat-shared-data-access?YOUR_COMMIT_ID", - ``` +Type definitions are shipped from: +- `src/index.d.ts` +- `src/models/**/index.d.ts` -4. Run `npm install` in your dependent project -5. Test your changes -6. Once testing is complete and your PR is merged, update the dependent project to use the released version +Use the package directly in TS projects; no extra setup required. ## License -Licensed under the Apache-2.0 License. +Apache-2.0 diff --git a/packages/spacecat-shared-data-access/docker-compose.test.yml b/packages/spacecat-shared-data-access/docker-compose.test.yml new file mode 100644 index 000000000..e0bd34f15 --- /dev/null +++ b/packages/spacecat-shared-data-access/docker-compose.test.yml @@ -0,0 +1,39 @@ +# Docker Compose for integration testing — PostgreSQL + PostgREST +name: spacecat-data-access-test + +services: + db: + image: postgres:16-alpine + container_name: spacecat-test-db + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: spacecat_test + ports: + - "54320:5432" + tmpfs: + - /var/lib/postgresql/data + volumes: + - ./test/it/v3/init-db.sql:/docker-entrypoint-initdb.d/01-init.sql:ro + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 2s + timeout: 3s + retries: 10 + + postgrest: + image: postgrest/postgrest:v14.4 + container_name: spacecat-test-postgrest + depends_on: + db: + condition: service_healthy + environment: + PGRST_DB_URI: postgres://postgrest_authenticator:postgrest@db:5432/spacecat_test + PGRST_DB_SCHEMAS: public + PGRST_DB_ANON_ROLE: postgrest_anon + PGRST_DB_EXTRA_SEARCH_PATH: "" + PGRST_LOG_LEVEL: warn + PGRST_ADMIN_SERVER_PORT: 3001 + ports: + - "3456:3000" + - "3457:3001" diff --git a/packages/spacecat-shared-data-access/package.json b/packages/spacecat-shared-data-access/package.json index c8352ea93..79ba14a19 100644 --- a/packages/spacecat-shared-data-access/package.json +++ b/packages/spacecat-shared-data-access/package.json @@ -10,7 +10,9 @@ "main": "src/index.js", "types": "src/index.d.ts", "scripts": { - "test:it": "mocha --require ./test/it/fixtures.js --spec \"test/it/**/*.test.js\"", + "test:it": "npm run test:it:legacy && npm run test:it:postgrest", + "test:it:legacy": "IT_SEED_MODE=none mocha --require ./test/it/fixtures.js --spec \"test/it/**/*.test.js\" --ignore \"test/it/postgrest/**/*.test.js\"", + "test:it:postgrest": "IT_SEED_MODE=tenant-sql mocha --require ./test/it/fixtures.js --spec \"test/it/postgrest/**/*.test.js\"", "test": "c8 mocha --spec \"test/unit/**/*.test.js\"", "test:debug": "mocha --inspect-brk --require ./test/setup-env.js --spec \"test/unit/**/*.test.js\"", "test:debug:config": "mocha --inspect-brk --require ./test/setup-env.js --spec \"test/unit/models/site/config.test.js\"", @@ -39,19 +41,16 @@ }, "dependencies": { "@adobe/spacecat-shared-utils": "1.81.1", - "@aws-sdk/client-dynamodb": "3.940.0", + "@supabase/postgrest-js": "^1.21.4", "@aws-sdk/client-s3": "^3.940.0", - "@aws-sdk/lib-dynamodb": "3.940.0", "@types/joi": "17.2.3", "aws-xray-sdk": "3.12.0", - "electrodb": "3.5.0", "joi": "18.0.2", "pluralize": "8.0.0" }, "devDependencies": { "chai": "6.2.1", "chai-as-promised": "8.0.2", - "dynamo-db-local": "9.6.0", "nock": "14.0.10", "sinon": "21.0.0", "sinon-chai": "4.0.1" diff --git a/packages/spacecat-shared-data-access/src/index.js b/packages/spacecat-shared-data-access/src/index.js index d09998fe2..7e24a2d68 100644 --- a/packages/spacecat-shared-data-access/src/index.js +++ b/packages/spacecat-shared-data-access/src/index.js @@ -14,8 +14,6 @@ import { createDataAccess } from './service/index.js'; export * from './service/index.js'; -const TABLE_NAME_DATA = 'spacecat-services-data'; - /** * Wrapper for data access layer * @param {function} fn - The function to wrap @@ -25,7 +23,7 @@ export default function dataAccessWrapper(fn) { /** * Wrapper for data access layer. This wrapper will create a data access layer if it is not * already created. It requires the context to have a log object. It will also use the - * DYNAMO_TABLE_NAME_DATA environment variable to create the data access layer. + * POSTGREST_URL environment variable to create the data access layer. * Optionally, it will use the ENV and AWS_REGION environment variables * * @param {object} request - The request object @@ -37,18 +35,25 @@ export default function dataAccessWrapper(fn) { const { log } = context; const { - DYNAMO_TABLE_NAME_DATA = TABLE_NAME_DATA, + POSTGREST_URL: postgrestUrl, + POSTGREST_SCHEMA: postgrestSchema, + POSTGREST_API_KEY: postgrestApiKey, S3_CONFIG_BUCKET: s3Bucket, AWS_REGION: region, S2S_ALLOWED_IMS_ORG_IDS: s2sAllowedImsOrgIdsRaw, } = context.env; + if (!postgrestUrl) { + throw new Error('POSTGREST_URL is required'); + } const s2sAllowedImsOrgIds = s2sAllowedImsOrgIdsRaw ? s2sAllowedImsOrgIdsRaw.split(',').map((id) => id.trim()).filter(Boolean) : []; context.dataAccess = createDataAccess({ - tableNameData: DYNAMO_TABLE_NAME_DATA, + postgrestUrl, + postgrestSchema, + postgrestApiKey, s3Bucket, region, s2sAllowedImsOrgIds, diff --git a/packages/spacecat-shared-data-access/src/models/audit/audit.collection.js b/packages/spacecat-shared-data-access/src/models/audit/audit.collection.js index aea6398a6..a698c5a42 100755 --- a/packages/spacecat-shared-data-access/src/models/audit/audit.collection.js +++ b/packages/spacecat-shared-data-access/src/models/audit/audit.collection.js @@ -22,30 +22,16 @@ import BaseCollection from '../base/base.collection.js'; class AuditCollection extends BaseCollection { static COLLECTION_NAME = 'AuditCollection'; - // create a copy of the audit as a LatestAudit entity + // LatestAudit is derived from audits in v3; no copy table writes. + // eslint-disable-next-line class-methods-use-this,no-unused-vars async _onCreate(item) { - const collection = this.entityRegistry.getCollection('LatestAuditCollection'); - await collection.create(item.toJSON()); + // no-op } - // of the created audits, find the latest per site and auditType - // and create a LatestAudit copy for each + // LatestAudit is derived from audits in v3; no copy table writes. + // eslint-disable-next-line class-methods-use-this,no-unused-vars async _onCreateMany(items) { - const collection = this.entityRegistry.getCollection('LatestAuditCollection'); - const latestAudits = items.createdItems.reduce((acc, audit) => { - const siteId = audit.getSiteId(); - const auditType = audit.getAuditType(); - const auditedAt = audit.getAuditedAt(); - const key = `${siteId}-${auditType}`; - - if (!acc[key] || acc[key].getAuditedAt() < auditedAt) { - acc[key] = audit; - } - - return acc; - }, {}); - - await collection.createMany(Object.values(latestAudits).map((audit) => audit.toJSON())); + // no-op } } diff --git a/packages/spacecat-shared-data-access/src/models/base/base.collection.js b/packages/spacecat-shared-data-access/src/models/base/base.collection.js old mode 100755 new mode 100644 index b111c4044..e8099d04b --- a/packages/spacecat-shared-data-access/src/models/base/base.collection.js +++ b/packages/spacecat-shared-data-access/src/models/base/base.collection.js @@ -17,17 +17,26 @@ import { isObject, } from '@adobe/spacecat-shared-utils'; -import { ElectroValidationError } from 'electrodb'; - import DataAccessError from '../../errors/data-access.error.js'; import ValidationError from '../../errors/validation.error.js'; import { createAccessors } from '../../util/accessor.utils.js'; import { guardId, guardArray } from '../../util/guards.js'; import { - entityNameToAllPKValue, - removeElectroProperties, -} from '../../util/util.js'; + applyWhere, + createFieldMaps, + decodeCursor, + DEFAULT_PAGE_SIZE, + encodeCursor, + entityToTableName, + fromDbRecord, + toDbField, + toDbRecord, +} from '../../util/postgrest.utils.js'; import { DATASTORE_TYPE } from '../../util/index.js'; +import { entityNameToAllPKValue, removeElectroProperties } from '../../util/util.js'; + +const isLegacyValidationError = (error) => error?.name === 'ElectroValidationError' + || isNonEmptyArray(error?.fields); function isValidParent(parent, child) { if (!hasText(parent.entityName)) { @@ -35,44 +44,21 @@ function isValidParent(parent, child) { } const foreignKey = `${parent.entityName}Id`; - return child.record?.[foreignKey] === parent.record?.[foreignKey]; } -/** - * BaseCollection - A base class for managing collections of entities in the application. - * This class uses ElectroDB to interact with entities and provides common functionality - * for data operations. - * - * @class BaseCollection - * @abstract - */ class BaseCollection { - /** - * The collection name for this collection. Must be overridden by subclasses. - * This ensures the collection name is explicit and not dependent on class names - * which can be mangled by bundlers. - * @type {string} - */ static COLLECTION_NAME = undefined; - /** - * The datastore type for this collection. Defaults to DYNAMO. - * Override in subclasses to use a different datastore (e.g., S3). - * @type {string} - */ - static DATASTORE_TYPE = DATASTORE_TYPE.DYNAMO; - - /** - * Constructs an instance of BaseCollection. - * @constructor - * @param {Object} electroService - The ElectroDB service used for managing entities. - * @param {Object} entityRegistry - The registry holding entities, their schema and collection. - * @param {Object} schema - The schema for the entity. - * @param {Object} log - A log for capturing logging information. - */ - constructor(electroService, entityRegistry, schema, log) { - this.electroService = electroService; + static DATASTORE_TYPE = DATASTORE_TYPE.POSTGREST; + + constructor(postgrestService, entityRegistry, schema, log) { + if (!postgrestService) { + throw new DataAccessError('postgrestService is required'); + } + this.postgrestService = postgrestService; + // legacy alias for existing tests and callers + this.electroService = postgrestService; this.entityRegistry = entityRegistry; this.schema = schema; this.log = log; @@ -80,11 +66,44 @@ class BaseCollection { this.clazz = this.schema.getModelClass(); this.entityName = this.schema.getEntityName(); this.idName = this.schema.getIdName(); - this.entity = electroService.entities[this.entityName]; + this.tableName = entityToTableName(this.schema.getModelName()); + this.fieldMaps = createFieldMaps(this.schema); + this.entity = postgrestService?.entities?.[this.entityName]; this.#initializeCollectionMethods(); } + // eslint-disable-next-line class-methods-use-this + #resolveBulkKeyField(keys) { + if (!isNonEmptyArray(keys)) return null; + + const [firstKey] = keys; + const fields = Object.keys(firstKey); + if (fields.length !== 1) { + return null; + } + + const [field] = fields; + const isSingleFieldAcrossAll = keys.every((key) => { + const keyFields = Object.keys(key); + return keyFields.length === 1 && keyFields[0] === field && key[field] !== undefined; + }); + + return isSingleFieldAcrossAll ? field : null; + } + + // eslint-disable-next-line class-methods-use-this + #isInvalidInputError(error) { + let current = error; + while (current) { + if (current?.code === '22P02') { + return true; + } + current = current.cause; + } + return false; + } + #logAndThrowError(message, cause) { const error = new DataAccessError(message, this, cause); this.log.error(`Base Collection Error [${this.entityName}]`, error); @@ -94,77 +113,37 @@ class BaseCollection { throw error; } - /** - * Initialize collection methods for each "by..." index defined in the entity schema. - * For each index that starts with "by", we: - * 1. Retrieve its composite pk and sk arrays from the schema. - * 2. Generate convenience methods for every prefix of the composite keys. - * For example, if the index keys are ['opportunityId', 'status', 'createdAt'], - * we create methods: - * - allByOpportunityId(...) / findByOpportunityId(...) - * - allByOpportunityIdAndStatus(...) / findByOpportunityIdAndStatus(...) - * - allByOpportunityIdAndStatusAndCreatedAt(...) / - * findByOpportunityIdAndStatusAndCreatedAt(...) - * - * Each generated method calls allByIndexKeys() or findByIndexKeys() with the appropriate keys. - * - * @private - */ #initializeCollectionMethods() { const accessorConfigs = this.schema.toAccessorConfigs(this, this.log); createAccessors(accessorConfigs, this.log); } - /** - * Creates an instance of a model from a record. - * @private - * @param {Object} record - The record containing data to create the model instance. - * @returns {BaseModel|null} - Returns an instance of the model class if the data is valid, - * otherwise null. - */ #createInstance(record) { if (!isNonEmptyObject(record)) { this.log.warn(`Failed to create instance of [${this.entityName}]: record is empty`); return null; } + const hydratedRecord = this.#applyGetters(this.#applyReadDefaults(record)); // eslint-disable-next-line new-cap return new this.clazz( - this.electroService, + this.postgrestService, this.entityRegistry, this.schema, - record, + hydratedRecord, this.log, ); } - /** - * Creates instances of models from a set of records. - * @private - * @param {Object} records - The records containing data to create the model instances. - * @returns {Array} - An array of instances of the model class. - */ #createInstances(records) { - return records.map((record) => this.#createInstance(record)); + return records + .map((record) => this.#createInstance(record)) + .filter((instance) => instance !== null); } - /** - * Clears the accessor cache for the entity. This method is called when the entity is - * updated or removed to ensure that the cache is invalidated. - * @private - */ #invalidateCache() { this._accessorCache = {}; } - /** - * Internal on-create handler. This method is called after the create method has successfully - * created an entity. It will call the on-create handler defined in the subclass and handles - * any errors that occur. - * @param {BaseModel} item - The created entity. - * @return {Promise} - * @async - * @private - */ async #onCreate(item) { try { await this._onCreate(item); @@ -173,16 +152,6 @@ class BaseCollection { } } - /** - * Internal on-create-many handler. This method is called after the createMany method has - * successfully created entities. It will call the on-create-many handler defined in the - * subclass and handles any errors that occur. - * @param {Array} createdItems - The created entities. - * @param {{ item: Object, error: ValidationError }[]} errorItems - Items that failed validation. - * @return {Promise} - * @async - * @private - */ async #onCreateMany({ createdItems, errorItems }) { try { await this._onCreateMany({ createdItems, errorItems }); @@ -191,278 +160,506 @@ class BaseCollection { } } - /** - * Handler for the create method. This method is - * called after the create method has successfully created an entity. - * @param {BaseModel} item - The created entity. - * @return {Promise} - * @async - * @protected - */ // eslint-disable-next-line class-methods-use-this,no-unused-vars async _onCreate(item) { - // no-op - } - - /** - * Handler for the createMany method. This method is - * called after the createMany method has successfully created entities. - * @param {Array} createdItems - The created entities. - * @param {{ item: Object, error: ValidationError }[]} errorItems - Items that failed validation. - * @return {Promise} - * @async - * @protected - */ + return undefined; + } + // eslint-disable-next-line class-methods-use-this,no-unused-vars async _onCreateMany({ createdItems, errorItems }) { - // no-op - } - - /** - * General method to query entities by index keys. This method is used by other - * query methods to perform the actual query operation. It will use the index keys - * to find the appropriate index and query the entities. The query result will be - * transformed into model instances. - * - * @private - * @async - * @param {Object} keys - The index keys to use for the query. - * @param {Object} options - Additional options for the query. - * @returns {Promise|null>} - The query result. - * @throws {DataAccessError} - Throws an error if the keys are not provided, - * if options are invalid or if the query operation fails. - */ - async #queryByIndexKeys(keys, options = {}) { - if (!isNonEmptyObject(keys)) { - return this.#logAndThrowError(`Failed to query [${this.entityName}]: keys are required`); + return undefined; + } + + #toDbField(field) { + return toDbField(field, this.fieldMaps.toDbMap); + } + + #toDbRecord(record) { + return toDbRecord(record, this.fieldMaps.toDbMap); + } + + #toModelRecord(record) { + return fromDbRecord(record, this.fieldMaps.toModelMap); + } + + #buildSelect(attributes) { + if (!isNonEmptyArray(attributes)) { + return '*'; } + return attributes.map((field) => this.#toDbField(field)).join(','); + } - if (!isObject(options)) { - return this.#logAndThrowError(`Failed to query [${this.entityName}]: options must be an object`); + #getOrderFields(indexName, keys) { + if (hasText(indexName)) { + const indexKeys = this.schema.getIndexKeys(indexName); + if (isNonEmptyArray(indexKeys)) { + return indexKeys.map((key) => this.#toDbField(key)); + } } - const indexName = options.index || this.schema.findIndexNameByKeys(keys); - const index = this.entity.query[indexName]; + const keyNames = Object.keys(keys); + const defaultSortField = isNonEmptyArray(keyNames) + ? keyNames[keyNames.length - 1] + : 'updatedAt'; + return [this.#toDbField(defaultSortField)]; + } + + #applyDefaults(record) { + const nextRecord = { ...record }; + const attributes = this.schema.getAttributes(); + Object.entries(attributes).forEach(([name, attribute]) => { + if (nextRecord[name] !== undefined || attribute.default === undefined) { + return; + } + + nextRecord[name] = typeof attribute.default === 'function' + ? attribute.default() + : attribute.default; + }); + return nextRecord; + } - if (!index) { - this.#logAndThrowError(`Failed to query [${this.entityName}]: query proxy [${indexName}] not found`); + applyUpdateWatchers(record, updates) { + const nextRecord = { ...record }; + const nextUpdates = { ...updates }; + const changedKeys = Object.keys(updates); + if (changedKeys.length === 0) { + return { record: nextRecord, updates: nextUpdates }; } - try { - const queryOptions = { - order: options.order || 'desc', - ...options.limit && { limit: options.limit }, - ...options.attributes && { attributes: options.attributes }, - /* c8 ignore next */ - ...options.cursor && { cursor: options.cursor }, - }; + const attributes = this.schema.getAttributes(); + Object.entries(attributes).forEach(([name, attribute]) => { + if (typeof attribute.set !== 'function') { + return; + } + + const { watch } = attribute; + const shouldApply = watch === '*' + || (Array.isArray(watch) && watch.some((key) => changedKeys.includes(key))); - let query = index(keys); + if (!shouldApply) { + return; + } + + const value = attribute.set(nextRecord[name], nextRecord); + let resolvedValue = value; + if (name === 'updatedAt' && typeof nextRecord[name] === 'string') { + const previous = new Date(nextRecord[name]); + const candidate = new Date(resolvedValue); + if (!Number.isNaN(previous.getTime()) + && !Number.isNaN(candidate.getTime()) + && candidate.getTime() <= previous.getTime()) { + resolvedValue = new Date(previous.getTime() + 1000).toISOString(); + } + } + nextRecord[name] = resolvedValue; + nextUpdates[name] = resolvedValue; + }); + return { record: nextRecord, updates: nextUpdates }; + } - if (isObject(options.between)) { - query = query.between( - { [options.between.attribute]: options.between.start }, - { [options.between.attribute]: options.between.end }, - ); + #applySetters(record) { + const nextRecord = { ...record }; + const attributes = this.schema.getAttributes(); + Object.entries(attributes).forEach(([name, attribute]) => { + if (typeof attribute.set !== 'function') { + return; } - // Apply where clause (FilterExpression) if provided - if (typeof options.where === 'function') { - query = query.where(options.where); + const value = attribute.set(nextRecord[name], nextRecord); + if (value !== undefined) { + nextRecord[name] = value; } + }); + return nextRecord; + } - // execute the initial query - let result = await query.go(queryOptions); - let allData = result.data; + #applyReadDefaults(record) { + const nextRecord = { ...record }; + const attributes = this.schema.getAttributes(); + Object.entries(attributes).forEach(([name, attribute]) => { + if (nextRecord[name] !== undefined || attribute.default === undefined) { + return; + } + + // Only hydrate defaults for fields intentionally excluded from PostgREST writes. + // This preserves projection behavior for normal selected attributes. + if (!attribute.postgrestIgnore) { + return; + } + + nextRecord[name] = typeof attribute.default === 'function' + ? attribute.default() + : attribute.default; + }); + return nextRecord; + } + + #applyGetters(record) { + const nextRecord = { ...record }; + const attributes = this.schema.getAttributes(); + Object.entries(attributes).forEach(([name, attribute]) => { + if (typeof attribute.get !== 'function') { + return; + } + + if (nextRecord[name] === undefined) { + return; + } + + try { + nextRecord[name] = attribute.get(nextRecord[name], nextRecord); + } catch (error) { + this.log.warn(`Failed to apply getter for ${name} on [${this.entityName}]`, error); + } + }); + return nextRecord; + } + + #validateItem(item) { + const attributes = this.schema.getAttributes(); + const errors = []; + + Object.entries(attributes).forEach(([name, attribute]) => { + const value = item[name]; + + if (attribute.required && (value === undefined || value === null)) { + errors.push(`${name} is required`); + return; + } + + if (value === undefined || value === null) { + return; + } + + if (Array.isArray(attribute.type) && !attribute.type.includes(value)) { + errors.push(`${name} is invalid`); + } else if (attribute.type === 'string' && typeof value !== 'string') { + errors.push(`${name} must be a string`); + } else if (attribute.type === 'number' && typeof value !== 'number') { + errors.push(`${name} must be a number`); + } else if (attribute.type === 'boolean' && typeof value !== 'boolean') { + errors.push(`${name} must be a boolean`); + } else if (attribute.type === 'list' && !Array.isArray(value)) { + errors.push(`${name} must be a list`); + } else if (attribute.type === 'map' && !isObject(value)) { + errors.push(`${name} must be a map`); + } + + if (typeof attribute.validate === 'function') { + try { + const result = attribute.validate(value, item); + if (result === false) { + errors.push(`${name} failed validation`); + } + } catch (e) { + errors.push(e?.message || `${name} failed validation`); + } + } + }); + + if (errors.length > 0) { + throw new ValidationError(errors.join(', '), this); + } + } + + #prepareItem(item) { + let prepared = { ...item }; + prepared = this.#applyDefaults(prepared); + prepared = this.#applySetters(prepared); + this.#validateItem(prepared); + return prepared; + } + + #applyKeyFilters(query, keys) { + if (!isNonEmptyObject(keys)) { + return query; + } + + let filtered = query; + Object.entries(keys).forEach(([key, value]) => { + filtered = filtered.eq(this.#toDbField(key), value); + }); + return filtered; + } + + async #queryPage({ + keys, + options, + offset, + limit, + }) { + const select = this.#buildSelect(options.attributes); + const indexName = options.index || this.schema.findIndexNameByKeys(keys); + const index = this.schema.getIndexByName(indexName); + if (options.index && !index) { + this.#logAndThrowError(`Failed to query [${this.entityName}]: query proxy [${options.index}] not found`); + } + + const orderFields = this.#getOrderFields(indexName, keys); + const ascending = options.order === 'asc'; + let query = this.postgrestService + .from(this.tableName) + .select(select); + + orderFields.forEach((field) => { + query = query.order(field, { ascending }); + }); + + const mappedIdField = this.fieldMaps?.toDbMap?.[this.idName]; + if (hasText(mappedIdField) && !orderFields.includes(mappedIdField)) { + query = query.order(mappedIdField, { ascending }); + } + + query = this.#applyKeyFilters(query, keys); + if (isObject(options.between)) { + const betweenField = this.#toDbField(options.between.attribute); + query = query.gte(betweenField, options.between.start).lte(betweenField, options.between.end); + } + query = applyWhere(query, options.where, this.fieldMaps.toDbMap); + + if (Number.isInteger(limit)) { + query = query.range(offset, offset + limit - 1); + } else { + query = query.range(offset, offset + DEFAULT_PAGE_SIZE - 1); + } + + const { data, error } = await query; + if (error) { + this.#logAndThrowError('Failed to query', error); + } + + return (data || []).map((record) => this.#toModelRecord(record)); + } + + async #queryByIndexKeys(keys, options = {}) { + if (this.entity && !isNonEmptyObject(keys)) { + return this.#logAndThrowError(`Failed to query [${this.entityName}]: keys are required`); + } + + if (!isObject(options)) { + return this.#logAndThrowError(`Failed to query [${this.entityName}]: options must be an object`); + } + + try { + if (this.entity) { + const indexName = options.index || this.schema.findIndexNameByKeys(keys); + const index = this.entity.query[indexName]; + if (!index) { + this.#logAndThrowError(`Failed to query [${this.entityName}]: query proxy [${indexName}] not found`); + } + + const queryOptions = { + order: options.order || 'desc', + ...options.limit && { limit: options.limit }, + ...options.attributes && { attributes: options.attributes }, + ...options.cursor && { cursor: options.cursor }, + }; + + let query = index(keys); + if (isObject(options.between)) { + query = query.between( + { [options.between.attribute]: options.between.start }, + { [options.between.attribute]: options.between.end }, + ); + } + if (typeof options.where === 'function') { + query = query.where(options.where); + } + + let result = await query.go(queryOptions); + let allData = result.data; + const shouldFetchAllPages = options.fetchAllPages === true + || (options.fetchAllPages !== false && !options.limit); + if (shouldFetchAllPages) { + while (result.cursor) { + queryOptions.cursor = result.cursor; + // eslint-disable-next-line no-await-in-loop + result = await query.go(queryOptions); + allData = allData.concat(result.data); + } + } + + if (options.limit === 1) { + return allData.length ? this.#createInstance(allData[0]) : null; + } + + const instances = this.#createInstances(allData); + return options.returnCursor + ? { data: instances, cursor: result.cursor || null } + : instances; + } - // Smart pagination behavior: - // - fetchAllPages: true → Always paginate through all results - // - fetchAllPages: false → Only fetch first page - // - undefined → Auto-paginate when no limit specified, respect limits otherwise const shouldFetchAllPages = options.fetchAllPages === true || (options.fetchAllPages !== false && !options.limit); + const shouldReturnCursor = options.returnCursor === true; + const limit = Number.isInteger(options.limit) ? options.limit : undefined; + + let offset = decodeCursor(options.cursor); + let allRows = []; + let cursor = null; if (shouldFetchAllPages) { - while (result.cursor) { - queryOptions.cursor = result.cursor; + const pageSize = limit || DEFAULT_PAGE_SIZE; + let keepGoing = true; + + while (keepGoing) { // eslint-disable-next-line no-await-in-loop - result = await query.go(queryOptions); - allData = allData.concat(result.data); + const pageRows = await this.#queryPage({ + keys, + options, + offset, + limit: pageSize, + }); + allRows = allRows.concat(pageRows); + if (pageRows.length < pageSize) { + keepGoing = false; + cursor = null; + } else { + offset += pageSize; + } + } + } else { + const pageRows = await this.#queryPage({ + keys, + options, + offset, + limit, + }); + allRows = pageRows; + if (limit && pageRows.length === limit) { + cursor = encodeCursor(offset + limit); } } - // Return cursor when explicitly requested via returnCursor option - const shouldReturnCursor = options.returnCursor === true; - if (options.limit === 1) { - return allData.length ? this.#createInstance(allData[0]) : null; - } else { - const instances = this.#createInstances(allData); - /* c8 ignore next 2 */ - return shouldReturnCursor - ? { data: instances, cursor: result.cursor || null } - : instances; + return allRows.length ? this.#createInstance(allRows[0]) : null; } + + const instances = this.#createInstances(allRows); + return shouldReturnCursor ? { data: instances, cursor } : instances; } catch (error) { + if (error instanceof DataAccessError) { + throw error; + } return this.#logAndThrowError('Failed to query', error); } } - /** - * Finds all entities in the collection. Requires an index named "all" with a partition key - * named "pk" with a static value of "ALL_". - * @async - * @param {Object} [sortKeys] - The sort keys to use for the query. - * @param {Object} [options] - Additional options for the query. - * @return {Promise|null>} - */ async all(sortKeys = {}, options = {}) { - const keys = { pk: entityNameToAllPKValue(this.entityName), ...sortKeys }; + const keys = this.entity + ? { pk: entityNameToAllPKValue(this.entityName), ...sortKeys } + : sortKeys; return this.#queryByIndexKeys(keys, options); } - /** - * Finds entities by a set of index keys. Index keys are used to query entities by - * a specific index defined in the entity schema. The index keys must match the - * fields defined in the index. - * @param {Object} keys - The index keys to use for the query. - * @param {{index?: string, attributes?: string[]}} [options] - Additional options for the query. - * @return {Promise>} - A promise that resolves to an array of model instances. - * @throws {Error} - Throws an error if the index keys are not provided or if the index - * is not found. - * @async - */ async allByIndexKeys(keys, options = {}) { return this.#queryByIndexKeys(keys, options); } - /** - * Finds a single entity from the "all" index. Requires an "all" index to be added to the - * entity schema via the schema builder. - * @async - * @param {Object} [sortKeys] - The sort keys to use for the query. - * @param {QueryOptions} [options] - Additional options for the query. - * Additional options for the query. - * @return {Promise} - * @throws {DataAccessError} - Throws an error if the sort keys are not provided. - */ async findByAll(sortKeys = {}, options = {}) { if (!isObject(sortKeys)) { const message = `Failed to find by all [${this.entityName}]: sort keys must be an object`; this.log.error(message); throw new DataAccessError(message); } - - const keys = { pk: entityNameToAllPKValue(this.entityName), ...sortKeys }; + const keys = this.entity + ? { pk: entityNameToAllPKValue(this.entityName), ...sortKeys } + : sortKeys; return this.#queryByIndexKeys(keys, { ...options, limit: 1 }); } - /** - * Finds an entity by its ID. This will only work if the entity's schema - * did not override the main table primary key via schema builder. - * @async - * @param {string} id - The unique identifier of the entity to be found. - * @returns {Promise} - A promise that resolves to an instance of - * the model if found, otherwise null. - * @throws {ValidationError} - Throws an error if the ID is not provided. - */ async findById(id) { guardId(this.idName, id, this.entityName); - - const record = await this.entity.get({ [this.idName]: id }).go(); - - return this.#createInstance(record?.data); + if (this.entity) { + const record = await this.entity.get({ [this.idName]: id }).go(); + return this.#createInstance(record?.data); + } + return this.findByIndexKeys({ [this.idName]: id }); } - /** - * Checks if an entity exists by its ID. - * @param {string} id - The UUID of the entity to check. - * @return {Promise} - A promise that resolves to true if the entity exists, - * otherwise false. - * @throws {ValidationError} - Throws an error if the ID is not provided. - */ async existsById(id) { guardId(this.idName, id, this.entityName); + if (this.entity) { + const record = await this.entity.get({ [this.idName]: id }).go({ + attributes: [this.idName], + }); + return isNonEmptyObject(record?.data); + } + const item = await this.findByIndexKeys( + { [this.idName]: id }, + { attributes: [this.idName] }, + ); + return isNonEmptyObject(item); + } - const record = await this.entity.get({ [this.idName]: id }).go({ - attributes: [this.idName], - }); - - return isNonEmptyObject(record?.data); - } - - /** - * Retrieves multiple entities by their IDs in a single batch operation. - * This method is more efficient than calling findById multiple times. - * - * @async - * @param {Array} ids - An array of entity IDs to retrieve. - * @param {{attributes?: string[]}} [options] - Additional options for the query. - * @returns {Promise<{data: Array, unprocessed: Array}>} - A promise that - * resolves - * to an object containing: - * - data: Array of found model instances - * - unprocessed: Array of IDs that couldn't be processed (due to throttling, etc.) - * @throws {DataAccessError} - Throws an error if the IDs are not provided or if the batch - * operation fails. - */ async batchGetByKeys(keys, options = {}) { guardArray('keys', keys, this.entityName, 'any'); try { - const goOptions = {}; - - // Add attributes if specified - if (options.attributes !== undefined) { - goOptions.attributes = options.attributes; + if (this.entity) { + const goOptions = {}; + if (options.attributes !== undefined) { + goOptions.attributes = options.attributes; + } + const result = await this.entity.get(keys).go(goOptions); + const data = result.data + .map((record) => this.#createInstance(record)) + .filter((entity) => entity !== null); + const unprocessed = result.unprocessed + ? result.unprocessed.map((item) => item) + : []; + return { data, unprocessed }; } - const result = await this.entity.get( - keys, - ).go(goOptions); - - // Process found entities - const data = result.data - .map((record) => this.#createInstance(record)) - .filter((entity) => entity !== null); + const bulkKeyField = this.#resolveBulkKeyField(keys); + if (bulkKeyField) { + const dbField = this.#toDbField(bulkKeyField); + const values = keys.map((key) => key[bulkKeyField]); + const select = this.#buildSelect(options.attributes); + const { data, error } = await this.postgrestService + .from(this.tableName) + .select(select) + .in(dbField, values); + + if (!error) { + return { + data: this.#createInstances((data || []).map((record) => this.#toModelRecord(record))), + unprocessed: [], + }; + } - // Extract unprocessed keys - /* c8 ignore next 3 */ - const unprocessed = result.unprocessed - ? result.unprocessed.map((item) => item) - : []; + if (!this.#isInvalidInputError(error)) { + throw error; + } + } - return { data, unprocessed }; + const records = await Promise.all( + keys.map(async (key) => { + try { + return await this.findByIndexKeys(key, options); + } catch (error) { + if (this.#isInvalidInputError(error)) { + return null; + } + throw error; + } + }), + ); + return { + data: records.filter((record) => record !== null), + unprocessed: [], + }; } catch (error) { this.log.error(`Failed to batch get by keys [${this.entityName}]`, error); throw new DataAccessError('Failed to batch get by keys', this, error); } } - /** - * Finds a single entity by index keys. - * @param {Object} keys - The index keys to use for the query. - * @param {{index?: string, attributes?: string[]}} [options] - Additional options for the query. - * @returns {Promise} - A promise that resolves to the model instance or null. - * @throws {DataAccessError} - Throws an error if retrieving the entity fails. - * @async - */ async findByIndexKeys(keys, options = {}) { return this.#queryByIndexKeys(keys, { ...options, limit: 1 }); } - /** - * Creates a new entity in the collection and directly persists it to the database. - * There is no need to call the save method (which is for updates only) after creating - * the entity. - * @async - * @param {Object} item - The data for the entity to be created. - * @param {Object} [options] - Additional options for the creation process. - * @param {boolean} [options.upsert=false] - Whether to perform an upsert operation. - * @returns {Promise} - A promise that resolves to the created model instance. - * @throws {DataAccessError} - Throws an error if the data is invalid or if the - * creation process fails. - */ async create(item, { upsert = false } = {}) { if (!isNonEmptyObject(item)) { const message = `Failed to create [${this.entityName}]: data is required`; @@ -471,59 +668,37 @@ class BaseCollection { } try { - const record = upsert - ? await this.entity.put(item).go() - : await this.entity.create(item).go(); + if (this.entity) { + const record = upsert + ? await this.entity.put(item).go() + : await this.entity.create(item).go(); + const instance = this.#createInstance(record.data); + this.#invalidateCache(); + await this.#onCreate(instance); + return instance; + } - const instance = this.#createInstance(record.data); + const prepared = this.#prepareItem(item); + const payload = this.#toDbRecord(prepared); + const conflictKey = this.#toDbField(this.idName); - this.#invalidateCache(); + let query = this.postgrestService.from(this.tableName); + query = upsert ? query.upsert(payload, { onConflict: conflictKey }) : query.insert(payload); + const { data, error } = await query.select().maybeSingle(); - await this.#onCreate(instance); + if (error) { + return this.#logAndThrowError('Failed to create', error); + } + const instance = this.#createInstance(this.#toModelRecord(data)); + this.#invalidateCache(); + await this.#onCreate(instance); return instance; } catch (error) { return this.#logAndThrowError('Failed to create', error); } } - /** - * Validates and batches items for batch operations. - * @private - * @param {Array} items - Items to be validated. - * @returns {Object} - An object containing validated items and error items. - */ - #validateItems(items) { - const validatedItems = []; - const errorItems = []; - - items.forEach((item) => { - try { - const { Item } = this.entity.put(item).params(); - validatedItems.push({ ...removeElectroProperties(Item), ...item }); - } catch (error) { - if (error instanceof ElectroValidationError) { - errorItems.push({ item, error: new ValidationError('Validation error', this, error) }); - } - } - }); - - return { validatedItems, errorItems }; - } - - /** - * Creates multiple entities in the collection and directly persists them to the database in - * a batch write operation. Batches are written in parallel and are limited to 25 items per batch. - * - * @async - * @param {Array} newItems - An array of data for the entities to be created. - * @param {BaseModel} [parent] - Optional parent entity that these items are associated with. - * @return {Promise<{ createdItems: BaseModel[], - * errorItems: { item: Object, error: ValidationError }[] }>} - A promise that resolves to - * an object containing the created items and any items that failed validation. - * @throws {DataAccessError} - Throws an error if the items are not provided or if the - * creation process fails. - */ async createMany(newItems, parent = null) { if (!isNonEmptyArray(newItems)) { const message = `Failed to create many [${this.entityName}]: items must be a non-empty array`; @@ -532,18 +707,91 @@ class BaseCollection { } try { - const { validatedItems, errorItems } = this.#validateItems(newItems); + if (this.entity) { + const validatedItems = []; + const errorItems = []; + newItems.forEach((item) => { + try { + const { Item } = this.entity.put(item).params(); + validatedItems.push({ ...removeElectroProperties(Item), ...item }); + } catch (error) { + if (isLegacyValidationError(error)) { + errorItems.push({ item, error: new ValidationError('Validation error', this, error) }); + } + } + }); + + if (validatedItems.length > 0) { + const response = await this.entity.put(validatedItems).go(); + if (isNonEmptyArray(response?.unprocessed)) { + this.log.error(`Failed to process all items in batch write for [${this.entityName}]: ${JSON.stringify(response.unprocessed)}`); + } + } + + const createdItems = this.#createInstances(validatedItems); + if (isNonEmptyObject(parent)) { + createdItems.forEach((record) => { + if (!isValidParent(parent, record)) { + this.log.warn(`Failed to associate parent with child [${this.entityName}]: parent is invalid`); + return; + } + // eslint-disable-next-line no-underscore-dangle,no-param-reassign + record._accessorCache[`get${parent.schema.getModelName()}`] = parent; + }); + } + this.#invalidateCache(); + await this.#onCreateMany({ createdItems, errorItems }); + return { createdItems, errorItems }; + } + + const validatedItems = []; + const errorItems = []; + + newItems.forEach((item) => { + try { + validatedItems.push(this.#prepareItem(item)); + } catch (error) { + if (error instanceof ValidationError) { + errorItems.push({ item, error }); + } else { + throw error; + } + } + }); if (validatedItems.length > 0) { - const response = await this.entity.put(validatedItems).go(); + const payload = validatedItems.map((item) => this.#toDbRecord(item)); + const { data, error } = await this.postgrestService + .from(this.tableName) + .insert(payload) + .select(); + + if (error) { + return this.#logAndThrowError('Failed to create many', error); + } - if (isNonEmptyArray(response?.unprocessed)) { - this.log.error(`Failed to process all items in batch write for [${this.entityName}]: ${JSON.stringify(response.unprocessed)}`); + if (isNonEmptyArray(data)) { + const createdItems = this.#createInstances( + data.map((record) => this.#toModelRecord(record)), + ); + if (isNonEmptyObject(parent)) { + createdItems.forEach((record) => { + if (!isValidParent(parent, record)) { + this.log.warn(`Failed to associate parent with child [${this.entityName}]: parent is invalid`); + return; + } + // eslint-disable-next-line no-underscore-dangle,no-param-reassign + record._accessorCache[`get${parent.schema.getModelName()}`] = parent; + }); + } + + this.#invalidateCache(); + await this.#onCreateMany({ createdItems, errorItems }); + return { createdItems, errorItems }; } } const createdItems = this.#createInstances(validatedItems); - if (isNonEmptyObject(parent)) { createdItems.forEach((record) => { if (!isValidParent(parent, record)) { @@ -556,26 +804,36 @@ class BaseCollection { } this.#invalidateCache(); - await this.#onCreateMany({ createdItems, errorItems }); - return { createdItems, errorItems }; } catch (error) { return this.#logAndThrowError('Failed to create many', error); } } - /** - * Updates a collection of entities in the database using a batch write (put) operation. - * - * @async - * @param {Array} items - An array of model instances to be updated. - * @return {Promise} - A promise that resolves when the update operation is complete. - * @throws {DataAccessError} - Throws an error if the items are not provided or if the - * update operation fails. - * - * @protected - */ + async updateByKeys(keys, updates) { + if (!isNonEmptyObject(keys) || !isNonEmptyObject(updates)) { + throw new DataAccessError(`Failed to update [${this.entityName}]: keys and updates are required`); + } + + if (this.entity) { + const patch = this.entity.patch(keys); + Object.entries(updates).forEach(([key, value]) => { + patch.set({ [key]: value }); + }); + await patch.go(); + return; + } + + let query = this.postgrestService.from(this.tableName).update(this.#toDbRecord(updates)); + query = this.#applyKeyFilters(query, keys); + + const { error } = await query.select().maybeSingle(); + if (error) { + throw new DataAccessError('Failed to update entity', this, error); + } + } + async _saveMany(items) { if (!isNonEmptyArray(items)) { const message = `Failed to save many [${this.entityName}]: items must be a non-empty array`; @@ -584,33 +842,59 @@ class BaseCollection { } try { - const updates = items.map((item) => item.record); - const response = await this.entity.put(updates).go(); + if (this.entity) { + const updates = items.map((item) => item.record); + const response = await this.entity.put(updates).go(); + const now = new Date().toISOString(); + items.forEach((item) => { + const { record } = item; + record.updatedAt = now; + }); + if (isNonEmptyArray(response.unprocessed)) { + this.log.error(`Failed to process all items in batch write for [${this.entityName}]: ${JSON.stringify(response.unprocessed)}`); + } + this.#invalidateCache(); + return undefined; + } - const now = new Date().toISOString(); - items.forEach((item) => { - const { record } = item; - record.updatedAt = now; + const primaryKeyFields = this.schema.getIndexKeys('primary'); + const conflictFields = (isNonEmptyArray(primaryKeyFields) ? primaryKeyFields : [this.idName]) + .map((field) => this.#toDbField(field)) + .join(','); + const preparedItems = items.map((item) => { + const keys = item.generateCompositeKeys + ? item.generateCompositeKeys() + : { [this.idName]: item.getId() }; + const { record, updates } = this.applyUpdateWatchers(item.record, item.record); + return { + model: item, + record, + updates, + keys, + }; }); + for (const preparedItem of preparedItems) { + // Keep in-memory model state in sync with persisted values (e.g. watched updatedAt). + preparedItem.model.record = preparedItem.record; + } + const payload = preparedItems + .map((preparedItem) => this.#toDbRecord({ ...preparedItem.updates, ...preparedItem.keys })); - if (isNonEmptyArray(response.unprocessed)) { - this.log.error(`Failed to process all items in batch write for [${this.entityName}]: ${JSON.stringify(response.unprocessed)}`); + const { error } = await this.postgrestService + .from(this.tableName) + .upsert(payload, { onConflict: conflictFields }); + + if (error) { + return this.#logAndThrowError('Failed to save many', error); } - return this.#invalidateCache(); + this.#invalidateCache(); + return undefined; } catch (error) { return this.#logAndThrowError('Failed to save many', error); } } - /** - * Removes all records of this entity based on the provided IDs. This will perform a batch - * delete operation. This operation does not remove dependent records. - * @param {Array} ids - An array of IDs to remove. - * @return {Promise} - A promise that resolves when the removal operation is complete. - * @throws {DataAccessError} - Throws an error if the IDs are not provided or if the - * removal operation fails. - */ async removeByIds(ids) { if (!isNonEmptyArray(ids)) { const message = `Failed to remove [${this.entityName}]: ids must be a non-empty array`; @@ -619,37 +903,28 @@ class BaseCollection { } try { - // todo: consider removing dependent records + if (this.entity) { + await this.entity.delete(ids.map((id) => ({ [this.idName]: id }))).go(); + this.#invalidateCache(); + return undefined; + } - await this.entity.delete(ids.map((id) => ({ [this.idName]: id }))).go(); + const { error } = await this.postgrestService + .from(this.tableName) + .delete() + .in(this.#toDbField(this.idName), ids); - return this.#invalidateCache(); + if (error) { + return this.#logAndThrowError('Failed to remove by IDs', error); + } + + this.#invalidateCache(); + return undefined; } catch (error) { return this.#logAndThrowError('Failed to remove by IDs', error); } } - /** - * Removes records from the collection using an array of key objects for batch deletion. - * This method is particularly useful for junction tables in many-to-many relationships - * where you need to remove multiple records based on their composite keys. - * - * Each key object in the array represents a record to be deleted, identified by its - * key attributes (typically partition key + sort key combinations). - * - * @async - * @param {Array} keys - Array of key objects to match for deletion. - * Each object should contain the key attributes that uniquely identify a record. - * @returns {Promise} A promise that resolves when the deletion is complete. - * The method also invalidates the cache after successful deletion. - * @throws {DataAccessError} Throws an error if: - * - The keys parameter is not a non-empty array - * - Any key object in the array is empty or invalid - * - The database operation fails - * - * @since 2.64.1 - * @memberof BaseCollection - */ async removeByIndexKeys(keys) { if (!isNonEmptyArray(keys)) { const message = `Failed to remove by index keys [${this.entityName}]: keys must be a non-empty array`; @@ -666,9 +941,38 @@ class BaseCollection { }); try { - await this.entity.delete(keys).go(); + if (this.entity) { + await this.entity.delete(keys).go(); + this.log.info(`Removed ${keys.length} items for [${this.entityName}]`); + this.#invalidateCache(); + return undefined; + } + + const bulkKeyField = this.#resolveBulkKeyField(keys); + if (bulkKeyField) { + const dbField = this.#toDbField(bulkKeyField); + const values = keys.map((key) => key[bulkKeyField]); + const { error } = await this.postgrestService + .from(this.tableName) + .delete() + .in(dbField, values); + if (error) { + throw error; + } + } else { + await Promise.all(keys.map(async (key) => { + let query = this.postgrestService.from(this.tableName).delete(); + query = this.#applyKeyFilters(query, key); + const { error } = await query; + if (error) { + throw error; + } + })); + } + this.log.info(`Removed ${keys.length} items for [${this.entityName}]`); - return this.#invalidateCache(); + this.#invalidateCache(); + return undefined; } catch (error) { return this.#logAndThrowError('Failed to remove by index keys', error); } diff --git a/packages/spacecat-shared-data-access/src/models/base/base.model.js b/packages/spacecat-shared-data-access/src/models/base/base.model.js index 68e523b01..28e01ef2b 100755 --- a/packages/spacecat-shared-data-access/src/models/base/base.model.js +++ b/packages/spacecat-shared-data-access/src/models/base/base.model.js @@ -50,15 +50,15 @@ class BaseModel { /** * Constructs an instance of BaseModel. * @constructor - * @param {Object} electroService - The ElectroDB service used for managing entities. + * @param {Object} postgrestService - The PostgREST client used for managing entities. * @param {EntityRegistry} entityRegistry - The registry holding entities, their schema * and collection. * @param {Schema} schema - The schema for the entity. * @param {Object} record - The initial data for the entity instance. * @param {Object} log - A log for capturing logging information. */ - constructor(electroService, entityRegistry, schema, record, log) { - this.electroService = electroService; + constructor(postgrestService, entityRegistry, schema, record, log) { + this.postgrestService = postgrestService; this.entityRegistry = entityRegistry; this.schema = schema; this.record = record; @@ -68,9 +68,8 @@ class BaseModel { this.idName = entityNameToIdName(this.entityName); this.collection = entityRegistry.getCollection(schema.getCollectionName()); - this.entity = electroService.entities[this.entityName]; - this.patcher = new Patcher(this.entity, this.schema, this.record); + this.patcher = new Patcher(this.collection, this.schema, this.record); this._accessorCache = {}; @@ -283,7 +282,15 @@ class BaseModel { await Promise.all(removePromises); - await this.entity.remove(this.generateCompositeKeys()).go(); + if (this.collection && typeof this.collection.removeByIndexKeys === 'function') { + await this.collection.removeByIndexKeys([this.generateCompositeKeys()]); + } else if (this.postgrestService?.entities?.[this.entityName]?.remove) { + await this.postgrestService.entities[this.entityName] + .remove(this.generateCompositeKeys()) + .go(); + } else { + throw new DataAccessError(`No remove strategy available for ${this.entityName}`, this); + } this.#invalidateCache(); diff --git a/packages/spacecat-shared-data-access/src/models/base/entity.registry.js b/packages/spacecat-shared-data-access/src/models/base/entity.registry.js index 8a2ea89ef..8e35a430f 100755 --- a/packages/spacecat-shared-data-access/src/models/base/entity.registry.js +++ b/packages/spacecat-shared-data-access/src/models/base/entity.registry.js @@ -86,11 +86,13 @@ import SentimentTopicSchema from '../sentiment-topic/sentiment-topic.schema.js'; class EntityRegistry { static entities = {}; + static defaultEntities = {}; + /** * Constructs an instance of EntityRegistry. * @constructor * @param {Object} services - Dictionary of services keyed by datastore type. - * @param {Object} services.dynamo - The ElectroDB service instance for DynamoDB operations. + * @param {Object} services.postgrest - The PostgREST client instance for Postgres operations. * @param {{s3Client: S3Client, s3Bucket: string}|null} [services.s3] - S3 service configuration. * @param {Object} config - Configuration object containing environment-derived settings. * @param {Object} log - A logger for capturing and logging information. @@ -107,14 +109,14 @@ class EntityRegistry { /** * Initializes the collections managed by the EntityRegistry. * This method creates instances of each collection and stores them in an internal map. - * ElectroDB-based collections are initialized with the dynamo service. + * PostgREST-based collections are initialized with the postgrest service. * Configuration is handled specially as it's a standalone S3-based collection. * @private */ #initialize() { - // Initialize ElectroDB-based collections + // Initialize PostgREST-based collections Object.values(EntityRegistry.entities).forEach(({ collection: Collection, schema }) => { - const collection = new Collection(this.services.dynamo, this, schema, this.log); + const collection = new Collection(this.services.postgrest, this, schema, this.log); this.collections.set(Collection.COLLECTION_NAME, collection); }); @@ -164,6 +166,10 @@ class EntityRegistry { static registerEntity(schema, collection) { this.entities[decapitalize(schema.getEntityName())] = { schema, collection }; } + + static resetEntities() { + this.entities = { ...this.defaultEntities }; + } } // Register ElectroDB-based entities only (Configuration is handled separately) @@ -198,5 +204,6 @@ EntityRegistry.registerEntity(TrialUserActivitySchema, TrialUserActivityCollecti EntityRegistry.registerEntity(PageCitabilitySchema, PageCitabilityCollection); EntityRegistry.registerEntity(SentimentGuidelineSchema, SentimentGuidelineCollection); EntityRegistry.registerEntity(SentimentTopicSchema, SentimentTopicCollection); +EntityRegistry.defaultEntities = { ...EntityRegistry.entities }; export default EntityRegistry; diff --git a/packages/spacecat-shared-data-access/src/models/base/schema.builder.js b/packages/spacecat-shared-data-access/src/models/base/schema.builder.js index 4ce923679..bd4d82434 100755 --- a/packages/spacecat-shared-data-access/src/models/base/schema.builder.js +++ b/packages/spacecat-shared-data-access/src/models/base/schema.builder.js @@ -36,6 +36,7 @@ const DEFAULT_SERVICE_NAME = 'SpaceCat'; */ const ID_ATTRIBUTE_DATA = { type: 'string', + postgrestField: 'id', required: true, readOnly: true, // https://electrodb.dev/en/modeling/attributes/#default @@ -215,6 +216,7 @@ class SchemaBuilder { this.addAttribute('recordExpiresAt', { type: 'number', + postgrestIgnore: true, required: true, readOnly: true, default: () => Math.floor(Date.now() / 1000) + ttlInDays * 24 * 60 * 60, diff --git a/packages/spacecat-shared-data-access/src/models/base/schema.js b/packages/spacecat-shared-data-access/src/models/base/schema.js index 006accc1b..5bdb85074 100644 --- a/packages/spacecat-shared-data-access/src/models/base/schema.js +++ b/packages/spacecat-shared-data-access/src/models/base/schema.js @@ -156,6 +156,17 @@ class Schema { return result; } + // Internal helper: v3 schemas use `composite` keys (legacy Electro used `facets`). + static #getKeyParts(indexPart) { + if (Array.isArray(indexPart?.composite)) { + return indexPart.composite; + } + if (Array.isArray(indexPart?.facets)) { + return indexPart.facets; + } + return []; + } + getIndexByName(indexName) { return this.indexes[indexName]; } @@ -167,10 +178,10 @@ class Schema { const subKeyNames = sortKeys.slice(0, length); const index = Object.values(this.indexes).find((candidate) => { const { pk, sk } = candidate; - const allKeys = [...(pk?.facets || []), ...(sk?.facets || [])]; + const allKeys = [...Schema.#getKeyParts(pk), ...Schema.#getKeyParts(sk)]; // check if all keys in the index are in the sort keys - const pkKeys = Array.isArray(pk?.facets) ? pk.facets : []; + const pkKeys = Schema.#getKeyParts(pk); return pkKeys.every((key) => subKeyNames.includes(key)) && subKeyNames.every((key) => allKeys.includes(key)); }); @@ -246,8 +257,8 @@ class Schema { return []; } - const pkKeys = Array.isArray(index.pk?.facets) ? index.pk.facets : []; - const skKeys = Array.isArray(index.sk?.facets) ? index.sk.facets : []; + const pkKeys = Schema.#getKeyParts(index.pk); + const skKeys = Schema.#getKeyParts(index.sk); return [...pkKeys, ...skKeys]; } diff --git a/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.model.js b/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.model.js index 45c47a829..09b9f23ed 100644 --- a/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.model.js +++ b/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.model.js @@ -25,6 +25,21 @@ class FixEntitySuggestion extends BaseModel { static DEFAULT_UPDATED_BY = 'spacecat'; + getId() { + const id = super.getId(); + if (id) { + return id; + } + + const suggestionId = this.getSuggestionId(); + const fixEntityId = this.getFixEntityId(); + if (suggestionId && fixEntityId) { + return `${suggestionId}#${fixEntityId}`; + } + + return undefined; + } + /** * Generates the composite keys for the FixEntitySuggestion model. * @returns {Object} - The composite keys. diff --git a/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.schema.js b/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.schema.js index d054589cd..326743e8e 100644 --- a/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.schema.js +++ b/packages/spacecat-shared-data-access/src/models/fix-entity-suggestion/fix-entity-suggestion.schema.js @@ -23,6 +23,17 @@ Indexes Doc: https://electrodb.dev/en/modeling/indexes/ const schema = new SchemaBuilder(FixEntitySuggestion, FixEntitySuggestionCollection) .withPrimaryPartitionKeys(['suggestionId']) .withPrimarySortKeys(['fixEntityId']) + .addAttribute('fixEntitySuggestionId', { + type: 'string', + required: false, + readOnly: true, + postgrestIgnore: true, + }) + .addAttribute('updatedBy', { + type: 'string', + required: false, + postgrestIgnore: true, + }) .addReference('belongs_to', 'FixEntity') .addReference('belongs_to', 'Suggestion') .addAttribute('opportunityId', { @@ -38,6 +49,7 @@ const schema = new SchemaBuilder(FixEntitySuggestion, FixEntitySuggestionCollect .addAttribute('fixEntityCreatedDate', { type: 'string', readOnly: true, + postgrestIgnore: true, watch: ['fixEntityCreatedAt'], set: (_, { fixEntityCreatedAt }) => (fixEntityCreatedAt ? fixEntityCreatedAt.split('T')[0] : undefined), }) diff --git a/packages/spacecat-shared-data-access/src/models/key-event/key-event.collection.js b/packages/spacecat-shared-data-access/src/models/key-event/key-event.collection.js index 87cdc08ba..01053982f 100644 --- a/packages/spacecat-shared-data-access/src/models/key-event/key-event.collection.js +++ b/packages/spacecat-shared-data-access/src/models/key-event/key-event.collection.js @@ -11,6 +11,7 @@ */ import BaseCollection from '../base/base.collection.js'; +import DataAccessError from '../../errors/data-access.error.js'; /** * KeyEventCollection - A collection class responsible for managing KeyEvent entities. @@ -22,7 +23,28 @@ import BaseCollection from '../base/base.collection.js'; class KeyEventCollection extends BaseCollection { static COLLECTION_NAME = 'KeyEventCollection'; - // add custom methods here + #throwDeprecated() { + throw new DataAccessError( + 'KeyEvent is deprecated in data-access v3. Use Audit/LatestAudit and related Postgres-backed entities instead.', + this, + ); + } + + async all() { return this.#throwDeprecated(); } + + async allByIndexKeys() { return this.#throwDeprecated(); } + + async findById() { return this.#throwDeprecated(); } + + async findByIndexKeys() { return this.#throwDeprecated(); } + + async create() { return this.#throwDeprecated(); } + + async createMany() { return this.#throwDeprecated(); } + + async removeByIds() { return this.#throwDeprecated(); } + + async removeByIndexKeys() { return this.#throwDeprecated(); } } export default KeyEventCollection; diff --git a/packages/spacecat-shared-data-access/src/models/latest-audit/latest-audit.collection.js b/packages/spacecat-shared-data-access/src/models/latest-audit/latest-audit.collection.js index 6dc728305..c08527bf1 100755 --- a/packages/spacecat-shared-data-access/src/models/latest-audit/latest-audit.collection.js +++ b/packages/spacecat-shared-data-access/src/models/latest-audit/latest-audit.collection.js @@ -10,8 +10,10 @@ * governing permissions and limitations under the License. */ -import BaseCollection from '../base/base.collection.js'; +import { isNonEmptyArray } from '@adobe/spacecat-shared-utils'; +import DataAccessError from '../../errors/data-access.error.js'; import { guardId, guardString } from '../../util/index.js'; +import BaseCollection from '../base/base.collection.js'; /** * LatestAuditCollection - A collection class responsible for managing LatestAudit entities. @@ -23,8 +25,80 @@ import { guardId, guardString } from '../../util/index.js'; class LatestAuditCollection extends BaseCollection { static COLLECTION_NAME = 'LatestAuditCollection'; - async create(item) { - return super.create(item, { upsert: true }); + // LatestAudit is a virtual view in v3; writes are not supported. + // eslint-disable-next-line class-methods-use-this + async create() { + throw new DataAccessError('LatestAudit is derived from Audit in v3 and cannot be created directly', this); + } + + // eslint-disable-next-line class-methods-use-this + async createMany() { + throw new DataAccessError('LatestAudit is derived from Audit in v3 and cannot be created directly', this); + } + + static #groupLatest(items, groupFields) { + const grouped = new Map(); + items.forEach((item) => { + const key = groupFields.map((field) => item.record[field]).join('#'); + const existing = grouped.get(key); + if (!existing || existing.getAuditedAt() < item.getAuditedAt()) { + grouped.set(key, item); + } + }); + return [...grouped.values()]; + } + + async #allAuditsByKeys(keys, options = {}) { + const auditCollection = this.entityRegistry.getCollection('AuditCollection'); + return auditCollection.allByIndexKeys(keys, { + ...options, + fetchAllPages: true, + order: 'desc', + returnCursor: false, + }); + } + + async all(sortKeys = {}, options = {}) { + return this.allByIndexKeys(sortKeys, options); + } + + async findByAll(sortKeys = {}, options = {}) { + return this.findByIndexKeys(sortKeys, options); + } + + async findByIndexKeys(keys, options = {}) { + const auditCollection = this.entityRegistry.getCollection('AuditCollection'); + + if (keys.siteId && keys.auditType) { + return auditCollection.findByIndexKeys(keys, { ...options, order: 'desc' }); + } + + // For single-key lookups, we only need the latest row, not all pages. + return auditCollection.findByIndexKeys(keys, { ...options, order: 'desc' }); + } + + async allByIndexKeys(keys, options = {}) { + const audits = await this.#allAuditsByKeys(keys, options); + if (!isNonEmptyArray(audits)) { + return options.returnCursor ? { data: [], cursor: null } : []; + } + + let groupFields = ['siteId', 'auditType']; + if (keys.siteId && !keys.auditType) { + groupFields = ['auditType']; + } else if (!keys.siteId && keys.auditType) { + groupFields = ['siteId']; + } + + const latest = LatestAuditCollection.#groupLatest(audits, groupFields); + // Preserve v2 behavior: default order is descending (most recent first). + const ascending = options.order === 'asc'; + latest.sort((a, b) => (ascending + ? a.getAuditedAt().localeCompare(b.getAuditedAt()) + : b.getAuditedAt().localeCompare(a.getAuditedAt()))); + const limited = Number.isInteger(options.limit) ? latest.slice(0, options.limit) : latest; + + return options.returnCursor ? { data: limited, cursor: null } : limited; } async allByAuditType(auditType) { diff --git a/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.collection.js b/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.collection.js index eafc5c86b..6bc20129c 100644 --- a/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.collection.js +++ b/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.collection.js @@ -42,6 +42,44 @@ class ScrapeJobCollection extends BaseCollection { }, }); } + + async allByBaseURLAndProcessingTypeAndOptEnableJavascriptAndOptHideConsentBanner( + baseURL, + processingType, + optEnableJavascript, + optHideConsentBanner, + options = {}, + ) { + const keys = { + baseURL, + processingType, + optEnableJavascript, + optHideConsentBanner, + }; + + return this.allByIndexKeys(keys, options); + } + + async findByBaseURLAndProcessingTypeAndOptEnableJavascriptAndOptHideConsentBanner( + baseURL, + processingType, + optEnableJavascript, + optHideConsentBanner, + options = {}, + ) { + const jobs = await this + .allByBaseURLAndProcessingTypeAndOptEnableJavascriptAndOptHideConsentBanner( + baseURL, + processingType, + optEnableJavascript, + optHideConsentBanner, + { ...options, limit: options.limit || 1 }, + ); + if (Array.isArray(jobs)) { + return jobs[0] || null; + } + return jobs || null; + } } export default ScrapeJobCollection; diff --git a/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.schema.js b/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.schema.js index 519bdbc1d..3d63811e7 100755 --- a/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.schema.js +++ b/packages/spacecat-shared-data-access/src/models/scrape-job/scrape-job.schema.js @@ -130,17 +130,19 @@ const schema = new SchemaBuilder(ScrapeJob, ScrapeJobCollection) }) .addAttribute('optEnableJavascript', { type: 'string', + postgrestIgnore: true, hidden: true, readOnly: true, watch: ['options'], - set: (_, { options }) => (options[ScrapeJob.ScrapeOptions.ENABLE_JAVASCRIPT] ? 'T' : 'F'), + set: (_, { options }) => (options?.[ScrapeJob.ScrapeOptions.ENABLE_JAVASCRIPT] ? 'T' : 'F'), }) .addAttribute('optHideConsentBanner', { type: 'string', + postgrestIgnore: true, hidden: true, readOnly: true, watch: ['options'], - set: (_, { options }) => (options[ScrapeJob.ScrapeOptions.HIDE_CONSENT_BANNER] ? 'T' : 'F'), + set: (_, { options }) => (options?.[ScrapeJob.ScrapeOptions.HIDE_CONSENT_BANNER] ? 'T' : 'F'), }) // access pattern: get all jobs sorted by startedAt .addAllIndex(['startedAt']) diff --git a/packages/spacecat-shared-data-access/src/models/site-enrollment/site-enrollment.collection.js b/packages/spacecat-shared-data-access/src/models/site-enrollment/site-enrollment.collection.js index 63bbb671d..52d098827 100644 --- a/packages/spacecat-shared-data-access/src/models/site-enrollment/site-enrollment.collection.js +++ b/packages/spacecat-shared-data-access/src/models/site-enrollment/site-enrollment.collection.js @@ -22,7 +22,17 @@ import BaseCollection from '../base/base.collection.js'; class SiteEnrollmentCollection extends BaseCollection { static COLLECTION_NAME = 'SiteEnrollmentCollection'; - // add your custom collection methods here + async create(item, options = {}) { + if (item?.siteId && item?.entitlementId) { + const existing = await this.findByIndexKeys({ + siteId: item.siteId, + entitlementId: item.entitlementId, + }); + if (existing) return existing; + } + + return super.create(item, options); + } } export default SiteEnrollmentCollection; diff --git a/packages/spacecat-shared-data-access/src/models/site/site.schema.js b/packages/spacecat-shared-data-access/src/models/site/site.schema.js index 70b61f2e0..31134d153 100755 --- a/packages/spacecat-shared-data-access/src/models/site/site.schema.js +++ b/packages/spacecat-shared-data-access/src/models/site/site.schema.js @@ -102,6 +102,7 @@ const schema = new SchemaBuilder(Site, SiteCollection) }) .addAttribute('gitHubURL', { type: 'string', + postgrestField: 'github_url', validate: (value) => !value || isValidUrl(value), }) .addAttribute('deliveryConfig', { diff --git a/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.collection.js b/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.collection.js index 285c1cca8..8282a6558 100644 --- a/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.collection.js +++ b/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.collection.js @@ -21,8 +21,6 @@ import BaseCollection from '../base/base.collection.js'; */ class TrialUserCollection extends BaseCollection { static COLLECTION_NAME = 'TrialUserCollection'; - - // add custom methods here } export default TrialUserCollection; diff --git a/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.schema.js b/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.schema.js index b2342b70c..153ad30fc 100644 --- a/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.schema.js +++ b/packages/spacecat-shared-data-access/src/models/trial-user/trial-user.schema.js @@ -54,6 +54,10 @@ const schema = new SchemaBuilder(TrialUser, TrialUserCollection) type: 'any', validate: (value) => !value || isObject(value), }) - .addAllIndex(['emailId']); + .addAllIndex(['emailId']) + .addIndex( + { composite: ['organizationId'] }, + { composite: ['updatedAt'] }, + ); export default schema.build(); diff --git a/packages/spacecat-shared-data-access/src/service/index.d.ts b/packages/spacecat-shared-data-access/src/service/index.d.ts index c3b39f1e1..6afa3ef55 100644 --- a/packages/spacecat-shared-data-access/src/service/index.d.ts +++ b/packages/spacecat-shared-data-access/src/service/index.d.ts @@ -11,10 +11,16 @@ */ interface DataAccessConfig { - tableNameData: string; + postgrestUrl: string; + postgrestSchema?: string; + postgrestApiKey?: string; + postgrestHeaders?: object; + s3Bucket?: string; + region?: string; } export function createDataAccess( config: DataAccessConfig, logger: object, + client?: object, ): object; diff --git a/packages/spacecat-shared-data-access/src/service/index.js b/packages/spacecat-shared-data-access/src/service/index.js index 42fdb7031..4f4208542 100644 --- a/packages/spacecat-shared-data-access/src/service/index.js +++ b/packages/spacecat-shared-data-access/src/service/index.js @@ -10,10 +10,8 @@ * governing permissions and limitations under the License. */ -import { DynamoDB } from '@aws-sdk/client-dynamodb'; -import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb'; import { S3Client } from '@aws-sdk/client-s3'; -import { Service } from 'electrodb'; +import { PostgrestClient } from '@supabase/postgrest-js'; import { instrumentAWSClient } from '@adobe/spacecat-shared-utils'; import { EntityRegistry } from '../models/index.js'; @@ -23,47 +21,31 @@ export * from '../errors/index.js'; export * from '../models/index.js'; export * from '../util/index.js'; -let defaultDynamoDBClient; -const documentClientCache = new WeakMap(); - -const createRawClient = (client = undefined) => { - const rawClient = client || (() => { - if (!defaultDynamoDBClient) { - defaultDynamoDBClient = new DynamoDB(); - } - return defaultDynamoDBClient; - })(); - - let documentClient = documentClientCache.get(rawClient); - if (!documentClient) { - documentClient = DynamoDBDocument.from(instrumentAWSClient(rawClient), { - marshallOptions: { - convertEmptyValues: true, - removeUndefinedValues: true, - }, - }); - documentClientCache.set(rawClient, documentClient); +const createPostgrestService = (config, client = undefined) => { + if (client) { + return client; } - return documentClient; -}; + const { + postgrestUrl, + postgrestSchema = 'public', + postgrestApiKey, + postgrestHeaders = {}, + } = config; + + if (!postgrestUrl) { + throw new Error('postgrestUrl is required to create data access'); + } -const createElectroService = (client, config, log) => { - const { tableNameData: table } = config; - /* c8 ignore start */ - const logger = (event) => { - log.debug(JSON.stringify(event, null, 4)); + const headers = { + ...postgrestHeaders, + ...postgrestApiKey ? { apikey: postgrestApiKey, Authorization: `Bearer ${postgrestApiKey}` } : {}, }; - /* c8 ignore end */ - - return new Service( - EntityRegistry.getEntities(), - { - client, - table, - logger, - }, - ); + + return new PostgrestClient(postgrestUrl, { + schema: postgrestSchema, + headers, + }); }; /** @@ -91,30 +73,29 @@ const createS3Service = (config) => { * Creates a services dictionary containing all datastore services. * Each collection can declare which service it needs via its DATASTORE_TYPE. * - * @param {object} electroService - The ElectroDB service for DynamoDB operations + * @param {PostgrestClient} postgrestService - PostgREST client * @param {object} config - Configuration object - * @returns {object} Services dictionary with dynamo and s3 services + * @returns {object} Services dictionary with postgrest and s3 services */ -const createServices = (electroService, config) => ({ - dynamo: electroService, +const createServices = (postgrestService, config) => ({ + postgrest: postgrestService, s3: createS3Service(config), }); /** - * Creates a data access layer for interacting with DynamoDB using ElectroDB. + * Creates a data access layer for interacting with Postgres via PostgREST. * - * @param {{tableNameData: string, s3Bucket?: string, region?: string}} config - Configuration - * object containing table name and optional S3 configuration + * @param {{postgrestUrl: string, postgrestSchema?: string, postgrestApiKey?: string, + * postgrestHeaders?: object, s3Bucket?: string, region?: string}} config - Configuration object * @param {object} log - Logger instance, defaults to console - * @param {DynamoDB} [client] - Optional custom DynamoDB client instance + * @param {PostgrestClient} [client] - Optional custom Postgrest client instance * @returns {object} Data access collections for interacting with entities */ export const createDataAccess = (config, log = console, client = undefined) => { registerLogger(log); - const rawClient = createRawClient(client); - const electroService = createElectroService(rawClient, config, log); - const services = createServices(electroService, config); + const postgrestService = createPostgrestService(config, client); + const services = createServices(postgrestService, config); const entityRegistry = new EntityRegistry(services, config, log); return entityRegistry.getCollections(); diff --git a/packages/spacecat-shared-data-access/src/util/index.js b/packages/spacecat-shared-data-access/src/util/index.js index 9c5a7000d..6bcf313f6 100644 --- a/packages/spacecat-shared-data-access/src/util/index.js +++ b/packages/spacecat-shared-data-access/src/util/index.js @@ -25,6 +25,7 @@ export { export { registerLogger, getLogger, + resetLoggerRegistry, } from './logger-registry.js'; /** @@ -33,6 +34,6 @@ export { * @enum {string} */ export const DATASTORE_TYPE = Object.freeze({ - DYNAMO: 'dynamo', + POSTGREST: 'postgrest', S3: 's3', }); diff --git a/packages/spacecat-shared-data-access/src/util/logger-registry.js b/packages/spacecat-shared-data-access/src/util/logger-registry.js index 70e923f82..ccb98f4a4 100644 --- a/packages/spacecat-shared-data-access/src/util/logger-registry.js +++ b/packages/spacecat-shared-data-access/src/util/logger-registry.js @@ -29,6 +29,10 @@ class LoggerRegistry { getLogger() { return this.#logger || console; } + + reset() { + this.#logger = null; + } } /** @@ -48,3 +52,11 @@ export function registerLogger(logger) { export function getLogger() { return LoggerRegistry.getInstance().getLogger(); } + +/** + * Resets the registered logger to default console logger. + * Primarily intended for test isolation. + */ +export function resetLoggerRegistry() { + LoggerRegistry.getInstance().reset(); +} diff --git a/packages/spacecat-shared-data-access/src/util/patcher.js b/packages/spacecat-shared-data-access/src/util/patcher.js old mode 100755 new mode 100644 index d3c7a9e1c..81173035e --- a/packages/spacecat-shared-data-access/src/util/patcher.js +++ b/packages/spacecat-shared-data-access/src/util/patcher.js @@ -10,7 +10,7 @@ * governing permissions and limitations under the License. */ -import { isNonEmptyArray, isObject } from '@adobe/spacecat-shared-utils'; +import { isObject } from '@adobe/spacecat-shared-utils'; import ValidationError from '../errors/validation.error.js'; @@ -26,13 +26,6 @@ import { guardString, } from './index.js'; -/** - * Checks if a property is read-only and throws an error if it is. - * @param {string} propertyName - The name of the property to check. - * @param {Object} attribute - The attribute to check. - * @throws {Error} - Throws an error if the property is read-only. - * @private - */ const checkReadOnly = (propertyName, attribute) => { if (attribute.readOnly) { throw new ValidationError(`The property ${propertyName} is read-only and cannot be updated.`); @@ -48,137 +41,68 @@ const checkUpdatesAllowed = (schema) => { class Patcher { /** * Creates a new Patcher instance for an entity. - * @param {object} entity - The entity backing the record. + * @param {object} collection - The backing collection instance. * @param {Schema} schema - The schema for the entity. * @param {object} record - The record to patch. */ - constructor(entity, schema, record) { - this.entity = entity; + constructor(collection, schema, record) { + this.collection = collection; this.schema = schema; this.record = record; this.entityName = schema.getEntityName(); - this.model = entity.model; this.idName = schema.getIdName(); - // holds the previous value of updated attributes this.previous = {}; - - // holds the updates to the attributes this.updates = {}; + this.legacyEntity = collection && typeof collection.patch === 'function' + ? collection + : null; this.patchRecord = null; } - /** - * Checks if a property is nullable. - * @param {string} propertyName - The name of the property to check. - * @return {boolean} True if the property is nullable, false otherwise. - * @private - */ #isAttributeNullable(propertyName) { - return !this.model.schema.attributes[propertyName]?.required; - } - - /** - * Composite keys have to be provided to ElectroDB in order to update a record across - * multiple indexes. This method retrieves the composite values for the entity from - * the schema indexes and filters out any values that are being updated. - * @return {{}} - An object containing the composite values for the entity. - * @private - */ - #getCompositeValues() { - const { indexes } = this.model; - const result = {}; - - const processComposite = (index, compositeType) => { - const compositeArray = index[compositeType]?.facets; - if (isNonEmptyArray(compositeArray)) { - compositeArray.forEach((compositeKey) => { - if ( - !Object.keys(this.updates).includes(compositeKey) - && this.record[compositeKey] !== undefined - ) { - result[compositeKey] = this.record[compositeKey]; - } - }); - } - }; - - Object.values(indexes).forEach((index) => { - processComposite(index, 'pk'); - processComposite(index, 'sk'); - }); - - return result; + return !this.schema.getAttribute(propertyName)?.required; } - /** - * Sets a property on the record and updates the patch record. - * @param {string} attribute - The attribute to set. - * @param {any} value - The value to set for the property. - * @private - */ - #set(attribute, value) { - this.patchRecord = this.#getPatchRecord().set({ [attribute.name]: value }); - - const transmutedValue = attribute.get(value, () => {}); + #set(propertyName, attribute, value) { const update = { - [attribute.name]: { - previous: this.record[attribute.name], - current: transmutedValue, + [propertyName]: { + previous: this.record[propertyName], + current: value, }, }; - // update the record with the update value for later save - this.record[attribute.name] = transmutedValue; - - // remember the update operation with the previous and current value + const hydratedValue = typeof attribute.get === 'function' + ? attribute.get(value) + : value; + this.record[propertyName] = hydratedValue; this.updates = { ...this.updates, ...update }; + + if (this.legacyEntity) { + if (!this.patchRecord) { + this.patchRecord = this.legacyEntity.patch(this.#getPrimaryKeyValues()); + } + this.patchRecord = this.patchRecord.set({ [propertyName]: value }); + } } - /** - * Gets the primary key values for the entity from the schema's primary index. - * This supports composite primary keys (e.g., siteId + url). - * @return {Object} - An object containing the primary key values. - * @private - */ #getPrimaryKeyValues() { const primaryKeys = this.schema.getIndexKeys('primary'); - if (isNonEmptyArray(primaryKeys)) { + if (Array.isArray(primaryKeys) && primaryKeys.length > 0) { return primaryKeys.reduce((acc, key) => { acc[key] = this.record[key]; return acc; }, {}); } - // Fallback to default id name return { [this.idName]: this.record[this.idName] }; } - /** - * Gets the patch record for the entity. If it does not exist, it will be created. - * @return {Object} - The patch record for the entity. - * @private - */ - #getPatchRecord() { - if (!this.patchRecord) { - this.patchRecord = this.entity.patch(this.#getPrimaryKeyValues()); - } - return this.patchRecord; - } - - /** - * Patches a value for a given property on the entity. This method will validate the value - * against the schema and throw an error if the value is invalid. If the value is declared as - * a reference, it will validate the ID format. - * @param {string} propertyName - The name of the property to patch. - * @param {any} value - The value to patch. - * @param {boolean} [isReference=false] - Whether the value is a reference to another entity. - */ patchValue(propertyName, value, isReference = false) { checkUpdatesAllowed(this.schema); - const attribute = this.model.schema?.attributes[propertyName]; + const attribute = this.schema.getAttribute(propertyName); if (!isObject(attribute)) { throw new ValidationError(`Property ${propertyName} does not exist on entity ${this.entityName}.`); } @@ -189,6 +113,8 @@ class Patcher { if (isReference) { guardId(propertyName, value, this.entityName, nullable); + } else if (Array.isArray(attribute.type)) { + guardEnum(propertyName, value, attribute.type, this.entityName, nullable); } else { switch (attribute.type) { case 'any': @@ -220,14 +146,9 @@ class Patcher { } } - this.#set(attribute, value); + this.#set(propertyName, attribute, value); } - /** - * Saves the current state of the entity to the database. - * @return {Promise} - * @throws {Error} - Throws an error if the save operation fails. - */ async save() { checkUpdatesAllowed(this.schema); @@ -235,11 +156,42 @@ class Patcher { return; } - const compositeValues = this.#getCompositeValues(); - await this.#getPatchRecord() - .composite(compositeValues) - .go(); - this.record.updatedAt = new Date().toISOString(); + const previousUpdatedAt = this.record.updatedAt; + let nextUpdatedAt = new Date().toISOString(); + if (typeof previousUpdatedAt === 'string' && previousUpdatedAt === nextUpdatedAt) { + const previousDate = new Date(previousUpdatedAt); + if (!Number.isNaN(previousDate.getTime())) { + nextUpdatedAt = new Date(previousDate.getTime() + 1000).toISOString(); + } + } + this.record.updatedAt = nextUpdatedAt; + this.updates.updatedAt = { + previous: previousUpdatedAt, + current: nextUpdatedAt, + }; + + const keys = this.#getPrimaryKeyValues(); + const updates = Object.keys(this.updates).reduce((acc, key) => { + acc[key] = this.updates[key].current; + return acc; + }, {}); + + if (this.collection + && typeof this.collection.applyUpdateWatchers === 'function' + && typeof this.collection.updateByKeys === 'function') { + const watched = this.collection.applyUpdateWatchers(this.record, updates); + this.record = watched.record; + await this.collection.updateByKeys(keys, watched.updates); + return; + } + + if (this.patchRecord && typeof this.patchRecord.go === 'function') { + this.patchRecord = this.patchRecord.set({ updatedAt: nextUpdatedAt }); + await this.patchRecord.go(); + return; + } + + throw new ValidationError(`No persistence strategy available for ${this.entityName}`); } getUpdates() { diff --git a/packages/spacecat-shared-data-access/src/util/postgrest.utils.js b/packages/spacecat-shared-data-access/src/util/postgrest.utils.js new file mode 100644 index 000000000..d88e5542c --- /dev/null +++ b/packages/spacecat-shared-data-access/src/util/postgrest.utils.js @@ -0,0 +1,203 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import pluralize from 'pluralize'; + +const DEFAULT_PAGE_SIZE = 1000; + +const ENTITY_TABLE_OVERRIDES = { + LatestAudit: 'audits', +}; + +const camelToSnake = (value) => value.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase(); + +const snakeToCamel = (value) => value.replace(/_([a-z])/g, (_, c) => c.toUpperCase()); + +const entityToTableName = (entityName) => { + const override = ENTITY_TABLE_OVERRIDES[entityName]; + if (override) { + return override; + } + return camelToSnake(pluralize.plural(entityName)); +}; + +const encodeCursor = (offset) => Buffer.from(JSON.stringify({ offset }), 'utf-8').toString('base64'); + +const decodeCursor = (cursor) => { + if (!cursor) { + return 0; + } + + try { + const decoded = JSON.parse(Buffer.from(cursor, 'base64').toString('utf-8')); + return Number.isInteger(decoded.offset) && decoded.offset >= 0 ? decoded.offset : 0; + } catch (e) { + return 0; + } +}; + +const createFieldMaps = (schema) => { + const toDbMap = {}; + const toModelMap = {}; + const attributes = schema.getAttributes(); + const idName = typeof schema.getIdName === 'function' ? schema.getIdName() : undefined; + Object.keys(attributes).forEach((modelField) => { + const attribute = attributes[modelField] || {}; + if (attribute.postgrestIgnore) { + return; + } + const dbField = attribute.postgrestField + || (modelField === idName && modelField !== 'id' ? 'id' : camelToSnake(modelField)); + toDbMap[modelField] = dbField; + toModelMap[dbField] = modelField; + }); + + const idAttribute = idName ? attributes[idName] : undefined; + if (idName + && idName !== 'id' + && idAttribute + && !idAttribute.postgrestIgnore) { + toDbMap[idName] = 'id'; + toModelMap.id = idName; + } + + return { toDbMap, toModelMap }; +}; + +const toDbField = (field, map) => map[field] || camelToSnake(field); + +const toModelField = (field, map) => map[field] || snakeToCamel(field); + +const toDbRecord = (record, toDbMap, options = {}) => { + const { includeUnknown = false } = options; + return Object.entries(record).reduce((acc, [key, value]) => { + if (Object.prototype.hasOwnProperty.call(toDbMap, key)) { + acc[toDbMap[key]] = value; + return acc; + } + + if (includeUnknown) { + acc[toDbField(key, toDbMap)] = value; + } + + return acc; + }, {}); +}; + +const looksLikeIsoDateTime = (value) => typeof value === 'string' + && /^\d{4}-\d{2}-\d{2}T/.test(value) + && /(?:Z|[+-]\d{2}:\d{2})$/.test(value); + +const normalizeModelValue = (value) => { + if (value === null) { + return undefined; + } + + // PostgREST can return jsonb null scalars as [null] for some projections/aggregations. + // We normalize this artifact to "missing" so model payloads match v2 behavior. + if (Array.isArray(value) && value.length === 1 && value[0] === null) { + return undefined; + } + + if (looksLikeIsoDateTime(value)) { + const date = new Date(value); + if (!Number.isNaN(date.getTime())) { + return date.toISOString(); + } + } + + return value; +}; + +const fromDbRecord = (record, toModelMap) => Object.entries(record).reduce((acc, [key, value]) => { + const normalized = normalizeModelValue(value); + if (normalized !== undefined) { + acc[toModelField(key, toModelMap)] = normalized; + } + return acc; +}, {}); + +const applyWhere = (query, whereFn, toDbMap) => { + if (typeof whereFn !== 'function') { + return query; + } + + const attrs = new Proxy({}, { + get: (_, prop) => toDbField(String(prop), toDbMap), + }); + + const op = { + eq: (field, value) => ({ type: 'eq', field, value }), + ne: (field, value) => ({ type: 'ne', field, value }), + gt: (field, value) => ({ type: 'gt', field, value }), + gte: (field, value) => ({ type: 'gte', field, value }), + lt: (field, value) => ({ type: 'lt', field, value }), + lte: (field, value) => ({ type: 'lte', field, value }), + in: (field, value) => ({ type: 'in', field, value }), + is: (field, value) => ({ type: 'is', field, value }), + like: (field, value) => ({ type: 'like', field, value }), + ilike: (field, value) => ({ type: 'ilike', field, value }), + contains: (field, value) => ({ type: 'contains', field, value }), + }; + + const expression = whereFn(attrs, op); + if (!expression || typeof expression !== 'object') { + return query; + } + + switch (expression.type) { + case 'eq': + return query.eq(expression.field, expression.value); + case 'ne': + return query.neq(expression.field, expression.value); + case 'gt': + return query.gt(expression.field, expression.value); + case 'gte': + return query.gte(expression.field, expression.value); + case 'lt': + return query.lt(expression.field, expression.value); + case 'lte': + return query.lte(expression.field, expression.value); + case 'in': + return query.in( + expression.field, + Array.isArray(expression.value) ? expression.value : [expression.value], + ); + case 'is': + return query.is(expression.field, expression.value); + case 'like': + return query.like(expression.field, expression.value); + case 'ilike': + return query.ilike(expression.field, expression.value); + case 'contains': { + const value = Array.isArray(expression.value) ? expression.value : [expression.value]; + return query.contains(expression.field, value); + } + default: + throw new Error(`Unsupported where operator: ${expression.type}`); + } +}; + +export { + DEFAULT_PAGE_SIZE, + applyWhere, + camelToSnake, + createFieldMaps, + decodeCursor, + encodeCursor, + entityToTableName, + fromDbRecord, + snakeToCamel, + toDbField, + toDbRecord, + toModelField, +}; diff --git a/packages/spacecat-shared-data-access/test/fixtures/sites.fixture.js b/packages/spacecat-shared-data-access/test/fixtures/sites.fixture.js index 545c5a6a3..2bd65e426 100644 --- a/packages/spacecat-shared-data-access/test/fixtures/sites.fixture.js +++ b/packages/spacecat-shared-data-access/test/fixtures/sites.fixture.js @@ -23,7 +23,6 @@ const sites = [ isLive: true, isSandbox: false, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', config: { imports: [ { @@ -86,7 +85,6 @@ const sites = [ isLive: true, isSandbox: false, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -127,7 +125,6 @@ const sites = [ organizationId: '5d42bdf8-b65d-4de8-b849-a4f28ebc93cd', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -170,7 +167,6 @@ const sites = [ isLive: true, isSandbox: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -211,7 +207,6 @@ const sites = [ organizationId: '757ceb98-05c8-4e07-bb23-bc722115b2b0', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -252,7 +247,6 @@ const sites = [ organizationId: '5d42bdf8-b65d-4de8-b849-a4f28ebc93cd', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -293,7 +287,6 @@ const sites = [ organizationId: '4854e75e-894b-4a74-92bf-d674abad1423', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -334,7 +327,6 @@ const sites = [ organizationId: '757ceb98-05c8-4e07-bb23-bc722115b2b0', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -375,7 +367,6 @@ const sites = [ organizationId: '5d42bdf8-b65d-4de8-b849-a4f28ebc93cd', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: @@ -416,7 +407,6 @@ const sites = [ organizationId: '4854e75e-894b-4a74-92bf-d674abad1423', isLive: true, isLiveToggledAt: '2024-11-29T07:45:55.952Z', - GSI1PK: 'ALL_SITES', createdAt: '2024-11-29T07:45:55.952Z', updatedAt: '2024-11-29T07:45:55.952Z', config: diff --git a/packages/spacecat-shared-data-access/test/it/api-key/api-key.test.js b/packages/spacecat-shared-data-access/test/it/api-key/api-key.test.js index 6d55de498..25fdbc47a 100644 --- a/packages/spacecat-shared-data-access/test/it/api-key/api-key.test.js +++ b/packages/spacecat-shared-data-access/test/it/api-key/api-key.test.js @@ -107,7 +107,7 @@ describe('ApiKey IT', async () => { const data = { name: 'Updated API Key', expiresAt: '2024-12-06T08:35:24.125Z', - hashedApiKey: '1234', + hashedApiKey: 'updated-key-1234', imsOrgId: '1234@AdobeOrg', imsUserId: '1234', scopes: [ diff --git a/packages/spacecat-shared-data-access/test/it/async-job/async-job.test.js b/packages/spacecat-shared-data-access/test/it/async-job/async-job.test.js index 8b52a9d1f..1f26db030 100644 --- a/packages/spacecat-shared-data-access/test/it/async-job/async-job.test.js +++ b/packages/spacecat-shared-data-access/test/it/async-job/async-job.test.js @@ -14,7 +14,6 @@ import { expect, use } from 'chai'; import chaiAsPromised from 'chai-as-promised'; -import { ElectroValidationError } from 'electrodb'; import AsyncJobModel from '../../../src/models/async-job/async-job.model.js'; import { getDataAccess } from '../util/db.js'; import { seedDatabase } from '../util/seed.js'; @@ -85,8 +84,8 @@ describe('AsyncJob IT', async () => { const data = { ...newJobData, status: 'INVALID_STATUS' }; await AsyncJob.create(data).catch((err) => { expect(err).to.be.instanceOf(DataAccessError); - expect(err.cause).to.be.instanceOf(ElectroValidationError); - expect(err.cause.message).to.contain('Invalid value'); + expect(err.cause).to.exist; + expect(err.cause.message).to.match(/status is invalid|Invalid value/); }); }); }); diff --git a/packages/spacecat-shared-data-access/test/it/consumer/consumer.test.js b/packages/spacecat-shared-data-access/test/it/consumer/consumer.test.js index fe450a5d5..65a36adf5 100644 --- a/packages/spacecat-shared-data-access/test/it/consumer/consumer.test.js +++ b/packages/spacecat-shared-data-access/test/it/consumer/consumer.test.js @@ -108,7 +108,6 @@ describe('Consumer IT', async () => { const updatedConsumer = await Consumer.findById(consumer.getId()); expect(updatedConsumer.getId()).to.equal(consumer.getId()); expect(updatedConsumer.record.createdAt).to.equal(consumer.record.createdAt); - expect(updatedConsumer.record.updatedAt).to.not.equal(consumer.record.updatedAt); expect( sanitizeIdAndAuditFields('Consumer', updatedConsumer.toJSON()), ).to.eql( @@ -131,7 +130,6 @@ describe('Consumer IT', async () => { expect(updatedConsumer.getId()).to.equal(consumer.getId()); expect(updatedConsumer.record.createdAt).to.equal(consumer.record.createdAt); - expect(updatedConsumer.record.updatedAt).to.not.equal(consumer.record.updatedAt); expect( sanitizeIdAndAuditFields('Consumer', updatedConsumer.toJSON()), ).to.eql( diff --git a/packages/spacecat-shared-data-access/test/it/entitlement/entitlement.test.js b/packages/spacecat-shared-data-access/test/it/entitlement/entitlement.test.js index 273124c05..dd95caef6 100644 --- a/packages/spacecat-shared-data-access/test/it/entitlement/entitlement.test.js +++ b/packages/spacecat-shared-data-access/test/it/entitlement/entitlement.test.js @@ -116,7 +116,6 @@ describe('Entitlement IT', async () => { const updatedEntitlement = await Entitlement.findById(entitlement.getId()); expect(updatedEntitlement.getId()).to.equal(entitlement.getId()); expect(updatedEntitlement.record.createdAt).to.equal(entitlement.record.createdAt); - expect(updatedEntitlement.record.updatedAt).to.not.equal(entitlement.record.updatedAt); expect( sanitizeIdAndAuditFields('Entitlement', updatedEntitlement.toJSON()), ).to.eql( @@ -139,7 +138,6 @@ describe('Entitlement IT', async () => { expect(updatedEntitlement.getId()).to.equal(entitlement.getId()); expect(updatedEntitlement.record.createdAt).to.equal(entitlement.record.createdAt); - expect(updatedEntitlement.record.updatedAt).to.not.equal(entitlement.record.updatedAt); expect( sanitizeIdAndAuditFields('Entitlement', updatedEntitlement.toJSON()), ).to.eql( diff --git a/packages/spacecat-shared-data-access/test/it/fix-entity/fix-entity.test.js b/packages/spacecat-shared-data-access/test/it/fix-entity/fix-entity.test.js index d27bea1a5..794fb5eaf 100644 --- a/packages/spacecat-shared-data-access/test/it/fix-entity/fix-entity.test.js +++ b/packages/spacecat-shared-data-access/test/it/fix-entity/fix-entity.test.js @@ -241,19 +241,20 @@ describe('FixEntity IT', async () => { }); }); it('gets suggestions for a fix entity', async () => { - const fixEntity = sampleData.fixEntities[0]; + const fixEntity = await FixEntity.findById(sampleData.fixEntities[1].getId()); - // First, set up some suggestions for this fix entity - const suggestionsToSet = [ - sampleData.suggestions[0], - sampleData.suggestions[1], - ]; + const suggestionsForOpportunity = await Suggestion.allByOpportunityId( + fixEntity.getOpportunityId(), + ); + const suggestionsToSet = suggestionsForOpportunity.slice(0, 2); - const opportunity = { - getId: () => fixEntity.getOpportunityId(), - }; + expect(suggestionsToSet).to.have.length(2); - await FixEntity.setSuggestionsForFixEntity(opportunity.getId(), fixEntity, suggestionsToSet); + await FixEntity.setSuggestionsForFixEntity( + fixEntity.getOpportunityId(), + fixEntity, + suggestionsToSet, + ); // Test the model method const suggestions = await fixEntity.getSuggestions(); diff --git a/packages/spacecat-shared-data-access/test/it/fixtures.js b/packages/spacecat-shared-data-access/test/it/fixtures.js index 8cc6368c6..9a9544652 100644 --- a/packages/spacecat-shared-data-access/test/it/fixtures.js +++ b/packages/spacecat-shared-data-access/test/it/fixtures.js @@ -1,5 +1,5 @@ /* - * Copyright 2024 Adobe. All rights reserved. + * Copyright 2026 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 @@ -10,72 +10,154 @@ * governing permissions and limitations under the License. */ -// eslint-disable-next-line import/no-extraneous-dependencies -import { spawn } from 'dynamo-db-local'; +import { promises as fs } from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { spawn } from 'node:child_process'; -import { sleep } from '../unit/util.js'; +const filePath = fileURLToPath(import.meta.url); +const directoryPath = path.dirname(filePath); +const REPO_ROOT = path.resolve(directoryPath, '..', '..'); +const COMPOSE_FILE = path.resolve(directoryPath, 'postgrest', 'docker-compose.yml'); +const TENANT_SEED_DIR = path.resolve(directoryPath, 'seed', 'tenants'); +const IT_POSTGREST_PORT = process.env.IT_POSTGREST_PORT || '3300'; +const POSTGREST_URL = `http://127.0.0.1:${IT_POSTGREST_PORT}`; +const DBMATE_URL = 'postgres://postgres:postgres@db:5432/mysticat?sslmode=disable'; +const IT_SEED_MODE = process.env.IT_SEED_MODE || 'none'; -let dynamoDbLocalProcess = null; +const run = (cmd, args, options = {}) => new Promise((resolve, reject) => { + const child = spawn(cmd, args, { + cwd: REPO_ROOT, + stdio: ['pipe', 'pipe', 'pipe'], + ...options, + }); + + let stdout = ''; + let stderr = ''; -async function waitForDynamoDBStartup(url, timeout = 20000, interval = 500) { - const startTime = Date.now(); - while (Date.now() - startTime < timeout) { + child.stdout.on('data', (data) => { + stdout += data.toString(); + }); + + child.stderr.on('data', (data) => { + stderr += data.toString(); + }); + + child.on('error', reject); + child.on('close', (code) => { + if (code === 0) { + resolve({ stdout, stderr }); + return; + } + + reject(new Error(`${cmd} ${args.join(' ')} failed with code ${code}\n${stderr || stdout}`)); + }); + + if (options.input) { + child.stdin.write(options.input); + } + child.stdin.end(); +}); + +const runCompose = async (args, options = {}) => run('docker', ['compose', '-f', COMPOSE_FILE, ...args], options); + +const waitForPostgrest = async (timeoutMs = 120_000, intervalMs = 1_000) => { + const start = Date.now(); + while ((Date.now() - start) < timeoutMs) { try { // eslint-disable-next-line no-await-in-loop - const response = await fetch(url); - if (response.status === 400) { + const response = await fetch(`${POSTGREST_URL}/`); + if (response.ok) { return; } - } catch (error) { - console.log('DynamoDB Local not yet started', error.message); + } catch (e) { + // ignore while booting } + // eslint-disable-next-line no-await-in-loop - await sleep(interval); + await new Promise((resolve) => { + setTimeout(resolve, intervalMs); + }); } - throw new Error('DynamoDB Local did not start within the expected time'); -} -/** - * This function is called once before any tests are executed. It is used to start - * any services that are required for the tests, such as a local DynamoDB instance. - * See https://mochajs.org/#global-fixtures - * @return {Promise} - */ -export async function mochaGlobalSetup() { - console.log('mochaGlobalSetup'); - - process.env.AWS_REGION = 'local'; - process.env.AWS_ENDPOINT_URL_DYNAMODB = 'http://127.0.0.1:8000'; - process.env.AWS_DEFAULT_REGION = 'local'; - process.env.AWS_ACCESS_KEY_ID = 'dummy'; - process.env.AWS_SECRET_ACCESS_KEY = 'dummy'; - - dynamoDbLocalProcess = spawn({ - detached: true, - stdio: 'inherit', - port: 8000, - sharedDb: true, - }); + throw new Error(`PostgREST did not become ready at ${POSTGREST_URL} within ${timeoutMs}ms`); +}; - await waitForDynamoDBStartup('http://127.0.0.1:8000'); +const runSql = async (sql, sourceLabel) => { + if (!sql || !sql.trim()) { + return; + } - process.on('SIGINT', () => { - if (dynamoDbLocalProcess) { - dynamoDbLocalProcess.kill(); - } - process.exit(); - }); + try { + await runCompose([ + 'exec', + '-T', + 'db', + 'psql', + '-v', + 'ON_ERROR_STOP=1', + '-U', + 'postgres', + '-d', + 'mysticat', + ], { input: `${sql}\n` }); + } catch (error) { + throw new Error(`Failed running SQL from ${sourceLabel}: ${error.message}`); + } +}; + +const applyMigrations = async () => { + await runCompose([ + 'run', + '--rm', + 'data-service', + 'dbmate', + '-d', + 'db/migrations', + '--url', + DBMATE_URL, + 'up', + ]); +}; + +const seedTenantData = async () => { + const seedFiles = (await fs.readdir(TENANT_SEED_DIR)) + .filter((file) => file.endsWith('.sql')) + .sort(); + + for (const file of seedFiles) { + const absolutePath = path.resolve(TENANT_SEED_DIR, file); + // eslint-disable-next-line no-await-in-loop + const sql = await fs.readFile(absolutePath, 'utf-8'); + const seedSql = [ + 'BEGIN;', + 'SET LOCAL session_replication_role = replica;', + sql, + 'COMMIT;', + ].join('\n'); + // eslint-disable-next-line no-await-in-loop + await runSql(seedSql, absolutePath); + } +}; + +export async function mochaGlobalSetup() { + process.env.POSTGREST_URL = POSTGREST_URL; + process.env.POSTGREST_SCHEMA = 'public'; + process.env.AWS_REGION = process.env.AWS_REGION || 'us-east-1'; + process.env.AWS_XRAY_SDK_ENABLED = 'false'; + + await runCompose(['down', '-v']).catch(() => {}); + await runCompose(['up', '-d', '--wait', 'db']); + await applyMigrations(); + if (IT_SEED_MODE === 'tenant-sql') { + await seedTenantData(); + } else if (IT_SEED_MODE !== 'none') { + throw new Error(`Invalid IT_SEED_MODE: ${IT_SEED_MODE}. Expected one of: none, tenant-sql`); + } + await runCompose(['up', '-d', '--wait', 'data-service']); + await waitForPostgrest(); } -/** - * This function is called once after all tests are executed. It is used to clean up - * any services that were started in mochaGlobalSetup. - * See: https://mochajs.org/#global-fixtures - * @return {Promise} - */ export async function mochaGlobalTeardown() { - console.log('mochaGlobalTeardown'); - - dynamoDbLocalProcess.kill(); - dynamoDbLocalProcess = null; + await runCompose(['down', '-v']).catch(() => {}); } diff --git a/packages/spacecat-shared-data-access/test/it/import-job/import-job.test.js b/packages/spacecat-shared-data-access/test/it/import-job/import-job.test.js index 0034efd4f..06f860c04 100644 --- a/packages/spacecat-shared-data-access/test/it/import-job/import-job.test.js +++ b/packages/spacecat-shared-data-access/test/it/import-job/import-job.test.js @@ -15,7 +15,6 @@ import { expect, use } from 'chai'; import chaiAsPromised from 'chai-as-promised'; -import { ElectroValidationError } from 'electrodb'; import ImportJobModel from '../../../src/models/import-job/import-job.model.js'; import { getDataAccess } from '../util/db.js'; import { seedDatabase } from '../util/seed.js'; @@ -94,7 +93,7 @@ describe('ImportJob IT', async () => { let importJob = await ImportJob.create(data); checkImportJob(importJob); - expect(importJob.getOptions()).to.equal(data.options); + expect(importJob.getOptions()).to.eql(data.options); data = { ...newJobData, options: { type: 'doc' } }; importJob = await ImportJob.create(data); @@ -113,7 +112,7 @@ describe('ImportJob IT', async () => { data = { ...newJobData, options: { data: 'not-an-object' } }; await ImportJob.create(data).catch((err) => { expect(err).to.be.instanceOf(DataAccessError); - expect(err.cause).to.be.instanceOf(ElectroValidationError); + expect(err.cause).to.exist; expect(err.cause.message).to.contain('Invalid value for data: not-an-object'); }); @@ -121,7 +120,7 @@ describe('ImportJob IT', async () => { data = { ...newJobData, options: { data: { } } }; await ImportJob.create(data).catch((err) => { expect(err).to.be.instanceOf(DataAccessError); - expect(err.cause).to.be.instanceOf(ElectroValidationError); + expect(err.cause).to.exist; expect(err.cause.message).to.contain('Invalid value for data'); }); }); @@ -131,7 +130,7 @@ describe('ImportJob IT', async () => { await ImportJob.create(data).catch((err) => { expect(err).to.be.instanceOf(DataAccessError); - expect(err.cause).to.be.instanceOf(ElectroValidationError); + expect(err.cause).to.exist; expect(err.cause.message).to.contain('Invalid value for type: invalid'); }); }); diff --git a/packages/spacecat-shared-data-access/test/it/key-events/key-events.test.js b/packages/spacecat-shared-data-access/test/it/key-events/key-events.test.js index 7489650b9..f303f34c5 100644 --- a/packages/spacecat-shared-data-access/test/it/key-events/key-events.test.js +++ b/packages/spacecat-shared-data-access/test/it/key-events/key-events.test.js @@ -20,80 +20,28 @@ import { seedDatabase } from '../util/seed.js'; use(chaiAsPromised); -function checkKeyEvent(keyEvent) { - expect(keyEvent).to.be.an('object'); - expect(keyEvent.getId()).to.be.a('string'); - expect(keyEvent.getCreatedAt()).to.be.a('string'); - expect(keyEvent.getUpdatedAt()).to.be.a('string'); - expect(keyEvent.getSiteId()).to.be.a('string'); - expect(keyEvent.getName()).to.be.a('string'); - expect(keyEvent.getType()).to.be.a('string'); - expect(keyEvent.getTime()).to.be.a('string'); -} - describe('KeyEvent IT', async () => { - let sampleData; let KeyEvent; - let Site; before(async function () { this.timeout(10000); - sampleData = await seedDatabase(); + await seedDatabase(); const dataAccess = getDataAccess(); KeyEvent = dataAccess.KeyEvent; - Site = dataAccess.Site; }); - it('gets all key events for a site', async () => { - const site = sampleData.sites[1]; - - const keyEvents = await KeyEvent.allBySiteId(site.getId()); - - expect(keyEvents).to.be.an('array'); - expect(keyEvents.length).to.equal(10); - - keyEvents.forEach((keyEvent) => { - expect(keyEvent.getSiteId()).to.equal(site.getId()); - checkKeyEvent(keyEvent); - }); + it('throws deprecated error when querying key events', async () => { + await expect(KeyEvent.allBySiteId('dummy-site-id')) + .to.be.rejectedWith('KeyEvent is deprecated in data-access v3'); }); - it('adds a new key event for a site', async () => { - const site = sampleData.sites[1]; - const keyEvent = await KeyEvent.create({ - siteId: site.getId(), - name: 'keyEventName', + it('throws deprecated error when creating key events', async () => { + await expect(KeyEvent.create({ + siteId: 'dummy-site-id', + name: 'deprecated-key-event', type: 'PERFORMANCE', time: '2024-12-06T08:35:24.125Z', - }); - - checkKeyEvent(keyEvent); - - expect(keyEvent.getSiteId()).to.equal(site.getId()); - - const siteWithKeyEvent = await Site.findById(site.getId()); - - const keyEvents = await siteWithKeyEvent.getKeyEvents(); - expect(keyEvents).to.be.an('array'); - expect(keyEvents.length).to.equal(11); - - const lastKeyEvent = keyEvents[0]; - checkKeyEvent(lastKeyEvent); - expect(lastKeyEvent.getId()).to.equal(keyEvent.getId()); - }); - - it('removes a key event', async () => { - const site = sampleData.sites[1]; - const keyEvents = await site.getKeyEvents(); - const keyEvent = keyEvents[0]; - - await keyEvent.remove(); - - const siteWithKeyEvent = await Site.findById(site.getId()); - - const updatedKeyEvents = await siteWithKeyEvent.getKeyEvents(); - expect(updatedKeyEvents).to.be.an('array'); - expect(updatedKeyEvents.length).to.equal(keyEvents.length - 1); + })).to.be.rejectedWith('KeyEvent is deprecated in data-access v3'); }); }); diff --git a/packages/spacecat-shared-data-access/test/it/latest-audit/latest-audit.test.js b/packages/spacecat-shared-data-access/test/it/latest-audit/latest-audit.test.js index 54a58365f..ba75053b2 100644 --- a/packages/spacecat-shared-data-access/test/it/latest-audit/latest-audit.test.js +++ b/packages/spacecat-shared-data-access/test/it/latest-audit/latest-audit.test.js @@ -85,18 +85,23 @@ describe('LatestAudit IT', async () => { it('gets all latest audits for a site', async () => { const site = sampleData.sites[1]; + const allAuditsForSite = await Audit.allBySiteId(site.getId()); const audits = await LatestAudit.allBySiteId(site.getId()); expect(audits).to.be.an('array'); // cwv & lhs expect(audits.length).to.equal(2); - expect(audits[0].getAuditedAt()).to.equal(sampleData.audits[4].getAuditedAt()); - expect(audits[1].getAuditedAt()).to.equal(sampleData.audits[9].getAuditedAt()); audits.forEach((audit) => { expect(audit.getSiteId()).to.equal(site.getId()); checkAudit(audit); + const latestAuditedAtForType = allAuditsForSite + .filter((siteAudit) => siteAudit.getAuditType() === audit.getAuditType()) + .map((siteAudit) => siteAudit.getAuditedAt()) + .sort() + .at(-1); + expect(audit.getAuditedAt()).to.equal(latestAuditedAtForType); }); }); @@ -130,14 +135,14 @@ describe('LatestAudit IT', async () => { it('gets latest audit of type lhs-mobile for a site', async () => { const auditType = 'lhs-mobile'; const site = sampleData.sites[1]; - const audits = await site.getLatestAudits(); const audit = await site.getLatestAuditByAuditType(auditType); + const latestByType = await LatestAudit.findById(site.getId(), auditType); checkAudit(audit); expect(audit.getSiteId()).to.equal(site.getId()); expect(audit.getAuditType()).to.equal(auditType); - expect(audit.getAuditedAt()).to.equal(audits[0].getAuditedAt()); + expect(audit.getAuditedAt()).to.equal(latestByType.getAuditedAt()); }); it('returns null for non-existing audit', async () => { diff --git a/packages/spacecat-shared-data-access/test/it/opportunity/opportunity.test.js b/packages/spacecat-shared-data-access/test/it/opportunity/opportunity.test.js index a5a58f42f..dacacc969 100644 --- a/packages/spacecat-shared-data-access/test/it/opportunity/opportunity.test.js +++ b/packages/spacecat-shared-data-access/test/it/opportunity/opportunity.test.js @@ -148,7 +148,7 @@ describe('Opportunity IT', async () => { it('creates a new opportunity', async () => { const data = { siteId, - auditId: crypto.randomUUID(), + auditId: sampleData.audits[0].getId(), title: 'New Opportunity', description: 'Description', runbook: 'https://example.com', @@ -257,7 +257,7 @@ describe('Opportunity IT', async () => { const data = [ { siteId, - auditId: crypto.randomUUID(), + auditId: sampleData.audits[0].getId(), title: 'New Opportunity 1', description: 'Description', runbook: 'https://example.com', @@ -269,7 +269,7 @@ describe('Opportunity IT', async () => { }, { siteId, - auditId: crypto.randomUUID(), + auditId: sampleData.audits[1].getId(), title: 'New Opportunity 2', description: 'Description', runbook: 'https://example.com', @@ -306,7 +306,7 @@ describe('Opportunity IT', async () => { const data = [ { siteId, - auditId: crypto.randomUUID(), + auditId: sampleData.audits[0].getId(), title: 'New Opportunity 1', description: 'Description', runbook: 'https://example.com', @@ -318,7 +318,7 @@ describe('Opportunity IT', async () => { }, { siteId, - auditId: crypto.randomUUID(), + auditId: sampleData.audits[1].getId(), title: 'New Opportunity 2', description: 'Description', runbook: 'https://example.com', @@ -330,7 +330,7 @@ describe('Opportunity IT', async () => { }, { siteId, - auditId: crypto.randomUUID(), + auditId: sampleData.audits[2].getId(), title: 'New Opportunity 3', description: 'Description', runbook: 'https://example.com', diff --git a/packages/spacecat-shared-data-access/test/it/organization/organization.test.js b/packages/spacecat-shared-data-access/test/it/organization/organization.test.js index 02904c472..216bd09d1 100644 --- a/packages/spacecat-shared-data-access/test/it/organization/organization.test.js +++ b/packages/spacecat-shared-data-access/test/it/organization/organization.test.js @@ -44,7 +44,7 @@ describe('Organization IT', async () => { const sampleOrg = sanitizeTimestamps(sampleData.organizations[i].toJSON()); const expectedConfig = { - ...sampleOrg.config, + ...(sampleOrg.config?.state || sampleOrg.config), }; const actualConfig = { ...org.config.state, @@ -144,7 +144,6 @@ describe('Organization IT', async () => { expect(updatedOrganization.getId()).to.equal(organization.getId()); expect(updatedOrganization.record.createdAt).to.equal(organization.record.createdAt); - expect(updatedOrganization.record.updatedAt).to.not.equal(organization.record.updatedAt); expect( sanitizeIdAndAuditFields('Organization', updatedOrganization.toJSON()), ).to.eql( diff --git a/packages/spacecat-shared-data-access/test/it/page-citability/page-citability.test.js b/packages/spacecat-shared-data-access/test/it/page-citability/page-citability.test.js index f673f86ab..ba76e9dcc 100644 --- a/packages/spacecat-shared-data-access/test/it/page-citability/page-citability.test.js +++ b/packages/spacecat-shared-data-access/test/it/page-citability/page-citability.test.js @@ -16,6 +16,7 @@ import { expect, use } from 'chai'; import chaiAsPromised from 'chai-as-promised'; import { getDataAccess } from '../util/db.js'; +import { seedDatabase } from '../util/seed.js'; use(chaiAsPromised); @@ -54,10 +55,14 @@ function checkPageCitability(pc) { } describe('PageCitability IT', async () => { + let sampleData; let PageCitability; + let siteId; before(async function () { this.timeout(10000); + sampleData = await seedDatabase(); + siteId = sampleData.sites[0].getId(); const dataAccess = getDataAccess(); PageCitability = dataAccess.PageCitability; }); @@ -65,7 +70,7 @@ describe('PageCitability IT', async () => { it('adds a new page readability record', async () => { const data = { url: 'https://www.example.com/test-page', - siteId: '1c86ba81-f3cc-48d8-8b06-1f9ac958e72d', + siteId, citabilityScore: 0.85, contentRatio: 1.25, wordDifference: 150, @@ -89,7 +94,7 @@ describe('PageCitability IT', async () => { const testUrl = 'https://www.example.com/findable-page'; const data = { url: testUrl, - siteId: '1c86ba81-f3cc-48d8-8b06-1f9ac958e72d', + siteId, citabilityScore: 0.75, contentRatio: 1.15, wordDifference: 100, @@ -113,7 +118,7 @@ describe('PageCitability IT', async () => { const testUrl = 'https://www.example.com/updatable-page'; const data = { url: testUrl, - siteId: '1c86ba81-f3cc-48d8-8b06-1f9ac958e72d', + siteId, citabilityScore: 0.60, contentRatio: 1.05, wordDifference: 50, @@ -155,7 +160,7 @@ describe('PageCitability IT', async () => { it('handles missing stats gracefully', async () => { const data = { url: 'https://www.example.com/partial-stats', - siteId: '1c86ba81-f3cc-48d8-8b06-1f9ac958e72d', + siteId, citabilityScore: 0.75, // contentRatio intentionally missing // wordDifference intentionally missing diff --git a/packages/spacecat-shared-data-access/test/it/page-intent/page-intent.test.js b/packages/spacecat-shared-data-access/test/it/page-intent/page-intent.test.js index 655e6309c..ee766bc78 100644 --- a/packages/spacecat-shared-data-access/test/it/page-intent/page-intent.test.js +++ b/packages/spacecat-shared-data-access/test/it/page-intent/page-intent.test.js @@ -66,7 +66,7 @@ describe('PageIntent IT', async () => { it('adds a new page intent', async () => { const data = { url: 'https://www.example.com/new-page', - siteId: '1c86ba81-f3cc-48d8-8b06-1f9ac958e72d', + siteId: sampleData.sites[0].getId(), pageIntent: 'INFORMATIONAL', topic: 'example-topic', }; @@ -84,7 +84,7 @@ describe('PageIntent IT', async () => { const sample = sampleData.pageIntents[0]; const updates = { url: 'https://www.updated.com/page', - siteId: '45508663-a89b-44ea-9a89-a216f8086212', + siteId: sampleData.sites[1].getId(), pageIntent: 'TRANSACTIONAL', topic: 'updated-topic', updatedBy: 'test-user', diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/all-collections-methods-coverage.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/all-collections-methods-coverage.test.js new file mode 100644 index 000000000..3470d72ee --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/all-collections-methods-coverage.test.js @@ -0,0 +1,351 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess, TEST_IDS, TEST_VALUES } from './helpers.js'; + +const GENERIC_UUID = '11111111-1111-4111-8111-111111111111'; +const GENERIC_URL = 'https://it.example.com'; + +const getMethodNames = (collection) => { + const names = new Set(); + + let proto = collection; + while (proto && proto !== Object.prototype) { + Object.getOwnPropertyNames(proto).forEach((name) => { + if (name === 'constructor' || name.startsWith('_')) { + return; + } + + if (typeof collection[name] === 'function') { + names.add(name); + } + }); + + proto = Object.getPrototypeOf(proto); + } + + Object.getOwnPropertyNames(collection).forEach((name) => { + if (name.startsWith('_')) { + return; + } + + if (typeof collection[name] === 'function') { + names.add(name); + } + }); + + return [...names] + .filter((name) => name !== 'clazz') + .sort(); +}; + +const KEY_EVENT_DEPRECATED_METHODS = new Set([ + 'all', + 'allByIndexKeys', + 'allBySiteId', + 'allBySiteIdAndTime', + 'findById', + 'findByIndexKeys', + 'findBySiteId', + 'findBySiteIdAndTime', + 'create', + 'createMany', + 'removeByIds', + 'removeByIndexKeys', +]); + +const MUTATING_METHOD_PREFIXES = ['create', 'update', 'remove', 'set', 'bulk']; +const MUTATING_METHODS = new Set([ + 'applyUpdateWatchers', + '_saveMany', +]); + +const EXPECTED_INVOCATION_ERROR_PATTERNS = [ + 'deprecated in data-access v3', + 'cannot be created directly', + 'not supported', + 'required', + 'invalid', + 'must be', + 'not found', + 'Failed to create', + 'Failed to update', + 'Failed to remove', + 'Failed to query', + 'invalid input value for enum', + 'not configured', + 'schema cache', +]; + +const isMutatingMethod = (methodName) => MUTATING_METHOD_PREFIXES + .some((prefix) => methodName.startsWith(prefix)) + || MUTATING_METHODS.has(methodName); + +const collectErrorMessages = (error) => { + const messages = []; + let current = error; + while (current) { + if (current.message) { + messages.push(current.message); + } + current = current.cause; + } + return messages.join(' | '); +}; + +const isExpectedInvocationError = (error) => { + const message = collectErrorMessages(error); + return EXPECTED_INVOCATION_ERROR_PATTERNS.some((pattern) => message.includes(pattern)); +}; + +const getValueForField = (fieldName) => { + switch (fieldName) { + case 'organizationId': + return TEST_IDS.organizationId; + case 'projectId': + return TEST_IDS.projectId; + case 'siteId': + return TEST_IDS.siteId; + case 'siteCandidateId': + case 'apiKeyId': + case 'asyncJobId': + case 'auditId': + case 'auditUrlId': + case 'consumerId': + case 'entitlementId': + case 'experimentId': + case 'fixEntityId': + case 'importJobId': + case 'importUrlId': + case 'latestAuditId': + case 'opportunityId': + case 'pageCitabilityId': + case 'pageIntentId': + case 'projectedTrafficId': + case 'reportId': + case 'scrapeJobId': + case 'scrapeUrlId': + case 'sentimentGuidelineId': + case 'sentimentTopicId': + case 'siteEnrollmentId': + case 'siteTopFormId': + case 'siteTopPageId': + case 'suggestionId': + case 'trialUserActivityId': + case 'trialUserId': + return GENERIC_UUID; + case 'auditType': + return '404'; + case 'status': + return 'RUNNING'; + case 'deliveryType': + return 'AEM_EDGE'; + case 'productCode': + return 'LLMO'; + case 'url': + return GENERIC_URL; + case 'baseURL': + return TEST_VALUES.siteBaseURL; + case 'previewURL': + return TEST_VALUES.csPreviewURL; + case 'projectName': + return TEST_VALUES.projectName; + case 'hashedApiKey': + return 'hashed-key'; + case 'imsOrgId': + return 'ims-org@AdobeOrg'; + case 'imsUserId': + return 'ims-user'; + case 'expId': + return 'exp-1'; + case 'processingType': + return 'default'; + case 'isOriginal': + return true; + case 'rank': + return 1; + case 'traffic': + return 1; + case 'time': + case 'createdAt': + case 'updatedAt': + case 'startedAt': + return new Date().toISOString(); + case 'fixEntityCreatedDate': + return '2025-01-01'; + case 'byCustomer': + return true; + case 'formSource': + return 'newsletter'; + case 'source': + return 'organic'; + case 'geo': + return 'global'; + default: + return GENERIC_UUID; + } +}; + +const getArgsFromMethodName = (methodName) => { + const match = methodName.match(/^(allBy|findBy)(.+)$/); + if (!match) { + return null; + } + + const [, prefix, keysPart] = match; + const fields = keysPart + .split('And') + .filter(Boolean) + .map((part) => part.charAt(0).toLowerCase() + part.slice(1)); + const values = fields.map((field) => getValueForField(field)); + + if (prefix === 'allBy') { + return values; + } + return values; +}; + +const getArgsForMethod = (entityName, methodName) => { + switch (methodName) { + case 'all': + return [{}, { limit: 1 }]; + case 'allByIndexKeys': + return [{}, { limit: 1 }]; + case 'findByAll': + return [{}, { limit: 1 }]; + case 'findByIndexKeys': + return [{}, { limit: 1 }]; + case 'findById': { + if (entityName === 'LatestAudit') { + return [TEST_IDS.siteId, '404']; + } + if (entityName === 'AuditUrl') { + return [TEST_IDS.siteId, GENERIC_URL]; + } + if (entityName === 'SentimentGuideline' || entityName === 'SentimentTopic') { + return [TEST_IDS.siteId, GENERIC_UUID]; + } + return [GENERIC_UUID]; + } + case 'existsById': + return [GENERIC_UUID]; + case 'batchGetByKeys': + if (entityName === 'FixEntitySuggestion') { + return [[{ suggestionId: GENERIC_UUID, fixEntityId: GENERIC_UUID }]]; + } + return [[{ id: GENERIC_UUID }]]; + case 'create': + return [{}]; + case 'createMany': + return [[{}]]; + case 'updateByKeys': + return [{ id: GENERIC_UUID }, {}]; + case 'applyUpdateWatchers': + return [{ updatedAt: new Date().toISOString() }, { updatedAt: new Date().toISOString() }]; + case 'removeByIds': + return [[GENERIC_UUID]]; + case 'removeByIndexKeys': + return [[{ id: GENERIC_UUID }]]; + case 'allByDateRange': + return ['2025-01-01T00:00:00.000Z', '2025-02-01T00:00:00.000Z']; + case 'allRecentByUrlAndProcessingType': + return [GENERIC_URL, 'default', 24]; + case 'findByPreviewURL': + return [TEST_VALUES.csPreviewURL]; + case 'allWithLatestAudit': + return ['404', 'desc']; + case 'allByProjectName': + return [TEST_VALUES.projectName]; + case 'allByOrganizationIdAndProjectId': + return [TEST_IDS.organizationId, TEST_IDS.projectId]; + case 'allByOrganizationIdAndProjectName': + return [TEST_IDS.organizationId, TEST_VALUES.projectName]; + case 'allByAuditType': + return ['404']; + case 'findBySiteIdAndUrl': + return [TEST_IDS.siteId, GENERIC_URL]; + case 'allBySiteIdAndAuditType': + return [TEST_IDS.siteId, '404']; + case 'allBySiteIdSorted': + return [TEST_IDS.siteId]; + case 'allBySiteIdByCustomerSorted': + return [TEST_IDS.siteId, true]; + case 'removeForSiteId': + return [TEST_IDS.siteId]; + case 'removeForSiteIdByCustomer': + return [TEST_IDS.siteId, true]; + case 'removeByUrlAndFormSource': + return [GENERIC_URL, '']; + case 'findByUrlAndFormSource': + return [GENERIC_URL, '']; + case 'getSuggestionsByFixEntityId': + return [GENERIC_UUID]; + case 'setSuggestionsForFixEntity': + return [GENERIC_UUID, null, []]; + case 'getAllFixesWithSuggestionByCreatedAt': + return [GENERIC_UUID, '2025-01-01']; + case 'bulkUpdateStatus': + return [[], 'NEW']; + case 'getFixEntitiesBySuggestionId': + return [GENERIC_UUID]; + case 'findByVersion': + return ['v1']; + default: + return getArgsFromMethodName(methodName) || []; + } +}; + +describe('PostgREST IT - all collections methods coverage', () => { + const dataAccess = createITDataAccess(); + + const entityNames = Object.keys(dataAccess).sort(); + + entityNames.forEach((entityName) => { + const collection = dataAccess[entityName]; + const methodNames = getMethodNames(collection); + + describe(`${entityName} collection`, () => { + methodNames.forEach((methodName) => { + it(`invokes ${entityName}.${methodName}()`, async () => { + const method = collection[methodName]; + expect(method).to.be.a('function'); + + const args = getArgsForMethod(entityName, methodName); + + try { + await method.apply(collection, args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + + // Ensure v3 deprecation remains explicit. + if (entityName === 'KeyEvent' && KEY_EVENT_DEPRECATED_METHODS.has(methodName)) { + expect(error.message).to.include('KeyEvent is deprecated in data-access v3'); + return; + } + + // For mutating methods and synthetic-argument validation in this smoke test, + // controlled errors are acceptable. + if (isMutatingMethod(methodName) || isExpectedInvocationError(error)) { + expect(isExpectedInvocationError(error)).to.equal(true); + return; + } + + // Read/query paths should not fail in this smoke test. + throw error; + } + }); + }); + }); + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/audit-latest-audit.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/audit-latest-audit.test.js new file mode 100644 index 000000000..e13e599a0 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/audit-latest-audit.test.js @@ -0,0 +1,58 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess, TEST_IDS } from './helpers.js'; + +describe('PostgREST IT - audit and latest-audit', () => { + const dataAccess = createITDataAccess(); + + it('reads Audit by id using PostgREST-backed collection', async () => { + const audit = await dataAccess.Audit.findById(TEST_IDS.auditId); + + expect(audit).to.exist; + expect(audit.toJSON()).to.include({ + auditId: TEST_IDS.auditId, + siteId: TEST_IDS.siteId, + auditType: '404', + }); + }); + + it('computes LatestAudit from Audit records', async () => { + const latest = await dataAccess.LatestAudit.findById(TEST_IDS.siteId, '404'); + + expect(latest).to.exist; + expect(latest.getSiteId()).to.equal(TEST_IDS.siteId); + expect(latest.getAuditType()).to.equal('404'); + + const newestAudit = await dataAccess.Audit.findByIndexKeys( + { siteId: TEST_IDS.siteId, auditType: '404' }, + { order: 'desc' }, + ); + + expect(newestAudit).to.exist; + expect(latest.getId()).to.equal(newestAudit.getId()); + expect(latest.getAuditedAt()).to.equal(newestAudit.getAuditedAt()); + }); + + it('returns grouped latest records for audit type', async () => { + const latest = await dataAccess.LatestAudit.all({ auditType: '404' }, { limit: 10 }); + + expect(latest).to.be.an('array').that.is.not.empty; + latest.forEach((item) => { + const json = item.toJSON(); + expect(json.auditType).to.equal('404'); + expect(json).to.not.have.property('site_id'); + }); + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/docker-compose.yml b/packages/spacecat-shared-data-access/test/it/postgrest/docker-compose.yml new file mode 100644 index 000000000..5a234ea60 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/docker-compose.yml @@ -0,0 +1,32 @@ +name: spacecat-data-access-it + +services: + db: + image: postgres:16-alpine + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: mysticat + ports: + - "${IT_POSTGRES_PORT:-55432}:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 30 + + data-service: + platform: ${MYSTICAT_DATA_SERVICE_PLATFORM:-linux/amd64} + image: ${MYSTICAT_DATA_SERVICE_REPOSITORY:-682033462621.dkr.ecr.us-east-1.amazonaws.com/mysticat-data-service}:${MYSTICAT_DATA_SERVICE_TAG:-v1.11.0} + depends_on: + db: + condition: service_healthy + environment: + LOCAL_DEV: "true" + DATABASE_URL: postgres://postgrest_authenticator:postgrest@db:5432/mysticat + PGRST_DB_SCHEMAS: public + PGRST_DB_ANON_ROLE: postgrest_anon + PGRST_DB_EXTRA_SEARCH_PATH: "" + PGRST_OPENAPI_SERVER_PROXY_URI: http://localhost:${IT_POSTGREST_PORT:-3300} + ports: + - "${IT_POSTGREST_PORT:-3300}:3000" diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/entity-parity-regressions.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/entity-parity-regressions.test.js new file mode 100644 index 000000000..f1b03cfc9 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/entity-parity-regressions.test.js @@ -0,0 +1,87 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess } from './helpers.js'; + +describe('PostgREST IT - entity parity regressions', () => { + const dataAccess = createITDataAccess(); + + it('preserves ApiKey lookup by hashedApiKey', async () => { + const suffix = Date.now().toString(36); + const hashedApiKey = `it-hash-${suffix}`; + const created = await dataAccess.ApiKey.create({ + name: `it-api-key-${suffix}`, + hashedApiKey, + imsOrgId: `it-org-${suffix}@AdobeOrg`, + imsUserId: `it-user-${suffix}`, + scopes: [{ name: 'imports.read' }], + updatedBy: 'it-suite', + }); + + const found = await dataAccess.ApiKey.findByHashedApiKey(hashedApiKey); + expect(found).to.exist; + expect(found.getId()).to.equal(created.getId()); + expect(found.getHashedApiKey()).to.equal(hashedApiKey); + }); + + it('preserves AsyncJob enum validation on create', async () => { + let error; + try { + await dataAccess.AsyncJob.create({ + status: 'NOT_A_REAL_STATUS', + metadata: { source: 'it' }, + }); + } catch (e) { + error = e; + } + + expect(error).to.exist; + expect(error.message).to.match(/Failed to create/); + }); + + it('preserves ImportJob<->ImportUrl relation traversal', async () => { + const suffix = Date.now().toString(36); + const importJob = await dataAccess.ImportJob.create({ + importQueueId: `queue-${suffix}`, + hashedApiKey: `hash-${suffix}`, + baseURL: `https://it-${suffix}.example.com`, + startedAt: new Date().toISOString(), + status: 'RUNNING', + initiatedBy: { apiKeyName: 'it-suite' }, + hasCustomImportJs: false, + hasCustomHeaders: false, + updatedBy: 'it-suite', + }); + + await dataAccess.ImportUrl.createMany([ + { + importJobId: importJob.getId(), + status: 'COMPLETE', + url: `https://it-${suffix}.example.com/a`, + }, + { + importJobId: importJob.getId(), + status: 'FAILED', + url: `https://it-${suffix}.example.com/b`, + }, + ]); + + const urls = await importJob.getImportUrls(); + expect(urls).to.have.length(2); + expect(urls.map((url) => url.getImportJobId())).to.deep.equal([ + importJob.getId(), + importJob.getId(), + ]); + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/field-mapping.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/field-mapping.test.js new file mode 100644 index 000000000..aecd2e15e --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/field-mapping.test.js @@ -0,0 +1,42 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess, TEST_IDS, TEST_VALUES } from './helpers.js'; + +describe('PostgREST IT - field mapping', () => { + const dataAccess = createITDataAccess(); + + it('maps snake_case fields to model camelCase for Site', async () => { + const site = await dataAccess.Site.findById(TEST_IDS.siteId); + + expect(site).to.exist; + const json = site.toJSON(); + + expect(json).to.have.property('siteId', TEST_IDS.siteId); + expect(json).to.have.property('baseURL', TEST_VALUES.siteBaseURL); + expect(json).to.have.property('organizationId', TEST_IDS.organizationId); + expect(json).to.not.have.property('id'); + expect(json).to.not.have.property('base_url'); + expect(json).to.not.have.property('baseUrl'); + expect(json).to.not.have.property('organization_id'); + }); + + it('keeps camelCase in selected attributes path as well', async () => { + const site = await dataAccess.Site.findById(TEST_IDS.siteId); + const json = site.toJSON(); + + expect(json.baseURL).to.equal(TEST_VALUES.siteBaseURL); + expect(json.siteId).to.equal(TEST_IDS.siteId); + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/helpers.js b/packages/spacecat-shared-data-access/test/it/postgrest/helpers.js new file mode 100644 index 000000000..fff8179c5 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/helpers.js @@ -0,0 +1,40 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { createDataAccess } from '../../../src/service/index.js'; + +export const TEST_IDS = { + organizationId: '04f63783-3f76-4076-bbda-71a11145303c', + projectId: '6fc3365d-f400-4a17-91e9-7141e5b82350', + siteId: '0983c6da-0dee-45cc-b897-3f1fed6b460b', + siteIdSecondary: 'e12c091c-075b-4c94-aab7-398a04412b5c', + auditId: '74a041ed-a15c-4bdc-a38c-5203b22d2ab3', +}; + +export const TEST_VALUES = { + siteBaseURL: 'https://tenant-alphaland.com', + projectName: 'tenant-alphaland.com', + csPreviewURL: 'https://author-p50513-e440257.adobeaemcloud.com', +}; + +export const createLogger = () => ({ + info: () => {}, + debug: () => {}, + error: () => {}, + warn: () => {}, + trace: () => {}, +}); + +export const createITDataAccess = () => { + const postgrestUrl = process.env.POSTGREST_URL || 'http://127.0.0.1:3300'; + return createDataAccess({ postgrestUrl }, createLogger()); +}; diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/mutations-and-special-cases.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/mutations-and-special-cases.test.js new file mode 100644 index 000000000..b907c0c82 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/mutations-and-special-cases.test.js @@ -0,0 +1,82 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess } from './helpers.js'; + +describe('PostgREST IT - mutations and v3 special cases', () => { + const dataAccess = createITDataAccess(); + + it('creates, updates and removes SiteCandidate', async () => { + const suffix = Date.now().toString(36); + const baseURL = `https://it-${suffix}.example.com`; + + const created = await dataAccess.SiteCandidate.create({ + baseURL, + source: 'RUM', + status: 'PENDING', + hlxConfig: {}, + }); + + expect(created).to.exist; + const createdId = created.getId(); + expect(createdId).to.be.a('string'); + + await dataAccess.SiteCandidate.updateByKeys({ siteCandidateId: createdId }, { + status: 'APPROVED', + updatedBy: 'it-suite', + }); + + const updated = await dataAccess.SiteCandidate.findById(createdId); + expect(updated).to.exist; + expect(updated.toJSON()).to.include({ + siteCandidateId: createdId, + baseURL, + status: 'APPROVED', + updatedBy: 'it-suite', + }); + + await dataAccess.SiteCandidate.removeByIds([createdId]); + const exists = await dataAccess.SiteCandidate.existsById(createdId); + expect(exists).to.equal(false); + }); + + it('keeps KeyEvent deprecated in v3', async () => { + let error; + try { + await dataAccess.KeyEvent.all(); + } catch (e) { + error = e; + } + + expect(error).to.exist; + expect(error.message).to.include('KeyEvent is deprecated in data-access v3'); + }); + + it('rejects direct LatestAudit writes', async () => { + let error; + try { + await dataAccess.LatestAudit.create({ + siteId: '11111111-1111-1111-1111-111111111111', + auditType: '404', + }); + } catch (e) { + error = e; + } + + expect(error).to.exist; + expect(error.message).to.include( + 'LatestAudit is derived from Audit in v3 and cannot be created directly', + ); + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/read-paths.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/read-paths.test.js new file mode 100644 index 000000000..7b5f2169e --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/read-paths.test.js @@ -0,0 +1,63 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess, TEST_IDS, TEST_VALUES } from './helpers.js'; + +describe('PostgREST IT - read paths', () => { + const dataAccess = createITDataAccess(); + + it('reads Organization and Project by id', async () => { + const organization = await dataAccess.Organization.findById(TEST_IDS.organizationId); + const project = await dataAccess.Project.findById(TEST_IDS.projectId); + + expect(organization).to.exist; + expect(project).to.exist; + + expect(project.toJSON()).to.include({ + projectId: TEST_IDS.projectId, + organizationId: TEST_IDS.organizationId, + projectName: TEST_VALUES.projectName, + }); + }); + + it('resolves Site by preview URL through custom collection logic', async () => { + const site = await dataAccess.Site.findByIndexKeys({ + externalOwnerId: 'p50513', + externalSiteId: 'e440257', + }); + + expect(site).to.exist; + expect([TEST_IDS.siteId, TEST_IDS.siteIdSecondary]).to.include(site.getId()); + }); + + it('reads site by baseURL through index keys', async () => { + const site = await dataAccess.Site.findByIndexKeys({ + baseURL: TEST_VALUES.siteBaseURL, + }); + + expect(site).to.exist; + expect(site.getId()).to.equal(TEST_IDS.siteId); + }); + + it('supports batchGetByKeys for Site ids', async () => { + const result = await dataAccess.Site.batchGetByKeys([ + { siteId: TEST_IDS.siteId }, + { siteId: TEST_IDS.siteIdSecondary }, + ]); + + expect(result.unprocessed).to.deep.equal([]); + expect(result.data.map((site) => site.getId())).to.include(TEST_IDS.siteId); + expect(result.data.map((site) => site.getId())).to.include(TEST_IDS.siteIdSecondary); + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/postgrest/seed-integrity.test.js b/packages/spacecat-shared-data-access/test/it/postgrest/seed-integrity.test.js new file mode 100644 index 000000000..e402d1309 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/postgrest/seed-integrity.test.js @@ -0,0 +1,35 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from 'chai'; + +import { createITDataAccess, TEST_IDS } from './helpers.js'; + +describe('PostgREST IT - seed integrity', () => { + const dataAccess = createITDataAccess(); + + it('contains expected IDs required by IT helpers', async () => { + const [organization, project, site, secondarySite, audit] = await Promise.all([ + dataAccess.Organization.findById(TEST_IDS.organizationId), + dataAccess.Project.findById(TEST_IDS.projectId), + dataAccess.Site.findById(TEST_IDS.siteId), + dataAccess.Site.findById(TEST_IDS.siteIdSecondary), + dataAccess.Audit.findById(TEST_IDS.auditId), + ]); + + expect(organization, 'missing TEST_IDS.organizationId').to.exist; + expect(project, 'missing TEST_IDS.projectId').to.exist; + expect(site, 'missing TEST_IDS.siteId').to.exist; + expect(secondarySite, 'missing TEST_IDS.siteIdSecondary').to.exist; + expect(audit, 'missing TEST_IDS.auditId').to.exist; + }); +}); diff --git a/packages/spacecat-shared-data-access/test/it/project/project.test.js b/packages/spacecat-shared-data-access/test/it/project/project.test.js index d4c714d13..b8f9e8e73 100644 --- a/packages/spacecat-shared-data-access/test/it/project/project.test.js +++ b/packages/spacecat-shared-data-access/test/it/project/project.test.js @@ -122,7 +122,6 @@ describe('Project IT', async () => { expect(updatedProject.getProjectName()).to.equal(data.projectName); expect(updatedProject.getId()).to.equal(project.getId()); expect(updatedProject.record.createdAt).to.equal(project.record.createdAt); - expect(updatedProject.record.updatedAt).to.not.equal(project.record.updatedAt); }); it('removes a project', async () => { diff --git a/packages/spacecat-shared-data-access/test/it/scrape-job/scrape-job.test.js b/packages/spacecat-shared-data-access/test/it/scrape-job/scrape-job.test.js index 92547645d..315013994 100644 --- a/packages/spacecat-shared-data-access/test/it/scrape-job/scrape-job.test.js +++ b/packages/spacecat-shared-data-access/test/it/scrape-job/scrape-job.test.js @@ -201,6 +201,33 @@ describe('ScrapeJob IT', async () => { expect(scrapeJobs[0].getId()).to.equal(sampleData.scrapeJobs[0].getId()); }); + it('gets all scrape jobs by baseURL, processing type and option flags', async () => { + const scrapeJobs = await ScrapeJob + .allByBaseURLAndProcessingTypeAndOptEnableJavascriptAndOptHideConsentBanner( + 'https://example-2.com/cars', + ScrapeJobModel.ScrapeProcessingType.DEFAULT, + 'T', + 'F', + ); + + expect(scrapeJobs).to.be.an('array'); + expect(scrapeJobs.length).to.equal(1); + expect(scrapeJobs[0].getId()).to.equal(sampleData.scrapeJobs[0].getId()); + }); + + it('finds a scrape job by baseURL, processing type and option flags', async () => { + const scrapeJob = await ScrapeJob + .findByBaseURLAndProcessingTypeAndOptEnableJavascriptAndOptHideConsentBanner( + 'https://example-2.com/cars', + ScrapeJobModel.ScrapeProcessingType.DEFAULT, + 'T', + 'F', + ); + + checkScrapeJob(scrapeJob); + expect(scrapeJob.getId()).to.equal(sampleData.scrapeJobs[0].getId()); + }); + it('removes a scrape job', async () => { const sampleScrapeJob = sampleData.scrapeJobs[0]; const scrapeJob = await ScrapeJob.findById(sampleScrapeJob.getId()); diff --git a/packages/spacecat-shared-data-access/test/it/seed/tenants/01_tenant_alpha.sql b/packages/spacecat-shared-data-access/test/it/seed/tenants/01_tenant_alpha.sql new file mode 100644 index 000000000..ac2241751 --- /dev/null +++ b/packages/spacecat-shared-data-access/test/it/seed/tenants/01_tenant_alpha.sql @@ -0,0 +1,3159 @@ +-- Seed data for Tenant Alpha +-- Organization ID: 04f63783-3f76-4076-bbda-71a11145303c +-- Generated: 2026-02-02T18:10:09.735272 + +-- Organization +INSERT INTO organizations (id, name, ims_org_id, config, fulfillable_items, created_at, updated_at, updated_by) VALUES ( + '04f63783-3f76-4076-bbda-71a11145303c', + 'Tenant Alpha Experience Cloud', + 'F489CFB4556ECF927F000101@AdobeOrg', + '{"handlers": {}, "slack": {"channel": "C04D51RSGLT", "workspace": "WORKSPACE_EXTERNAL"}}'::jsonb, + '{"aem_sites_optimizer": {"items": ["dx_aem_perf_content_requests", "dx_aem_perf_auto_fix", "dx_aem_perf_support", "dx_aem_perf_auto_suggest", "wf_instance", "dma_acp_cs", "esm_user_storage", "esm_shared_storage", "asset_sharing_policy_config", "user_group_assignment", "core_services_cc", "domain_claiming", "user_sync", "overdelegation_allowed", "support_case_creation_allowed"]}}'::jsonb, + '2024-12-20T07:31:25.919Z'::timestamptz, + '2025-07-09T22:23:52.300Z'::timestamptz, + 'system' +); + +-- Entitlements +INSERT INTO entitlements (id, organization_id, product_code, tier, quotas, created_at, updated_at, updated_by) VALUES ( + '0914fe7c-6e23-427b-9db2-106c234d5dfd', + '04f63783-3f76-4076-bbda-71a11145303c', + 'ASO'::entitlement_product_code, + 'PAID'::entitlement_tier, + '{"llmo_trial_prompts": 200, "llmo_trial_prompts_consumed": 0}'::jsonb, + '2025-10-15T14:41:52.193Z'::timestamptz, + '2025-10-15T14:41:52.193Z'::timestamptz, + 'system' +); +INSERT INTO entitlements (id, organization_id, product_code, tier, quotas, created_at, updated_at, updated_by) VALUES ( + '9b8cf1c5-1f1b-422e-a159-9847fd1fe808', + '04f63783-3f76-4076-bbda-71a11145303c', + 'LLMO'::entitlement_product_code, + 'FREE_TRIAL'::entitlement_tier, + '{"llmo_trial_prompts": 200, "llmo_trial_prompts_consumed": 0}'::jsonb, + '2025-10-08T12:44:45.391Z'::timestamptz, + '2025-10-08T12:44:45.392Z'::timestamptz, + 'system' +); + +-- Projects +INSERT INTO projects (id, organization_id, project_name, created_at, updated_at, updated_by) VALUES ( + '6fc3365d-f400-4a17-91e9-7141e5b82350', + '04f63783-3f76-4076-bbda-71a11145303c', + 'tenant-alphaland.com', + '2025-11-24T16:36:21.139Z'::timestamptz, + '2025-11-24T16:36:21.139Z'::timestamptz, + 'system' +); +INSERT INTO projects (id, organization_id, project_name, created_at, updated_at, updated_by) VALUES ( + '6de5d214-15c5-4969-b074-f95e8bc237a1', + '04f63783-3f76-4076-bbda-71a11145303c', + 'tenant-alpha-secondary.com', + '2025-11-24T17:07:12.928Z'::timestamptz, + '2025-11-24T17:07:12.928Z'::timestamptz, + 'system' +); + +-- Sites +INSERT INTO sites (id, organization_id, base_url, name, is_primary_locale, language, region, config, code, delivery_type, authoring_type, github_url, delivery_config, hlx_config, is_sandbox, is_live, is_live_toggled_at, external_owner_id, external_site_id, page_types, project_id, created_at, updated_at, updated_by) VALUES ( + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '04f63783-3f76-4076-bbda-71a11145303c', + 'https://tenant-alphaland.com', + 'tenant-alphaland.com', + NULL, + 'en', + 'US', + '{"handlers": {"cwv": {"groupedURLs": [{"name": "Products", "pattern": "/product"}]}}, "imports": [{"sources": ["ahrefs"], "type": "organic-traffic", "enabled": true, "destinations": ["default"]}, {"sources": ["ahrefs"], "type": "organic-keywords", "enabled": true, "destinations": ["default"]}, {"type": "cwv-daily", "sources": ["rum"], "enabled": true, "destinations": ["default"]}, {"type": "traffic-analysis", "sources": ["rum"], "enabled": true, "destinations": ["default"]}, {"sources": ["rum"], "type": "all-traffic", "enabled": true, "destinations": ["default"]}, {"type": "user-engagement", "sources": ["rum"], "enabled": false, "destinations": ["default"]}, {"type": "cwv-weekly", "sources": ["rum"], "enabled": false, "destinations": ["default"]}, {"geo": "global", "type": "top-pages", "sources": ["ahrefs"], "enabled": true, "destinations": ["default"]}]}'::jsonb, + '{}'::jsonb, + 'aem_cs'::delivery_type, + 'cs'::authoring_type, + NULL, + '{"__reindex": "now", "siteId": "51ea4b7c-1af2-4b6d-8c61-b3adfd065f8d", "environmentId": "440257", "programId": "50513", "authorURL": "https://author-p50513-e440257.adobeaemcloud.com"}'::jsonb, + '{}'::jsonb, + false, + true, + NULL::timestamptz, + 'p50513', + 'e440257', + NULL::jsonb, + '6fc3365d-f400-4a17-91e9-7141e5b82350', + '2024-12-17T09:54:09.625Z'::timestamptz, + '2026-01-28T05:12:19.151Z'::timestamptz, + 'system' +); +INSERT INTO sites (id, organization_id, base_url, name, is_primary_locale, language, region, config, code, delivery_type, authoring_type, github_url, delivery_config, hlx_config, is_sandbox, is_live, is_live_toggled_at, external_owner_id, external_site_id, page_types, project_id, created_at, updated_at, updated_by) VALUES ( + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '04f63783-3f76-4076-bbda-71a11145303c', + 'https://tenant-alpha-secondary.com', + NULL, + NULL, + 'en', + 'US', + '{"imports": [{"sources": ["ahrefs"], "type": "organic-traffic", "enabled": true, "destinations": ["default"]}, {"sources": ["ahrefs"], "type": "organic-keywords", "enabled": true, "destinations": ["default"]}, {"geo": "global", "type": "top-pages", "sources": ["ahrefs"], "enabled": true, "destinations": ["default"]}, {"sources": ["rum"], "type": "all-traffic", "enabled": true, "destinations": ["default"]}, {"type": "traffic-analysis", "sources": ["rum"], "enabled": true, "destinations": ["default"]}]}'::jsonb, + '{}'::jsonb, + 'aem_cs'::delivery_type, + 'cs'::authoring_type, + NULL, + '{"siteId": "c3e977e3-d30a-47e4-a78f-2f92449a03d1", "environmentId": "440257", "programId": "50513", "authorURL": "https://author-p50513-e440257.adobeaemcloud.com"}'::jsonb, + '{}'::jsonb, + false, + true, + '2024-12-03T15:58:06.464Z'::timestamptz, + 'p50513', + 'e440257', + NULL::jsonb, + '6de5d214-15c5-4969-b074-f95e8bc237a1', + '2024-11-27T15:46:29.760Z'::timestamptz, + '2026-02-02T06:59:59.452Z'::timestamptz, + 'system' +); + +-- Site Enrollments +INSERT INTO site_enrollments (id, site_id, entitlement_id, created_at, updated_at, updated_by) VALUES ( + 'a820d82a-6406-4803-b446-ebf03ed5293b', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '0914fe7c-6e23-427b-9db2-106c234d5dfd', + '2025-10-15T14:41:54.326Z'::timestamptz, + '2025-10-15T14:41:54.326Z'::timestamptz, + 'system' +); +INSERT INTO site_enrollments (id, site_id, entitlement_id, created_at, updated_at, updated_by) VALUES ( + 'c85c9552-38ad-4df4-b814-a5a644cdb57b', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '0914fe7c-6e23-427b-9db2-106c234d5dfd', + '2025-10-15T14:41:52.488Z'::timestamptz, + '2025-10-15T14:41:52.488Z'::timestamptz, + 'system' +); + +-- Audits (limited sample) +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '74a041ed-a15c-4bdc-a38c-5203b22d2ab3', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2024-12-29&enddate=2025-01-05', + true, + false, + NULL, + '2025-01-05T05:05:54.775Z'::timestamptz, + '2025-01-05T05:05:54.775Z'::timestamptz, + '2025-01-05T05:05:54.775Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '66912d53-7ac7-4a27-8ba3-906c0b810d2d', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-01-05&enddate=2025-01-12', + true, + false, + NULL, + '2025-01-12T05:11:21.970Z'::timestamptz, + '2025-01-12T05:11:21.970Z'::timestamptz, + '2025-01-12T05:11:21.970Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'fd44482c-c361-47b3-ad27-727af2372862', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-01-12&enddate=2025-01-19', + true, + false, + NULL, + '2025-01-19T05:06:45.012Z'::timestamptz, + '2025-01-19T05:06:45.012Z'::timestamptz, + '2025-01-19T05:06:45.012Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '5d892e04-ea6a-4e46-9fb9-68dc19d34bcb', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-01-19&enddate=2025-01-26', + true, + false, + NULL, + '2025-01-26T05:06:19.947Z'::timestamptz, + '2025-01-26T05:06:19.947Z'::timestamptz, + '2025-01-26T05:06:19.947Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'f24bc09f-b134-4a11-884d-29e65da71ce5', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-01-26&enddate=2025-02-02', + true, + false, + NULL, + '2025-02-02T05:07:49.497Z'::timestamptz, + '2025-02-02T05:07:49.498Z'::timestamptz, + '2025-02-02T05:07:49.498Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '12c1c248-2a66-48e7-af98-47ac904bb8e0', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-02-02&enddate=2025-02-09', + true, + false, + NULL, + '2025-02-09T05:06:16.537Z'::timestamptz, + '2025-02-09T05:06:16.537Z'::timestamptz, + '2025-02-09T05:06:16.538Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '1eb51889-e7a4-44e9-9cd8-19907fe489f1', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-02-09&enddate=2025-02-16', + true, + false, + NULL, + '2025-02-16T05:05:16.228Z'::timestamptz, + '2025-02-16T05:05:16.228Z'::timestamptz, + '2025-02-16T05:05:16.228Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '2da858d8-1a22-4284-b1b8-fda95eb6ae1c', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-02-16&enddate=2025-02-23', + true, + false, + NULL, + '2025-02-23T05:03:56.384Z'::timestamptz, + '2025-02-23T05:03:56.384Z'::timestamptz, + '2025-02-23T05:03:56.384Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '7c1529e3-3dde-469f-bb94-aec953c6535d', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-02-23&enddate=2025-03-02', + true, + false, + NULL, + '2025-03-02T05:04:47.913Z'::timestamptz, + '2025-03-02T05:04:47.913Z'::timestamptz, + '2025-03-02T05:04:47.913Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'c0e93f11-4b2c-40da-882d-6cafe461e35e', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-04-30&enddate=2025-05-07', + true, + false, + NULL, + '2025-05-07T15:21:25.703Z'::timestamptz, + '2025-05-07T15:21:25.704Z'::timestamptz, + '2025-05-07T15:21:25.705Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'ce16afb0-4dfc-4fc2-add2-646053b91646', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-05-14&enddate=2025-05-21', + true, + false, + NULL, + '2025-05-21T12:50:11.186Z'::timestamptz, + '2025-05-21T12:50:11.187Z'::timestamptz, + '2025-05-21T12:50:11.189Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '9fce3b9d-9d4c-4b87-a68d-125474a0d733', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-05-28&enddate=2025-06-04', + true, + false, + NULL, + '2025-06-04T13:43:51.851Z'::timestamptz, + '2025-06-04T13:43:51.852Z'::timestamptz, + '2025-06-04T13:43:51.852Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '1cb69592-3f4b-46a2-9e58-76be071ae60c', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-05-29&enddate=2025-06-05', + true, + false, + NULL, + '2025-06-05T09:07:29.421Z'::timestamptz, + '2025-06-05T09:07:29.421Z'::timestamptz, + '2025-06-05T09:07:29.422Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '0432823c-49f7-41e5-b227-1b13d627e45a', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + '404', + '[{"sources": [], "url": "https://www.tenant-alphaland.com/Pokemon.", "pageviews": "200"}]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alphaland.com&startdate=2025-06-09&enddate=2025-06-16', + true, + false, + NULL, + '2025-06-16T10:24:25.803Z'::timestamptz, + '2025-06-16T10:24:25.804Z'::timestamptz, + '2025-06-16T10:24:25.805Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '52e102c4-d811-4ed4-b75d-730962615ac0', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + 'accessibility', + '{"finalUrl": "www.tenant-alphaland.com", "status": "preparing"}'::jsonb, + 'scrapes/0983c6da-0dee-45cc-b897-3f1fed6b460b/', + true, + false, + NULL, + '2025-08-06T09:07:25.383Z'::timestamptz, + '2025-08-06T09:07:25.383Z'::timestamptz, + '2025-08-06T09:07:25.383Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'd1cb0e9f-ea8b-48ab-a2d4-299b1905f482', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + 'accessibility', + '{"finalUrl": "www.tenant-alphaland.com", "status": "preparing"}'::jsonb, + 'scrapes/0983c6da-0dee-45cc-b897-3f1fed6b460b/', + true, + false, + NULL, + '2025-08-13T07:17:34.873Z'::timestamptz, + '2025-08-13T07:17:34.873Z'::timestamptz, + '2025-08-13T07:17:34.874Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '69c3d0c3-e345-4cab-bafd-77cb93c7cef2', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + 'accessibility', + '{"finalUrl": "www.tenant-alphaland.com", "status": "preparing"}'::jsonb, + 'scrapes/0983c6da-0dee-45cc-b897-3f1fed6b460b/', + true, + false, + NULL, + '2025-08-18T06:00:13.372Z'::timestamptz, + '2025-08-18T06:00:13.372Z'::timestamptz, + '2025-08-18T06:00:13.373Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '96bde89e-9f0b-4218-a2bb-e82d50f57900', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + 'accessibility', + '{"finalUrl": "www.tenant-alphaland.com", "status": "preparing"}'::jsonb, + 'scrapes/0983c6da-0dee-45cc-b897-3f1fed6b460b/', + true, + false, + NULL, + '2025-08-25T06:00:20.199Z'::timestamptz, + '2025-08-25T06:00:20.200Z'::timestamptz, + '2025-08-25T06:00:20.200Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '0dca7bb4-6af2-4bf1-978b-a46c7268ae4d', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + 'accessibility', + '{"finalUrl": "www.tenant-alphaland.com", "status": "preparing"}'::jsonb, + 'scrapes/0983c6da-0dee-45cc-b897-3f1fed6b460b/', + true, + false, + NULL, + '2025-09-01T06:00:25.800Z'::timestamptz, + '2025-09-01T06:00:25.801Z'::timestamptz, + '2025-09-01T06:00:25.803Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '7756bbeb-9127-43e1-b7a9-3b0eeda414df', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + 'accessibility', + '{"finalUrl": "www.tenant-alphaland.com", "status": "preparing"}'::jsonb, + 'scrapes/0983c6da-0dee-45cc-b897-3f1fed6b460b/', + true, + false, + NULL, + '2025-09-08T06:00:12.116Z'::timestamptz, + '2025-09-08T06:00:12.116Z'::timestamptz, + '2025-09-08T06:00:12.117Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '5d1eeb9e-60be-41e3-8ddf-3e5d9afd2bbf', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2024-12-29&enddate=2025-01-05', + true, + false, + NULL, + '2025-01-05T05:07:08.029Z'::timestamptz, + '2025-01-05T05:07:08.030Z'::timestamptz, + '2025-01-05T05:07:08.030Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '6a7850b9-bf40-423c-b5c6-68c772c33c71', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-01-05&enddate=2025-01-12', + true, + false, + NULL, + '2025-01-12T05:14:10.521Z'::timestamptz, + '2025-01-12T05:14:10.521Z'::timestamptz, + '2025-01-12T05:14:10.521Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'b971187f-e93d-44c0-a879-bc363b613a8e', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-01-12&enddate=2025-01-19', + true, + false, + NULL, + '2025-01-19T05:07:39.648Z'::timestamptz, + '2025-01-19T05:07:39.648Z'::timestamptz, + '2025-01-19T05:07:39.648Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'c3109ff2-2068-4989-984f-1ebdae569c3a', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-01-19&enddate=2025-01-26', + true, + false, + NULL, + '2025-01-26T05:06:46.736Z'::timestamptz, + '2025-01-26T05:06:46.736Z'::timestamptz, + '2025-01-26T05:06:46.736Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '28ecb62c-a03b-40ae-b458-d21419dd5536', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-01-26&enddate=2025-02-02', + true, + false, + NULL, + '2025-02-02T05:07:59.066Z'::timestamptz, + '2025-02-02T05:07:59.066Z'::timestamptz, + '2025-02-02T05:07:59.066Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'ec8f07da-c38d-42c3-85f3-f5c473cc0b47', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-02-02&enddate=2025-02-09', + true, + false, + NULL, + '2025-02-09T05:06:15.938Z'::timestamptz, + '2025-02-09T05:06:15.938Z'::timestamptz, + '2025-02-09T05:06:15.939Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '41f027a9-5556-448e-8700-baeeccca71f5', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-02-09&enddate=2025-02-16', + true, + false, + NULL, + '2025-02-16T05:06:02.538Z'::timestamptz, + '2025-02-16T05:06:02.538Z'::timestamptz, + '2025-02-16T05:06:02.538Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'be51fdcf-ba28-4485-9d60-185452cd951b', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-02-16&enddate=2025-02-23', + true, + false, + NULL, + '2025-02-23T05:04:44.621Z'::timestamptz, + '2025-02-23T05:04:44.621Z'::timestamptz, + '2025-02-23T05:04:44.621Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'f449d95c-b59e-4b21-b6d7-d26d3a34cdaf', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-02-23&enddate=2025-03-02', + true, + false, + NULL, + '2025-03-02T05:02:02.453Z'::timestamptz, + '2025-03-02T05:02:02.453Z'::timestamptz, + '2025-03-02T05:02:02.453Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '6c9aa772-c7ce-455e-9a50-892543d99ccc', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-04-30&enddate=2025-05-07', + true, + false, + NULL, + '2025-05-07T15:21:29.207Z'::timestamptz, + '2025-05-07T15:21:29.207Z'::timestamptz, + '2025-05-07T15:21:29.207Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'b20d5a57-4936-4666-988b-6f4b652f710c', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '404', + '[]'::jsonb, + 'https://helix-pages.anywhere.run/helix-services/run-query@v3/rum-404?interval=-1&offset=0&limit=101&url=www.tenant-alpha-secondary.com&startdate=2025-05-28&enddate=2025-06-04', + true, + false, + NULL, + '2025-06-04T13:44:09.371Z'::timestamptz, + '2025-06-04T13:44:09.371Z'::timestamptz, + '2025-06-04T13:44:09.371Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'bed1f8a8-7ca5-4438-8b6a-5bf410628018', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'accessibility', + '{"finalUrl": "www.tenant-alpha-secondary.com", "status": "preparing"}'::jsonb, + 'scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/', + true, + false, + NULL, + '2025-08-07T12:49:45.547Z'::timestamptz, + '2025-08-07T12:49:45.548Z'::timestamptz, + '2025-08-07T12:49:45.550Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '97778cfc-c014-4393-a5a4-b8cdceb4bb80', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'accessibility', + '{"finalUrl": "www.tenant-alpha-secondary.com", "status": "preparing"}'::jsonb, + 'scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/', + true, + false, + NULL, + '2025-09-29T07:14:29.354Z'::timestamptz, + '2025-09-29T07:14:29.354Z'::timestamptz, + '2025-09-29T07:14:29.354Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '1758c317-94a0-45d5-87f8-28baeba4973e', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'accessibility', + '{"finalUrl": "www.tenant-alpha-secondary.com", "status": "preparing"}'::jsonb, + 'scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/', + true, + false, + NULL, + '2025-10-06T07:16:30.821Z'::timestamptz, + '2025-10-06T07:16:30.821Z'::timestamptz, + '2025-10-06T07:16:30.821Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'a5590c4f-d897-42e5-ab54-fc7604ab8afb', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'accessibility', + '{"finalUrl": "www.tenant-alpha-secondary.com", "status": "preparing"}'::jsonb, + 'scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/', + true, + false, + NULL, + '2025-10-13T07:11:49.673Z'::timestamptz, + '2025-10-13T07:11:49.673Z'::timestamptz, + '2025-10-13T07:11:49.673Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'ad7a6aa0-09e0-458b-ab7e-b55f4d4b15a5', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'alt-text', + '{"sourceS3Folder": "spacecat-scraper/scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "fullAuditRef": "scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "detectedTags": {"imagesWithoutAltText": [{"src": "/content/dam/tenant-alpha-chocolate-world/images/blog/our-sweet-history/storytelling-video-historicaltour.jpg", "pageUrl": "/blog/history.html"}, {"src": "/plan-your-visit/amenities-and-accessibility/_jcr_content/root/container/section_1887685911/col1/section/col2/image.coreimg.png/1645138368408/amenities-badge-cac.png", "pageUrl": "/plan-your-visit/amenities-and-accessibility.html"}, {"src": "/plan-your-visit/groups-and-parties/_jcr_content/root/container/section_410668149_co_292676950/col2/call_out_tile/image.img.jpg/1694802555244.jpg?im=Resize=(193)", "pageUrl": "/plan-your-visit/groups-and-parties.html"}, {"src": "/things-to-do/reeses-stuff-your-cup-ingredients/_jcr_content/root/container/section_article_over/col1/section_copy/col2/image.coreimg.png/1677778544157/reeses-syc-logo.png", "pageUrl": "/things-to-do/reeses-stuff-your-cup-ingredients.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}]}, "finalUrl": "https://tenant-alpha-secondary.com"}'::jsonb, + 'https://tenant-alpha-secondary.com', + true, + false, + NULL, + '2025-02-26T12:09:01.180Z'::timestamptz, + '2025-02-26T12:09:01.181Z'::timestamptz, + '2025-02-26T12:09:01.183Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + 'faefae51-884b-4940-a53f-efe554a18616', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'alt-text', + '{"sourceS3Folder": "spacecat-scraper/scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "fullAuditRef": "scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "detectedTags": {"imagesWithoutAltText": [{"src": "/content/dam/tenant-alpha-chocolate-world/images/blog/our-sweet-history/storytelling-video-historicaltour.jpg", "pageUrl": "/blog/history.html"}, {"src": "/plan-your-visit/amenities-and-accessibility/_jcr_content/root/container/section_1887685911/col1/section/col2/image.coreimg.png/1645138368408/amenities-badge-cac.png", "pageUrl": "/plan-your-visit/amenities-and-accessibility.html"}, {"src": "/plan-your-visit/groups-and-parties/_jcr_content/root/container/section_410668149_co_292676950/col2/call_out_tile/image.img.jpg/1694802555244.jpg?im=Resize=(193)", "pageUrl": "/plan-your-visit/groups-and-parties.html"}, {"src": "/things-to-do/reeses-stuff-your-cup-ingredients/_jcr_content/root/container/section_article_over/col1/section_copy/col2/image.coreimg.png/1677778544157/reeses-syc-logo.png", "pageUrl": "/things-to-do/reeses-stuff-your-cup-ingredients.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}]}, "finalUrl": "https://tenant-alpha-secondary.com"}'::jsonb, + 'https://tenant-alpha-secondary.com', + true, + false, + NULL, + '2025-02-26T12:24:33.423Z'::timestamptz, + '2025-02-26T12:24:33.424Z'::timestamptz, + '2025-02-26T12:24:33.427Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '3af2e62a-38e9-49c8-9105-beb5e03f11ae', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'alt-text', + '{"sourceS3Folder": "spacecat-scraper/scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "fullAuditRef": "scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "detectedTags": {"imagesWithoutAltText": [{"src": "/content/dam/tenant-alpha-chocolate-world/images/blog/our-sweet-history/storytelling-video-historicaltour.jpg", "pageUrl": "/blog/history.html"}, {"src": "/plan-your-visit/amenities-and-accessibility/_jcr_content/root/container/section_1887685911/col1/section/col2/image.coreimg.png/1645138368408/amenities-badge-cac.png", "pageUrl": "/plan-your-visit/amenities-and-accessibility.html"}, {"src": "/plan-your-visit/groups-and-parties/_jcr_content/root/container/section_410668149_co_292676950/col2/call_out_tile/image.img.jpg/1694802555244.jpg?im=Resize=(193)", "pageUrl": "/plan-your-visit/groups-and-parties.html"}, {"src": "/things-to-do/reeses-stuff-your-cup-ingredients/_jcr_content/root/container/section_article_over/col1/section_copy/col2/image.coreimg.png/1677778544157/reeses-syc-logo.png", "pageUrl": "/things-to-do/reeses-stuff-your-cup-ingredients.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}]}, "finalUrl": "https://tenant-alpha-secondary.com"}'::jsonb, + 'https://tenant-alpha-secondary.com', + true, + false, + NULL, + '2025-02-26T12:33:33.631Z'::timestamptz, + '2025-02-26T12:33:33.632Z'::timestamptz, + '2025-02-26T12:33:33.635Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '48cdf221-25ae-41b1-805e-4bf326734995', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'alt-text', + '{"sourceS3Folder": "spacecat-scraper/scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "fullAuditRef": "scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "detectedTags": {"imagesWithoutAltText": [{"src": "/content/dam/tenant-alpha-chocolate-world/images/blog/our-sweet-history/storytelling-video-historicaltour.jpg", "pageUrl": "/blog/history.html"}, {"src": "/plan-your-visit/amenities-and-accessibility/_jcr_content/root/container/section_1887685911/col1/section/col2/image.coreimg.png/1645138368408/amenities-badge-cac.png", "pageUrl": "/plan-your-visit/amenities-and-accessibility.html"}, {"src": "/plan-your-visit/groups-and-parties/_jcr_content/root/container/section_410668149_co_292676950/col2/call_out_tile/image.img.jpg/1694802555244.jpg?im=Resize=(193)", "pageUrl": "/plan-your-visit/groups-and-parties.html"}, {"src": "/things-to-do/reeses-stuff-your-cup-ingredients/_jcr_content/root/container/section_article_over/col1/section_copy/col2/image.coreimg.png/1677778544157/reeses-syc-logo.png", "pageUrl": "/things-to-do/reeses-stuff-your-cup-ingredients.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}]}, "finalUrl": "https://tenant-alpha-secondary.com"}'::jsonb, + 'https://tenant-alpha-secondary.com', + true, + false, + NULL, + '2025-02-26T14:47:00.335Z'::timestamptz, + '2025-02-26T14:47:00.336Z'::timestamptz, + '2025-02-26T14:47:00.339Z'::timestamptz, + 'system' +); +INSERT INTO audits (id, site_id, audit_type, audit_result, full_audit_ref, is_live, is_error, invocation_id, audited_at, created_at, updated_at, updated_by) VALUES ( + '1e69d5b7-db32-43b9-8fb4-c5634041792a', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + 'alt-text', + '{"sourceS3Folder": "spacecat-scraper/scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "fullAuditRef": "scrapes/e12c091c-075b-4c94-aab7-398a04412b5c/", "detectedTags": {"imagesWithoutAltText": [{"src": "/content/dam/tenant-alpha-chocolate-world/images/blog/our-sweet-history/storytelling-video-historicaltour.jpg", "pageUrl": "/blog/history.html"}, {"src": "/plan-your-visit/amenities-and-accessibility/_jcr_content/root/container/section_1887685911/col1/section/col2/image.coreimg.png/1645138368408/amenities-badge-cac.png", "pageUrl": "/plan-your-visit/amenities-and-accessibility.html"}, {"src": "/plan-your-visit/groups-and-parties/_jcr_content/root/container/section_410668149_co_292676950/col2/call_out_tile/image.img.jpg/1694802555244.jpg?im=Resize=(193)", "pageUrl": "/plan-your-visit/groups-and-parties.html"}, {"src": "/things-to-do/reeses-stuff-your-cup-ingredients/_jcr_content/root/container/section_article_over/col1/section_copy/col2/image.coreimg.png/1677778544157/reeses-syc-logo.png", "pageUrl": "/things-to-do/reeses-stuff-your-cup-ingredients.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}, {"src": "/content/dam/tenant-alpha-chocolate-world/images/buy-tickets/buy-tickets-split-callout-meal-deal.jpg?im=Resize=(603)", "pageUrl": "/tickets.html"}]}, "finalUrl": "https://tenant-alpha-secondary.com"}'::jsonb, + 'https://tenant-alpha-secondary.com', + true, + false, + NULL, + '2025-02-26T15:51:57.343Z'::timestamptz, + '2025-02-26T15:51:57.344Z'::timestamptz, + '2025-02-26T15:51:57.347Z'::timestamptz, + 'system' +); + +-- Opportunities +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '698054e3-3fbd-4b1d-bca1-37c094217e82', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Week 12 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG).', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-03-13T15:27:12.562Z'::timestamptz, + '2025-03-13T15:27:12.563Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '8890223a-358c-4f61-97d7-41f72d74b854', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Week 12 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-03-14T11:52:52.699Z'::timestamptz, + '2025-03-14T11:52:52.701Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '7803bf52-5f7c-4407-a27c-b6f51f07c997', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-03-14T12:07:35.441Z'::timestamptz, + '2025-03-14T12:07:35.442Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'b3ed2031-0d1a-4107-9f33-21df545ebd52', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Week 13 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-03-26T14:11:59.449Z'::timestamptz, + '2025-03-26T14:11:59.450Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '9de4cffb-5be1-4647-a169-3b71b31aea83', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages - Desktop - Week 13 - 2025', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-03-26T14:26:23.287Z'::timestamptz, + '2025-03-26T14:44:07.094Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '6486da2a-2327-4f14-b75e-4ec16d7bdc82', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 13 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only version.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-03-26T14:10:17.608Z'::timestamptz, + '2025-03-26T14:46:00.655Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'fd61d378-fccf-4f13-a47e-067e74bf7f27', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages -Desktop - Week 14', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-02T12:34:21.373Z'::timestamptz, + '2025-04-02T12:34:21.374Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '0c9e2e1f-c2b2-45df-8e66-eb0a18ea781c', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 14 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-02T12:34:49.762Z'::timestamptz, + '2025-04-02T12:34:49.762Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '5f257522-2b5a-4b15-8398-d26313aaa963', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 15 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-08T14:27:52.179Z'::timestamptz, + '2025-04-08T14:27:52.180Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '0be4cab5-ee72-428f-b936-ef213c31d2c2', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages - Desktop - Week 15 - 2025', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-08T14:28:07.846Z'::timestamptz, + '2025-04-08T14:28:07.848Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'd214f3b9-619a-4a0a-ab12-dd5a41d70e62', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 16 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-15T14:49:57.793Z'::timestamptz, + '2025-04-15T14:49:57.794Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '879ed275-54ff-4910-9dda-5b12d4531852', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Fixed vs New Issues - Desktop - Week 16 - 2025', + 'This report provides a comprehensive analysis of accessibility issues, highlighting both resolved and newly identified problems. It aims to track progress in improving accessibility and identify areas requiring further attention.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-15T14:50:07.315Z'::timestamptz, + '2025-04-15T14:50:07.317Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'f116a366-b8af-46bd-b711-4f70e2d8b2f1', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages - Desktop - Week 16 - 2025', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-15T14:50:18.912Z'::timestamptz, + '2025-04-15T14:50:18.913Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '4dd4039b-65c4-4e03-9209-e3f869a565d8', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 14 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-02T12:32:57.059Z'::timestamptz, + '2025-04-17T12:44:51.120Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '05a3b8bf-7513-4332-a77c-e36ca638fe03', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 15 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-08T14:29:34.916Z'::timestamptz, + '2025-04-17T12:44:59.571Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '0b10d7eb-ff98-4298-b11d-39811de73be1', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 17 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-23T14:55:04.478Z'::timestamptz, + '2025-04-23T14:55:04.480Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '225e5ab1-60e5-4c27-a92c-e07a215b512d', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Fixed vs New Issues - Desktop - Week 17 - 2025', + 'This report provides a comprehensive analysis of accessibility issues, highlighting both resolved and newly identified problems. It aims to track progress in improving accessibility and identify areas requiring further attention.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-23T14:55:12.915Z'::timestamptz, + '2025-04-23T14:55:12.916Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'c3bec7ea-7c6b-47b5-88f3-6b67af8ee60a', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages - Desktop - Week 17 - 2025', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-23T14:55:22.169Z'::timestamptz, + '2025-04-23T14:55:22.169Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '22aad080-3d1b-4dc0-b45e-ad4268490e5c', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 16 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-15T14:51:15.984Z'::timestamptz, + '2025-04-23T14:56:33.687Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '6ef2b19d-d4e8-4f18-b242-f29bd767ba82', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 18 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-30T14:56:48.097Z'::timestamptz, + '2025-04-30T14:56:48.099Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'ec9aaffd-97da-47e7-a5d9-faf8dc044b23', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Fixed vs New Issues - Desktop - Week 18 - 2025', + 'This report provides a comprehensive analysis of accessibility issues, highlighting both resolved and newly identified problems. It aims to track progress in improving accessibility and identify areas requiring further attention.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-30T14:57:06.328Z'::timestamptz, + '2025-04-30T14:57:06.328Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '95088985-4db9-4d6d-8505-eb8ba6a5f404', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages - Desktop - Week 18 - 2025', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-30T14:57:18.091Z'::timestamptz, + '2025-04-30T14:57:18.092Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'a8fe5fd4-9486-449e-85b4-5812227ddcaa', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 17 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-23T14:56:22.193Z'::timestamptz, + '2025-04-30T14:59:29.512Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'd734deeb-1b96-4656-8391-d1eae650bc15', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 18 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-04-30T14:58:30.262Z'::timestamptz, + '2025-05-09T11:38:49.368Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'd4754c8c-ef65-476d-a074-d67dd0512c0d', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 19 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-05-09T11:38:57.241Z'::timestamptz, + '2025-05-09T11:38:57.243Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'faabb5f9-37db-4671-8de9-15e989ffa9e9', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Fixed vs New Issues - Desktop - Week 19 - 2025', + 'This report provides a comprehensive analysis of accessibility issues, highlighting both resolved and newly identified problems. It aims to track progress in improving accessibility and identify areas requiring further attention.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-05-09T11:39:10.908Z'::timestamptz, + '2025-05-09T11:39:10.910Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '0448b8bb-34eb-4ed6-b963-989339b667b4', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + NULL::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Enhancing accessibility for the top 10 most-visited pages - Desktop - Week 19 - 2025', + 'Here are some optimization suggestions that could help solve the accessibility issues found on the top 10 most-visited pages.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-05-09T11:39:23.674Z'::timestamptz, + '2025-05-09T11:39:23.675Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'c5470bcd-1844-442c-bd1e-8d87fd60c95b', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + '{"dataSources": ["Ahrefs"]}'::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 19 - 2025', + 'A web accessibility audit is an assessment of how well your website and digital assets conform to the needs of people with disabilities and if they follow the Web Content Accessibility Guidelines (WCAG). Desktop only.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-05-09T11:40:26.439Z'::timestamptz, + '2025-05-16T12:49:57.843Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '6f3aceb8-bf54-4cae-9fff-d72ea8fe715c', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + '{"dataSources": ["Ahrefs", "GSC", "Site", "RUM"]}'::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report - Desktop - Week 20 - 2025 - in-depth', + 'This report provides an in-depth overview of various accessibility issues identified across different web pages. It categorizes issues based on their severity and impact, offering detailed descriptions and recommended fixes. The report covers critical aspects such as ARIA attributes, keyboard navigation, and screen reader compatibility to ensure a more inclusive and accessible web experience for all users.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-05-16T12:50:17.738Z'::timestamptz, + '2025-05-16T12:50:17.739Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + '9e8a6770-bc19-4222-b931-072b1471b520', + '0983c6da-0dee-45cc-b897-3f1fed6b460b', + NULL, + 'https://adobe.sharepoint.com/:w:/r/sites/aemsites-engineering/Shared%20Documents/3%20-%20Experience%20Success/SpaceCat/Runbooks/Experience_Success_Studio_Runbook_Template.docx?d=w5ec0880fdc7a41c786c7409157f5de48&csf=1&web=1&e=vXnRVq', + 'generic-opportunity', + '{"dataSources": ["Ahrefs", "GSC", "Site", "RUM"]}'::jsonb, + 'ESS_OPS'::opportunity_origin, + 'Accessibility report Fixed vs New Issues - Desktop - Week 20 - 2025', + 'This report provides a comprehensive analysis of accessibility issues, highlighting both resolved and newly identified problems. It aims to track progress in improving accessibility and identify areas requiring further attention.', + 'IGNORED'::opportunity_status, + NULL::jsonb, + ARRAY['a11y']::text[], + '2025-05-16T12:50:30.499Z'::timestamptz, + '2025-05-16T12:50:30.500Z'::timestamptz, + 'system' +); +INSERT INTO opportunities (id, site_id, audit_id, runbook, type, data, origin, title, description, status, guidance, tags, created_at, updated_at, updated_by) VALUES ( + 'ab889047-061d-421f-9e5f-1019c940bdc9', + 'e12c091c-075b-4c94-aab7-398a04412b5c', + '4c081ef7-f4f8-4ae0-828c-98f145d16be2', + 'https://adobe.sharepoint.com/:w:/s/AEM_Forms/Ebpoflp2gHFNl4w5-9C7dFEBBHHE4gTaRzHaofqSxJMuuQ?e=Ss6mep', + 'form-accessibility', + '{"accessibility": [{"form": "https://www.tenant-alpha-secondary.com/plan-your-visit/birthday-parties.html", "formSource": "#birthday-form form#groupForm", "a11yIssues": [{"htmlWithIssues": ["", "", ""], "recommendation": "Fix any of the following:\n Element does not have an implicit (wrapped)