diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1756dc9a89..f6fd2e7e9f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -27,7 +27,7 @@ "ms-python.flake8", "eamodio.gitlens", "github.vscode-pull-request-github", - "orta.vscode-jest", + "vitest-explorer", "42crunch.vscode-openapi", "mermade.openapi-lint", "christian-kohler.npm-intellisense", diff --git a/.vscode/eps-prescription-status-update-api.code-workspace b/.vscode/eps-prescription-status-update-api.code-workspace index 06664a3e91..f0c1c29f9e 100644 --- a/.vscode/eps-prescription-status-update-api.code-workspace +++ b/.vscode/eps-prescription-status-update-api.code-workspace @@ -70,11 +70,6 @@ } ], "settings": { - "jest.disabledWorkspaceFolders": [ - "eps-prescription-status-update-monorepo", - "packages/common/testing", - "packages/specification" - ], "files.exclude": { "packages/": true }, @@ -158,11 +153,7 @@ ], "cSpell.dictionaries": ["en-GB"], "cSpell.ignorePaths": ["package-lock.json", "node_modules", ".vscode"], - "jest.jestCommandLine": "NODE_OPTIONS=--experimental-vm-modules node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true - }, - "typescript.tsdk": "eps-prescription-status-update-monorepo/node_modules/typescript/lib", + "js/ts.tsdk.path": "eps-prescription-status-update-monorepo/node_modules/typescript/lib", "eslint.useFlatConfig": true, "eslint.format.enable": true }, @@ -174,7 +165,7 @@ "ms-python.flake8", "eamodio.gitlens", "github.vscode-pull-request-github", - "orta.vscode-jest", + "vitest-explorer", "42crunch.vscode-openapi", "mermade.openapi-lint", "redhat.vscode-yaml", diff --git a/eslint.config.mjs b/eslint.config.mjs index d38407fa9e..ce941ced8e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -118,7 +118,6 @@ export default [ languageOptions: { parser: tsParser, globals: { - ...globals.jest, ...globals.node, }, }, diff --git a/jest.default.config.ts b/jest.default.config.ts deleted file mode 100644 index f48396aa26..0000000000 --- a/jest.default.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -import type {JestConfigWithTsJest} from "ts-jest" - -const esModules = ["@middy"].join("|") -const jestConfig: JestConfigWithTsJest = { - preset: "ts-jest/presets/default-esm", - moduleFileExtensions: ["js", "json", "ts", "d.ts"], - moduleNameMapper: { - "^(\\.{1,2}/.*)\\.js$": "$1" - }, - transform: { - "^.+\\.ts?$": [ - "ts-jest", - { - useESM: true, - tsconfig: "./tsconfig.json" - } - ] - }, - clearMocks: true, - collectCoverage: true, - coverageDirectory: "coverage", - coverageProvider: "v8", - testMatch: ["**/tests/**/*.test.ts"], - testEnvironment: "node", - extensionsToTreatAsEsm: [".ts"], - verbose: true, - transformIgnorePatterns: [`node_modules/(?!${esModules})`] -} - -export default jestConfig diff --git a/package-lock.json b/package-lock.json index ed950f9e7e..a6b0eeda16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,22 +36,33 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@types/aws-lambda": "^8.10.161", - "@types/jest": "^30.0.0", "@types/node": "^25.5.0", "@typescript-eslint/eslint-plugin": "^8.57.2", "@typescript-eslint/parser": "^8.57.1", + "@vitest/coverage-v8": "^3.2.4", "aws-lambda": "^1.0.7", "eslint": "^10.1.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import-newlines": "^2.0.0", "eslint-plugin-prettier": "^5.5.5", "globals": "^17.4.0", - "jest": "^30.3.0", - "jest-junit": "^16.0.0", - "ts-jest": "^29.4.6", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "typescript-eslint": "^8.57.2" + "typescript-eslint": "^8.57.2", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.2.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@aws-crypto/sha256-browser": { @@ -161,8 +172,6 @@ }, "node_modules/@aws-lambda-powertools/commons": { "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@aws-lambda-powertools/commons/-/commons-2.32.0.tgz", - "integrity": "sha512-vsdakJDZu/KkJ5+1WHkawQ5R06aCK0XYB3nc3tpcBfO1YmOHkn+QpuGiZtkmpzIykGPAO9lnBjK5joAeim2o4A==", "license": "MIT-0", "dependencies": { "@aws/lambda-invoke-store": "0.2.4" @@ -170,8 +179,6 @@ }, "node_modules/@aws-lambda-powertools/logger": { "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@aws-lambda-powertools/logger/-/logger-2.32.0.tgz", - "integrity": "sha512-ZfomsMv4FnxYkgUvU9S6BPrTzd+ntPiIBZcrvSNz+/aPvVwu2BGHSKDuVlXa7nr6rB1wjzaA5bmLVTESIdnsdQ==", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.32.0", @@ -192,8 +199,6 @@ }, "node_modules/@aws-lambda-powertools/parameters": { "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@aws-lambda-powertools/parameters/-/parameters-2.32.0.tgz", - "integrity": "sha512-Fnr7AqWPOSvHQU6xlOQwmdafr24FWLHGFtQQJYw1ltVT3wW1z4JJSKZLOqLh2Me2zcUddpAxaJ9bB1MJ4Zabmw==", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.32.0" @@ -228,48 +233,48 @@ } }, "node_modules/@aws-sdk/client-backup": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-backup/-/client-backup-3.1019.0.tgz", - "integrity": "sha512-QilBfgz0Zs/+8B0ode6ZldGdSLMUp1e1ukdyRIaX+jMw5UeSizKobhvPJAx0RW6xKaBtrc0MzX9TUPVx4ha0Bg==", + "version": "3.1025.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-backup/-/client-backup-3.1025.0.tgz", + "integrity": "sha512-Sg52QJU2uU2eE1m9X2yGVIKnV8Yjtqx6u2ityh/Keo/cO8l1TKIIFaHs/IwWSgi8ZYNX1nq3wxOAk1dONBbdyA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/credential-provider-node": "^3.972.27", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.26", + "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.12", + "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", + "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", + "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", + "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", + "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -278,9 +283,9 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.1024.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1024.0.tgz", - "integrity": "sha512-IJ4uM5i8z6hO7FRT7kngl/boqrZdyczxLKobCSHaxbFtxDu68QEfhn9D95FdkOENMmC2TIglnSlBqn5cG8qMTQ==", + "version": "3.1025.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1025.0.tgz", + "integrity": "sha512-zDus8uUYmL/ZSEGTWybdAxtcJPwlCUJuAV3d/XuWckKXW1HI78q9Yul1WSn1Z9nDeSFBhCNDuwz1CEAxbIyigA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -331,48 +336,48 @@ } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.1019.0.tgz", - "integrity": "sha512-pocE77Q7wmnt8grxi0qNKUIq05GW1USIqZ6jwr/pC9zd5lwp9BHIFWxg/pkJ4ffNPbX9LekimpoL8IYl3ScWbQ==", + "version": "3.1025.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.1025.0.tgz", + "integrity": "sha512-A08vxPKkRLi9n8o/257w7A52G8ZGvwF5ZHlaWAk7yw+fNHtlUrkQU+pNabI+Lob/3X3AVxTbIb8cfsLD83p47Q==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/credential-provider-node": "^3.972.27", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.26", + "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.12", + "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", + "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", + "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", + "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", + "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -381,50 +386,50 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1019.0.tgz", - "integrity": "sha512-6QEA/YWHV6Zd0J32YTsWzkWNziIiYbEZDw+xAsU9JyfT1JSA+kPZ7rbDP4LoV80ltEnoACLEODzdSoFTaUHW7A==", + "version": "3.1025.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1025.0.tgz", + "integrity": "sha512-qXDGLBU7Xmv0cKicDyRFcp47wJ12YMUzTawFZhobdeGJA52nNrAA781hner5O36BOqoXYh1nm0PEybr2KsL1OQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/credential-provider-node": "^3.972.27", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-sdk-sqs": "^3.972.17", - "@aws-sdk/middleware-user-agent": "^3.972.26", + "@aws-sdk/middleware-sdk-sqs": "^3.972.18", + "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.12", + "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", + "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/md5-js": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", + "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", + "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", + "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -433,50 +438,50 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.1019.0.tgz", - "integrity": "sha512-4/s6n/GjBccA3Y+muRGrHfCvO2Rn2JjxcLkvxf9npeH/BjMP6hozuCY4aMnRwAbkZSILP43R2lutdAeV1SzqYw==", + "version": "3.1025.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.1025.0.tgz", + "integrity": "sha512-sQF0sDvUgJPeSBt4wulaywE/mXkcuxiwo/uNbmUNk4NIoFkDuEdYOK72MBhLF/BSJ4qpNQgherPc5CognefUNg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.25", - "@aws-sdk/credential-provider-node": "^3.972.27", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", - "@aws-sdk/middleware-user-agent": "^3.972.26", + "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.12", + "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", + "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", + "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", + "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", + "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", + "@smithy/util-waiter": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -696,15 +701,15 @@ } }, "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.1019.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.1019.0.tgz", - "integrity": "sha512-kR4J3j6okDfynV4812b5oDV52y4jvZYLIpHw6cKo2Iz/FQVvLchiiW7K4ByCA5H0Y2eiBrRuU+Ess42XSyE0yA==", + "version": "3.1025.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.1025.0.tgz", + "integrity": "sha512-5MFISrm/BRwD6sjz5wba4SGXnFjkiZNMSMyeKkmm8RmpGkGw/FVe9yboKM4GVfU9derOB3icMGxovlABhnU1qw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.25", + "@aws-sdk/core": "^3.973.26", "@aws-sdk/util-dynamodb": "^3.996.2", - "@smithy/core": "^3.23.12", - "@smithy/smithy-client": "^4.12.7", + "@smithy/core": "^3.23.13", + "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, @@ -712,7 +717,7 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.1019.0" + "@aws-sdk/client-dynamodb": "^3.1025.0" } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { @@ -734,8 +739,6 @@ }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", - "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.6", @@ -749,8 +752,6 @@ }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", - "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.6", @@ -778,13 +779,13 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.972.17", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.17.tgz", - "integrity": "sha512-LnzPRRoDXGtlFV2G1p2rsY6fRKrbf6Pvvc21KliSLw3+NmQca2+Aa1QIMRbpQvZYedsSqkGYwxe+qvXwQ2uxDw==", + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.18.tgz", + "integrity": "sha512-BdsGFuBJUX5PnuZkEV6JRB5g/6ts7iGmN3pXwyoiGCCM2HHXrlFqjkBs+iPX7yO884WqYeQJpme7nwn4DzU5xw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.6", - "@smithy/smithy-client": "^4.12.7", + "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-hex-encoding": "^4.2.2", "@smithy/util-utf8": "^4.2.2", @@ -898,8 +899,6 @@ }, "node_modules/@aws-sdk/types": { "version": "3.973.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", - "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.13.1", @@ -911,8 +910,6 @@ }, "node_modules/@aws-sdk/util-dynamodb": { "version": "3.996.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.996.2.tgz", - "integrity": "sha512-ddpwaZmjBzcApYN7lgtAXjk+u+GO8fiPsxzuc59UqP+zqdxI1gsenPvkyiHiF9LnYnyRGijz6oN2JylnN561qQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -926,8 +923,6 @@ }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.996.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", - "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.6", @@ -952,8 +947,6 @@ }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.972.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", - "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.6", @@ -1003,8 +996,6 @@ }, "node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", - "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -1012,7 +1003,6 @@ }, "node_modules/@babel/code-frame": { "version": "7.27.1", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -1023,3732 +1013,1600 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { - "version": "7.28.4", - "dev": true, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, "engines": { "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" } }, - "node_modules/@babel/generator": { - "version": "7.28.3", + "node_modules/@babel/parser": { + "version": "7.28.4", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@babel/types": "^7.28.4" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=6.0.0" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "dev": true, + "node_modules/@babel/runtime": { + "version": "7.28.4", "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", + "node_modules/@babel/types": { + "version": "7.28.4", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=12" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "dev": true, + "node_modules/@emotion/is-prop-valid": { + "version": "1.4.0", "license": "MIT", - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@emotion/memoize": "^0.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "dev": true, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "cpu": [ + "ppc64" + ], "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "dev": true, + "node_modules/@esbuild/android-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "cpu": [ + "arm" + ], "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "dev": true, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "dev": true, + "node_modules/@esbuild/android-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "dev": true, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "dev": true, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dev": true, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "cpu": [ + "ia32" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "cpu": [ + "loong64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "cpu": [ + "mips64el" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "cpu": [ + "s390x" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.4", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "dev": true, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/runtime": { - "version": "7.28.4", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@emnapi/core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", - "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", - "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", - "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.9.0" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emotion/unitless": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { + "node_modules/@esbuild/openbsd-x64": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", "cpu": [ "x64" ], "license": "MIT", "optional": true, "os": [ - "android" + "openbsd" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/openharmony-arm64": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", "cpu": [ "arm64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "openharmony" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/darwin-x64": { + "node_modules/@esbuild/sunos-x64": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", "cpu": [ "x64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "sunos" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/freebsd-arm64": { + "node_modules/@esbuild/win32-arm64": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", "cpu": [ "arm64" ], "license": "MIT", "optional": true, "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" + "win32" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/linux-arm64": { + "node_modules/@esbuild/win32-ia32": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", "cpu": [ - "arm64" + "ia32" ], "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/linux-ia32": { + "node_modules/@esbuild/win32-x64": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", "cpu": [ - "ia32" + "x64" ], "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", - "cpu": [ - "loong64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.23.3", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz", - "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^3.0.3", - "debug": "^4.3.1", - "minimatch": "^10.2.4" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz", - "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^1.1.1" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", - "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/js": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", - "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "eslint": "^10.0.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@eslint/object-schema": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz", - "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", - "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^1.1.1", - "levn": "^0.4.1" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@exodus/schemasafe": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@faker-js/faker": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-10.4.0.tgz", - "integrity": "sha512-sDBWI3yLy8EcDzgobvJTWq1MJYzAkQdpjXuPukga9wXonhpMRvd1Izuo2Qgwey2OiEoRIBr35RMU9HJRoOHzpw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/fakerjs" - } - ], - "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0", - "npm": ">=10" - } - }, - "node_modules/@fluent/syntax": { - "version": "0.18.1", - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/momoa": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", - "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", - "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", - "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.3.0", - "jest-config": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-resolve-dependencies": "30.3.0", - "jest-runner": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "jest-watcher": "30.3.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", - "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.3.0", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", - "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@sinonjs/fake-timers": "^15.0.0", - "@types/node": "*", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", - "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", - "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/types": "30.3.0", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", - "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", - "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", - "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/types": "30.3.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", - "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", - "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@middy/core": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-7.1.2.tgz", - "integrity": "sha512-gXB0Quhnu9x6a6EaknY2B3gRb82mbJD0ylgBbPTXLaD3Dd9E8pfPvIqTMUGshj0hm1OkIzvpJXJzfaVDGiW96Q==", - "license": "MIT", - "engines": { - "node": ">=22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - }, - "peerDependencies": { - "@aws/durable-execution-sdk-js": "^1.0.0" - }, - "peerDependenciesMeta": { - "@aws/durable-execution-sdk-js": { - "optional": true - } - } - }, - "node_modules/@middy/http-header-normalizer": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@middy/http-header-normalizer/-/http-header-normalizer-7.2.1.tgz", - "integrity": "sha512-dCne3FMDbdMzhYt4MEOoIHm8R47N0ooPNdU1JleeReWZtp7u54VbMET0C16GChVmbdCVFk/4IxDtM2nY+IHx1w==", - "license": "MIT", - "engines": { - "node": ">=22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - } - }, - "node_modules/@middy/input-output-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@middy/input-output-logger/-/input-output-logger-7.2.1.tgz", - "integrity": "sha512-52M/I3ZF/e0gNEE+4Mgu4SFxFvFFkLMmzczAeN7gUSfkQ1ZyCpLp3PyLMNybKUmo4HnUNte9DkWp86HKzBJA6Q==", - "license": "MIT", - "dependencies": { - "@middy/util": "7.2.1" - }, - "engines": { - "node": ">=22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - } - }, - "node_modules/@middy/input-output-logger/node_modules/@middy/util": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@middy/util/-/util-7.2.1.tgz", - "integrity": "sha512-vwtRPxQ5stQFR8Ulfsuqt8GgPJX6iXrF/9SiOTsJzw2nliNu/aPcZ8DR6sPj+gFar/QdUJuym6iyjevfeMNiFA==", - "license": "MIT", - "engines": { - "node": ">=22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - } - }, - "node_modules/@middy/util": { - "version": "6.4.1", - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - } - }, - "node_modules/@middy/validator": { - "version": "6.4.1", - "license": "MIT", - "dependencies": { - "@middy/util": "6.4.1", - "ajv": "8.17.1", - "ajv-errors": "3.0.0", - "ajv-formats": "3.0.1", - "ajv-formats-draft2019": "1.6.1", - "ajv-ftl-i18n": "0.1.1", - "ajv-keywords": "5.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - } - }, - "node_modules/@middy/validator/node_modules/ajv": { - "version": "8.17.1", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@middy/validator/node_modules/ajv-errors": { - "version": "3.0.0", - "license": "MIT", - "peerDependencies": { - "ajv": "^8.0.1" - } - }, - "node_modules/@middy/validator/node_modules/ajv-keywords": { - "version": "5.1.0", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/@middy/validator/node_modules/json-schema-traverse": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/@mswjs/interceptors": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.2.tgz", - "integrity": "sha512-7G0Uf0yK3f2bjElBLGHIQzgRgMESczOMyYVasq1XK8P5HaXtlW4eQhz9MBL+TQILZLaruq+ClGId+hH0w4jvWw==", - "license": "MIT", - "dependencies": { - "@open-draft/deferred-promise": "^2.2.0", - "@open-draft/logger": "^0.3.0", - "@open-draft/until": "^2.0.0", - "is-node-process": "^1.2.0", - "outvariant": "^1.4.3", - "strict-event-emitter": "^0.5.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@nhs/fhir-middy-error-handler": { - "version": "2.1.75", - "resolved": "https://registry.npmjs.org/@nhs/fhir-middy-error-handler/-/fhir-middy-error-handler-2.1.75.tgz", - "integrity": "sha512-XB1NhQoFUrgJjssS1JBl5DZgnk3A9up/HjnP+SKa5BHFpoEUgepqJSsO9q03fcEyTi4CejnKssr1LrcG6jxw3w==", - "license": "MIT", - "dependencies": { - "@aws-lambda-powertools/logger": "^2.31.0", - "@middy/core": "^7.1.0", - "uninstall": "^0.0.0" - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "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==", - "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==", - "license": "MIT", - "dependencies": { - "is-node-process": "^1.2.0", - "outvariant": "^1.4.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.202.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.202.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.202.0", - "@opentelemetry/otlp-transformer": "0.202.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.202.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-transformer": "0.202.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.202.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.202.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.202.0", - "@opentelemetry/sdk-metrics": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", - "protobufjs": "^7.3.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.202.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.202.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.9.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-node": { - "version": "2.0.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/context-async-hooks": "2.0.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.34.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@psu-common/commonTypes": { - "resolved": "packages/common/commonTypes", - "link": true - }, - "node_modules/@psu-common/middyErrorHandler": { - "resolved": "packages/common/middyErrorHandler", - "link": true - }, - "node_modules/@psu-common/testing": { - "resolved": "packages/common/testing", - "link": true - }, - "node_modules/@psu-common/utilities": { - "resolved": "packages/common/utilities", - "link": true - }, - "node_modules/@redocly/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@redocly/ajv/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@redocly/cli": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.25.2.tgz", - "integrity": "sha512-kn1SiHDss3t+Ami37T6ZH5ov1fiEXF1y488bUOUgrh0pEK8VOq8+HlPbdte/cH0K+dWPhuLyKNACd+KhMQPjCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@opentelemetry/exporter-trace-otlp-http": "0.202.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-node": "2.0.1", - "@opentelemetry/semantic-conventions": "1.34.0", - "@redocly/cli-otel": "0.1.2", - "@redocly/openapi-core": "2.25.2", - "@redocly/respect-core": "2.25.2", - "abort-controller": "^3.0.0", - "ajv": "npm:@redocly/ajv@8.18.0", - "ajv-formats": "^3.0.1", - "colorette": "^1.2.0", - "cookie": "^0.7.2", - "dotenv": "16.4.7", - "glob": "^13.0.5", - "handlebars": "^4.7.6", - "https-proxy-agent": "^7.0.5", - "mobx": "^6.0.4", - "picomatch": "^4.0.4", - "pluralize": "^8.0.0", - "react": "^17.0.0 || ^18.2.0 || ^19.2.1", - "react-dom": "^17.0.0 || ^18.2.0 || ^19.2.1", - "redoc": "2.5.1", - "semver": "^7.5.2", - "set-cookie-parser": "^2.3.5", - "simple-websocket": "^9.0.0", - "styled-components": "6.3.9", - "ulid": "^3.0.1", - "undici": "6.24.0", - "yargs": "17.0.1" - }, - "bin": { - "openapi": "bin/cli.js", - "redocly": "bin/cli.js" - }, - "engines": { - "node": ">=22.12.0 || >=20.19.0 <21.0.0", - "npm": ">=10" - } - }, - "node_modules/@redocly/cli-otel": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@redocly/cli-otel/-/cli-otel-0.1.2.tgz", - "integrity": "sha512-Bg7BoO5t1x3lVK+KhA5aGPmeXpQmdf6WtTYHhelKJCsQ+tRMiJoFAQoKHoBHAoNxXrhlS3K9lKFLHGmtxsFQfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ulid": "^2.3.0" - } - }, - "node_modules/@redocly/cli-otel/node_modules/ulid": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.4.0.tgz", - "integrity": "sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==", - "dev": true, - "license": "MIT", - "bin": { - "ulid": "bin/cli.js" - } - }, - "node_modules/@redocly/cli/node_modules/ajv": { - "name": "@redocly/ajv", - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@redocly/cli/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@redocly/cli/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@redocly/cli/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@redocly/cli/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/@redocly/cli/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@redocly/cli/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@redocly/cli/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/@redocly/cli/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@redocly/cli/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@redocly/cli/node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@redocly/cli/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@redocly/cli/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@redocly/cli/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@redocly/cli/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@redocly/cli/node_modules/yargs": { - "version": "17.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@redocly/cli/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/@redocly/config": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.45.0.tgz", - "integrity": "sha512-V+wNusPQUaYV1c5s9iptfKQ2Ggno4bMeiyXdNILxqZS87gttwPfqlqHKHKFyz006voS3JsR295cbpx3GlsIxKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-schema-to-ts": "2.7.2" - } - }, - "node_modules/@redocly/config/node_modules/json-schema-to-ts": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-2.7.2.tgz", - "integrity": "sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@types/json-schema": "^7.0.9", - "ts-algebra": "^1.2.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@redocly/config/node_modules/ts-algebra": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-1.2.2.tgz", - "integrity": "sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@redocly/openapi-core": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.25.2.tgz", - "integrity": "sha512-HIvxgwxQct/IdRJjjqu4g8BLpCik6I3zxp8JFJpRtmY1TSIZAOZjJwlkoh4uQcy/nCP+psSMgQvzjVGml3k6+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@redocly/ajv": "^8.18.0", - "@redocly/config": "^0.45.0", - "ajv": "npm:@redocly/ajv@8.18.0", - "ajv-formats": "^3.0.1", - "colorette": "^1.2.0", - "js-levenshtein": "^1.1.6", - "js-yaml": "^4.1.0", - "picomatch": "^4.0.4", - "pluralize": "^8.0.0", - "yaml-ast-parser": "0.0.43" - }, - "engines": { - "node": ">=22.12.0 || >=20.19.0 <21.0.0", - "npm": ">=10" - } - }, - "node_modules/@redocly/openapi-core/node_modules/ajv": { - "name": "@redocly/ajv", - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@redocly/openapi-core/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@redocly/openapi-core/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@redocly/openapi-core/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/@redocly/openapi-core/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@redocly/respect-core": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.25.2.tgz", - "integrity": "sha512-GpvmjY2x8u4pAGNts7slexuKDzDWHNUB4gey9/rSqvC8IaqY49vkvMuRodIBwCsqXhn2rpkJbar1UK3rAOuy7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@faker-js/faker": "^7.6.0", - "@noble/hashes": "^1.8.0", - "@redocly/ajv": "^8.18.0", - "@redocly/openapi-core": "2.25.2", - "ajv": "npm:@redocly/ajv@8.18.0", - "better-ajv-errors": "^1.2.0", - "colorette": "^2.0.20", - "json-pointer": "^0.6.2", - "jsonpath-rfc9535": "1.3.0", - "openapi-sampler": "^1.7.1", - "outdent": "^0.8.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=22.12.0 || >=20.19.0 <21.0.0", - "npm": ">=10" - } - }, - "node_modules/@redocly/respect-core/node_modules/@faker-js/faker": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", - "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@redocly/respect-core/node_modules/ajv": { - "name": "@redocly/ajv", - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@redocly/respect-core/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } }, - "node_modules/@redocly/respect-core/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==", + "node_modules/@eslint/config-array": { + "version": "0.23.3", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.3", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } }, - "node_modules/@redocly/respect-core/node_modules/picomatch": { + "node_modules/@eslint/config-array/node_modules/balanced-match": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "18 || 20 || >=22" } }, - "node_modules/@sinclair/typebox": { - "version": "0.34.41", + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "5.0.5", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "10.2.4", "dev": true, - "license": "BSD-3-Clause", + "license": "BlueOak-1.0.0", "dependencies": { - "type-detect": "4.0.8" + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", + "node_modules/@eslint/config-helpers": { + "version": "0.5.3", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "@eslint/core": "^1.1.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.3", + "node_modules/@eslint/core": { + "version": "1.1.1", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^3.0.1", - "type-detect": "^4.1.0" + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.1.0", + "node_modules/@eslint/js": { + "version": "10.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.3", + "node_modules/@eslint/object-schema": { + "version": "3.0.3", "dev": true, - "license": "(Unlicense OR Apache-2.0)" - }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.13.tgz", - "integrity": "sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==", "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@smithy/core": { - "version": "3.23.13", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.13.tgz", - "integrity": "sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==", + "node_modules/@eslint/plugin-kit": { + "version": "0.6.1", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.21", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", - "tslib": "^2.6.2" + "@eslint/core": "^1.1.1", + "levn": "^0.4.1" }, "engines": { - "node": ">=18.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", - "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "tslib": "^2.6.2" - }, + "node_modules/@exodus/schemasafe": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/@faker-js/faker": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-10.4.0.tgz", + "integrity": "sha512-sDBWI3yLy8EcDzgobvJTWq1MJYzAkQdpjXuPukga9wXonhpMRvd1Izuo2Qgwey2OiEoRIBr35RMU9HJRoOHzpw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": "^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0", + "npm": ">=10" } }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.15", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", - "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "node_modules/@fluent/syntax": { + "version": "0.18.1", "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/querystring-builder": "^4.2.12", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0", + "npm": ">=7.0.0" } }, - "node_modules/@smithy/hash-node": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", - "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=18.18.0" } }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", - "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "node_modules/@humanfs/node": { + "version": "0.16.7", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=18.18.0" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", - "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@smithy/md5-js": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.12.tgz", - "integrity": "sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==", + "node_modules/@humanwhocodes/momoa": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", + "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=10.10.0" } }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", - "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.28", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.28.tgz", - "integrity": "sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ==", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "license": "ISC", "dependencies": { - "@smithy/core": "^3.23.13", - "@smithy/middleware-serde": "^4.2.16", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-middleware": "^4.2.12", - "tslib": "^2.6.2" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "node_modules/@smithy/middleware-retry": { - "version": "4.4.46", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.46.tgz", - "integrity": "sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/service-error-classification": "^4.2.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.13", - "@smithy/uuid": "^1.1.2", - "tslib": "^2.6.2" - }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.16", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.16.tgz", - "integrity": "sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA==", - "license": "Apache-2.0", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/core": "^3.23.13", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", - "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", - "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", - "license": "Apache-2.0", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@smithy/node-http-handler": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.1.tgz", - "integrity": "sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/querystring-builder": "^4.2.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, + "node_modules/@middy/core": { + "version": "7.1.2", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" + }, + "peerDependencies": { + "@aws/durable-execution-sdk-js": "^1.0.0" + }, + "peerDependenciesMeta": { + "@aws/durable-execution-sdk-js": { + "optional": true + } } }, - "node_modules/@smithy/property-provider": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", - "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, + "node_modules/@middy/http-header-normalizer": { + "version": "7.2.1", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" } }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", - "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", - "license": "Apache-2.0", + "node_modules/@middy/input-output-logger": { + "version": "7.2.1", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@middy/util": "7.2.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" } }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", - "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-uri-escape": "^4.2.2", - "tslib": "^2.6.2" + "node_modules/@middy/input-output-logger/node_modules/@middy/util": { + "version": "7.2.1", + "license": "MIT", + "engines": { + "node": ">=22" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" + } + }, + "node_modules/@middy/util": { + "version": "6.4.1", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" } }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", - "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", - "license": "Apache-2.0", + "node_modules/@middy/validator": { + "version": "6.4.1", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@middy/util": "6.4.1", + "ajv": "8.17.1", + "ajv-errors": "3.0.0", + "ajv-formats": "3.0.1", + "ajv-formats-draft2019": "1.6.1", + "ajv-ftl-i18n": "0.1.1", + "ajv-keywords": "5.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/willfarrell" } }, - "node_modules/@smithy/service-error-classification": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", - "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", - "license": "Apache-2.0", + "node_modules/@middy/validator/node_modules/ajv": { + "version": "8.17.1", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.13.1" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", - "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", - "license": "Apache-2.0", + "node_modules/@middy/validator/node_modules/ajv-errors": { + "version": "3.0.0", + "license": "MIT", + "peerDependencies": { + "ajv": "^8.0.1" + } + }, + "node_modules/@middy/validator/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/@smithy/signature-v4": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", - "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", - "license": "Apache-2.0", + "node_modules/@middy/validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@mswjs/interceptors": { + "version": "0.41.2", + "license": "MIT", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=18" } }, - "node_modules/@smithy/smithy-client": { - "version": "4.12.8", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", - "integrity": "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==", - "license": "Apache-2.0", + "node_modules/@nhs/fhir-middy-error-handler": { + "version": "2.1.75", + "license": "MIT", "dependencies": { - "@smithy/core": "^3.23.13", - "@smithy/middleware-endpoint": "^4.4.28", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-stream": "^4.5.21", - "tslib": "^2.6.2" - }, + "@aws-lambda-powertools/logger": "^2.31.0", + "@middy/core": "^7.1.0", + "uninstall": "^0.0.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@smithy/types": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", - "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", - "license": "Apache-2.0", + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" } }, - "node_modules/@smithy/url-parser": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", - "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "node_modules/@open-draft/until": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.2.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=8.0.0" } }, - "node_modules/@smithy/util-base64": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", - "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "node_modules/@opentelemetry/api-logs": { + "version": "0.202.0", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" + "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=8.0.0" } }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", - "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.0.1", "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", - "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "node_modules/@opentelemetry/core": { + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", - "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.202.0", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.0.1", + "@opentelemetry/otlp-exporter-base": "0.202.0", + "@opentelemetry/otlp-transformer": "0.202.0", + "@opentelemetry/resources": "2.0.1", + "@opentelemetry/sdk-trace-base": "2.0.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", - "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.202.0", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "2.0.1", + "@opentelemetry/otlp-transformer": "0.202.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.44", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.44.tgz", - "integrity": "sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA==", + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.202.0", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "0.202.0", + "@opentelemetry/core": "2.0.1", + "@opentelemetry/resources": "2.0.1", + "@opentelemetry/sdk-logs": "0.202.0", + "@opentelemetry/sdk-metrics": "2.0.1", + "@opentelemetry/sdk-trace-base": "2.0.1", + "protobufjs": "^7.3.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.48", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.48.tgz", - "integrity": "sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg==", + "node_modules/@opentelemetry/resources": { + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.13", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/smithy-client": "^4.12.8", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.0.1", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/util-endpoints": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", - "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.202.0", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@opentelemetry/api-logs": "0.202.0", + "@opentelemetry/core": "2.0.1", + "@opentelemetry/resources": "2.0.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", - "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@opentelemetry/core": "2.0.1", + "@opentelemetry/resources": "2.0.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@smithy/util-middleware": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", - "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@opentelemetry/core": "2.0.1", + "@opentelemetry/resources": "2.0.1", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@smithy/util-retry": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.13.tgz", - "integrity": "sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ==", + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@opentelemetry/context-async-hooks": "2.0.1", + "@opentelemetry/core": "2.0.1", + "@opentelemetry/sdk-trace-base": "2.0.1" }, "engines": { - "node": ">=18.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@smithy/util-stream": { - "version": "4.5.21", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.21.tgz", - "integrity": "sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q==", + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.34.0", "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/node-http-handler": "^4.5.1", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=14" } }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", - "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=18.0.0" + "node": ">=14" } }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", - "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "tslib": "^2.6.2" - }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" } }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.14.tgz", - "integrity": "sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg==", - "license": "Apache-2.0", + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "license": "BSD-3-Clause", "dependencies": { - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@smithy/uuid": { + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", - "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "license": "BSD-3-Clause" }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "dev": true, - "license": "MIT" + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "license": "BSD-3-Clause" }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "dev": true, - "license": "MIT" + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "license": "BSD-3-Clause" }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "dev": true, - "license": "MIT" + "node_modules/@psu-common/commonTypes": { + "resolved": "packages/common/commonTypes", + "link": true }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "dev": true, - "license": "MIT" + "node_modules/@psu-common/middyErrorHandler": { + "resolved": "packages/common/middyErrorHandler", + "link": true }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } + "node_modules/@psu-common/testing": { + "resolved": "packages/common/testing", + "link": true }, - "node_modules/@types/aws-lambda": { - "version": "8.10.161", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.161.tgz", - "integrity": "sha512-rUYdp+MQwSFocxIOcSsYSF3YYYC/uUpMbCY/mbO21vGqfrEYvNSoPyKYDj6RhXXpPfS0KstW9RwG3qXh9sL7FQ==", - "dev": true, - "license": "MIT" + "node_modules/@psu-common/utilities": { + "resolved": "packages/common/utilities", + "link": true }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, + "node_modules/@redocly/ajv": { + "version": "8.18.0", "license": "MIT", "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, + "node_modules/@redocly/ajv/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@redocly/cli": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.25.4.tgz", + "integrity": "sha512-ypBv8ZhckTzcOfsFH2VILsLqk00bJ1tI0POtlaEf8z0rDsnmD8auUETkMzw8wlUB+aQM7+VSzpSsmcmqeSgzWQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.0.0" + "@opentelemetry/exporter-trace-otlp-http": "0.202.0", + "@opentelemetry/resources": "2.0.1", + "@opentelemetry/sdk-trace-node": "2.0.1", + "@opentelemetry/semantic-conventions": "1.34.0", + "@redocly/cli-otel": "0.1.2", + "@redocly/openapi-core": "2.25.4", + "@redocly/respect-core": "2.25.4", + "abort-controller": "^3.0.0", + "ajv": "npm:@redocly/ajv@8.18.0", + "ajv-formats": "^3.0.1", + "colorette": "^1.2.0", + "cookie": "^0.7.2", + "dotenv": "16.4.7", + "glob": "^13.0.5", + "handlebars": "^4.7.9", + "https-proxy-agent": "^7.0.5", + "mobx": "^6.0.4", + "picomatch": "^4.0.4", + "pluralize": "^8.0.0", + "react": "^17.0.0 || ^18.2.0 || ^19.2.1", + "react-dom": "^17.0.0 || ^18.2.0 || ^19.2.1", + "redoc": "2.5.1", + "semver": "^7.5.2", + "set-cookie-parser": "^2.3.5", + "simple-websocket": "^9.0.0", + "styled-components": "6.3.9", + "ulid": "^3.0.1", + "undici": "6.24.0", + "yargs": "17.0.1" + }, + "bin": { + "openapi": "bin/cli.js", + "redocly": "bin/cli.js" + }, + "engines": { + "node": ">=22.12.0 || >=20.19.0 <21.0.0", + "npm": ">=10" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, + "node_modules/@redocly/cli-otel": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@redocly/cli-otel/-/cli-otel-0.1.2.tgz", + "integrity": "sha512-Bg7BoO5t1x3lVK+KhA5aGPmeXpQmdf6WtTYHhelKJCsQ+tRMiJoFAQoKHoBHAoNxXrhlS3K9lKFLHGmtxsFQfA==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "ulid": "^2.3.0" } }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, + "node_modules/@redocly/cli-otel/node_modules/ulid": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.4.0.tgz", + "integrity": "sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==", "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" + "bin": { + "ulid": "bin/cli.js" } }, - "node_modules/@types/esrecurse": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", - "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/fhir": { - "version": "0.0.41", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "dev": true, + "node_modules/@redocly/cli/node_modules/ajv": { + "name": "@redocly/ajv", + "version": "8.18.0", "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "dev": true, + "node_modules/@redocly/cli/node_modules/ansi-regex": { + "version": "5.0.1", "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" + "engines": { + "node": ">=8" } }, - "node_modules/@types/jest": { - "version": "30.0.0", - "dev": true, + "node_modules/@redocly/cli/node_modules/balanced-match": { + "version": "4.0.4", "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", - "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", - "dev": true, + "node_modules/@redocly/cli/node_modules/brace-expansion": { + "version": "5.0.5", "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/@types/sinon": { - "version": "17.0.4", - "dev": true, - "license": "MIT", + "node_modules/@redocly/cli/node_modules/cliui": { + "version": "7.0.4", + "license": "ISC", "dependencies": { - "@types/sinonjs__fake-timers": "*" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stylis": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.7.tgz", - "integrity": "sha512-VgDNokpBoKF+wrdvhAAfS55OMQpL6QRglwTwNC3kIgBrzZxA4WsFj+2eLfEA/uMUDzBcEhYmjSbwQakn/i3ajA==", - "dev": true, + "node_modules/@redocly/cli/node_modules/emoji-regex": { + "version": "8.0.0", "license": "MIT" }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "dev": true, - "license": "MIT", + "node_modules/@redocly/cli/node_modules/glob": { + "version": "13.0.6", + "license": "BlueOak-1.0.0", "dependencies": { - "@types/yargs-parser": "*" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "dev": true, + "node_modules/@redocly/cli/node_modules/json-schema-traverse": { + "version": "1.0.0", "license": "MIT" }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", - "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", - "dev": true, - "license": "MIT", + "node_modules/@redocly/cli/node_modules/lru-cache": { + "version": "11.2.6", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@redocly/cli/node_modules/minimatch": { + "version": "10.2.4", + "license": "BlueOak-1.0.0", "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/type-utils": "8.57.2", - "@typescript-eslint/utils": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "18 || 20 || >=22" }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.57.2", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", - "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", - "dev": true, - "license": "MIT", + "node_modules/@redocly/cli/node_modules/path-scurry": { + "version": "2.0.2", + "license": "BlueOak-1.0.0", "dependencies": { - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", - "debug": "^4.4.3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "18 || 20 || >=22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", - "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", - "dev": true, + "node_modules/@redocly/cli/node_modules/string-width": { + "version": "4.2.3", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.57.2", - "@typescript-eslint/types": "^8.57.2", - "debug": "^4.4.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", - "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", - "dev": true, + "node_modules/@redocly/cli/node_modules/strip-ansi": { + "version": "6.0.1", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", - "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", - "dev": true, + "node_modules/@redocly/cli/node_modules/wrap-ansi": { + "version": "7.0.0", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", - "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", - "dev": true, + "node_modules/@redocly/cli/node_modules/yargs": { + "version": "17.0.1", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/utils": "8.57.2", - "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "node": ">=12" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", - "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", - "dev": true, - "license": "MIT", + "node_modules/@redocly/cli/node_modules/yargs-parser": { + "version": "20.2.9", + "license": "ISC", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", - "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", - "dev": true, + "node_modules/@redocly/config": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.46.1.tgz", + "integrity": "sha512-dSdkB2wRLtvl3f7ayRu9vqVhUMjjRaxZlHgRbgOtPPXxn4uI/ciDO87h4CJb7Iet+OVpevpAU6gU8bo5qVbQxg==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.57.2", - "@typescript-eslint/tsconfig-utils": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "json-schema-to-ts": "2.7.2" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, + "node_modules/@redocly/config/node_modules/json-schema-to-ts": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-2.7.2.tgz", + "integrity": "sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ==", "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@types/json-schema": "^7.0.9", + "ts-algebra": "^1.2.0" + }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=16" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, + "node_modules/@redocly/config/node_modules/ts-algebra": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-1.2.2.tgz", + "integrity": "sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA==", + "license": "MIT" + }, + "node_modules/@redocly/openapi-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.25.4.tgz", + "integrity": "sha512-zYdKQEsowPNtkTixrfbn5DySWBLQpTsISthVBBEPAa3OZC75UI76CbHXEamJ8Kmlead9IkD5RbgeJvxqJ5/H6Q==", "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "@redocly/ajv": "^8.18.0", + "@redocly/config": "^0.46.0", + "ajv": "npm:@redocly/ajv@8.18.0", + "ajv-formats": "^3.0.1", + "colorette": "^1.2.0", + "js-levenshtein": "^1.1.6", + "js-yaml": "^4.1.0", + "picomatch": "^4.0.4", + "pluralize": "^8.0.0", + "yaml-ast-parser": "0.0.43" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=22.12.0 || >=20.19.0 <21.0.0", + "npm": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", + "node_modules/@redocly/openapi-core/node_modules/ajv": { + "name": "@redocly/ajv", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", - "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", - "dev": true, + "node_modules/@redocly/openapi-core/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/@redocly/openapi-core/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": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "argparse": "^2.0.1" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", - "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", - "dev": true, + "node_modules/@redocly/openapi-core/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==", + "license": "MIT" + }, + "node_modules/@redocly/respect-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.25.4.tgz", + "integrity": "sha512-0xMbcSft+9Q2sO1wSJMxo510Aqc/kGF/AmUK3OaLQvGvKUgOqq2Op/0aorNQJk6s8WBEH4UN4eFt7fUzUeXs8g==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "eslint-visitor-keys": "^5.0.0" + "@faker-js/faker": "^7.6.0", + "@noble/hashes": "^1.8.0", + "@redocly/ajv": "^8.18.0", + "@redocly/openapi-core": "2.25.4", + "ajv": "npm:@redocly/ajv@8.18.0", + "better-ajv-errors": "^1.2.0", + "colorette": "^2.0.20", + "json-pointer": "^0.6.2", + "jsonpath-rfc9535": "1.3.0", + "openapi-sampler": "^1.7.1", + "outdent": "^0.8.0", + "picomatch": "^4.0.4" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=22.12.0 || >=20.19.0 <21.0.0", + "npm": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@redocly/respect-core/node_modules/@faker-js/faker": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", + "license": "MIT", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/@redocly/respect-core/node_modules/ajv": { + "name": "@redocly/ajv", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "dev": true, - "license": "ISC" + "node_modules/@redocly/respect-core/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "node_modules/@redocly/respect-core/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==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", "cpu": [ "arm" ], @@ -4759,10 +2617,10 @@ "android" ] }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", "cpu": [ "arm64" ], @@ -4773,10 +2631,10 @@ "android" ] }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", "cpu": [ "arm64" ], @@ -4787,10 +2645,10 @@ "darwin" ] }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", "cpu": [ "x64" ], @@ -4801,10 +2659,24 @@ "darwin" ] }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", "cpu": [ "x64" ], @@ -4815,10 +2687,10 @@ "freebsd" ] }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", "cpu": [ "arm" ], @@ -4829,10 +2701,10 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", "cpu": [ "arm" ], @@ -4843,10 +2715,10 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", "cpu": [ "arm64" ], @@ -4857,10 +2729,10 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", "cpu": [ "arm64" ], @@ -4871,10 +2743,38 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", "cpu": [ "ppc64" ], @@ -4885,10 +2785,24 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", "cpu": [ "riscv64" ], @@ -4899,10 +2813,10 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", "cpu": [ "riscv64" ], @@ -4913,10 +2827,10 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", "cpu": [ "s390x" ], @@ -4927,10 +2841,8 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.0", "cpu": [ "x64" ], @@ -4941,10 +2853,8 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.0", "cpu": [ "x64" ], @@ -4955,27 +2865,38 @@ "linux" ] }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", "cpu": [ - "wasm32" + "x64" ], "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } + "os": [ + "openbsd" + ] }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", "cpu": [ "arm64" ], @@ -4986,10 +2907,10 @@ "win32" ] }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", "cpu": [ "ia32" ], @@ -5000,10 +2921,10 @@ "win32" ] }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", "cpu": [ "x64" ], @@ -5014,2281 +2935,2514 @@ "win32" ] }, - "node_modules/abort-controller": { - "version": "3.0.0", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", "dev": true, "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.3", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.14", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.14.tgz", + "integrity": "sha512-N55f8mPEccpzKetUagdvmAy8oohf0J5cuj9jLI1TaSceRlq0pJsIZepY3kmAXAhyxqXPV6hDerDQhqQPKWgAoQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.4", + "@smithy/util-middleware": "^4.2.13", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.23.14", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.14.tgz", + "integrity": "sha512-vJ0IhpZxZAkFYOegMKSrxw7ujhhT2pass/1UEcZ4kfl5srTAqtPU5I7MdYQoreVas3204ykCiNhY1o7Xlz6Yyg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-stream": "^4.5.22", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.13.tgz", + "integrity": "sha512-wboCPijzf6RJKLOvnjDAiBxGSmSnGXj35o5ZAWKDaHa/cvQ5U3ZJ13D4tMCE8JG4dxVAZFy/P0x/V9CwwdfULQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.16.tgz", + "integrity": "sha512-nYDRUIvNd4mFmuXraRWt6w5UsZTNqtj4hXJA/iiOD4tuseIdLP9Lq38teH/SZTcIFCa2f+27o7hYpIsWktJKEQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.13", + "@smithy/querystring-builder": "^4.2.13", + "@smithy/types": "^4.14.0", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.12", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.12", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.2", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.12", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.12", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.29", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.29.tgz", + "integrity": "sha512-R9Q/58U+qBiSARGWbAbFLczECg/RmysRksX6Q8BaQEpt75I7LI6WGDZnjuC9GXSGKljEbA7N118LhGaMbfrTXw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.14", + "@smithy/middleware-serde": "^4.2.17", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-middleware": "^4.2.13", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.0.tgz", + "integrity": "sha512-/NzISn4grj/BRFVua/xnQwF+7fakYZgimpw2dfmlPgcqecBMKxpB9g5mLYRrmBD5OrPoODokw4Vi1hrSR4zRyw==", + "license": "Apache-2.0", "dependencies": { - "event-target-shim": "^5.0.0" + "@smithy/core": "^3.23.14", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/service-error-classification": "^4.2.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-retry": "^4.3.0", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.5" + "node": ">=18.0.0" } }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node_modules/@smithy/middleware-serde": { + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.17.tgz", + "integrity": "sha512-0T2mcaM6v9W1xku86Dk0bEW7aEseG6KenFkPK98XNw0ZhOqOiD1MrMsdnQw9QsL3/Oa85T53iSMlm0SZdSuIEQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.14", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=18.0.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/@smithy/middleware-stack": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.13.tgz", + "integrity": "sha512-g72jN/sGDLyTanrCLH9fhg3oysO3f7tQa6eWWsMyn2BiYNCgjF24n4/I9wff/5XidFvjj9ilipAoQrurTUrLvw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "dev": true, - "license": "MIT", + "node_modules/@smithy/node-config-provider": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.13.tgz", + "integrity": "sha512-iGxQ04DsKXLckbgnX4ipElrOTk+IHgTyu0q0WssZfYhDm9CQWHmu6cOeI5wmWRxpXbBDhIIfXMWz5tPEtcVqbw==", + "license": "Apache-2.0", "dependencies": { - "acorn": "^8.11.0" + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=18.0.0" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "dev": true, - "license": "MIT", + "node_modules/@smithy/node-http-handler": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.2.tgz", + "integrity": "sha512-/oD7u8M0oj2ZTFw7GkuuHWpIxtWdLlnyNkbrWcyVYhd5RJNDuczdkb0wfnQICyNFrVPlr8YHOhamjNy3zidhmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.13", + "@smithy/querystring-builder": "^4.2.13", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 14" + "node": ">=18.0.0" } }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "license": "MIT", + "node_modules/@smithy/property-provider": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.13.tgz", + "integrity": "sha512-bGzUCthxRmezuxkbu9wD33wWg9KX3hJpCXpQ93vVkPrHn9ZW6KNNdY5xAUWNuRCwQ+VyboFuWirG1lZhhkcyRQ==", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "license": "MIT", + "node_modules/@smithy/protocol-http": { + "version": "5.3.13", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.13.tgz", + "integrity": "sha512-+HsmuJUF4u8POo6s8/a2Yb/AQ5t/YgLovCuHF9oxbocqv+SZ6gd8lC2duBFiCA/vFHoHQhoq7QjqJqZC6xOxxg==", + "license": "Apache-2.0", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ajv-formats-draft2019": { - "version": "1.6.1", - "license": "MIT", + "node_modules/@smithy/querystring-builder": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.13.tgz", + "integrity": "sha512-tG4aOYFCZdPMjbgfhnIQ322H//ojujldp1SrHPHpBSb3NqgUp3dwiUGRJzie87hS1DYwWGqDuPaowoDF+rYCbQ==", + "license": "Apache-2.0", "dependencies": { - "punycode": "^2.1.1", - "schemes": "^1.4.0", - "smtp-address-parser": "^1.0.3", - "uri-js": "^4.4.1" + "@smithy/types": "^4.14.0", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" }, - "peerDependencies": { - "ajv": "*" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "license": "MIT", + "node_modules/@smithy/querystring-parser": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.13.tgz", + "integrity": "sha512-hqW3Q4P+CDzUyQ87GrboGMeD7XYNMOF+CuTwu936UQRB/zeYn3jys8C3w+wMkDfY7CyyyVwZQ5cNFoG0x1pYmA==", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/ajv-ftl-i18n": { - "version": "0.1.1", - "license": "MIT", + "node_modules/@smithy/service-error-classification": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.13.tgz", + "integrity": "sha512-a0s8XZMfOC/qpqq7RCPvJlk93rWFrElH6O++8WJKz0FqnA4Y7fkNi/0mnGgSH1C4x6MFsuBA8VKu4zxFrMe5Vw==", + "license": "Apache-2.0", "dependencies": { - "commander": "10.0.0", - "fluent-transpiler": "0.2.1" + "@smithy/types": "^4.14.0" }, - "bin": { - "ajv-ftl": "cli.js" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ajv-ftl-i18n/node_modules/commander": { - "version": "10.0.0", - "license": "MIT", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.8.tgz", + "integrity": "sha512-VZCZx2bZasxdqxVgEAhREvDSlkatTPnkdWy1+Kiy8w7kYPBosW0V5IeDwzDUMvWBt56zpK658rx1cOBFOYaPaw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/signature-v4": { + "version": "5.3.12", + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.21.3" + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/@smithy/smithy-client": { + "version": "4.12.9", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.9.tgz", + "integrity": "sha512-ovaLEcTU5olSeHcRXcxV6viaKtpkHZumn6Ps0yn7dRf2rRSfy794vpjOtrWDO0d1auDSvAqxO+lyhERSXQ03EQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.14", + "@smithy/middleware-endpoint": "^4.4.29", + "@smithy/middleware-stack": "^4.2.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-stream": "^4.5.22", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", + "node_modules/@smithy/types": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.0.tgz", + "integrity": "sha512-OWgntFLW88kx2qvf/c/67Vno1yuXm/f9M7QFAtVkkO29IJXGBIg0ycEaBTH0kvCtwmvZxRujrgP5a86RvsXJAQ==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "dev": true, - "license": "ISC", + "node_modules/@smithy/url-parser": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.13.tgz", + "integrity": "sha512-2G03yoboIRZlZze2+PT4GZEjgwQsJjUgn6iTsvxA02bVceHR6vp4Cuk7TUnPFWKF+ffNUk3kj4COwkENS2K3vw==", + "license": "Apache-2.0", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@smithy/querystring-parser": "^4.2.13", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=18.0.0" } }, - "node_modules/apim-spec": { - "resolved": "packages/specification", - "link": true + "node_modules/@smithy/util-base64": { + "version": "4.3.2", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/arg": { - "version": "4.1.3", - "dev": true, - "license": "MIT" + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.2", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/argparse": { - "version": "1.0.10", - "license": "MIT", + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.3", + "license": "Apache-2.0", "dependencies": { - "sprintf-js": "~1.0.2" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.2", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "license": "MIT", + "node_modules/@smithy/util-config-provider": { + "version": "4.2.2", + "license": "Apache-2.0", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.0.0" } }, - "node_modules/aws-lambda": { - "version": "1.0.7", - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.45", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.45.tgz", + "integrity": "sha512-ag9sWc6/nWZAuK3Wm9KlFJUnRkXLrXn33RFjIAmCTFThqLHY+7wCst10BGq56FxslsDrjhSie46c8OULS+BiIw==", + "license": "Apache-2.0", "dependencies": { - "aws-sdk": "^2.814.0", - "commander": "^3.0.2", - "js-yaml": "^3.14.1", - "watchpack": "^2.0.0-beta.10" + "@smithy/property-provider": "^4.2.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "bin": { - "lambda": "bin/lambda" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/aws-sdk": { - "version": "2.1692.0", - "hasInstallScript": true, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.49", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.49.tgz", + "integrity": "sha512-jlN6vHwE8gY5AfiFBavtD3QtCX2f7lM3BKkz7nFKSNfFR5nXLXLg6sqXTJEEyDwtxbztIDBQCfjsGVXlIru2lQ==", "license": "Apache-2.0", "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" + "@smithy/config-resolver": "^4.4.14", + "@smithy/credential-provider-imds": "^4.2.13", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=18.0.0" } }, - "node_modules/aws-sdk-client-mock": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-endpoints": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.4.tgz", + "integrity": "sha512-BKoR/ubPp9KNKFxPpg1J28N1+bgu8NGAtJblBP7yHy8yQPBWhIAv9+l92SlQLpolGm71CVO+btB60gTgzT0wog==", + "license": "Apache-2.0", "dependencies": { - "@types/sinon": "^17.0.3", - "sinon": "^18.0.1", - "tslib": "^2.1.0" + "@smithy/node-config-provider": "^4.3.13", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/axios": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", - "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", - "license": "MIT", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "license": "Apache-2.0", "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/axios-mock-adapter": { - "version": "2.1.0", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-middleware": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.13.tgz", + "integrity": "sha512-GTooyrlmRTqvUen4eK7/K1p6kryF7bnDfq6XsAbIsf2mo51B/utaH+XThY6dKgNCWzMAaH/+OLmqaBuLhLWRow==", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.3", - "is-buffer": "^2.0.5" + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "axios": ">= 0.17.0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/axios-retry": { - "version": "4.5.0", + "node_modules/@smithy/util-retry": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.0.tgz", + "integrity": "sha512-tSOPQNT/4KfbvqeMovWC3g23KSYy8czHd3tlN+tOYVNIDLSfxIsrPJihYi5TpNcoV789KWtgChUVedh2y6dDPg==", "license": "Apache-2.0", "dependencies": { - "is-retry-allowed": "^2.2.0" + "@smithy/service-error-classification": "^4.2.13", + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "axios": "0.x || 1.x" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/babel-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", - "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-stream": { + "version": "4.5.22", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.22.tgz", + "integrity": "sha512-3H8iq/0BfQjUs2/4fbHZ9aG9yNzcuZs24LPkcX1Q7Z+qpqaGM8+qbGmE8zo9m2nCRgamyvS98cHdcWvR6YUsew==", + "license": "Apache-2.0", "dependencies": { - "@jest/transform": "30.3.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" + "@smithy/fetch-http-handler": "^5.3.16", + "@smithy/node-http-handler": "^4.5.2", + "@smithy/types": "^4.14.0", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.2", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "license": "Apache-2.0", "dependencies": { - "@types/babel__core": "^7.20.5" + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18.0.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-waiter": { + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.15.tgz", + "integrity": "sha512-oUt9o7n8hBv3BL56sLSneL0XeigZSuem0Hr78JaoK33D9oKieyCvVP8eTSe3j7g2mm/S1DvzxKieG7JEWNJUNg==", + "license": "Apache-2.0", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "@smithy/types": "^4.14.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "license": "Apache-2.0", "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + "node": ">=18.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", + "node_modules/@tsconfig/node10": { + "version": "1.0.11", "dev": true, "license": "MIT" }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "dev": true, "license": "MIT" }, - "node_modules/baseline-browser-mapping": { - "version": "2.8.9", + "node_modules/@tsconfig/node14": { + "version": "1.0.3", "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } + "license": "MIT" }, - "node_modules/better-ajv-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz", - "integrity": "sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==", + "node_modules/@tsconfig/node16": { + "version": "1.0.4", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.161", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.0", - "@humanwhocodes/momoa": "^2.0.2", - "chalk": "^4.1.2", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0 < 4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "ajv": "4.11.8 - 8" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/bowser": { - "version": "2.12.1", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "dev": true, "license": "MIT" }, - "node_modules/brace-expansion": { - "version": "2.0.2", + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fhir": { + "version": "0.0.41", "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.0", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "undici-types": "~7.18.0" } }, - "node_modules/browserslist": { - "version": "4.26.2", + "node_modules/@types/sinon": { + "version": "17.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stylis": { + "version": "4.2.7", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "license": "MIT", + "optional": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", + "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.3", - "caniuse-lite": "^1.0.30001741", - "electron-to-chromium": "^1.5.218", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/bs-logger": { - "version": "0.2.6", + "node_modules/@typescript-eslint/parser": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", + "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", "dev": true, "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3" }, "engines": { - "node": ">= 6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/bser": { - "version": "2.1.1", + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", + "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "4.9.2", "license": "MIT", "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "@typescript-eslint/tsconfig-utils": "^8.58.0", + "@typescript-eslint/types": "^8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", + "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", "dev": true, - "license": "MIT" - }, - "node_modules/call-bind": { - "version": "1.0.8", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", + "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", + "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/call-bound": { - "version": "1.0.4", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", + "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@typescript-eslint/types": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", + "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/camelcase": { - "version": "5.3.1", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", + "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.0", + "@typescript-eslint/tsconfig-utils": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/camelize": { - "version": "1.0.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001745", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/capabilityStatement": { - "resolved": "packages/capabilityStatement", - "link": true - }, - "node_modules/capital-case": { - "version": "1.0.4", "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/chalk": { - "version": "4.1.2", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/change-case": { - "version": "4.1.2", + "node_modules/@typescript-eslint/utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", + "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "dev": true, "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "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==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", + "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "eslint-visitor-keys": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/checkPrescriptionStatusUpdates": { - "resolved": "packages/checkPrescriptionStatusUpdates", - "link": true - }, - "node_modules/ci-info": { - "version": "4.3.0", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/classnames": { - "version": "2.5.1", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", + "node_modules/@vitest/coverage-v8": { + "version": "3.2.4", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/@vitest/coverage-v8/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", + "node_modules/@vitest/coverage-v8/node_modules/balanced-match": { + "version": "4.0.4", "dev": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/@vitest/coverage-v8/node_modules/brace-expansion": { + "version": "5.0.5", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/@vitest/coverage-v8/node_modules/minimatch": { + "version": "10.2.4", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/clsx": { - "version": "2.1.1", + "node_modules/@vitest/coverage-v8/node_modules/test-exclude": { + "version": "7.0.2", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^10.2.2" + }, "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/@vitest/expect": { + "version": "3.2.4", "dev": true, "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "node_modules/@vitest/mocker": { + "version": "3.2.4", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } }, - "node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "tinyrainbow": "^2.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/color-name": { - "version": "1.1.4", + "node_modules/@vitest/runner": { + "version": "3.2.4", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/colorette": { - "version": "1.4.0", + "node_modules/@vitest/snapshot": { + "version": "3.2.4", "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" + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/commander": { - "version": "3.0.2", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/@vitest/spy": { + "version": "3.2.4", "dev": true, - "license": "MIT" - }, - "node_modules/constant-case": { - "version": "3.0.4", "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", + "node_modules/@vitest/utils": { + "version": "3.2.4", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/cookie": { - "version": "0.7.2", - "dev": true, + "node_modules/abort-controller": { + "version": "3.0.0", "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=6.5" } }, - "node_modules/cpsuLambda": { - "resolved": "packages/cpsuLambda", - "link": true + "node_modules/acorn": { + "version": "8.16.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/create-require": { - "version": "1.1.1", + "node_modules/acorn-jsx": { + "version": "5.3.2", "dev": true, - "license": "MIT" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/cross-spawn": { - "version": "7.0.6", + "node_modules/acorn-walk": { + "version": "8.3.4", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "acorn": "^8.11.0" }, "engines": { - "node": ">= 8" + "node": ">=0.4.0" } }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "dev": true, - "license": "ISC", + "node_modules/agent-base": { + "version": "7.1.4", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/css-to-react-native": { - "version": "3.2.0", - "dev": true, + "node_modules/ajv": { + "version": "6.14.0", "license": "MIT", "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "dev": true, + "node_modules/ajv-formats": { + "version": "3.0.1", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=6.0" + "peerDependencies": { + "ajv": "^8.0.0" }, "peerDependenciesMeta": { - "supports-color": { + "ajv": { "optional": true } } }, - "node_modules/decko": { - "version": "1.2.0", - "dev": true - }, - "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", - "dev": true, + "node_modules/ajv-formats-draft2019": { + "version": "1.6.1", "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "dependencies": { + "punycode": "^2.1.1", + "schemes": "^1.4.0", + "smtp-address-parser": "^1.0.3", + "uri-js": "^4.4.1" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "peerDependencies": { + "ajv": "*" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "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, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/define-data-property": { - "version": "1.1.4", + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/ajv-ftl-i18n": { + "version": "0.1.1", "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "dependencies": { + "commander": "10.0.0", + "fluent-transpiler": "0.2.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "ajv-ftl": "cli.js" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/willfarrell" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/ajv-ftl-i18n/node_modules/commander": { + "version": "10.0.0", "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=14" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/ansi-regex": { + "version": "6.2.2", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/diff": { - "version": "4.0.2", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "license": "MIT" + "node_modules/apim-spec": { + "resolved": "packages/specification", + "link": true }, - "node_modules/dompurify": { - "version": "3.2.7", + "node_modules/arg": { + "version": "4.1.3", "dev": true, - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } + "license": "MIT" }, - "node_modules/dot-case": { - "version": "3.0.4", + "node_modules/argparse": { + "version": "1.0.10", "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "sprintf-js": "~1.0.2" } }, - "node_modules/dotenv": { - "version": "16.4.7", + "node_modules/assertion-error": { + "version": "2.0.1", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.12", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", "dev": true, "license": "MIT" }, - "node_modules/electron-to-chromium": { - "version": "1.5.227", - "dev": true, - "license": "ISC" + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, + "node_modules/available-typed-arrays": { + "version": "1.0.7", "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "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, + "node_modules/aws-lambda": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "aws-sdk": "^2.814.0", + "commander": "^3.0.2", + "js-yaml": "^3.14.1", + "watchpack": "^2.0.0-beta.10" + }, + "bin": { + "lambda": "bin/lambda" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "license": "MIT", + "node_modules/aws-sdk": { + "version": "2.1693.0", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, "engines": { - "node": ">= 0.4" + "node": ">= 10.0.0" } }, - "node_modules/es-errors": { - "version": "1.3.0", + "node_modules/aws-sdk-client-mock": { + "version": "4.1.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@types/sinon": "^17.0.3", + "sinon": "^18.0.1", + "tslib": "^2.1.0" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", + "node_modules/axios": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", + "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" } }, - "node_modules/es-set-tostringtag": { + "node_modules/axios-mock-adapter": { "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==", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "fast-deep-equal": "^3.1.3", + "is-buffer": "^2.0.5" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "axios": ">= 0.17.0" } }, - "node_modules/es6-promise": { - "version": "3.3.1", - "dev": true, + "node_modules/axios-retry": { + "version": "4.5.0", + "license": "Apache-2.0", + "dependencies": { + "is-retry-allowed": "^2.2.0" + }, + "peerDependencies": { + "axios": "0.x || 1.x" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/esbuild": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-ajv-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz", + "integrity": "sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@humanwhocodes/momoa": "^2.0.2", + "chalk": "^4.1.2", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0 < 4" }, "engines": { - "node": ">=18" + "node": ">= 12.13.0" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.4", - "@esbuild/android-arm": "0.27.4", - "@esbuild/android-arm64": "0.27.4", - "@esbuild/android-x64": "0.27.4", - "@esbuild/darwin-arm64": "0.27.4", - "@esbuild/darwin-x64": "0.27.4", - "@esbuild/freebsd-arm64": "0.27.4", - "@esbuild/freebsd-x64": "0.27.4", - "@esbuild/linux-arm": "0.27.4", - "@esbuild/linux-arm64": "0.27.4", - "@esbuild/linux-ia32": "0.27.4", - "@esbuild/linux-loong64": "0.27.4", - "@esbuild/linux-mips64el": "0.27.4", - "@esbuild/linux-ppc64": "0.27.4", - "@esbuild/linux-riscv64": "0.27.4", - "@esbuild/linux-s390x": "0.27.4", - "@esbuild/linux-x64": "0.27.4", - "@esbuild/netbsd-arm64": "0.27.4", - "@esbuild/netbsd-x64": "0.27.4", - "@esbuild/openbsd-arm64": "0.27.4", - "@esbuild/openbsd-x64": "0.27.4", - "@esbuild/openharmony-arm64": "0.27.4", - "@esbuild/sunos-x64": "0.27.4", - "@esbuild/win32-arm64": "0.27.4", - "@esbuild/win32-ia32": "0.27.4", - "@esbuild/win32-x64": "0.27.4" + "peerDependencies": { + "ajv": "4.11.8 - 8" + } + }, + "node_modules/bowser": { + "version": "2.12.1", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.3", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/escalade": { - "version": "3.2.0", - "dev": true, + "node_modules/buffer": { + "version": "4.9.2", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", + "node_modules/cac": { + "version": "6.7.14", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz", - "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.8", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.3", - "@eslint/config-helpers": "^0.5.3", - "@eslint/core": "^1.1.1", - "@eslint/plugin-kit": "^0.6.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^9.1.2", - "eslint-visitor-keys": "^5.0.1", - "espree": "^11.2.0", - "esquery": "^1.7.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-2.0.0.tgz", - "integrity": "sha512-xKcuSkpQvkAHWCvAysqCk8GAD+rabLokiK4rmeJjCB+CQtGn6Ptgs909miphvN51JyZxOJWz4reGMsoHSbjbIg==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", "license": "MIT", - "bin": { - "import-linter": "lib/index.js" + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "peerDependencies": { - "eslint": ">=10.0.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "dev": true, + "node_modules/call-bound": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-scope": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", - "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/call-me-maybe": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/camel-case": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "@types/esrecurse": "^4.3.1", - "@types/estree": "^1.0.8", - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, + "node_modules/camelize": { + "version": "1.0.1", + "license": "MIT", "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", - "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", - "dev": true, + "node_modules/capabilityStatement": { + "resolved": "packages/capabilityStatement", + "link": true + }, + "node_modules/capital-case": { + "version": "1.0.4", "license": "MIT", - "engines": { - "node": "20 || >=22" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", - "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "node_modules/chai": { + "version": "5.3.3", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=18" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "dev": true, + "node_modules/change-case": { + "version": "4.1.2", "license": "MIT", - "engines": { - "node": ">= 4" + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "node_modules/check-error": { + "version": "2.1.3", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, + "license": "MIT", "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 16" } }, - "node_modules/espree": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", - "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/checkPrescriptionStatusUpdates": { + "resolved": "packages/checkPrescriptionStatusUpdates", + "link": true + }, + "node_modules/classnames": { + "version": "2.5.1", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", "dependencies": { - "acorn": "^8.16.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { + "node_modules/cliui/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/clsx": { + "version": "2.1.1", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=6" } }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "dev": true, + "node_modules/commander": { + "version": "3.0.2", "license": "MIT" }, - "node_modules/events": { - "version": "1.1.1", + "node_modules/constant-case": { + "version": "3.0.4", "license": "MIT", - "engines": { - "node": ">=0.4.x" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/cookie": { + "version": "0.7.2", "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "engines": { - "node": ">=10" - }, + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "3.49.0", + "hasInstallScript": true, + "license": "MIT", + "peer": true, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/execa/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/cpsuLambda": { + "resolved": "packages/cpsuLambda", + "link": true }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "node_modules/create-require": { + "version": "1.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } + "license": "MIT" }, - "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "node_modules/cross-spawn": { + "version": "7.0.6", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 8" } }, - "node_modules/extend": { - "version": "3.0.2", - "license": "MIT" + "node_modules/css-color-keywords": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">=4" + } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", + "node_modules/css-to-react-native": { + "version": "3.2.0", + "license": "MIT", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/csstype": { + "version": "3.2.3", "license": "MIT" }, - "node_modules/fast-diff": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0" + "node_modules/debug": { + "version": "4.4.3", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" + "node_modules/decko": { + "version": "1.2.0" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", + "node_modules/deep-eql": { + "version": "5.0.2", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", + "node_modules/deep-is": { + "version": "0.1.4", "dev": true, "license": "MIT" }, - "node_modules/fast-uri": { - "version": "3.1.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-builder": { + "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], "license": "MIT", "dependencies": { - "path-expression-matcher": "^1.1.3" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-xml-parser": { - "version": "5.5.8", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", - "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "node_modules/delayed-stream": { + "version": "1.0.0", "license": "MIT", - "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", + "node_modules/diff": { + "version": "4.0.4", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" } }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" + "node_modules/discontinuous-range": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/dompurify": { + "version": "3.3.3", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" } }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, + "node_modules/dot-case": { + "version": "3.0.4", "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://dotenvx.com" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "dev": true, + "node_modules/dunder-proto": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=16" + "node": ">= 0.4" } }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "node_modules/eastasianwidth": { + "version": "0.2.0", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/fluent-transpiler": { - "version": "0.2.1", + "node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", "license": "MIT", - "dependencies": { - "@fluent/syntax": "0.18.1", - "change-case": "4.1.2", - "commander": "9.4.0" - }, - "bin": { - "ftl": "cli.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/fluent-transpiler/node_modules/commander": { - "version": "9.4.0", + "node_modules/es-errors": { + "version": "1.3.0", "license": "MIT", "engines": { - "node": "^12.20.0 || >=14" + "node": ">= 0.4" } }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/es-module-lexer": { + "version": "1.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", "license": "MIT", - "engines": { - "node": ">=4.0" + "dependencies": { + "es-errors": "^1.3.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "engines": { + "node": ">= 0.4" } }, - "node_modules/for-each": { - "version": "0.3.5", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreach": { - "version": "2.0.6", - "dev": true, + "node_modules/es6-promise": { + "version": "3.3.1", "license": "MIT" }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "node_modules/esbuild": { + "version": "0.27.4", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=14" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "node_modules/escalade": { + "version": "3.2.0", "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function-bind": { - "version": "1.1.2", + "node_modules/eslint": { + "version": "10.1.0", + "dev": true, "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.3", + "@eslint/config-helpers": "^0.5.3", + "@eslint/core": "^1.1.1", + "@eslint/plugin-kit": "^0.6.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/eslint-config-prettier": { + "version": "10.1.8", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", + "node_modules/eslint-plugin-import-newlines": { + "version": "2.0.0", "dev": true, - "license": "ISC", + "license": "MIT", + "bin": { + "import-linter": "lib/index.js" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "peerDependencies": { + "eslint": ">=10.0.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { - "node": ">= 0.4" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/get-package-type": { - "version": "0.1.0", + "node_modules/eslint-scope": { + "version": "9.1.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/eslint/node_modules/balanced-match": { + "version": "4.0.3", "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "engines": { + "node": "20 || >=22" } }, - "node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "5.0.5", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=10.13.0" + "node": "18 || 20 || >=22" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "license": "BSD-2-Clause" - }, - "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/gopd": { - "version": "1.2.0", + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 4" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" - }, - "node_modules/gsul": { - "resolved": "packages/gsul", - "link": true - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "node_modules/eslint/node_modules/minimatch": { + "version": "10.2.4", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=0.4.7" + "node": "18 || 20 || >=22" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/has-flag": { - "version": "4.0.0", + "node_modules/espree": { + "version": "11.2.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "es-define-property": "^1.0.0" + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/hasown": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "license": "MIT", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" + "node": ">=4" } }, - "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/http2-client": { - "version": "1.3.5", - "dev": true, - "license": "MIT" - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", + "node_modules/esquery": { + "version": "1.7.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 14" + "node": ">=0.10" } }, - "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==", + "node_modules/esrecurse": { + "version": "4.3.0", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=10.17.0" + "node": ">=4.0" } }, - "node_modules/ieee754": { - "version": "1.1.13", - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "7.0.5", + "node_modules/estraverse": { + "version": "5.3.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 4" + "node": ">=4.0" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/estree-walker": { + "version": "3.0.3", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/estree": "^1.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/esutils": { + "version": "2.0.3", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.8.19" + "node": ">=0.10.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "node_modules/event-target-shim": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" + "node_modules/eventemitter3": { + "version": "5.0.1", + "license": "MIT" }, - "node_modules/is-arguments": { - "version": "1.2.0", + "node_modules/events": { + "version": "1.1.1", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.4.x" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/expect-type": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "license": "MIT" }, - "node_modules/is-buffer": { - "version": "2.0.5", + "node_modules/fast-levenshtein": { + "version": "2.0.6", "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" + "url": "https://github.com/sponsors/fastify" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "funding": [ { - "type": "consulting", - "url": "https://feross.org/support" + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" } ], "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "path-expression-matcher": "^1.1.3" } }, - "node_modules/is-callable": { - "version": "1.2.7", + "node_modules/fast-xml-parser": { + "version": "5.5.8", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/is-extglob": { - "version": "2.1.1", + "node_modules/fdir": { + "version": "6.5.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/file-entry-cache": { + "version": "8.0.0", "dev": true, "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/find-up": { + "version": "5.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-glob": { - "version": "4.0.3", + "node_modules/flat-cache": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "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==", - "license": "MIT" + "node_modules/flatted": { + "version": "3.4.2", + "dev": true, + "license": "ISC" }, - "node_modules/is-regex": { - "version": "1.2.1", + "node_modules/fluent-transpiler": { + "version": "0.2.1", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "@fluent/syntax": "0.18.1", + "change-case": "4.1.2", + "commander": "9.4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "ftl": "cli.js" } }, - "node_modules/is-retry-allowed": { - "version": "2.2.0", + "node_modules/fluent-transpiler/node_modules/commander": { + "version": "9.4.0", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.20.0 || >=14" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "node_modules/follow-redirects": { + "version": "1.15.11", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/is-typed-array": { - "version": "1.1.15", + "node_modules/for-each": { + "version": "0.3.5", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.16" + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -7297,753 +5451,488 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/isarray": { - "version": "1.0.0", + "node_modules/foreach": { + "version": "2.0.6", "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", + "node_modules/foreground-child": { + "version": "3.3.1", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "node": ">=14" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/form-data": { + "version": "4.0.5", + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=10" + "node": ">= 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==", + "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, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", - "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/types": "30.3.0", - "import-local": "^3.2.0", - "jest-cli": "30.3.0" - }, - "bin": { - "jest": "bin/jest.js" - }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jest-changed-files": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", - "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.3.0", "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.3.0", - "p-limit": "^3.1.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", - "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", - "dev": true, + "node_modules/get-proto": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "p-limit": "^3.1.0", - "pretty-format": "30.3.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-cli": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", - "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "node_modules/glob": { + "version": "10.5.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/core": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "yargs": "^17.7.2" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "glob": "dist/esm/bin.mjs" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-config": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", - "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "node_modules/glob-parent": { + "version": "6.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.3.0", - "@jest/types": "30.3.0", - "babel-jest": "30.3.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-circus": "30.3.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-runner": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "parse-json": "^5.2.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" + "is-glob": "^4.0.3" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } + "engines": { + "node": ">=10.13.0" } }, - "node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "17.4.0", "dev": true, "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "node_modules/globrex": { + "version": "0.1.2", "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", - "dev": true, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/gsul": { + "resolved": "packages/gsul", + "link": true + }, + "node_modules/handlebars": { + "version": "4.7.9", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/jest-environment-node": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", - "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", - "dev": true, + "node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "es-define-property": "^1.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, + "node_modules/has-symbols": { + "version": "1.1.0", "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-junit": { - "version": "16.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mkdirp": "^1.0.4", - "strip-ansi": "^6.0.1", - "uuid": "^8.3.2", - "xml": "^1.0.1" - }, - "engines": { - "node": ">=10.12.0" + "url": "https://github.com/sponsors/ljharb" } - }, - "node_modules/jest-junit/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-junit/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/jest-junit/node_modules/uuid": { - "version": "8.3.2", - "dev": true, + "node_modules/header-case": { + "version": "2.0.4", "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" } }, - "node_modules/jest-leak-detector": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", - "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "node_modules/html-escaper": { + "version": "2.0.2", "dev": true, + "license": "MIT" + }, + "node_modules/http2-client": { + "version": "1.3.5", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.3.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 14" } }, - "node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "node_modules/ieee754": { + "version": "1.1.13", + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 4" } }, - "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/is-arguments": { + "version": "1.2.0", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "node_modules/is-buffer": { + "version": "2.0.5", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, + "node_modules/is-callable": { + "version": "1.2.7", "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-regex-util": { - "version": "30.0.1", + "node_modules/is-extglob": { + "version": "2.1.1", "dev": true, "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", - "dev": true, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve-dependencies": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", - "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.1.0", "license": "MIT", "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.3.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", - "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "node_modules/is-glob": { + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.3.0", - "@jest/environment": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-leak-detector": "30.3.0", - "jest-message-util": "30.3.0", - "jest-resolve": "30.3.0", - "jest-runtime": "30.3.0", - "jest-util": "30.3.0", - "jest-watcher": "30.3.0", - "jest-worker": "30.3.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", - "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/globals": "30.3.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", - "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "pretty-format": "30.3.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", - "dev": true, + "node_modules/is-node-process": { + "version": "1.2.0", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, + "node_modules/is-retry-allowed": { + "version": "2.2.0", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", - "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.15", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.3.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/jest-watcher": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", - "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.3.0", - "string-length": "^4.0.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/istanbul-reports": { + "version": "3.2.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "has-flag": "^4.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jmespath": { @@ -8055,8 +5944,6 @@ }, "node_modules/jose": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", - "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -8064,7 +5951,6 @@ }, "node_modules/js-levenshtein": { "version": "1.1.6", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8072,7 +5958,6 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -8086,32 +5971,13 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "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-pointer": { "version": "0.6.2", - "dev": true, "license": "MIT", "dependencies": { "foreach": "^2.0.4" @@ -8141,22 +6007,10 @@ "version": "5.0.1", "license": "ISC" }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jsonpath-rfc9535": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsonpath-rfc9535/-/jsonpath-rfc9535-1.3.0.tgz", "integrity": "sha512-3jFHya7oZ45aDxIIdx+/zQARahHXxFSMWBkcBUldfXpLS9VCXDJyTKt35kQfEXLqh0K3Ixw/9xFnvcDStaxh7Q==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=20" @@ -8166,7 +6020,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8187,7 +6040,6 @@ }, "node_modules/leven": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -8205,13 +6057,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, "node_modules/locate-path": { "version": "6.0.0", "dev": true, @@ -8226,19 +6071,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/long": { "version": "5.3.2", - "dev": true, "license": "Apache-2.0" }, "node_modules/loose-envify": { "version": "1.4.0", - "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -8247,6 +6085,11 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "3.2.1", + "dev": true, + "license": "MIT" + }, "node_modules/lower-case": { "version": "2.0.2", "license": "MIT", @@ -8254,23 +6097,30 @@ "tslib": "^2.0.3" } }, - "node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/lunr": { + "version": "2.3.9", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/lunr": { - "version": "2.3.9", + "node_modules/magicast": { + "version": "0.3.5", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } }, "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": { @@ -8288,17 +6138,8 @@ "dev": true, "license": "ISC" }, - "node_modules/makeerror": { - "version": "1.0.12", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, "node_modules/mark.js": { "version": "8.11.1", - "dev": true, "license": "MIT" }, "node_modules/math-intrinsics": { @@ -8308,15 +6149,8 @@ "node": ">= 0.4" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, "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" @@ -8324,8 +6158,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" @@ -8334,20 +6166,8 @@ "node": ">= 0.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": { - "node": ">=6" - } - }, "node_modules/minimatch": { "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { @@ -8362,7 +6182,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8370,25 +6189,11 @@ }, "node_modules/minipass": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mnemonist": { "version": "0.38.3", "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", @@ -8400,7 +6205,6 @@ }, "node_modules/mobx": { "version": "6.15.0", - "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -8409,7 +6213,6 @@ }, "node_modules/mobx-react": { "version": "9.2.0", - "dev": true, "license": "MIT", "dependencies": { "mobx-react-lite": "^4.1.0" @@ -8433,7 +6236,6 @@ }, "node_modules/mobx-react-lite": { "version": "4.1.1", - "dev": true, "license": "MIT", "dependencies": { "use-sync-external-store": "^1.4.0" @@ -8461,12 +6263,10 @@ }, "node_modules/ms": { "version": "2.1.3", - "dev": true, "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", - "dev": true, "funding": [ { "type": "github", @@ -8481,22 +6281,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "dev": true, @@ -8528,7 +6312,6 @@ }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, "license": "MIT" }, "node_modules/nhsd-psu-sandbox": { @@ -8565,8 +6348,6 @@ }, "node_modules/nock": { "version": "14.0.11", - "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.11.tgz", - "integrity": "sha512-u5xUnYE+UOOBA6SpELJheMCtj2Laqx15Vl70QxKo43Wz/6nMHXS7PrEioXLjXAwhmawdEMNImwKCcPhBJWbKVw==", "license": "MIT", "dependencies": { "@mswjs/interceptors": "^0.41.0", @@ -8579,7 +6360,6 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "dev": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -8598,7 +6378,6 @@ }, "node_modules/node-fetch-h2": { "version": "2.3.0", - "dev": true, "license": "MIT", "dependencies": { "http2-client": "^1.2.5" @@ -8607,48 +6386,15 @@ "node": "4.x || >=6.0.0" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/node-readfiles": { "version": "0.2.0", - "dev": true, "license": "MIT", "dependencies": { "es6-promise": "^3.2.1" } }, - "node_modules/node-releases": { - "version": "2.0.21", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/oas-kit-common": { "version": "1.0.8", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "fast-safe-stringify": "^2.0.7" @@ -8656,7 +6402,6 @@ }, "node_modules/oas-linter": { "version": "3.2.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", @@ -8667,9 +6412,15 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, + "node_modules/oas-linter/node_modules/yaml": { + "version": "1.10.3", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/oas-resolver": { "version": "2.5.6", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "node-fetch-h2": "^2.3.0", @@ -8685,9 +6436,15 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, + "node_modules/oas-resolver/node_modules/yaml": { + "version": "1.10.3", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/oas-schema-walker": { "version": "1.1.5", - "dev": true, "license": "BSD-3-Clause", "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" @@ -8695,7 +6452,6 @@ }, "node_modules/oas-validator": { "version": "5.0.8", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "call-me-maybe": "^1.0.1", @@ -8711,9 +6467,15 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, + "node_modules/oas-validator/node_modules/yaml": { + "version": "1.10.3", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-assign": { "version": "4.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8725,35 +6487,8 @@ "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", "license": "MIT" }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/openapi-sampler": { "version": "1.7.1", - "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.7.1.tgz", - "integrity": "sha512-pKFRROcYyxRt9GIn0NmS+GkWPS19l0CLQRYAnHk4m1Qp+G43ssVNcfRMs1sLkGrVMuFWO4P4F6YMXeXnfyFGuQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.7", @@ -8781,13 +6516,10 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz", "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", - "dev": true, "license": "MIT" }, "node_modules/outvariant": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", - "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "license": "MIT" }, "node_modules/p-limit": { @@ -8818,18 +6550,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, @@ -8841,25 +6563,6 @@ "tslib": "^2.0.3" } }, - "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": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pascal-case": { "version": "3.1.2", "license": "MIT", @@ -8870,7 +6573,6 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "dev": true, "license": "MIT" }, "node_modules/path-case": { @@ -8891,8 +6593,6 @@ }, "node_modules/path-expression-matcher": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", "funding": [ { "type": "github", @@ -8904,14 +6604,6 @@ "node": ">=14.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "dev": true, @@ -8922,8 +6614,6 @@ }, "node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -8939,13 +6629,11 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "8.3.0", + "version": "8.4.1", "dev": true, "license": "MIT", "funding": { @@ -8953,109 +6641,39 @@ "url": "https://opencollective.com/express" } }, - "node_modules/perfect-scrollbar": { - "version": "1.5.6", + "node_modules/pathe": { + "version": "2.0.3", "dev": true, "license": "MIT" }, - "node_modules/picocolors": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/pathval": { + "version": "2.0.1", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 14.16" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/perfect-scrollbar": { + "version": "1.5.6", + "license": "MIT" }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/picocolors": { + "version": "1.1.1", + "license": "ISC" }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "node_modules/picomatch": { + "version": "4.0.4", "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pluralize": { "version": "8.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -9063,7 +6681,6 @@ }, "node_modules/polished": { "version": "4.3.1", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.17.8" @@ -9081,7 +6698,6 @@ }, "node_modules/postcss": { "version": "8.4.49", - "dev": true, "funding": [ { "type": "opencollective", @@ -9108,7 +6724,6 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, "license": "MIT" }, "node_modules/postDatedLambda": { @@ -9129,8 +6744,6 @@ }, "node_modules/prettier": { "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "peer": true, @@ -9141,49 +6754,22 @@ "node": ">=14" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "fast-diff": "^1.1.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=6.0.0" } }, "node_modules/prismjs": { "version": "1.30.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -9191,7 +6777,6 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -9201,7 +6786,6 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "dev": true, "license": "MIT" }, "node_modules/propagate": { @@ -9213,7 +6797,6 @@ }, "node_modules/protobufjs": { "version": "7.5.4", - "dev": true, "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -9254,23 +6837,6 @@ "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, "node_modules/querystring": { "version": "0.2.0", "engines": { @@ -9279,7 +6845,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "dev": true, "funding": [ { "type": "github", @@ -9313,7 +6878,6 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -9321,7 +6885,6 @@ }, "node_modules/react": { "version": "19.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9329,7 +6892,6 @@ }, "node_modules/react-dom": { "version": "19.2.1", - "dev": true, "license": "MIT", "dependencies": { "scheduler": "^0.27.0" @@ -9338,14 +6900,8 @@ "react": "^19.2.1" } }, - "node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, "node_modules/react-tabs": { "version": "6.1.0", - "dev": true, "license": "MIT", "dependencies": { "clsx": "^2.0.0", @@ -9357,7 +6913,6 @@ }, "node_modules/redoc": { "version": "2.5.1", - "dev": true, "license": "MIT", "dependencies": { "@redocly/openapi-core": "^1.4.0", @@ -9396,12 +6951,10 @@ }, "node_modules/redoc/node_modules/@redocly/config": { "version": "0.22.2", - "dev": true, "license": "MIT" }, "node_modules/redoc/node_modules/@redocly/openapi-core": { "version": "1.34.5", - "dev": true, "license": "MIT", "dependencies": { "@redocly/ajv": "^8.11.2", @@ -9421,12 +6974,10 @@ }, "node_modules/redoc/node_modules/argparse": { "version": "2.0.1", - "dev": true, "license": "Python-2.0" }, "node_modules/redoc/node_modules/js-yaml": { "version": "4.1.1", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -9437,7 +6988,6 @@ }, "node_modules/redoc/node_modules/marked": { "version": "4.3.0", - "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" @@ -9448,9 +6998,6 @@ }, "node_modules/redoc/node_modules/minimatch": { "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -9461,7 +7008,6 @@ }, "node_modules/reftools": { "version": "1.1.9", - "dev": true, "license": "BSD-3-Clause", "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" @@ -9469,7 +7015,6 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9482,39 +7027,58 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, + "node_modules/ret": { + "version": "0.1.15", "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.12" } }, - "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==", + "node_modules/rollup": { + "version": "4.60.0", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "license": "MIT", - "engines": { - "node": ">=0.12" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", + "fsevents": "~2.3.2" } }, "node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, "license": "MIT" }, "node_modules/safe-regex-test": { @@ -9538,7 +7102,6 @@ }, "node_modules/scheduler": { "version": "0.27.0", - "dev": true, "license": "MIT" }, "node_modules/schemes": { @@ -9550,7 +7113,6 @@ }, "node_modules/semver": { "version": "7.7.3", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -9570,7 +7132,6 @@ }, "node_modules/set-cookie-parser": { "version": "2.7.1", - "dev": true, "license": "MIT" }, "node_modules/set-function-length": { @@ -9590,7 +7151,6 @@ }, "node_modules/shallowequal": { "version": "1.1.0", - "dev": true, "license": "MIT" }, "node_modules/shebang-command": { @@ -9614,7 +7174,6 @@ }, "node_modules/should": { "version": "13.2.3", - "dev": true, "license": "MIT", "dependencies": { "should-equal": "^2.0.0", @@ -9626,7 +7185,6 @@ }, "node_modules/should-equal": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "should-type": "^1.4.0" @@ -9634,7 +7192,6 @@ }, "node_modules/should-format": { "version": "3.0.3", - "dev": true, "license": "MIT", "dependencies": { "should-type": "^1.3.0", @@ -9643,12 +7200,10 @@ }, "node_modules/should-type": { "version": "1.4.0", - "dev": true, "license": "MIT" }, "node_modules/should-type-adaptors": { "version": "1.1.0", - "dev": true, "license": "MIT", "dependencies": { "should-type": "^1.3.0", @@ -9657,9 +7212,13 @@ }, "node_modules/should-util": { "version": "1.0.1", - "dev": true, "license": "MIT" }, + "node_modules/siginfo": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "4.1.0", "dev": true, @@ -9673,7 +7232,6 @@ }, "node_modules/simple-websocket": { "version": "9.1.0", - "dev": true, "funding": [ { "type": "github", @@ -9699,7 +7257,6 @@ }, "node_modules/simple-websocket/node_modules/readable-stream": { "version": "3.6.2", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -9736,24 +7293,15 @@ } }, "node_modules/sinon/node_modules/diff": { - "version": "5.2.0", + "version": "5.2.2", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/slugify": { "version": "1.4.7", - "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -9779,7 +7327,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -9787,109 +7334,45 @@ }, "node_modules/source-map-js": { "version": "1.2.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "license": "BSD-3-Clause" }, - "node_modules/stack-utils": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", + "node_modules/stackback": { + "version": "0.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/statusLambda": { "resolved": "packages/statusLambda", "link": true }, + "node_modules/std-env": { + "version": "3.10.0", + "dev": true, + "license": "MIT" + }, "node_modules/stickyfill": { - "version": "1.1.1", - "dev": true + "version": "1.1.1" }, "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==", "license": "MIT" }, "node_modules/string_decoder": { "version": "1.1.1", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/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": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -9907,8 +7390,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==", "dev": true, "license": "MIT", "dependencies": { @@ -9922,8 +7403,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==", "dev": true, "license": "MIT", "engines": { @@ -9932,15 +7411,11 @@ }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/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==", "dev": true, "license": "MIT", "dependencies": { @@ -9952,8 +7427,6 @@ }, "node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { @@ -9969,8 +7442,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==", "dev": true, "license": "MIT", "dependencies": { @@ -9982,51 +7453,30 @@ }, "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/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": { - "node": ">=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==", + "node_modules/strip-literal": { + "version": "3.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "js-tokens": "^9.0.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antfu" } }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "dev": true, + "license": "MIT" + }, "node_modules/strnum": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz", - "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==", "funding": [ { "type": "github", @@ -10037,9 +7487,6 @@ }, "node_modules/styled-components": { "version": "6.3.9", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.3.9.tgz", - "integrity": "sha512-J72R4ltw0UBVUlEjTzI0gg2STOqlI9JBhQOL4Dxt7aJOnnSesy0qJDn4PYfMCafk9cWOaVg129Pesl5o+DIh0Q==", - "dev": true, "license": "MIT", "dependencies": { "@emotion/is-prop-valid": "1.4.0", @@ -10071,14 +7518,10 @@ }, "node_modules/stylis": { "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", - "dev": true, "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10089,7 +7532,6 @@ }, "node_modules/swagger2openapi": { "version": "7.0.8", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "call-me-maybe": "^1.0.1", @@ -10113,6 +7555,13 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, + "node_modules/swagger2openapi/node_modules/yaml": { + "version": "1.10.3", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/synckit": { "version": "0.11.12", "dev": true, @@ -10127,64 +7576,18 @@ "url": "https://opencollective.com/synckit" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.12", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", + "node_modules/tinybench": { + "version": "2.9.0", "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/tinyexec": { + "version": "0.3.2", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "license": "MIT" }, "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": { @@ -10198,122 +7601,49 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "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": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/tinypool": { + "version": "1.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.0.0 || >=20.0.0" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/tr46": { - "version": "0.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/ts-algebra": { + "node_modules/tinyrainbow": { "version": "2.0.0", - "license": "MIT" - }, - "node_modules/ts-api-utils": { - "version": "2.4.0", "dev": true, "license": "MIT", "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" + "node": ">=14.0.0" } }, - "node_modules/ts-jest": { - "version": "29.4.6", + "node_modules/tinyspy": { + "version": "4.0.4", "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.8", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.3", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } + "node": ">=14.0.0" } }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, + "node_modules/ts-algebra": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "typescript": ">=4.8.4" } }, "node_modules/ts-md5": { @@ -10365,6 +7695,25 @@ } } }, + "node_modules/tsconfck": { + "version": "3.1.6", + "dev": true, + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/tslib": { "version": "2.8.1", "license": "0BSD" @@ -10388,19 +7737,6 @@ "node": ">=4" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typescript": { "version": "5.9.3", "dev": true, @@ -10414,16 +7750,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", - "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", + "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.57.2", - "@typescript-eslint/parser": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/utils": "8.57.2" + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10434,12 +7770,11 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/uglify-js": { "version": "3.19.3", - "dev": true, "license": "BSD-2-Clause", "optional": true, "bin": { @@ -10451,7 +7786,6 @@ }, "node_modules/ulid": { "version": "3.0.2", - "dev": true, "license": "MIT", "bin": { "ulid": "dist/cli.js" @@ -10459,9 +7793,6 @@ }, "node_modules/undici": { "version": "6.24.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz", - "integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==", - "dev": true, "license": "MIT", "engines": { "node": ">=18.17" @@ -10469,81 +7800,12 @@ }, "node_modules/undici-types": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "dev": true, "license": "MIT" }, "node_modules/uninstall": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/uninstall/-/uninstall-0.0.0.tgz", - "integrity": "sha512-pjP/0+A4gsbDVa8XH/S2GZdT9NPJW8NFMy3GI7HnsWG+NAmFSSj3QidNosXBI9cPtxxNExEDdhKFO6sli8K3mA==", "license": "MIT" }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/updatePrescriptionStatus": { "resolved": "packages/updatePrescriptionStatus", "link": true @@ -10579,7 +7841,6 @@ }, "node_modules/url-template": { "version": "2.0.8", - "dev": true, "license": "BSD" }, "node_modules/url/node_modules/punycode": { @@ -10588,7 +7849,6 @@ }, "node_modules/use-sync-external-store": { "version": "1.5.0", - "dev": true, "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -10607,7 +7867,6 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/uuid": { @@ -10622,27 +7881,216 @@ "dev": true, "license": "MIT" }, - "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==", + "node_modules/vite": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=10.12.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/walker": { - "version": "1.0.8", + "node_modules/vite-tsconfig-paths": { + "version": "5.1.4", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.5.8", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "makeerror": "1.0.12" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, "node_modules/watchpack": { @@ -10658,12 +8106,10 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -10703,6 +8149,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "dev": true, @@ -10713,13 +8174,10 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10737,8 +8195,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==", "dev": true, "license": "MIT", "dependencies": { @@ -10755,8 +8211,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==", "dev": true, "license": "MIT", "engines": { @@ -10765,15 +8219,11 @@ }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/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==", "dev": true, "license": "MIT", "dependencies": { @@ -10787,8 +8237,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==", "dev": true, "license": "MIT", "dependencies": { @@ -10800,8 +8248,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": { @@ -10811,26 +8257,8 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/ws": { "version": "7.5.10", - "dev": true, "license": "MIT", "engines": { "node": ">=8.3.0" @@ -10848,11 +8276,6 @@ } } }, - "node_modules/xml": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/xml2js": { "version": "0.6.2", "license": "MIT", @@ -10873,33 +8296,30 @@ }, "node_modules/y18n": { "version": "5.0.8", - "dev": true, "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, "node_modules/yaml": { - "version": "1.10.2", - "dev": true, + "version": "2.8.3", "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yaml-ast-parser": { "version": "0.0.43", - "dev": true, "license": "Apache-2.0" }, "node_modules/yargs": { "version": "17.7.2", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -10916,7 +8336,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -10924,7 +8343,6 @@ }, "node_modules/yargs/node_modules/ansi-regex": { "version": "5.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10932,12 +8350,10 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -10950,7 +8366,6 @@ }, "node_modules/yargs/node_modules/strip-ansi": { "version": "6.0.1", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -11176,9 +8591,11 @@ "name": "apim-spec", "version": "0.0.1", "license": "MIT", - "devDependencies": { - "@redocly/cli": "^2.25.2" + "dependencies": { + "@redocly/cli": "^2.25.2", + "yaml": "^2.8.3" }, + "devDependencies": {}, "engines": { "node": "24.12.x", "npm": "11.6.x" diff --git a/package.json b/package.json index 1136800632..f666d31f7f 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@types/aws-lambda": "^8.10.161", - "@types/jest": "^30.0.0", "@types/node": "^25.5.0", + "@vitest/coverage-v8": "^3.2.4", "@typescript-eslint/eslint-plugin": "^8.57.2", "@typescript-eslint/parser": "^8.57.1", "aws-lambda": "^1.0.7", @@ -44,10 +44,9 @@ "eslint-plugin-import-newlines": "^2.0.0", "eslint-plugin-prettier": "^5.5.5", "globals": "^17.4.0", - "jest": "^30.3.0", - "jest-junit": "^16.0.0", - "ts-jest": "^29.4.6", "ts-node": "^10.9.2", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.2.4", "typescript": "^5.9.3", "typescript-eslint": "^8.57.2" }, diff --git a/packages/capabilityStatement/.vscode/launch.json b/packages/capabilityStatement/.vscode/launch.json index 7c9b0b4b3a..526c590cfa 100644 --- a/packages/capabilityStatement/.vscode/launch.json +++ b/packages/capabilityStatement/.vscode/launch.json @@ -1,35 +1,42 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "type": "node", - "name": "vscode-jest-tests.v2", - "request": "launch", - "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", - "--config", - "${workspaceFolder}/jest.debug.config.ts" - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, - "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } - } + { + "type": "node", + "name": "vitest: all tests", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true, + "env": { + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true, + "env": { + "POWERTOOLS_DEV": "true" + } + } ] } diff --git a/packages/capabilityStatement/.vscode/settings.json b/packages/capabilityStatement/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/capabilityStatement/.vscode/settings.json +++ b/packages/capabilityStatement/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/capabilityStatement/jest.config.ts b/packages/capabilityStatement/jest.config.ts deleted file mode 100644 index acbc1493de..0000000000 --- a/packages/capabilityStatement/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./" -} - -export default jestConfig diff --git a/packages/capabilityStatement/jest.debug.config.ts b/packages/capabilityStatement/jest.debug.config.ts deleted file mode 100644 index 96d10f6b73..0000000000 --- a/packages/capabilityStatement/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - preset: "ts-jest" -} - -export default debugConfig diff --git a/packages/capabilityStatement/package.json b/packages/capabilityStatement/package.json index dbee73fa03..dca829ae1c 100644 --- a/packages/capabilityStatement/package.json +++ b/packages/capabilityStatement/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/capabilityStatement/tests/test-handler.test.ts b/packages/capabilityStatement/tests/test-handler.test.ts index 9c77955031..33e188c867 100644 --- a/packages/capabilityStatement/tests/test-handler.test.ts +++ b/packages/capabilityStatement/tests/test-handler.test.ts @@ -5,8 +5,8 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi +} from "vitest" import capabilityStatement from "../src/apim-medicines-prescriptionstatusupdate.json" import {mockAPIGatewayProxyEvent, mockContext} from "@psu-common/testing" @@ -25,7 +25,7 @@ describe("Unit test for app handler", function () { }) it("appends trace id's to the logger", async () => { - const mockAppendKeys = jest.spyOn(Logger.prototype, "appendKeys") + const mockAppendKeys = vi.spyOn(Logger.prototype, "appendKeys") await handler(mockAPIGatewayProxyEvent, mockContext) diff --git a/packages/capabilityStatement/vitest.config.ts b/packages/capabilityStatement/vitest.config.ts new file mode 100644 index 0000000000..823e470724 --- /dev/null +++ b/packages/capabilityStatement/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/checkPrescriptionStatusUpdates/.jest/setEnvVars.js b/packages/checkPrescriptionStatusUpdates/.vitest/setup-env.js similarity index 100% rename from packages/checkPrescriptionStatusUpdates/.jest/setEnvVars.js rename to packages/checkPrescriptionStatusUpdates/.vitest/setup-env.js diff --git a/packages/checkPrescriptionStatusUpdates/.vscode/launch.json b/packages/checkPrescriptionStatusUpdates/.vscode/launch.json index 7c9b0b4b3a..6ac9e98546 100644 --- a/packages/checkPrescriptionStatusUpdates/.vscode/launch.json +++ b/packages/checkPrescriptionStatusUpdates/.vscode/launch.json @@ -1,34 +1,39 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/checkPrescriptionStatusUpdates/.vscode/settings.json b/packages/checkPrescriptionStatusUpdates/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/checkPrescriptionStatusUpdates/.vscode/settings.json +++ b/packages/checkPrescriptionStatusUpdates/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/checkPrescriptionStatusUpdates/jest.config.ts b/packages/checkPrescriptionStatusUpdates/jest.config.ts deleted file mode 100644 index 1ad45dd190..0000000000 --- a/packages/checkPrescriptionStatusUpdates/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./", - setupFiles: ["/.jest/setEnvVars.js"] -} - -export default jestConfig diff --git a/packages/checkPrescriptionStatusUpdates/jest.debug.config.ts b/packages/checkPrescriptionStatusUpdates/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/checkPrescriptionStatusUpdates/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/checkPrescriptionStatusUpdates/package.json b/packages/checkPrescriptionStatusUpdates/package.json index a75c88331b..11caf348dc 100644 --- a/packages/checkPrescriptionStatusUpdates/package.json +++ b/packages/checkPrescriptionStatusUpdates/package.json @@ -6,7 +6,7 @@ "author": "NHS Digital", "license": "MIT", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/checkPrescriptionStatusUpdates/tests/testDynamoDBclient.test.ts b/packages/checkPrescriptionStatusUpdates/tests/testDynamoDBclient.test.ts index b8258bfdbb..706e939f7a 100644 --- a/packages/checkPrescriptionStatusUpdates/tests/testDynamoDBclient.test.ts +++ b/packages/checkPrescriptionStatusUpdates/tests/testDynamoDBclient.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable max-len */ import {buildQuery} from "../src/dynamoDBclient" -import {expect, describe} from "@jest/globals" +import {describe, expect, test} from "vitest" import {InputData} from "../src/types" type buildQueryTestData = { diff --git a/packages/checkPrescriptionStatusUpdates/tests/testHander.test.ts b/packages/checkPrescriptionStatusUpdates/tests/testHander.test.ts index 6a2dcfbda7..4c89e5d24c 100644 --- a/packages/checkPrescriptionStatusUpdates/tests/testHander.test.ts +++ b/packages/checkPrescriptionStatusUpdates/tests/testHander.test.ts @@ -2,8 +2,10 @@ import { expect, describe, it, - jest -} from "@jest/globals" + beforeEach, + vi, + type Mock +} from "vitest" import {DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb" import {handler} from "../src/checkPrescriptionStatusUpdates" @@ -24,13 +26,13 @@ const defaultItem = { describe("test handler", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() }) it("respond with empty request and status 404 when no results returned by dynamodb", async () => { const mockReply = generateReply(0) - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) const response = await handler(mockAPIGatewayProxyEvent, mockContext) expect(response.statusCode).toBe(404) @@ -41,7 +43,7 @@ describe("test handler", () => { it("respond with success when data returned by dynamodb", async () => { const mockReply = generateReply(1) - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) const response = await handler(mockAPIGatewayProxyEvent, mockContext) expect(response.statusCode).toBe(200) @@ -52,7 +54,7 @@ describe("test handler", () => { it("respond with success and LastEvaluatedKey when paginated data returned by dynamodb", async () => { const mockReply = generateReply(5, false) - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) const response = await handler(mockAPIGatewayProxyEvent, mockContext) expect(response.statusCode).toBe(200) @@ -70,7 +72,7 @@ describe("test handler", () => { it("returns less than 5 results if that's all that's available", async () => { const mockReply = generateReply(3) - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) const response = await handler(mockAPIGatewayProxyEvent, mockContext) expect(response.statusCode).toBe(200) @@ -86,7 +88,7 @@ describe("test handler", () => { it("returns just more than 5 results", async () => { // 6 results in 2 calls, expecting 6 results - jest + vi .spyOn(DynamoDBDocumentClient.prototype, "send") .mockImplementationOnce(() => { return Promise.resolve(generateReply(3, false)) @@ -108,7 +110,7 @@ describe("test handler", () => { }) it("returns just more than 5 results with pagination headers", async () => { - jest + vi .spyOn(DynamoDBDocumentClient.prototype, "send") .mockImplementationOnce(() => { const reply = generateReply(2, false) @@ -129,7 +131,7 @@ describe("test handler", () => { .mockImplementationOnce(() => { return Promise.resolve(generateReply(2)) }) - const mockSend = DynamoDBDocumentClient.prototype.send as jest.Mock + const mockSend = DynamoDBDocumentClient.prototype.send as Mock const event = JSON.parse(JSON.stringify(mockAPIGatewayProxyEvent)) event.headers["exclusivestartkey-prescriptionid"] = "prescriptionId1" @@ -154,7 +156,7 @@ describe("test handler", () => { it("returns no more than 15 results", async () => { // >15 results (15 with pagination headers), expecting 15 results - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockImplementationOnce(() => { + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockImplementationOnce(() => { return Promise.resolve(generateReply(15, false)) }) @@ -174,7 +176,7 @@ describe("test handler", () => { it("respond with failure when dynamodb throws exception", async () => { const mockReply = {} - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockRejectedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockRejectedValue(mockReply as never) const response = await handler(mockAPIGatewayProxyEvent, mockContext) expect(response.statusCode).toBe(500) diff --git a/packages/checkPrescriptionStatusUpdates/vitest.config.ts b/packages/checkPrescriptionStatusUpdates/vitest.config.ts new file mode 100644 index 0000000000..e292a3df93 --- /dev/null +++ b/packages/checkPrescriptionStatusUpdates/vitest.config.ts @@ -0,0 +1,9 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./", + test: { + setupFiles: ["./.vitest/setup-env.js"] + } +})) diff --git a/packages/common/commonTypes/package.json b/packages/common/commonTypes/package.json index 535ccf9004..251634ab13 100644 --- a/packages/common/commonTypes/package.json +++ b/packages/common/commonTypes/package.json @@ -8,7 +8,7 @@ "types": "lib/src/index.d.ts", "type": "module", "scripts": { - "unit": "jest", + "unit": "vitest run --config vitest.config.ts --coverage --passWithNoTests", "lint": "eslint --max-warnings 0 --fix --config ../../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/common/commonTypes/vitest.config.ts b/packages/common/commonTypes/vitest.config.ts new file mode 100644 index 0000000000..4465ebbf83 --- /dev/null +++ b/packages/common/commonTypes/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/common/middyErrorHandler/.vscode/launch.json b/packages/common/middyErrorHandler/.vscode/launch.json index 97987739e3..9ee54e92cb 100644 --- a/packages/common/middyErrorHandler/.vscode/launch.json +++ b/packages/common/middyErrorHandler/.vscode/launch.json @@ -1,34 +1,41 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true, + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/common/middyErrorHandler/.vscode/settings.json b/packages/common/middyErrorHandler/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/common/middyErrorHandler/.vscode/settings.json +++ b/packages/common/middyErrorHandler/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/common/middyErrorHandler/jest.config.ts b/packages/common/middyErrorHandler/jest.config.ts deleted file mode 100644 index 022989c681..0000000000 --- a/packages/common/middyErrorHandler/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import defaultConfig from "../../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./" -} - -export default jestConfig diff --git a/packages/common/middyErrorHandler/jest.debug.config.ts b/packages/common/middyErrorHandler/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/common/middyErrorHandler/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/common/middyErrorHandler/package.json b/packages/common/middyErrorHandler/package.json index 64a3bb508b..cb5a10f7db 100644 --- a/packages/common/middyErrorHandler/package.json +++ b/packages/common/middyErrorHandler/package.json @@ -7,7 +7,7 @@ "main": "lib/src/index.js", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/common/middyErrorHandler/tests/testErrorHandler.test.ts b/packages/common/middyErrorHandler/tests/testErrorHandler.test.ts index 366945a6a8..e20c6402c1 100644 --- a/packages/common/middyErrorHandler/tests/testErrorHandler.test.ts +++ b/packages/common/middyErrorHandler/tests/testErrorHandler.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import {MiddyErrorHandler} from "../src/errorHandler" import middy from "@middy/core" -import {expect, jest} from "@jest/globals" +import {expect, test, vi} from "vitest" import {mockContext} from "@psu-common/testing" const mockEvent = { @@ -10,7 +10,7 @@ const mockEvent = { test("Middleware logs all error details", async () => { type ErrorLogger = (error: any, message: string) => void - const mockErrorLogger: jest.MockedFunction = jest.fn() + const mockErrorLogger = vi.fn() const mockLogger = { error: mockErrorLogger } @@ -37,7 +37,7 @@ test("Middleware logs all error details", async () => { test("Middleware returns specific error message on failure", async () => { const mockLogger = { - error: jest.fn(() => {}) + error: vi.fn(() => {}) } const errorResponse = { statusCode: 500, diff --git a/packages/common/middyErrorHandler/vitest.config.ts b/packages/common/middyErrorHandler/vitest.config.ts new file mode 100644 index 0000000000..4465ebbf83 --- /dev/null +++ b/packages/common/middyErrorHandler/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/common/testing/package.json b/packages/common/testing/package.json index 61cdc5b29a..8640578c61 100644 --- a/packages/common/testing/package.json +++ b/packages/common/testing/package.json @@ -7,7 +7,7 @@ "main": "lib/src/index.js", "type": "module", "scripts": { - "unit": "jest", + "unit": "vitest run --config vitest.config.ts --coverage --passWithNoTests", "lint": "eslint --max-warnings 0 --fix --config ../../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/common/testing/vitest.config.ts b/packages/common/testing/vitest.config.ts new file mode 100644 index 0000000000..4465ebbf83 --- /dev/null +++ b/packages/common/testing/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/common/utilities/jest.config.ts b/packages/common/utilities/jest.config.ts deleted file mode 100644 index 6a6e039c9a..0000000000 --- a/packages/common/utilities/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type {JestConfigWithTsJest} from "ts-jest" -import defaultConfig from "../../../jest.default.config.ts" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./" -} - -export default jestConfig diff --git a/packages/common/utilities/jest.debug.config.ts b/packages/common/utilities/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/common/utilities/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/common/utilities/package.json b/packages/common/utilities/package.json index 8666144162..f2afe26d98 100644 --- a/packages/common/utilities/package.json +++ b/packages/common/utilities/package.json @@ -8,7 +8,7 @@ "types": "lib/src/index.d.ts", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/common/utilities/tests/testTestConfig.test.ts b/packages/common/utilities/tests/testTestConfig.test.ts index e4fd3eea18..97d9058fa2 100644 --- a/packages/common/utilities/tests/testTestConfig.test.ts +++ b/packages/common/utilities/tests/testTestConfig.test.ts @@ -3,17 +3,17 @@ import { expect, describe, it, - jest, - beforeEach -} from "@jest/globals" + beforeEach, + vi +} from "vitest" -const mockGet = jest.fn() +const mockGet = vi.fn() const mockInitiatedSSMProvider = { get: mockGet } -jest.unstable_mockModule("../src/ssmUtil", () => ({ +vi.mock("../src/ssmUtil", () => ({ initiatedSSMProvider: mockInitiatedSSMProvider })) @@ -24,7 +24,7 @@ const {TestPrescriptions, getTestPrescriptions} = await import("../src/testConfi describe("Unit tests for TestPrescriptions class", () => { beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() }) describe("getTestPrescriptions method", () => { diff --git a/packages/common/utilities/vitest.config.ts b/packages/common/utilities/vitest.config.ts new file mode 100644 index 0000000000..4465ebbf83 --- /dev/null +++ b/packages/common/utilities/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/cpsuLambda/.vscode/launch.json b/packages/cpsuLambda/.vscode/launch.json index 4e2a6957e9..c5f33ba628 100644 --- a/packages/cpsuLambda/.vscode/launch.json +++ b/packages/cpsuLambda/.vscode/launch.json @@ -3,28 +3,37 @@ "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": "true", - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/cpsuLambda/.vscode/settings.json b/packages/cpsuLambda/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/cpsuLambda/.vscode/settings.json +++ b/packages/cpsuLambda/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/cpsuLambda/jest.config.ts b/packages/cpsuLambda/jest.config.ts deleted file mode 100644 index d93d212b98..0000000000 --- a/packages/cpsuLambda/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type {JestConfigWithTsJest} from "ts-jest" -import defaultConfig from "../../jest.default.config.ts" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./" -} - -export default jestConfig diff --git a/packages/cpsuLambda/jest.debug.config.ts b/packages/cpsuLambda/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/cpsuLambda/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/cpsuLambda/package.json b/packages/cpsuLambda/package.json index c324a94710..ea51de83ca 100644 --- a/packages/cpsuLambda/package.json +++ b/packages/cpsuLambda/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/cpsuLambda/tests/format_1/business_states.test.ts b/packages/cpsuLambda/tests/format_1/business_states.test.ts index 70c5ec58d2..6908a5dadd 100644 --- a/packages/cpsuLambda/tests/format_1/business_states.test.ts +++ b/packages/cpsuLambda/tests/format_1/business_states.test.ts @@ -1,4 +1,10 @@ import {BundleEntry, Task} from "fhir/r4" +import { + describe, + expect, + it, + test +} from "vitest" import {generateTemplate, getBusinessStatus, populateTemplate} from "../../src/schema/format_1/transformer" import { itemType, diff --git a/packages/cpsuLambda/tests/testHandler.test.ts b/packages/cpsuLambda/tests/testHandler.test.ts index 6e63d71b7f..287a30d588 100644 --- a/packages/cpsuLambda/tests/testHandler.test.ts +++ b/packages/cpsuLambda/tests/testHandler.test.ts @@ -5,7 +5,13 @@ import format_1_response_json from "./format_1/example_response.json" import {HandlerParams, newHandler} from "../src/handler" import {MIDDLEWARE} from "../src/middleware" import {Logger} from "@aws-lambda-powertools/logger" -import {jest} from "@jest/globals" +import { + beforeAll, + describe, + expect, + test, + vi +} from "vitest" import {Ok} from "pratica" const {FORMAT_1_PARAMS, format_1_handler} = await import("../src/cpsu") @@ -47,7 +53,7 @@ describe("generic handler", () => { } const logger = new Logger({serviceName: "testService"}) - const logger_output = jest.spyOn(console, "info") + const logger_output = vi.spyOn(console, "info") const handler = newHandler({ params: params, @@ -69,7 +75,7 @@ describe("generic handler", () => { describe("format_1 handler", () => { beforeAll(() => { - jest.useFakeTimers().setSystemTime(new Date("2023-09-11T10:11:12Z")) + vi.useFakeTimers().setSystemTime(new Date("2023-09-11T10:11:12Z")) }) test("Happy path", async () => { const event = { @@ -97,7 +103,7 @@ describe("format_1 handler", () => { function mockedWarnHandler() { const logger = new Logger({serviceName: "testService"}) - const logger_warn = jest.spyOn(logger, "warn") + const logger_warn = vi.spyOn(logger, "warn") const handler = newHandler({ params: FORMAT_1_PARAMS, diff --git a/packages/cpsuLambda/vitest.config.ts b/packages/cpsuLambda/vitest.config.ts new file mode 100644 index 0000000000..823e470724 --- /dev/null +++ b/packages/cpsuLambda/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/gsul/.vscode/launch.json b/packages/gsul/.vscode/launch.json index 8acf7f0381..c5f33ba628 100644 --- a/packages/gsul/.vscode/launch.json +++ b/packages/gsul/.vscode/launch.json @@ -1,34 +1,39 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/gsul/.vscode/settings.json b/packages/gsul/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/gsul/.vscode/settings.json +++ b/packages/gsul/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/gsul/jest.config.ts b/packages/gsul/jest.config.ts deleted file mode 100644 index d93d212b98..0000000000 --- a/packages/gsul/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type {JestConfigWithTsJest} from "ts-jest" -import defaultConfig from "../../jest.default.config.ts" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./" -} - -export default jestConfig diff --git a/packages/gsul/jest.debug.config.ts b/packages/gsul/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/gsul/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/gsul/package.json b/packages/gsul/package.json index 8e88799e28..1ff5d4d4ad 100644 --- a/packages/gsul/package.json +++ b/packages/gsul/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/gsul/tests/testFilterOutFutureReduceToLatestUpdates.test.ts b/packages/gsul/tests/testFilterOutFutureReduceToLatestUpdates.test.ts index 3f24cfdd62..7c235b5dda 100644 --- a/packages/gsul/tests/testFilterOutFutureReduceToLatestUpdates.test.ts +++ b/packages/gsul/tests/testFilterOutFutureReduceToLatestUpdates.test.ts @@ -1,6 +1,7 @@ import {filterOutFutureReduceToLatestUpdates} from "../src/getStatusUpdates" import {inputPrescriptionType} from "../src/schema/request" import {outputPrescriptionType, itemType} from "../src/schema/response" +import {describe, expect, it} from "vitest" type scenariosType = { scenarioDescription: string diff --git a/packages/gsul/tests/testHander.test.ts b/packages/gsul/tests/testHander.test.ts index 114a95308c..51688f7ac9 100644 --- a/packages/gsul/tests/testHander.test.ts +++ b/packages/gsul/tests/testHander.test.ts @@ -2,8 +2,9 @@ import { expect, describe, it, - jest -} from "@jest/globals" + beforeEach, + vi +} from "vitest" import {DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb" import {handler} from "../src/getStatusUpdates" @@ -25,8 +26,8 @@ const dummyContext = { describe("test handler", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() }) const testCases = [ @@ -153,7 +154,7 @@ describe("test handler", () => { testCases.forEach(({description, event, mockReply, expectedResponse}) => { it(description, async () => { if (mockReply) { - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) } const response = await handler(event, dummyContext) expect(response).toMatchObject(expectedResponse) diff --git a/packages/gsul/tests/testRunDynamoDBQueries.test.ts b/packages/gsul/tests/testRunDynamoDBQueries.test.ts index b60c00e1b2..e6da770be1 100644 --- a/packages/gsul/tests/testRunDynamoDBQueries.test.ts +++ b/packages/gsul/tests/testRunDynamoDBQueries.test.ts @@ -5,15 +5,16 @@ import { expect, describe, it, - jest -} from "@jest/globals" + beforeEach, + vi +} from "vitest" const logger = new Logger({serviceName: "GSUL_TEST"}) describe("testing dynamoDBClient", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() const mockReply = { Count: 1, Items: [ @@ -26,7 +27,7 @@ describe("testing dynamoDBClient", () => { } ] } - jest.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) + vi.spyOn(DynamoDBDocumentClient.prototype, "send").mockResolvedValue(mockReply as never) }) it("should call dynamo once and return expected items", async () => { @@ -62,8 +63,8 @@ describe("testing dynamoDBClient", () => { describe("testing pagination in dynamoDBClient", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() const mockFirstReply = { Count: 1, Items: [ @@ -93,7 +94,7 @@ describe("testing pagination in dynamoDBClient", () => { } ] } - jest + vi .spyOn(DynamoDBDocumentClient.prototype, "send") .mockResolvedValueOnce(mockFirstReply as never) .mockResolvedValueOnce(mockSecondReply as never) diff --git a/packages/gsul/vitest.config.ts b/packages/gsul/vitest.config.ts new file mode 100644 index 0000000000..823e470724 --- /dev/null +++ b/packages/gsul/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/nhsNotifyLambda/.jest/setEnvVars.js b/packages/nhsNotifyLambda/.vitest/setup-env.js similarity index 100% rename from packages/nhsNotifyLambda/.jest/setEnvVars.js rename to packages/nhsNotifyLambda/.vitest/setup-env.js diff --git a/packages/nhsNotifyLambda/.vscode/launch.json b/packages/nhsNotifyLambda/.vscode/launch.json index 7c9b0b4b3a..031eba02bb 100644 --- a/packages/nhsNotifyLambda/.vscode/launch.json +++ b/packages/nhsNotifyLambda/.vscode/launch.json @@ -1,35 +1,40 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "type": "node", - "name": "vscode-jest-tests.v2", - "request": "launch", - "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", - "--config", - "${workspaceFolder}/jest.debug.config.ts" - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, - "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } - } + { + "name": "vitest: all tests", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "vitest.config.ts" + ], + "env": { + "POWERTOOLS_DEV": "true" + }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, + { + "name": "vitest: current file", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "${relativeFile}", + "--config", + "vitest.config.ts" + ], + "env": { + "POWERTOOLS_DEV": "true" + }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + } ] } diff --git a/packages/nhsNotifyLambda/.vscode/settings.json b/packages/nhsNotifyLambda/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/nhsNotifyLambda/.vscode/settings.json +++ b/packages/nhsNotifyLambda/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/nhsNotifyLambda/jest.config.ts b/packages/nhsNotifyLambda/jest.config.ts deleted file mode 100644 index 8212011ed9..0000000000 --- a/packages/nhsNotifyLambda/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type {JestConfigWithTsJest} from "ts-jest" -import defaultConfig from "../../jest.default.config.ts" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./", - setupFiles: ["/.jest/setEnvVars.js"] -} - -export default jestConfig diff --git a/packages/nhsNotifyLambda/jest.debug.config.ts b/packages/nhsNotifyLambda/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/nhsNotifyLambda/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/nhsNotifyLambda/package.json b/packages/nhsNotifyLambda/package.json index c80b174eec..0e72b6b749 100644 --- a/packages/nhsNotifyLambda/package.json +++ b/packages/nhsNotifyLambda/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/nhsNotifyLambda/tests/notify.test.ts b/packages/nhsNotifyLambda/tests/notify.test.ts index 61a200a0a5..25e4e7289b 100644 --- a/packages/nhsNotifyLambda/tests/notify.test.ts +++ b/packages/nhsNotifyLambda/tests/notify.test.ts @@ -1,4 +1,10 @@ -import {jest, describe, it} from "@jest/globals" +import { + vi, + describe, + it, + expect, + beforeEach +} from "vitest" import {Logger} from "@aws-lambda-powertools/logger" import {logNotificationRequest} from "../src/utils/notify" @@ -7,13 +13,11 @@ import {LOG_MESSAGES} from "@psu-common/utilities" // Mock crypto.randomUUID const mockUUID = "550e8400-e29b-41d4-a716-446655440000" -globalThis.crypto = { - randomUUID: () => mockUUID -} as unknown as Crypto +vi.spyOn(globalThis.crypto, "randomUUID").mockReturnValue(mockUUID) -const mockInfo = jest.fn() -const mockError = jest.fn() -const mockWarn = jest.fn() +const mockInfo = vi.fn() +const mockError = vi.fn() +const mockWarn = vi.fn() describe("logNotificationRequest", () => { let mockLogger: Logger @@ -70,7 +74,7 @@ describe("logNotificationRequest", () => { data = [dataItem1, dataItem2] - jest.clearAllMocks() + vi.clearAllMocks() }) it("should log legacy notification request summary", () => { diff --git a/packages/nhsNotifyLambda/tests/testAuth.test.ts b/packages/nhsNotifyLambda/tests/testAuth.test.ts index c2956d03f7..40e371e999 100644 --- a/packages/nhsNotifyLambda/tests/testAuth.test.ts +++ b/packages/nhsNotifyLambda/tests/testAuth.test.ts @@ -1,12 +1,22 @@ -import {jest} from "@jest/globals" +import { + vi, + describe, + it, + expect, + beforeAll, + beforeEach +} from "vitest" import nock from "nock" import {Logger} from "@aws-lambda-powertools/logger" import axios, {AxiosInstance} from "axios" -const mockImportPKCS8 = jest.fn() -const mockSignJWTConstructor = jest.fn() -jest.unstable_mockModule("jose", async () => ({ +const {mockImportPKCS8, mockSignJWTConstructor} = vi.hoisted(() => ({ + mockImportPKCS8: vi.fn(), + mockSignJWTConstructor: vi.fn() +})) + +vi.mock("jose", async () => ({ __esModule: true, importPKCS8: mockImportPKCS8, SignJWT: mockSignJWTConstructor @@ -31,7 +41,7 @@ describe("tokenExchange", () => { let axiosInstance: AxiosInstance beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() logger = new Logger({serviceName: "test-service"}) axiosInstance = axios.create({baseURL: host}) @@ -56,7 +66,7 @@ describe("tokenExchange", () => { setExpirationTime: function () { return this }, - sign: jest.fn().mockImplementation(() => Promise.resolve("signed.jwt.token")) + sign: vi.fn().mockImplementation(() => Promise.resolve("signed.jwt.token")) } mockSignJWTConstructor.mockImplementation(() => fakeJwtInstance) @@ -101,7 +111,7 @@ describe("tokenExchange", () => { setExpirationTime() { return this }, - sign: jest.fn().mockImplementation(() => Promise.resolve("jwt-tkn")) + sign: vi.fn().mockImplementation(() => Promise.resolve("jwt-tkn")) })) nock(`${host}`) @@ -131,7 +141,7 @@ describe("tokenExchange", () => { setExpirationTime() { return this }, - sign: jest.fn().mockImplementation(() => Promise.resolve("jwt-tkn")) + sign: vi.fn().mockImplementation(() => Promise.resolve("jwt-tkn")) })) nock(`${host}`) diff --git a/packages/nhsNotifyLambda/tests/testHelpers.ts b/packages/nhsNotifyLambda/tests/testHelpers.ts index 437f5490f2..77e7e89cf8 100644 --- a/packages/nhsNotifyLambda/tests/testHelpers.ts +++ b/packages/nhsNotifyLambda/tests/testHelpers.ts @@ -1,25 +1,27 @@ -import {jest} from "@jest/globals" - -import * as sqs from "@aws-sdk/client-sqs" +import {vi} from "vitest" +import type {Message} from "@aws-sdk/client-sqs" import {PSUDataItem} from "@psu-common/commonTypes" import {NotifyDataItemMessage} from "../src/utils" +const {mockSend} = vi.hoisted(() => ({mockSend: vi.fn()})) + +vi.mock("@aws-sdk/client-sqs", async (importOriginal) => { + const sqs = await importOriginal() + return { + ...sqs, + SQSClient: vi.fn().mockImplementation(() => ({ + send: mockSend + })) + } +}) + // Similarly mock the SQS client export function mockSQSClient() { - const mockSend = jest.fn() - jest.unstable_mockModule("@aws-sdk/client-sqs", () => { - return { - ...sqs, - SQSClient: jest.fn().mockImplementation(() => ({ - send: mockSend - })) - } - }) return {mockSend} } -export function constructMessage(overrides: Partial = {}): sqs.Message { +export function constructMessage(overrides: Partial = {}): Message { return { MessageId: "messageId", Attributes: { diff --git a/packages/nhsNotifyLambda/tests/testNhsNotifyLambda.test.ts b/packages/nhsNotifyLambda/tests/testNhsNotifyLambda.test.ts index 5917e22507..6e769ba8b1 100644 --- a/packages/nhsNotifyLambda/tests/testNhsNotifyLambda.test.ts +++ b/packages/nhsNotifyLambda/tests/testNhsNotifyLambda.test.ts @@ -1,15 +1,40 @@ import { - jest, + vi, describe, it, + expect, beforeAll, + beforeEach, afterEach -} from "@jest/globals" +} from "vitest" import {constructPSUDataItem, constructPSUDataItemMessage} from "./testHelpers" -const mockGetParameter = jest.fn().mockImplementation(() => "parameter_value") -jest.unstable_mockModule( +const { + mockGetParameter, + mockAddPrescriptionMessagesToNotificationStateStore, + mockRemoveSQSMessages, + mockReportQueueStatus, + mockDrainQueue, + mockCheckCooldownForUpdate, + mockMakeBatchNotifyRequest, + mockInfo, + mockError, + mockWarn +} = vi.hoisted(() => ({ + mockGetParameter: vi.fn().mockImplementation(() => "parameter_value"), + mockAddPrescriptionMessagesToNotificationStateStore: vi.fn(), + mockRemoveSQSMessages: vi.fn(), + mockReportQueueStatus: vi.fn(), + mockDrainQueue: vi.fn(), + mockCheckCooldownForUpdate: vi.fn(), + mockMakeBatchNotifyRequest: vi.fn(), + mockInfo: vi.fn(), + mockError: vi.fn(), + mockWarn: vi.fn() +})) + +vi.mock( "@aws-lambda-powertools/parameters/ssm", async () => ({ __esModule: true, @@ -17,14 +42,7 @@ jest.unstable_mockModule( }) ) -const mockAddPrescriptionMessagesToNotificationStateStore = jest.fn() -const mockRemoveSQSMessages = jest.fn() -const mockReportQueueStatus = jest.fn() -const mockDrainQueue = jest.fn() -const mockCheckCooldownForUpdate = jest.fn() -const mockMakeBatchNotifyRequest = jest.fn() - -jest.unstable_mockModule( +vi.mock( "../src/utils", async () => ({ __esModule: true, @@ -37,14 +55,11 @@ jest.unstable_mockModule( }) ) -const mockInfo = jest.fn() -const mockError = jest.fn() -const mockWarn = jest.fn() -jest.unstable_mockModule( +vi.mock( "@aws-lambda-powertools/logger", async () => ({ __esModule: true, - Logger: jest.fn().mockImplementation(() => ({ + Logger: vi.fn().mockImplementation(() => ({ info: mockInfo, error: mockError, warn: mockWarn @@ -62,11 +77,15 @@ import {mockEventBridgeEvent} from "@psu-common/testing" const ORIGINAL_ENV = {...process.env} describe("Unit test for NHS Notify lambda handler", () => { + beforeEach(() => { + mockGetParameter.mockReset() + mockGetParameter.mockImplementation(() => "parameter_value") + }) + afterEach(() => { process.env = {...ORIGINAL_ENV} - jest.clearAllMocks() - jest.restoreAllMocks() + vi.clearAllMocks() }) it("When the getParameter call fails, the handler throws an error", async () => { @@ -293,7 +312,7 @@ describe("Unit test for NHS Notify lambda handler", () => { Promise.resolve({messages: [msg], isEmpty: false}) ) - const nowSpy = jest.spyOn(Date, "now") + const nowSpy = vi.spyOn(Date, "now") .mockImplementationOnce(() => 0) // start time .mockImplementationOnce(() => (14 * 60 * 1000) + 1) diff --git a/packages/nhsNotifyLambda/tests/testSecrets.test.ts b/packages/nhsNotifyLambda/tests/testSecrets.test.ts index f6aede7985..9785ef3791 100644 --- a/packages/nhsNotifyLambda/tests/testSecrets.test.ts +++ b/packages/nhsNotifyLambda/tests/testSecrets.test.ts @@ -1,7 +1,16 @@ -import {jest} from "@jest/globals" +import { + vi, + describe, + it, + expect, + beforeEach +} from "vitest" -const mockGetSecret = jest.fn<() => Promise>() -jest.unstable_mockModule( +const {mockGetSecret} = vi.hoisted(() => ({ + mockGetSecret: vi.fn<() => Promise>() +})) + +vi.mock( "@aws-lambda-powertools/parameters/secrets", async () => ({ __esModule: true, @@ -16,7 +25,7 @@ describe("loadSecrets", () => { process.env.API_KEY_SECRET = "api-key-secret-name" process.env.PRIVATE_KEY_SECRET = "private-key-secret-name" process.env.KID_SECRET = "kid-secret-name" - jest.clearAllMocks() + vi.clearAllMocks() }) it("should load and trim secrets successfully", async () => { diff --git a/packages/nhsNotifyLambda/tests/testUtils.test.ts b/packages/nhsNotifyLambda/tests/testUtils.test.ts index b3c2c3355d..dfcf78c343 100644 --- a/packages/nhsNotifyLambda/tests/testUtils.test.ts +++ b/packages/nhsNotifyLambda/tests/testUtils.test.ts @@ -1,5 +1,13 @@ -import {jest} from "@jest/globals" -import {SpiedFunction} from "jest-mock" +import { + vi, + describe, + it, + expect, + beforeEach, + afterEach, + afterAll +} from "vitest" + import nock from "nock" import axiosRetry from "axios-retry" @@ -13,25 +21,34 @@ import {constructMessage, constructPSUDataItemMessage, mockSQSClient} from "./te const {mockSend: sqsMockSend} = mockSQSClient() const TEST_URL = "https://example.com" -const mockGetParametersByName = jest.fn(async () => Promise.resolve( - { - [process.env.NOTIFY_API_BASE_URL_PARAM!]: TEST_URL, +const { + mockGetParametersByName, + mockGetSecret, + mockTokenExchange, + mockNotifyRequestMaxItems, + mockNotifyRequestMaxBytes +} = vi.hoisted(() => ({ + mockGetParametersByName: vi.fn(async () => ({ + [process.env.NOTIFY_API_BASE_URL_PARAM!]: "https://example.com", [process.env.MAKE_REAL_NOTIFY_REQUESTS_PARAM!]: "true" - } -)) - -jest.unstable_mockModule( + })), + mockGetSecret: vi.fn().mockImplementation(() => "secret_value"), + mockTokenExchange: vi.fn().mockImplementation(() => Promise.resolve("bearer token")), + mockNotifyRequestMaxItems: 5, + mockNotifyRequestMaxBytes: 5 * 1024 * 1024 +})) + +vi.mock( "@aws-lambda-powertools/parameters/ssm", async () => ({ __esModule: true, - SSMProvider: jest.fn().mockImplementation(() => ({ + SSMProvider: vi.fn().mockImplementation(() => ({ getParametersByName: mockGetParametersByName })) }) ) -const mockGetSecret = jest.fn().mockImplementation(() => "secret_value") -jest.unstable_mockModule( +vi.mock( "@aws-lambda-powertools/parameters/secrets", async () => ({ __esModule: true, @@ -39,8 +56,7 @@ jest.unstable_mockModule( }) ) -const mockTokenExchange = jest.fn().mockImplementation(() => Promise.resolve("bearer token")) -jest.unstable_mockModule( +vi.mock( "../src/utils/auth", async () => ({ __esModule: true, @@ -48,9 +64,7 @@ jest.unstable_mockModule( }) ) -let mockNotifyRequestMaxItems = 5 -let mockNotifyRequestMaxBytes = 5 * 1024 * 1024 // 5 MB -jest.unstable_mockModule( +vi.mock( "../src/utils/constants", async () => ({ __esModule: true, @@ -70,23 +84,25 @@ const { handleNotifyRequests } = await import("../src/utils") +type Spy = ReturnType + const ORIGINAL_ENV = {...process.env} describe("NHS notify lambda helper functions", () => { describe("drainQueue", () => { let logger: Logger - let errorSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let infoSpy: SpiedFunction<(msg: string, ...meta: Array) => void> + let errorSpy: Spy + let infoSpy: Spy beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "test-service"}) - errorSpy = jest.spyOn(logger, "error") - infoSpy = jest.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") + infoSpy = vi.spyOn(logger, "info") }) it("Does not throw an error when the SQS fetch succeeds", async () => { @@ -266,7 +282,7 @@ describe("NHS notify lambda helper functions", () => { } sqsMockSend.mockResolvedValueOnce(duplicateMessagesResponse as never) - const warnSpy = jest.spyOn(logger, "warn") + const warnSpy = vi.spyOn(logger, "warn") const result = await drainQueue(logger) expect(result.messages).toHaveLength(1) @@ -284,17 +300,17 @@ describe("NHS notify lambda helper functions", () => { describe("removeSQSMessages", () => { let logger: Logger - let errorSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let infoSpy: SpiedFunction<(msg: string, ...meta: Array) => void> + let errorSpy: Spy + let infoSpy: Spy beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "test-service"}) - errorSpy = jest.spyOn(logger, "error") - infoSpy = jest.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") + infoSpy = vi.spyOn(logger, "info") }) it("deletes messages in a single batch successfully", async () => { @@ -380,20 +396,20 @@ describe("NHS notify lambda helper functions", () => { describe("addPrescriptionMessagesToNotificationStateStore", () => { let logger: Logger - let infoSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let errorSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let sendSpy: ReturnType + let infoSpy: Spy + let errorSpy: Spy + let sendSpy: Spy beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "test-service"}) - infoSpy = jest.spyOn(logger, "info") - errorSpy = jest.spyOn(logger, "error") - sendSpy = jest.spyOn(DynamoDBDocumentClient.prototype, "send") + infoSpy = vi.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") + sendSpy = vi.spyOn(DynamoDBDocumentClient.prototype, "send") as unknown as Spy }) it("throws and logs error if TABLE_NAME is not set", async () => { @@ -461,20 +477,24 @@ describe("NHS notify lambda helper functions", () => { describe("checkCooldownForUpdate", () => { let logger: Logger - let infoSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let errorSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let sendSpy: ReturnType + let infoSpy: Spy + let errorSpy: Spy + let sendSpy: Spy beforeEach(async () => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "test-service"}) - infoSpy = jest.spyOn(logger, "info") - errorSpy = jest.spyOn(logger, "error") - sendSpy = jest.spyOn(DynamoDBDocumentClient.prototype, "send") + infoSpy = vi.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") + sendSpy = vi.spyOn(DynamoDBDocumentClient.prototype, "send") as unknown as Spy + }) + + afterEach(() => { + sendSpy.mockRestore() }) afterAll(() => { @@ -586,25 +606,29 @@ describe("NHS notify lambda helper functions", () => { describe("handleNotifyRequests", () => { let logger: Logger - let errorSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let infoSpy: SpiedFunction<(msg: string, ...meta: Array) => void> + let errorSpy: Spy + let infoSpy: Spy beforeEach(() => { process.env = {...ORIGINAL_ENV} - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() nock.cleanAll() logger = new Logger({serviceName: "test-service"}) - errorSpy = jest.spyOn(logger, "error") - infoSpy = jest.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") + infoSpy = vi.spyOn(logger, "info") }) afterEach(() => { process.env = {...ORIGINAL_ENV} - jest.runOnlyPendingTimers() - jest.useRealTimers() + try { + vi.runOnlyPendingTimers() + } catch { + // Ignore when fake timers were not enabled in a test. + } + vi.useRealTimers() }) it("sends a batch and maps successful messages correctly", async () => { @@ -704,9 +728,9 @@ describe("NHS notify lambda helper functions", () => { .post("/comms/v1/message-batches") .reply(500, "Internal Server Error") - jest.useFakeTimers() + vi.useFakeTimers() // force retryDelay to 0 so retries happen immediately in tests - jest.spyOn(axiosRetry, "exponentialDelay").mockImplementation(() => 0) + vi.spyOn(axiosRetry, "exponentialDelay").mockImplementation(() => 0) const resultPromise = handleNotifyRequests( logger, @@ -715,7 +739,7 @@ describe("NHS notify lambda helper functions", () => { ) // flush retries immediately - await jest.runAllTimersAsync() + await vi.runAllTimersAsync() const result = await resultPromise expect(result).toMatchObject([ @@ -830,7 +854,7 @@ describe("NHS notify lambda helper functions", () => { }) it("retries after 425/429 with Retry-After header", async () => { - jest.useFakeTimers({advanceTimers: true}) + vi.useFakeTimers() const data = [ constructPSUDataItemMessage({ @@ -876,20 +900,17 @@ describe("NHS notify lambda helper functions", () => { "plan-retry", data ) + await vi.runAllTimersAsync() const result = await resultPromise - jest.runAllTicks() - jest.useRealTimers() expect(result).toHaveLength(2) }) it("uses a dummy call when the MAKE_REAL_NOTIFY_REQUESTS_PARAM is false", async () => { - mockGetParametersByName.mockImplementation(async () => Promise.resolve( - { - [process.env.NOTIFY_API_BASE_URL_PARAM!]: TEST_URL, - [process.env.MAKE_REAL_NOTIFY_REQUESTS_PARAM!]: "false" - } - )) + mockGetParametersByName.mockImplementation(async () => ({ + [process.env.NOTIFY_API_BASE_URL_PARAM!]: TEST_URL, + [process.env.MAKE_REAL_NOTIFY_REQUESTS_PARAM!]: "false" + })) const {handleNotifyRequests: fn} = await import("../src/utils") const data = [ @@ -1077,17 +1098,17 @@ describe("NHS notify lambda helper functions", () => { describe("reportQueueStatus", () => { let logger: Logger - let infoSpy: SpiedFunction<(msg: string, ...meta: Array) => void> - let errorSpy: SpiedFunction<(msg: string, ...meta: Array) => void> + let infoSpy: Spy + let errorSpy: Spy beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "test-service"}) - infoSpy = jest.spyOn(logger, "info") - errorSpy = jest.spyOn(logger, "error") + infoSpy = vi.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") }) it("logs current queue attributes when SQS returns attributes", async () => { diff --git a/packages/nhsNotifyLambda/vitest.config.ts b/packages/nhsNotifyLambda/vitest.config.ts new file mode 100644 index 0000000000..3a514b3a8d --- /dev/null +++ b/packages/nhsNotifyLambda/vitest.config.ts @@ -0,0 +1,10 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./", + test: { + globals: true, + setupFiles: ["./.vitest/setup-env.js"] + } +})) diff --git a/packages/nhsNotifyUpdateCallback/.jest/setEnvVars.js b/packages/nhsNotifyUpdateCallback/.vitest/setup-env.js similarity index 100% rename from packages/nhsNotifyUpdateCallback/.jest/setEnvVars.js rename to packages/nhsNotifyUpdateCallback/.vitest/setup-env.js diff --git a/packages/nhsNotifyUpdateCallback/.vscode/launch.json b/packages/nhsNotifyUpdateCallback/.vscode/launch.json index 7c9b0b4b3a..6ac9e98546 100644 --- a/packages/nhsNotifyUpdateCallback/.vscode/launch.json +++ b/packages/nhsNotifyUpdateCallback/.vscode/launch.json @@ -1,34 +1,39 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/nhsNotifyUpdateCallback/.vscode/settings.json b/packages/nhsNotifyUpdateCallback/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/nhsNotifyUpdateCallback/.vscode/settings.json +++ b/packages/nhsNotifyUpdateCallback/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/nhsNotifyUpdateCallback/jest.config.ts b/packages/nhsNotifyUpdateCallback/jest.config.ts deleted file mode 100644 index 1ad45dd190..0000000000 --- a/packages/nhsNotifyUpdateCallback/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./", - setupFiles: ["/.jest/setEnvVars.js"] -} - -export default jestConfig diff --git a/packages/nhsNotifyUpdateCallback/jest.debug.config.ts b/packages/nhsNotifyUpdateCallback/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/nhsNotifyUpdateCallback/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/nhsNotifyUpdateCallback/package.json b/packages/nhsNotifyUpdateCallback/package.json index e85748cfa2..4c30690239 100644 --- a/packages/nhsNotifyUpdateCallback/package.json +++ b/packages/nhsNotifyUpdateCallback/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/nhsNotifyUpdateCallback/tests/testHelpers.test.ts b/packages/nhsNotifyUpdateCallback/tests/testHelpers.test.ts index 307270f5ae..811a4b60d5 100644 --- a/packages/nhsNotifyUpdateCallback/tests/testHelpers.test.ts +++ b/packages/nhsNotifyUpdateCallback/tests/testHelpers.test.ts @@ -1,15 +1,16 @@ import { - jest, + vi, describe, it, beforeEach, afterEach, - expect -} from "@jest/globals" -import {createHmac} from "crypto" + expect, + type MockInstance +} from "vitest" +import {createHmac} from "node:crypto" // Mock the getSecret call -const mockGetSecret = jest.fn((secretName: string) => { +const mockGetSecret = vi.fn((secretName: string) => { if (secretName === process.env.APP_ID_SECRET) { return Promise.resolve(process.env.APP_ID) } @@ -18,13 +19,12 @@ const mockGetSecret = jest.fn((secretName: string) => { } return Promise.reject(new Error("Unexpected secret")) }) -jest.unstable_mockModule("@aws-lambda-powertools/parameters/secrets", async () => ({ +vi.mock("@aws-lambda-powertools/parameters/secrets", async () => ({ __esModule: true, getSecret: mockGetSecret })) import {DynamoDBDocumentClient, QueryCommand, UpdateCommand} from "@aws-sdk/lib-dynamodb" -import type {UpdateCommandInput} from "@aws-sdk/lib-dynamodb" import {Logger} from "@aws-lambda-powertools/logger" import {MessageStatusResponse} from "../src/types" import {generateMockChannelStatusResponse, generateMockEvent, generateMockMessageStatusResponse} from "./utilities" @@ -38,21 +38,22 @@ const { const ORIGINAL_ENV = {...process.env} describe("helpers.ts", () => { - let sendSpy: jest.SpiedFunction + // Keep this broad to avoid over-constraining overloaded AWS SDK client signatures in tests. + let sendSpy: MockInstance beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() // Spy on all docClient.send calls - sendSpy = jest.spyOn(DynamoDBDocumentClient.prototype, "send") + sendSpy = vi.spyOn(DynamoDBDocumentClient.prototype, "send") // Freeze time so TTL is predictable - jest.spyOn(Date, "now").mockReturnValue(100_000_000) // ms + vi.spyOn(Date, "now").mockReturnValue(100_000_000) // ms }) afterEach(() => { - jest.restoreAllMocks() + vi.restoreAllMocks() }) describe("response()", () => { @@ -141,12 +142,12 @@ describe("helpers.ts", () => { let logger: Logger beforeEach(() => { logger = new Logger({serviceName: "nhsNotifyUpdateCallback"}) - jest.spyOn(logger, "error") - jest.spyOn(logger, "warn") - jest.spyOn(logger, "info") + vi.spyOn(logger, "error") + vi.spyOn(logger, "warn") + vi.spyOn(logger, "info") - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() }) it("skips update when no matching record found", async () => { @@ -180,7 +181,7 @@ describe("helpers.ts", () => { NotifyMessageID: "msg-123", LastNotificationRequestTimestamp: lastTimestamp } - sendSpy.mockImplementation((cmd) => { + sendSpy.mockImplementation((cmd: unknown) => { if (cmd instanceof QueryCommand) { return Promise.resolve({Items: [mockItem]}) } @@ -222,7 +223,7 @@ describe("helpers.ts", () => { // First call: QueryCommand // Subsequent calls: UpdateCommand - sendSpy.mockImplementation((cmd) => { + sendSpy.mockImplementation((cmd: unknown) => { if (cmd instanceof QueryCommand) { return Promise.resolve({Items: [mockItem]}) } @@ -234,8 +235,8 @@ describe("helpers.ts", () => { await updateNotificationsTable(logger, mockResponse) - const [, [updateCmd]] = sendSpy.mock.calls - const input = updateCmd.input as UpdateCommandInput + const updateCmd = sendSpy.mock.calls[1][0] as UpdateCommand + const input = updateCmd.input // Note that Javascript guarantees the order of this to be preserved, so we're okay to check values like this. // We should have only three statuses @@ -294,7 +295,7 @@ describe("helpers.ts", () => { // First call: QueryCommand // Subsequent calls: UpdateCommand - sendSpy.mockImplementation((cmd) => { + sendSpy.mockImplementation((cmd: unknown) => { if (cmd instanceof QueryCommand) { return Promise.resolve({Items: [mockItem]}) } @@ -306,8 +307,8 @@ describe("helpers.ts", () => { await updateNotificationsTable(logger, mockResponse) - const [, [updateCmd]] = sendSpy.mock.calls - const input = updateCmd.input as UpdateCommandInput + const updateCmd = sendSpy.mock.calls[1][0] as UpdateCommand + const input = updateCmd.input // Note that Javascript guarantees the order of this to be preserved, so we're okay to check values like this. // 5 defined key value pairs should be in there @@ -425,8 +426,8 @@ describe("helpers.ts", () => { describe("fetchSecrets()", () => { let logger: Logger beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "nhsNotifyUpdateCallback"}) }) diff --git a/packages/nhsNotifyUpdateCallback/tests/testNhsNotifyCallbackLambda.test.ts b/packages/nhsNotifyUpdateCallback/tests/testNhsNotifyCallbackLambda.test.ts index a3e6603598..d9e40d8ab5 100644 --- a/packages/nhsNotifyUpdateCallback/tests/testNhsNotifyCallbackLambda.test.ts +++ b/packages/nhsNotifyUpdateCallback/tests/testNhsNotifyCallbackLambda.test.ts @@ -1,18 +1,20 @@ import { - jest, + beforeEach, describe, + expect, it, - beforeAll -} from "@jest/globals" + beforeAll, + vi +} from "vitest" import {generateMockEvent} from "./utilities" import {CallbackType, ChannelStatusResponse} from "../src/types" -const mockCheckSignature = jest.fn() -const mockResponse = jest.fn() -const mockUpdateNotificationsTable = jest.fn() -const mockExtractStatusesAndDescriptions = jest.fn() -jest.unstable_mockModule( +const mockCheckSignature = vi.fn() +const mockResponse = vi.fn() +const mockUpdateNotificationsTable = vi.fn() +const mockExtractStatusesAndDescriptions = vi.fn() +vi.mock( "../src/helpers", async () => ({ __esModule: true, @@ -34,9 +36,9 @@ const ORIGINAL_ENV = {...process.env} describe("NHS Notify update callback lambda handler", () => { beforeEach(() => { process.env = {...ORIGINAL_ENV} - jest.clearAllMocks() - jest.restoreAllMocks() - jest.resetAllMocks() + vi.clearAllMocks() + vi.restoreAllMocks() + vi.resetAllMocks() // Copies the real implementation mockResponse.mockImplementation((...args: Array): {statusCode: number; body: string} => { diff --git a/packages/nhsNotifyUpdateCallback/vitest.config.ts b/packages/nhsNotifyUpdateCallback/vitest.config.ts new file mode 100644 index 0000000000..e292a3df93 --- /dev/null +++ b/packages/nhsNotifyUpdateCallback/vitest.config.ts @@ -0,0 +1,9 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./", + test: { + setupFiles: ["./.vitest/setup-env.js"] + } +})) diff --git a/packages/nhsd-psu-sandbox/.vscode/launch.json b/packages/nhsd-psu-sandbox/.vscode/launch.json index 4e2a6957e9..c5f33ba628 100644 --- a/packages/nhsd-psu-sandbox/.vscode/launch.json +++ b/packages/nhsd-psu-sandbox/.vscode/launch.json @@ -3,28 +3,37 @@ "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": "true", - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/nhsd-psu-sandbox/.vscode/settings.json b/packages/nhsd-psu-sandbox/.vscode/settings.json index 6ce2cf741b..38e8cd685d 100644 --- a/packages/nhsd-psu-sandbox/.vscode/settings.json +++ b/packages/nhsd-psu-sandbox/.vscode/settings.json @@ -1,8 +1,4 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } - } + "testing.automaticallyOpenPeekView": "never" +} diff --git a/packages/nhsd-psu-sandbox/jest.config.ts b/packages/nhsd-psu-sandbox/jest.config.ts deleted file mode 100644 index dd2cb2f161..0000000000 --- a/packages/nhsd-psu-sandbox/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./" -} - -export default jestConfig diff --git a/packages/nhsd-psu-sandbox/jest.debug.config.ts b/packages/nhsd-psu-sandbox/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/nhsd-psu-sandbox/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/nhsd-psu-sandbox/package.json b/packages/nhsd-psu-sandbox/package.json index 3de98c9b61..02a7c95f4a 100644 --- a/packages/nhsd-psu-sandbox/package.json +++ b/packages/nhsd-psu-sandbox/package.json @@ -6,7 +6,7 @@ "author": "NHS Digital", "license": "MIT", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/nhsd-psu-sandbox/tests/test-handler.test.ts b/packages/nhsd-psu-sandbox/tests/test-handler.test.ts index 871e498191..75bd94b251 100644 --- a/packages/nhsd-psu-sandbox/tests/test-handler.test.ts +++ b/packages/nhsd-psu-sandbox/tests/test-handler.test.ts @@ -1,6 +1,6 @@ import {APIGatewayProxyEvent, APIGatewayProxyResult} from "aws-lambda" import {handler} from "../src/sandbox" -import {expect, describe, it} from "@jest/globals" +import {expect, describe, it} from "vitest" import successData from "../../specification/examples/response-multiple-items.json" const dummyContext = {} diff --git a/packages/nhsd-psu-sandbox/vitest.config.ts b/packages/nhsd-psu-sandbox/vitest.config.ts new file mode 100644 index 0000000000..823e470724 --- /dev/null +++ b/packages/nhsd-psu-sandbox/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/postDatedLambda/.jest/setEnvVars.js b/packages/postDatedLambda/.vitest/setup-env.js similarity index 100% rename from packages/postDatedLambda/.jest/setEnvVars.js rename to packages/postDatedLambda/.vitest/setup-env.js diff --git a/packages/postDatedLambda/.vscode/launch.json b/packages/postDatedLambda/.vscode/launch.json index 7c9b0b4b3a..031eba02bb 100644 --- a/packages/postDatedLambda/.vscode/launch.json +++ b/packages/postDatedLambda/.vscode/launch.json @@ -1,35 +1,40 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "type": "node", - "name": "vscode-jest-tests.v2", - "request": "launch", - "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", - "--config", - "${workspaceFolder}/jest.debug.config.ts" - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, - "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } - } + { + "name": "vitest: all tests", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "vitest.config.ts" + ], + "env": { + "POWERTOOLS_DEV": "true" + }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, + { + "name": "vitest: current file", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "${relativeFile}", + "--config", + "vitest.config.ts" + ], + "env": { + "POWERTOOLS_DEV": "true" + }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + } ] } diff --git a/packages/postDatedLambda/.vscode/settings.json b/packages/postDatedLambda/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/postDatedLambda/.vscode/settings.json +++ b/packages/postDatedLambda/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/postDatedLambda/jest.config.ts b/packages/postDatedLambda/jest.config.ts deleted file mode 100644 index 8212011ed9..0000000000 --- a/packages/postDatedLambda/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type {JestConfigWithTsJest} from "ts-jest" -import defaultConfig from "../../jest.default.config.ts" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./", - setupFiles: ["/.jest/setEnvVars.js"] -} - -export default jestConfig diff --git a/packages/postDatedLambda/jest.debug.config.ts b/packages/postDatedLambda/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/postDatedLambda/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/postDatedLambda/package.json b/packages/postDatedLambda/package.json index 0145f4a9f9..ab7c9f15f4 100644 --- a/packages/postDatedLambda/package.json +++ b/packages/postDatedLambda/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--max-old-space-size=8192 vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/postDatedLambda/tests/testBusinessLogic.test.ts b/packages/postDatedLambda/tests/testBusinessLogic.test.ts index 663d2485f1..7e80a0725b 100644 --- a/packages/postDatedLambda/tests/testBusinessLogic.test.ts +++ b/packages/postDatedLambda/tests/testBusinessLogic.test.ts @@ -3,8 +3,8 @@ import { describe, it, afterEach, - jest -} from "@jest/globals" + vi +} from "vitest" import {Logger} from "@aws-lambda-powertools/logger" @@ -21,7 +21,7 @@ async function loadBusinessLogic( envOverrides = {} ): Promise { // Makes sure that the environment is set before import each time - jest.resetModules() + vi.resetModules() process.env = {...ORIGINAL_ENV, ...envOverrides} return import("../src/businessLogic") } @@ -78,7 +78,7 @@ function createMessage( afterEach(() => { process.env = {...ORIGINAL_ENV} - jest.useRealTimers() + vi.useRealTimers() }) describe("businessLogic", () => { @@ -186,8 +186,8 @@ describe("businessLogic", () => { }) it("should classify a message as immature when LastModified is in the future", async () => { - jest.useFakeTimers() - jest.setSystemTime(new Date("2026-01-01T12:00:00.000Z")) + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-01T12:00:00.000Z")) const {determineAction} = await loadBusinessLogic() const logger = new Logger({serviceName: "post-dated-tests"}) const message = createMessage({ @@ -204,8 +204,8 @@ describe("businessLogic", () => { }) it("should classify a message as matured when LastModified is in the past", async () => { - jest.useFakeTimers() - jest.setSystemTime(new Date("2026-01-03T12:00:00.000Z")) + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-03T12:00:00.000Z")) const {determineAction} = await loadBusinessLogic() const logger = new Logger({serviceName: "post-dated-tests"}) const message = createMessage({ @@ -222,8 +222,8 @@ describe("businessLogic", () => { }) it("should use the provided most recent record when determining maturity", async () => { - jest.useFakeTimers() - jest.setSystemTime(new Date("2026-01-05T12:00:00.000Z")) + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-05T12:00:00.000Z")) const {determineAction} = await loadBusinessLogic() const logger = new Logger({serviceName: "post-dated-tests"}) const message = createMessage({ diff --git a/packages/postDatedLambda/tests/testDatabaseClient.test.ts b/packages/postDatedLambda/tests/testDatabaseClient.test.ts index 5d2e938ea7..3c28eb486c 100644 --- a/packages/postDatedLambda/tests/testDatabaseClient.test.ts +++ b/packages/postDatedLambda/tests/testDatabaseClient.test.ts @@ -2,30 +2,27 @@ import { expect, describe, it, - jest -} from "@jest/globals" - -import * as dynamo from "@aws-sdk/client-dynamodb" + vi, + beforeEach +} from "vitest" import {Logger} from "@aws-lambda-powertools/logger" import {createMockPostModifiedDataItem} from "./testUtils" -// Uses unstable jest method to enable mocking while using ESM. To be replaced in future. -export function mockDynamoDBClient() { - const mockSend = jest.fn() - jest.unstable_mockModule("@aws-sdk/client-dynamodb", () => { - return { - ...dynamo, - DynamoDBClient: jest.fn().mockImplementation(() => ({ - send: mockSend - })) - } - }) - return {mockSend} -} - -const {mockSend} = mockDynamoDBClient() +const {mockSend} = vi.hoisted(() => ({ + mockSend: vi.fn() +})) + +vi.mock("@aws-sdk/client-dynamodb", async () => { + const dynamo = await vi.importActual("@aws-sdk/client-dynamodb") + return { + ...dynamo, + DynamoDBClient: vi.fn().mockImplementation(() => ({ + send: mockSend + })) + } +}) const { getRecentDataItemByPrescriptionID, enrichMessagesWithMostRecentDataItem diff --git a/packages/postDatedLambda/tests/testMain.test.ts b/packages/postDatedLambda/tests/testMain.test.ts index 6df8c8d468..e76907aeef 100644 --- a/packages/postDatedLambda/tests/testMain.test.ts +++ b/packages/postDatedLambda/tests/testMain.test.ts @@ -1,13 +1,21 @@ import { - jest, + vi, + expect, describe, it, beforeAll, afterEach -} from "@jest/globals" +} from "vitest" -const mockReportQueueStatus = jest.fn() -jest.unstable_mockModule( +const { + mockReportQueueStatus, + mockProcessPostDatedQueue +} = vi.hoisted(() => ({ + mockReportQueueStatus: vi.fn(), + mockProcessPostDatedQueue: vi.fn() +})) + +vi.mock( "../src/sqs", async () => ({ __esModule: true, @@ -15,8 +23,7 @@ jest.unstable_mockModule( }) ) -const mockProcessPostDatedQueue = jest.fn() -jest.unstable_mockModule( +vi.mock( "../src/orchestration", async () => ({ __esModule: true, @@ -37,8 +44,8 @@ describe("Unit test for post-dated lambda handler", () => { afterEach(() => { process.env = {...ORIGINAL_ENV} - jest.clearAllMocks() - jest.restoreAllMocks() + vi.clearAllMocks() + vi.restoreAllMocks() }) it("should run the lambda handler successfully", async () => { diff --git a/packages/postDatedLambda/tests/testOrchestration.test.ts b/packages/postDatedLambda/tests/testOrchestration.test.ts index 0dbed78a38..8e0c2866e9 100644 --- a/packages/postDatedLambda/tests/testOrchestration.test.ts +++ b/packages/postDatedLambda/tests/testOrchestration.test.ts @@ -2,32 +2,46 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi, + beforeEach, + afterEach +} from "vitest" // Mock the imports from local modules -const mockDetermineAction = jest.fn() -const mockComputeTimeUntilMaturity = jest.fn().mockReturnValue(300) -jest.unstable_mockModule("../src/businessLogic", () => { +const { + mockDetermineAction, + mockComputeTimeUntilMaturity, + mockEnrichMessagesWithMostRecentDataItem, + mockReceivePostDatedSQSMessages, + mockReportQueueStatus, + mockForwardSQSMessageToNotificationQueue, + mockRemoveSQSMessage, + mockReturnMessageToQueue +} = vi.hoisted(() => ({ + mockDetermineAction: vi.fn(), + mockComputeTimeUntilMaturity: vi.fn().mockReturnValue(300), + mockEnrichMessagesWithMostRecentDataItem: vi.fn(), + mockReceivePostDatedSQSMessages: vi.fn(), + mockReportQueueStatus: vi.fn(), + mockForwardSQSMessageToNotificationQueue: vi.fn(), + mockRemoveSQSMessage: vi.fn(), + mockReturnMessageToQueue: vi.fn() +})) + +vi.mock("../src/businessLogic", () => { return { determineAction: mockDetermineAction, computeTimeUntilMaturity: mockComputeTimeUntilMaturity } }) -const mockEnrichMessagesWithMostRecentDataItem = jest.fn() -jest.unstable_mockModule("../src/databaseClient", () => { +vi.mock("../src/databaseClient", () => { return { enrichMessagesWithMostRecentDataItem: mockEnrichMessagesWithMostRecentDataItem } }) -const mockReceivePostDatedSQSMessages = jest.fn() -const mockReportQueueStatus = jest.fn() -const mockForwardSQSMessageToNotificationQueue = jest.fn() -const mockRemoveSQSMessage = jest.fn() -const mockReturnMessageToQueue = jest.fn() -jest.unstable_mockModule("../src/sqs", () => { +vi.mock("../src/sqs", () => { return { receivePostDatedSQSMessages: mockReceivePostDatedSQSMessages, reportQueueStatus: mockReportQueueStatus, @@ -66,7 +80,7 @@ function enrich(messages: Array): Array { describe("processMessages", () => { beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() mockForwardSQSMessageToNotificationQueue.mockReturnValue(Promise.resolve("forwarded-id")) mockRemoveSQSMessage.mockReturnValue(Promise.resolve()) mockReturnMessageToQueue.mockReturnValue(Promise.resolve()) @@ -125,12 +139,17 @@ describe("orchestration", () => { describe("processPostDatedQueue", () => { beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() mockForwardSQSMessageToNotificationQueue.mockReturnValue(Promise.resolve("forwarded-id")) mockRemoveSQSMessage.mockReturnValue(Promise.resolve()) mockReturnMessageToQueue.mockReturnValue(Promise.resolve()) }) + afterEach(() => { + vi.useRealTimers() + vi.restoreAllMocks() + }) + it("should process the SQS queue correctly", async () => { const mockMessages: Array = [ {MessageId: "1", Body: "Message 1", prescriptionData: createMockPostModifiedDataItem({})}, @@ -157,7 +176,6 @@ describe("orchestration", () => { }) it("Should stop processing if the max runtime is exceeded", async () => { - jest.useFakeTimers() const mockMessages: Array = [ {MessageId: "1", Body: "Message 1", prescriptionData: createMockPostModifiedDataItem({})}, {MessageId: "2", Body: "Message 2", prescriptionData: createMockPostModifiedDataItem({})}, @@ -171,14 +189,13 @@ describe("orchestration", () => { mockEnrichMessagesWithMostRecentDataItem.mockReturnValue(enrich(mockMessages)) const {MAX_QUEUE_RUNTIME} = await import("../src/orchestration") mockDetermineAction.mockReturnValue(PostDatedProcessingResult.FORWARD_TO_NOTIFICATIONS) + vi.spyOn(Date, "now") + .mockReturnValueOnce(0) + .mockReturnValueOnce(MAX_QUEUE_RUNTIME + 1000) - const promise = processPostDatedQueue(logger) - // Overrun by a second - jest.advanceTimersByTime(MAX_QUEUE_RUNTIME + 1000) - await promise + await processPostDatedQueue(logger) expect(mockReportQueueStatus).toHaveBeenCalled() - jest.useRealTimers() }) it("should continue processing batches until message count drops below threshold", async () => { diff --git a/packages/postDatedLambda/tests/testSqs.test.ts b/packages/postDatedLambda/tests/testSqs.test.ts index 94cdd74a6d..98b2d66c34 100644 --- a/packages/postDatedLambda/tests/testSqs.test.ts +++ b/packages/postDatedLambda/tests/testSqs.test.ts @@ -2,30 +2,29 @@ import { describe, it, expect, - jest -} from "@jest/globals" -import {SpiedFunction} from "jest-mock" + vi, + beforeEach +} from "vitest" import {Logger} from "@aws-lambda-powertools/logger" -import {LogItemMessage, LogItemExtraInput} from "@aws-lambda-powertools/logger/lib/cjs/types/Logger" -import * as sqs from "@aws-sdk/client-sqs" import {PostDatedSQSMessage} from "../src/types" import {createMockPostModifiedDataItem} from "./testUtils" -export function mockSQSClient() { - const mockSend = jest.fn() - jest.unstable_mockModule("@aws-sdk/client-sqs", () => { - return { - ...sqs, - SQSClient: jest.fn().mockImplementation(() => ({ - send: mockSend - })) - } - }) - return {mockSend} -} +type Spy = ReturnType + +const {mockSend} = vi.hoisted(() => ({ + mockSend: vi.fn() +})) -const {mockSend} = mockSQSClient() +vi.mock("@aws-sdk/client-sqs", async () => { + const sqs = await vi.importActual("@aws-sdk/client-sqs") + return { + ...sqs, + SQSClient: vi.fn().mockImplementation(() => ({ + send: mockSend + })) + } +}) const { getPostDatedQueueUrl, @@ -40,13 +39,12 @@ const ORIGINAL_ENV = {...process.env} describe("sqs", () => { let logger: Logger - let infoSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> - let errorSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> - // let warnSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> + let infoSpy: Spy + let errorSpy: Spy beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() // Reset environment process.env = {...ORIGINAL_ENV} @@ -54,9 +52,8 @@ describe("sqs", () => { // Fresh logger and spies logger = new Logger({serviceName: "test-service"}) - infoSpy = jest.spyOn(logger, "info") - errorSpy = jest.spyOn(logger, "error") - // warnSpy = jest.spyOn(logger, "warn") + infoSpy = vi.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") }) describe("getPostDatedQueueUrl", () => { diff --git a/packages/postDatedLambda/vitest.config.ts b/packages/postDatedLambda/vitest.config.ts new file mode 100644 index 0000000000..6040afc5da --- /dev/null +++ b/packages/postDatedLambda/vitest.config.ts @@ -0,0 +1,11 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./", + test: { + minWorkers: 1, + maxWorkers: 1, + setupFiles: ["./.vitest/setup-env.js"] + } +})) diff --git a/packages/psuRestoreValidationLambda/.vscode/launch.json b/packages/psuRestoreValidationLambda/.vscode/launch.json index f54493ee69..56ca91a9c5 100644 --- a/packages/psuRestoreValidationLambda/.vscode/launch.json +++ b/packages/psuRestoreValidationLambda/.vscode/launch.json @@ -1,34 +1,39 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/psuRestoreValidationLambda/.vscode/settings.json b/packages/psuRestoreValidationLambda/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/psuRestoreValidationLambda/.vscode/settings.json +++ b/packages/psuRestoreValidationLambda/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/psuRestoreValidationLambda/jest.config.ts b/packages/psuRestoreValidationLambda/jest.config.ts deleted file mode 100644 index acbc1493de..0000000000 --- a/packages/psuRestoreValidationLambda/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - rootDir: "./" -} - -export default jestConfig diff --git a/packages/psuRestoreValidationLambda/jest.debug.config.ts b/packages/psuRestoreValidationLambda/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/psuRestoreValidationLambda/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/psuRestoreValidationLambda/package.json b/packages/psuRestoreValidationLambda/package.json index 45f3edefab..52064b3704 100644 --- a/packages/psuRestoreValidationLambda/package.json +++ b/packages/psuRestoreValidationLambda/package.json @@ -7,7 +7,7 @@ "main": "lib/src/index.js", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc --build", "test": "npm run compile && npm run unit", diff --git a/packages/psuRestoreValidationLambda/tests/compareTable.test.ts b/packages/psuRestoreValidationLambda/tests/compareTable.test.ts index 6512d54fb4..7ab8a94f63 100644 --- a/packages/psuRestoreValidationLambda/tests/compareTable.test.ts +++ b/packages/psuRestoreValidationLambda/tests/compareTable.test.ts @@ -1,17 +1,24 @@ import {DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb" -import {jest} from "@jest/globals" +import { + beforeEach, + describe, + expect, + it, + vi, + type Mocked +} from "vitest" import {Logger} from "@aws-lambda-powertools/logger" -const mockSend = jest.fn() +const mockSend = vi.fn() const mockDocumentClient = { send: mockSend -} as unknown as jest.Mocked +} as unknown as Mocked const mockLogger: Partial = { - info: jest.fn(), - debug: jest.fn(), - error: jest.fn(), - warn: jest.fn() + info: vi.fn(), + debug: vi.fn(), + error: vi.fn(), + warn: vi.fn() } const SOURCE_ITEM = { @@ -24,9 +31,9 @@ const {compareTables} = await import("../src/compareTable") describe("Compare table function", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() - jest.resetAllMocks() + vi.resetModules() + vi.clearAllMocks() + vi.resetAllMocks() }) // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/psuRestoreValidationLambda/tests/handler.test.ts b/packages/psuRestoreValidationLambda/tests/handler.test.ts index 957c0735ed..4330979686 100644 --- a/packages/psuRestoreValidationLambda/tests/handler.test.ts +++ b/packages/psuRestoreValidationLambda/tests/handler.test.ts @@ -1,17 +1,18 @@ import {EventBridgeEvent} from "aws-lambda" import { - jest, + beforeAll, expect, describe, - it -} from "@jest/globals" + it, + vi +} from "vitest" import {backupEventCompletedDetail} from "../src/types" import {Backup} from "@aws-sdk/client-backup" import {mockContext} from "@psu-common/testing" -const mockCompareTables = jest.fn() -jest.unstable_mockModule("../src/compareTable", () => { +const mockCompareTables = vi.fn() +vi.mock("../src/compareTable", () => { return { compareTables: mockCompareTables } @@ -49,7 +50,7 @@ const dummyEvent: EventBridgeEvent<"Restore Job State Change", backupEventComple describe("Unit test for psuRestoreValidationLambda", function () { let mockPutRestoreValidationResult: unknown beforeAll(()=> { - mockPutRestoreValidationResult = jest + mockPutRestoreValidationResult = vi .spyOn( Backup.prototype, "putRestoreValidationResult") .mockResolvedValue("success" as never) diff --git a/packages/psuRestoreValidationLambda/vitest.config.ts b/packages/psuRestoreValidationLambda/vitest.config.ts new file mode 100644 index 0000000000..823e470724 --- /dev/null +++ b/packages/psuRestoreValidationLambda/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/specification/.vscode/launch.json b/packages/specification/.vscode/launch.json deleted file mode 100644 index 4e2a6957e9..0000000000 --- a/packages/specification/.vscode/launch.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "name": "vscode-jest-tests.v2", - "request": "launch", - "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", - "--config", - "${workspaceFolder}/jest.debug.config.ts" - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, - "env": { - "POWERTOOLS_DEV": "true", - "NODE_OPTIONS": "--experimental-vm-modules" - } - } - ] -} diff --git a/packages/specification/.vscode/settings.json b/packages/specification/.vscode/settings.json index 2acba7ccfa..0db3279e44 100644 --- a/packages/specification/.vscode/settings.json +++ b/packages/specification/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } - } + +} diff --git a/packages/specification/jest.config.ts b/packages/specification/jest.config.ts deleted file mode 100644 index dd2cb2f161..0000000000 --- a/packages/specification/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./" -} - -export default jestConfig diff --git a/packages/specification/jest.debug.config.ts b/packages/specification/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/specification/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/specification/package.json b/packages/specification/package.json index 50b5c57687..1af0131868 100644 --- a/packages/specification/package.json +++ b/packages/specification/package.json @@ -18,6 +18,9 @@ }, "homepage": "https://github.com/NHSDigital/eps-prescription-status-update-api", "devDependencies": { + "yaml": "^2.8.3" + }, + "dependencies": { "@redocly/cli": "^2.25.2" } } diff --git a/packages/statusLambda/.vscode/launch.json b/packages/statusLambda/.vscode/launch.json index 7c9b0b4b3a..6ac9e98546 100644 --- a/packages/statusLambda/.vscode/launch.json +++ b/packages/statusLambda/.vscode/launch.json @@ -1,34 +1,39 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", - "name": "vscode-jest-tests.v2", + "name": "vitest: all tests", "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "${workspaceFolder}/vitest.config.ts" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - }, "env": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" + "POWERTOOLS_DEV": "true" + } + }, + { + "type": "node", + "name": "vitest: current file", + "request": "launch", + "program": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "--config", + "${workspaceFolder}/vitest.config.ts", + "${file}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "env": { + "POWERTOOLS_DEV": "true" } } ] diff --git a/packages/statusLambda/.vscode/settings.json b/packages/statusLambda/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/statusLambda/.vscode/settings.json +++ b/packages/statusLambda/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/statusLambda/jest.config.ts b/packages/statusLambda/jest.config.ts deleted file mode 100644 index dd2cb2f161..0000000000 --- a/packages/statusLambda/jest.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import defaultConfig from "../../jest.default.config.ts" -import type {JestConfigWithTsJest} from "ts-jest" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./" -} - -export default jestConfig diff --git a/packages/statusLambda/jest.debug.config.ts b/packages/statusLambda/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/statusLambda/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/statusLambda/package.json b/packages/statusLambda/package.json index fedfa5455e..ee835f60da 100644 --- a/packages/statusLambda/package.json +++ b/packages/statusLambda/package.json @@ -6,7 +6,7 @@ "author": "NHS Digital", "license": "MIT", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/statusLambda/tests/test-handler.test.ts b/packages/statusLambda/tests/test-handler.test.ts index 45b274af25..ab9e34b29e 100644 --- a/packages/statusLambda/tests/test-handler.test.ts +++ b/packages/statusLambda/tests/test-handler.test.ts @@ -3,11 +3,12 @@ import {Logger} from "@aws-lambda-powertools/logger" import axios from "axios" import MockAdapter from "axios-mock-adapter" import { - jest, + afterEach, expect, describe, - it -} from "@jest/globals" + it, + vi +} from "vitest" import {handler} from "../src/statusLambda" import {mockAPIGatewayProxyEvent, mockContext} from "@psu-common/testing" @@ -51,7 +52,7 @@ describe("Unit test for status check", function () { }) it("appends trace id's to the logger", async () => { - const mockAppendKeys = jest.spyOn(Logger.prototype, "appendKeys") + const mockAppendKeys = vi.spyOn(Logger.prototype, "appendKeys") await handler(mockAPIGatewayProxyEvent, mockContext) diff --git a/packages/statusLambda/vitest.config.ts b/packages/statusLambda/vitest.config.ts new file mode 100644 index 0000000000..823e470724 --- /dev/null +++ b/packages/statusLambda/vitest.config.ts @@ -0,0 +1,6 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./" +})) diff --git a/packages/updatePrescriptionStatus/.jest/setEnvVars.js b/packages/updatePrescriptionStatus/.vitest/setup-env.js similarity index 100% rename from packages/updatePrescriptionStatus/.jest/setEnvVars.js rename to packages/updatePrescriptionStatus/.vitest/setup-env.js diff --git a/packages/updatePrescriptionStatus/.vscode/launch.json b/packages/updatePrescriptionStatus/.vscode/launch.json index 4e2a6957e9..5f8187b962 100644 --- a/packages/updatePrescriptionStatus/.vscode/launch.json +++ b/packages/updatePrescriptionStatus/.vscode/launch.json @@ -2,30 +2,39 @@ "version": "0.2.0", "configurations": [ { + "name": "vitest: all tests", "type": "node", - "name": "vscode-jest-tests.v2", "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}", + "run", "--config", - "${workspaceFolder}/jest.debug.config.ts" + "vitest.config.ts" ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "program": "${workspaceFolder}/../../node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" + "env": { + "POWERTOOLS_DEV": "true" }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, + { + "name": "vitest: current file", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "${workspaceFolder}/../../node_modules/vitest/vitest.mjs", + "args": [ + "run", + "${relativeFile}", + "--config", + "vitest.config.ts" + ], "env": { - "POWERTOOLS_DEV": "true", - "NODE_OPTIONS": "--experimental-vm-modules" - } + "POWERTOOLS_DEV": "true" + }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" } ] } diff --git a/packages/updatePrescriptionStatus/.vscode/settings.json b/packages/updatePrescriptionStatus/.vscode/settings.json index 3501264944..915c268c04 100644 --- a/packages/updatePrescriptionStatus/.vscode/settings.json +++ b/packages/updatePrescriptionStatus/.vscode/settings.json @@ -1,7 +1,3 @@ { - "jest.jestCommandLine": "/workspaces/eps-prescription-status-update-api/node_modules/.bin/jest --no-cache", - "jest.nodeEnv": { - "POWERTOOLS_DEV": true, - "NODE_OPTIONS": "--experimental-vm-modules" - } + "testing.automaticallyOpenPeekView": "never" } diff --git a/packages/updatePrescriptionStatus/jest.config.ts b/packages/updatePrescriptionStatus/jest.config.ts deleted file mode 100644 index fd94bd6a89..0000000000 --- a/packages/updatePrescriptionStatus/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type {JestConfigWithTsJest} from "ts-jest" -import defaultConfig from "../../jest.default.config.ts" - -const jestConfig: JestConfigWithTsJest = { - ...defaultConfig, - "rootDir": "./", - setupFiles: ["/.jest/setEnvVars.js"] -} - -export default jestConfig diff --git a/packages/updatePrescriptionStatus/jest.debug.config.ts b/packages/updatePrescriptionStatus/jest.debug.config.ts deleted file mode 100644 index a306273831..0000000000 --- a/packages/updatePrescriptionStatus/jest.debug.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import config from "./jest.config" -import type {JestConfigWithTsJest} from "ts-jest" - -const debugConfig: JestConfigWithTsJest = { - ...config, - "preset": "ts-jest" -} - -export default debugConfig diff --git a/packages/updatePrescriptionStatus/package.json b/packages/updatePrescriptionStatus/package.json index 9f454ecc54..7ebd41c0ab 100644 --- a/packages/updatePrescriptionStatus/package.json +++ b/packages/updatePrescriptionStatus/package.json @@ -7,7 +7,7 @@ "license": "MIT", "type": "module", "scripts": { - "unit": "POWERTOOLS_DEV=true NODE_OPTIONS=--experimental-vm-modules jest --no-cache --coverage", + "unit": "POWERTOOLS_DEV=true vitest run --config vitest.config.ts --coverage", "lint": "eslint --max-warnings 0 --fix --config ../../eslint.config.mjs .", "compile": "tsc", "test": "npm run compile && npm run unit", diff --git a/packages/updatePrescriptionStatus/src/updatePrescriptionStatus.ts b/packages/updatePrescriptionStatus/src/updatePrescriptionStatus.ts index fcaf86755a..ef2fa51b5a 100644 --- a/packages/updatePrescriptionStatus/src/updatePrescriptionStatus.ts +++ b/packages/updatePrescriptionStatus/src/updatePrescriptionStatus.ts @@ -62,7 +62,8 @@ async function loadConfig() { // AEA-4317 AEA-4365 & AEA-5913 - Env vars for INT test prescriptions const INT_ENVIRONMENT = process.env.ENVIRONMENT === "int" -// Using lazy initialization to avoid top-level await issues with Jest mocking +// Lazy-load and cache test prescriptions to avoid top-level async work. +// This also keeps module state predictable in tests, where resetTestPrescriptions() can clear the cache. export let TEST_PRESCRIPTIONS_1: Array = [] export let TEST_PRESCRIPTIONS_2: Array = [] export let TEST_PRESCRIPTIONS_3: Array = [] @@ -340,10 +341,10 @@ export function handleTransactionCancelledException( return entryTaskId === taskId }) - if (index !== -1) { - responseEntries[index] = conflictedEntry - } else { + if (index === -1) { responseEntries.push(conflictedEntry) + } else { + responseEntries[index] = conflictedEntry } taskIdSet.add(taskId) diff --git a/packages/updatePrescriptionStatus/tests/testDatabaseClient.test.ts b/packages/updatePrescriptionStatus/tests/testDatabaseClient.test.ts index 4290bff2a5..525146dafc 100644 --- a/packages/updatePrescriptionStatus/tests/testDatabaseClient.test.ts +++ b/packages/updatePrescriptionStatus/tests/testDatabaseClient.test.ts @@ -2,24 +2,36 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi, + beforeEach +} from "vitest" import {TransactionCanceledException} from "@aws-sdk/client-dynamodb" -import {mockDynamoDBClient} from "./utils/testUtils" import {Logger} from "@aws-lambda-powertools/logger" import {marshall} from "@aws-sdk/util-dynamodb" -const {mockSend} = mockDynamoDBClient() +const {mockSend} = vi.hoisted(() => ({mockSend: vi.fn()})) + +vi.mock( + "@aws-sdk/client-dynamodb", + async (importOriginal: () => Promise) => { + const mod = await importOriginal() + return { + ...mod, + DynamoDBClient: vi.fn().mockImplementation(() => ({send: mockSend})) + } + } +) + const {persistDataItems, getPreviousItem, rollbackDataItems} = await import("../src/utils/databaseClient") const logger = new Logger({serviceName: "updatePrescriptionStatus_TEST"}) describe("Unit test persistDataItems", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() - jest.resetAllMocks() + vi.resetModules() + vi.clearAllMocks() + vi.resetAllMocks() }) it("when the conditional check fails, an error is thrown", async () => { @@ -61,7 +73,7 @@ describe("Unit test persistDataItems", () => { CancellationReasons: [{Code: "ConditionalCheckFailedException"}] }) as never ) - const loggerSpy = jest.spyOn(logger, "error") + const loggerSpy = vi.spyOn(logger, "error") await expect(persistDataItems(dataItems, logger)).rejects.toThrow( new TransactionCanceledException({ @@ -108,7 +120,7 @@ describe("Unit test persistDataItems", () => { } ] - const loggerSpy = jest.spyOn(logger, "error") + const loggerSpy = vi.spyOn(logger, "error") const result = await persistDataItems(dataItems, logger) expect(result).toBe(true) @@ -132,7 +144,7 @@ describe("Unit test persistDataItems", () => { } const dataItems = Array(150).fill(dataItem) - const loggerSpy = jest.spyOn(logger, "error") + const loggerSpy = vi.spyOn(logger, "error") const result = await persistDataItems(dataItems, logger) expect(result).toBe(true) @@ -172,7 +184,7 @@ describe("Unit test persistDataItems", () => { } ] - const loggerSpy = jest.spyOn(logger, "error") + const loggerSpy = vi.spyOn(logger, "error") mockSend.mockRejectedValue( new Error("General error") as never ) @@ -185,9 +197,9 @@ describe("Unit test persistDataItems", () => { describe("Unit test getPreviousItem", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() - jest.resetAllMocks() + vi.resetModules() + vi.clearAllMocks() + vi.resetAllMocks() }) const initialItem = { @@ -314,7 +326,7 @@ describe("Unit test getPreviousItem", () => { it("Should return undefined and log error when there is an error", async () => { mockSend.mockRejectedValue("Something went wrong" as never) - const loggerSpy = jest.spyOn(logger, "error") + const loggerSpy = vi.spyOn(logger, "error") const result = await getPreviousItem(currentItem, logger) expect(result).toEqual({ current: currentItem, @@ -328,9 +340,9 @@ describe("Unit test getPreviousItem", () => { describe("Unit test rollbackDataItems", () => { beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() - jest.resetAllMocks() + vi.resetModules() + vi.clearAllMocks() + vi.resetAllMocks() }) const makeItem = (overrides = {}) => ({ @@ -355,8 +367,8 @@ describe("Unit test rollbackDataItems", () => { // success for each conditioned delete mockSend.mockImplementation(async () => Promise.resolve()) - const loggerWarn = jest.spyOn(logger, "warn") - const loggerError = jest.spyOn(logger, "error") + const loggerWarn = vi.spyOn(logger, "warn") + const loggerError = vi.spyOn(logger, "error") const result = await rollbackDataItems(items, logger) expect(result).toBe(true) @@ -379,8 +391,8 @@ describe("Unit test rollbackDataItems", () => { }) )) - const loggerWarn = jest.spyOn(logger, "warn") - const loggerError = jest.spyOn(logger, "error") + const loggerWarn = vi.spyOn(logger, "warn") + const loggerError = vi.spyOn(logger, "error") const result = await rollbackDataItems(items, logger) expect(result).toBe(true) // still overall success (safe to skip) @@ -394,7 +406,7 @@ describe("Unit test rollbackDataItems", () => { mockSend.mockImplementationOnce(async () => Promise.reject(new Error("error"))) - const loggerError = jest.spyOn(logger, "error") + const loggerError = vi.spyOn(logger, "error") const result = await rollbackDataItems(items, logger) expect(result).toBe(false) @@ -416,8 +428,8 @@ describe("Unit test rollbackDataItems", () => { )) .mockImplementationOnce(async () => Promise.resolve()) // C: delete ok - const loggerWarn = jest.spyOn(logger, "warn") - const loggerError = jest.spyOn(logger, "error") + const loggerWarn = vi.spyOn(logger, "warn") + const loggerError = vi.spyOn(logger, "error") const result = await rollbackDataItems(items, logger) expect(result).toBe(true) @@ -427,8 +439,8 @@ describe("Unit test rollbackDataItems", () => { }) it("does not fail if there are zero items", async () => { - const loggerWarn = jest.spyOn(logger, "warn") - const loggerError = jest.spyOn(logger, "error") + const loggerWarn = vi.spyOn(logger, "warn") + const loggerError = vi.spyOn(logger, "error") const result = await rollbackDataItems([], logger) expect(result).toBe(true) diff --git a/packages/updatePrescriptionStatus/tests/testHandler.test.ts b/packages/updatePrescriptionStatus/tests/testHandler.test.ts index 67b6f2222f..b6fae8c679 100644 --- a/packages/updatePrescriptionStatus/tests/testHandler.test.ts +++ b/packages/updatePrescriptionStatus/tests/testHandler.test.ts @@ -5,8 +5,9 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi, + beforeEach +} from "vitest" import { APPLICATION_NAME, @@ -16,7 +17,6 @@ import { generateBody, generateExpectedItems, generateMockEvent, - mockDynamoDBClient, TASK_VALUES, getTestPrescriptions } from "./utils/testUtils" @@ -36,29 +36,41 @@ import { timeoutResponse } from "../src/utils/responses" import {QueryCommand, TransactionCanceledException, TransactWriteItemsCommand} from "@aws-sdk/client-dynamodb" -import {LOG_MESSAGES} from "@psu-common/utilities" -const {mockSend: dynamoDBMockSend} = mockDynamoDBClient() +const {dynamoDBMockSend, mockPushPrescriptionToNotificationSQS, mockGetParametersByName, mockInitiatedSSMProvider} = + vi.hoisted(() => { + const mockGetParametersByName = vi.fn(async () => Promise.resolve( + {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} + )) + return { + dynamoDBMockSend: vi.fn(), + mockPushPrescriptionToNotificationSQS: vi.fn().mockImplementation(async () => Promise.resolve()), + mockGetParametersByName, + mockInitiatedSSMProvider: {getParametersByName: mockGetParametersByName} + } + }) + +vi.mock("@aws-sdk/client-dynamodb", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + DynamoDBClient: vi.fn().mockImplementation(() => ({send: dynamoDBMockSend})) + } +}) -const mockPushPrescriptionToNotificationSQS = jest.fn().mockImplementation(async () => Promise.resolve()) -jest.unstable_mockModule("../src/utils/sqsClient", async () => ({ +vi.mock("../src/utils/sqsClient", async () => ({ __esModule: true, pushPrescriptionToNotificationSQS: mockPushPrescriptionToNotificationSQS })) -const mockGetParametersByName = jest.fn(async () => Promise.resolve( - {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} -)) - -const mockInitiatedSSMProvider = { - getParametersByName: mockGetParametersByName -} - -jest.unstable_mockModule("@psu-common/utilities", async () => ({ - getTestPrescriptions: getTestPrescriptions, - initiatedSSMProvider: mockInitiatedSSMProvider, - LOG_MESSAGES: LOG_MESSAGES -})) +vi.mock("@psu-common/utilities", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + getTestPrescriptions: getTestPrescriptions, + initiatedSSMProvider: mockInitiatedSSMProvider + } +}) const {handler, logger} = await import("../src/updatePrescriptionStatus") @@ -68,12 +80,27 @@ const ORIGINAL_ENV = {...process.env} describe("Integration tests for updatePrescriptionStatus handler", () => { beforeEach(() => { - jest.resetModules() + vi.resetModules() process.env = {...ORIGINAL_ENV} - jest.clearAllMocks() - jest.resetAllMocks() - jest.clearAllTimers() - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.clearAllMocks() + vi.clearAllTimers() + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) + + dynamoDBMockSend.mockReset() + dynamoDBMockSend.mockImplementation(async (command: unknown) => { + if (command instanceof QueryCommand) { + return {Items: []} + } + return {} + }) + + mockPushPrescriptionToNotificationSQS.mockReset() + mockPushPrescriptionToNotificationSQS.mockImplementation(async () => Promise.resolve()) + + mockGetParametersByName.mockReset() + mockGetParametersByName.mockImplementation(async () => Promise.resolve( + {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} + )) }) it("when request doesn't have correct resourceType and type, expect 400 status code and appropriate message", async () => { @@ -267,7 +294,7 @@ describe("Integration tests for updatePrescriptionStatus handler", () => { const event: APIGatewayProxyEvent = generateMockEvent(requestDispatched) const eventHandler: Promise = handler(event, {}) - await jest.advanceTimersByTimeAsync(LAMBDA_TIMEOUT_MS) + await vi.advanceTimersByTimeAsync(LAMBDA_TIMEOUT_MS) const response = await eventHandler expect(response.statusCode).toBe(504) @@ -427,7 +454,7 @@ describe("Integration tests for updatePrescriptionStatus handler", () => { it("when updates already exist for an item, logs transitions", async () => { const body = generateBody() const mockEvent: APIGatewayProxyEvent = generateMockEvent(body) - const loggerSpy = jest.spyOn(logger, "info") + const loggerSpy = vi.spyOn(logger, "info") dynamoDBMockSend.mockImplementation( async (command) => { diff --git a/packages/updatePrescriptionStatus/tests/testPrescriptionIntercept.test.ts b/packages/updatePrescriptionStatus/tests/testPrescriptionIntercept.test.ts index b5512745d8..a707949724 100644 --- a/packages/updatePrescriptionStatus/tests/testPrescriptionIntercept.test.ts +++ b/packages/updatePrescriptionStatus/tests/testPrescriptionIntercept.test.ts @@ -4,37 +4,49 @@ import { expect, it, describe, - jest, - beforeEach -} from "@jest/globals" + vi, + beforeEach, + afterEach +} from "vitest" import { DEFAULT_DATE, FULL_URL_1, generateBody, generateExpectedItems, generateMockEvent, - mockDynamoDBClient, TASK_VALUES, getTestPrescriptions } from "./utils/testUtils" import {GetItemCommand, TransactionCanceledException, TransactWriteItemsCommand} from "@aws-sdk/client-dynamodb" -import {LOG_MESSAGES} from "@psu-common/utilities" -export const mockGetParametersByName = jest.fn(async () => { - return {} +const {mockSend, mockGetParametersByName, mockInitiatedSSMProvider} = vi.hoisted(() => { + const mockGetParametersByName = vi.fn(async () => ({})) + return { + mockSend: vi.fn(), + mockGetParametersByName, + mockInitiatedSSMProvider: {getParametersByName: mockGetParametersByName} + } }) -const mockInitiatedSSMProvider = { - getParametersByName: mockGetParametersByName -} +export {mockGetParametersByName} + +vi.mock("@aws-sdk/client-dynamodb", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + DynamoDBClient: vi.fn().mockImplementation(() => ({send: mockSend})) + } +}) -jest.unstable_mockModule("@psu-common/utilities", async () => ({ - initiatedSSMProvider: mockInitiatedSSMProvider, - getTestPrescriptions: getTestPrescriptions, // Use the mocked version defined in testUtils.ts - LOG_MESSAGES: LOG_MESSAGES -})) +vi.mock("@psu-common/utilities", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + initiatedSSMProvider: mockInitiatedSSMProvider, + getTestPrescriptions: getTestPrescriptions + } +}) -const {mockSend} = mockDynamoDBClient() process.env.ENVIRONMENT = "int" function resetDynamoMock() { @@ -78,11 +90,11 @@ function expectGetItemCommand(prescriptionID: string, taskID: string) { describe("testPrescription1Intercept", () => { beforeEach(async () => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) const {resetTestPrescriptions} = await import("../src/updatePrescriptionStatus") resetTestPrescriptions() resetDynamoMock() - jest.clearAllMocks() + vi.clearAllMocks() }) it("Return 500 and write to DynamoDB when test prescription 1 is submitted for the first time", async () => { @@ -94,7 +106,7 @@ describe("testPrescription1Intercept", () => { expectedItems.input.TransactItems = [expectedItems.input.TransactItems[1]] const {handler, logger} = await import("../src/updatePrescriptionStatus") - const loggerInfo = jest.spyOn(logger, "info") + const loggerInfo = vi.spyOn(logger, "info") const response: APIGatewayProxyResult = await handler(event, {}) expect(response.statusCode).toEqual(500) @@ -112,7 +124,7 @@ describe("testPrescription1Intercept", () => { const event: APIGatewayProxyEvent = generateMockEvent(body) const {handler, logger} = await import("../src/updatePrescriptionStatus") - const loggerInfo = jest.spyOn(logger, "info") + const loggerInfo = vi.spyOn(logger, "info") const first_submission_response: APIGatewayProxyResult = await handler(event, {}) expect(first_submission_response.statusCode).toEqual(500) @@ -136,11 +148,11 @@ describe("testPrescription1Intercept", () => { describe("testPrescription2Intercept", () => { beforeEach(async () => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) const {resetTestPrescriptions} = await import("../src/updatePrescriptionStatus") resetTestPrescriptions() resetDynamoMock() - jest.clearAllMocks() + vi.clearAllMocks() }) it("Return 500 and write to DynamoDB when test prescription 2 is submitted for the first time", async () => { @@ -152,7 +164,7 @@ describe("testPrescription2Intercept", () => { expectedItems.input.TransactItems = [expectedItems.input.TransactItems[3]] const {handler, logger} = await import("../src/updatePrescriptionStatus") - const loggerInfo = jest.spyOn(logger, "info") + const loggerInfo = vi.spyOn(logger, "info") const response: APIGatewayProxyResult = await handler(event, {}) expect(response.statusCode).toEqual(500) @@ -172,7 +184,7 @@ describe("testPrescription2Intercept", () => { const event: APIGatewayProxyEvent = generateMockEvent(body) const {handler, logger} = await import("../src/updatePrescriptionStatus") - const loggerInfo = jest.spyOn(logger, "info") + const loggerInfo = vi.spyOn(logger, "info") const first_submission_response: APIGatewayProxyResult = await handler(event, {}) expect(first_submission_response.statusCode).toEqual(500) @@ -204,16 +216,16 @@ describe("testPrescription2Intercept", () => { describe("testPrescription3Intercept", () => { beforeEach(async () => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) - jest.resetModules() + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.resetModules() const {resetTestPrescriptions} = await import("../src/updatePrescriptionStatus") resetTestPrescriptions() resetDynamoMock() - jest.clearAllMocks() + vi.clearAllMocks() }) afterEach(() => { - jest.resetModules() + vi.resetModules() }) it("Return 400 when test prescription 3 is submitted", async () => { @@ -222,7 +234,7 @@ describe("testPrescription3Intercept", () => { const event: APIGatewayProxyEvent = generateMockEvent(body) const {handler, logger} = await import("../src/updatePrescriptionStatus") - const loggerInfo = jest.spyOn(logger, "info") + const loggerInfo = vi.spyOn(logger, "info") const response: APIGatewayProxyResult = await handler(event, {}) expect(response.statusCode).toEqual(400) @@ -233,16 +245,16 @@ describe("testPrescription3Intercept", () => { describe("testPrescription4Intercept", () => { beforeEach(async () => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) - jest.resetModules() + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.resetModules() const {resetTestPrescriptions} = await import("../src/updatePrescriptionStatus") resetTestPrescriptions() resetDynamoMock() - jest.clearAllMocks() + vi.clearAllMocks() }) afterEach(() => { - jest.resetModules() + vi.resetModules() }) it("Return 400 when test prescription 4 is submitted", async () => { @@ -251,7 +263,7 @@ describe("testPrescription4Intercept", () => { const event: APIGatewayProxyEvent = generateMockEvent(body) const {handler, logger} = await import("../src/updatePrescriptionStatus") - const loggerInfo = jest.spyOn(logger, "info") + const loggerInfo = vi.spyOn(logger, "info") const response: APIGatewayProxyResult = await handler(event, {}) console.log(response) expect(loggerInfo).toHaveBeenCalledWith( diff --git a/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts b/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts index 4fb13586e0..f47e41cb1b 100644 --- a/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts +++ b/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts @@ -2,47 +2,51 @@ import { describe, it, expect, - jest -} from "@jest/globals" -import {SpiedFunction} from "jest-mock" - + vi, + beforeEach +} from "vitest" +import type {MockInstance} from "vitest" import {Logger} from "@aws-lambda-powertools/logger" -import {LogItemMessage, LogItemExtraInput} from "@aws-lambda-powertools/logger/lib/cjs/types/Logger" import {SendMessageBatchCommand} from "@aws-sdk/client-sqs" -import {createMockDataItem, mockSQSClient} from "./utils/testUtils" +import {createMockDataItem} from "./utils/testUtils" -const {mockSend} = mockSQSClient() +const {mockSend, mockGetSecret, mockInitiatedSSMProvider} = vi.hoisted(() => { + const mockGetParametersByName = vi.fn(async () => ({ + [process.env.ENABLED_SITE_ODS_CODES_PARAM!]: "FA565", + // eslint-disable-next-line max-len + [process.env.ENABLED_SYSTEMS_PARAM!]: "Internal Test System,Apotec Ltd - Apotec CRM - Production,CrxPatientApp,nhsPrescriptionApp,Titan PSU Prod", + [process.env.BLOCKED_SITE_ODS_CODES_PARAM!]: "B3J1Z" + })) -const mockGetSecret = jest.fn().mockImplementation(async () => { - return {"salt": "salt"} + return { + mockSend: vi.fn(), + mockGetSecret: vi.fn().mockImplementation(async () => ({salt: "salt"})), + mockInitiatedSSMProvider: {getParametersByName: mockGetParametersByName} + } }) -jest.unstable_mockModule( - "@aws-lambda-powertools/parameters/secrets", - async () => ({ - __esModule: true, - getSecret: mockGetSecret - }) -) -export const mockGetParametersByName = jest.fn(async () => { - // eslint-disable-next-line max-len - let enabledString: string = "Internal Test System,Apotec Ltd - Apotec CRM - Production,CrxPatientApp,nhsPrescriptionApp,Titan PSU Prod" +vi.mock("@aws-sdk/client-sqs", async (importOriginal: () => Promise) => { + const mod = await importOriginal() return { - [process.env.ENABLED_SITE_ODS_CODES_PARAM!]: "FA565", - [process.env.ENABLED_SYSTEMS_PARAM!]: enabledString, - [process.env.BLOCKED_SITE_ODS_CODES_PARAM!]: "B3J1Z" + ...mod, + SQSClient: vi.fn().mockImplementation(() => ({send: mockSend})) } }) -const mockInitiatedSSMProvider = { - getParametersByName: mockGetParametersByName -} - -jest.unstable_mockModule("@psu-common/utilities", async () => ({ - initiatedSSMProvider: mockInitiatedSSMProvider +vi.mock("@aws-lambda-powertools/parameters/secrets", async () => ({ + __esModule: true, + getSecret: mockGetSecret })) +vi.mock("@psu-common/utilities", async (importOriginal: () => Promise) => { + const mod = await importOriginal() + return { + ...mod, + initiatedSSMProvider: mockInitiatedSSMProvider + } +}) + const { pushPrescriptionToNotificationSQS, saltedHash @@ -53,22 +57,22 @@ const ORIGINAL_ENV = {...process.env} describe("Unit tests for pushPrescriptionToNotificationSQS", () => { let logger: Logger - let infoSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> - let errorSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> - let warnSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> + let infoSpy: MockInstance + let errorSpy: MockInstance + let warnSpy: MockInstance beforeEach(() => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() // Reset environment process.env = {...ORIGINAL_ENV} // Fresh logger and spies logger = new Logger({serviceName: "test-service"}) - infoSpy = jest.spyOn(logger, "info") - errorSpy = jest.spyOn(logger, "error") - warnSpy = jest.spyOn(logger, "warn") + infoSpy = vi.spyOn(logger, "info") + errorSpy = vi.spyOn(logger, "error") + warnSpy = vi.spyOn(logger, "warn") }) it("throws if the SQS URL is not configured", async () => { @@ -372,18 +376,18 @@ describe("Unit tests for pushPrescriptionToNotificationSQS", () => { describe("Unit tests for getSaltValue", () => { let getSaltValue: (logger: Logger) => Promise let logger: Logger - let errorSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> - let warnSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> + let errorSpy: MockInstance + let warnSpy: MockInstance const fallbackSalt = "DEV SALT" beforeEach(async () => { - jest.resetModules() - jest.clearAllMocks() + vi.resetModules() + vi.clearAllMocks() process.env = {...ORIGINAL_ENV} logger = new Logger({serviceName: "test-service"}) - errorSpy = jest.spyOn(logger, "error") - warnSpy = jest.spyOn(logger, "warn"); + errorSpy = vi.spyOn(logger, "error") + warnSpy = vi.spyOn(logger, "warn"); ({getSaltValue} = await import("../src/utils/sqsClient")) }) @@ -443,11 +447,11 @@ describe("Unit tests for getSaltValue", () => { }) describe("Unit tests for checkSiteOrSystemIsNotifyEnabled", () => { let logger: Logger - let infoSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void> + let infoSpy: MockInstance beforeEach(() => { // Fresh logger and spies logger = new Logger({serviceName: "test-service"}) - infoSpy = jest.spyOn(logger, "info") + infoSpy = vi.spyOn(logger, "info") }) it("includes an item with an enabled ODS code", async () => { @@ -546,7 +550,7 @@ describe("Unit tests for checkSiteOrSystemIsNotifyEnabled", () => { }) function expectLogReceivedAndAllowed( - infoSpy: SpiedFunction<(input: LogItemMessage, ...extraInput: LogItemExtraInput) => void>, + infoSpy: MockInstance, numItemsReceived: number, numItemsAllowed: number) { expect(infoSpy).toHaveBeenCalledWith( diff --git a/packages/updatePrescriptionStatus/tests/testUpdatePrescriptionStatus.test.ts b/packages/updatePrescriptionStatus/tests/testUpdatePrescriptionStatus.test.ts index 1130e94821..091c72f11e 100644 --- a/packages/updatePrescriptionStatus/tests/testUpdatePrescriptionStatus.test.ts +++ b/packages/updatePrescriptionStatus/tests/testUpdatePrescriptionStatus.test.ts @@ -3,8 +3,9 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi, + beforeAll +} from "vitest" import {BundleEntry} from "fhir/r4" @@ -12,38 +13,46 @@ import {badRequest, conflictDuplicate} from "../src/utils/responses" import { DEFAULT_DATE, X_REQUEST_ID, - mockInternalDependency, validTask, getTestPrescriptions } from "./utils/testUtils" import {APIGatewayProxyEvent} from "aws-lambda" -import * as content from "../src/validation/content" import {TransactionCanceledException} from "@aws-sdk/client-dynamodb" -import {LOG_MESSAGES} from "@psu-common/utilities" -const mockValidateEntry = mockInternalDependency("../../src/validation/content", content, "validateEntry") - -const mockGetParametersByName = jest.fn(async () => Promise.resolve( - {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} -)) +const {mockValidateEntry, mockInitiatedSSMProvider} = vi.hoisted(() => { + const mockGetParametersByName = vi.fn(async () => Promise.resolve( + {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} + )) + return { + mockValidateEntry: vi.fn(), + mockInitiatedSSMProvider: {getParametersByName: mockGetParametersByName} + } +}) -const mockInitiatedSSMProvider = { - getParametersByName: mockGetParametersByName -} +vi.mock("../src/validation/content", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + validateEntry: mockValidateEntry + } +}) -jest.unstable_mockModule("@psu-common/utilities", async () => ({ - getTestPrescriptions: getTestPrescriptions, - initiatedSSMProvider: mockInitiatedSSMProvider, - LOG_MESSAGES: LOG_MESSAGES -})) +vi.mock("@psu-common/utilities", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + getTestPrescriptions: getTestPrescriptions, + initiatedSSMProvider: mockInitiatedSSMProvider + } +}) const {castEventBody, getXRequestID, validateEntries, handleTransactionCancelledException, buildDataItems, TTL_DELTA} = await import("../src/updatePrescriptionStatus") describe("Unit test getXRequestID", () => { beforeAll(() => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) }) it("when event has x-request-id, return it and no response entry", async () => { @@ -78,7 +87,7 @@ describe("Unit test getXRequestID", () => { describe("Unit test castEventBody", () => { beforeAll(() => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) }) it("when body doesn't have correct resourceType and type, return undefined and a response entry", async () => { diff --git a/packages/updatePrescriptionStatus/tests/utils/testUtils.ts b/packages/updatePrescriptionStatus/tests/utils/testUtils.ts index 5591ff8e60..90db173ce7 100644 --- a/packages/updatePrescriptionStatus/tests/utils/testUtils.ts +++ b/packages/updatePrescriptionStatus/tests/utils/testUtils.ts @@ -1,9 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import {APIGatewayProxyEvent} from "aws-lambda" -import {jest} from "@jest/globals" -import * as dynamo from "@aws-sdk/client-dynamodb" -import * as sqs from "@aws-sdk/client-sqs" +import {vi, expect} from "vitest" import { LINE_ITEM_ID_CODESYSTEM, @@ -159,44 +157,6 @@ export function generateExpectedItems(itemCount: number = 1) { return {input: {TransactItems: items}} } -// Uses unstable jest method to enable mocking while using ESM. To be replaced in future. -export function mockInternalDependency(modulePath: string, module: object, dependency: string) { - const mockDependency = jest.fn() - jest.unstable_mockModule(modulePath, () => ({ - ...module, - [dependency]: mockDependency - })) - return mockDependency -} - -// Uses unstable jest method to enable mocking while using ESM. To be replaced in future. -export function mockDynamoDBClient() { - const mockSend = jest.fn() - jest.unstable_mockModule("@aws-sdk/client-dynamodb", () => { - return { - ...dynamo, - DynamoDBClient: jest.fn().mockImplementation(() => ({ - send: mockSend - })) - } - }) - return {mockSend} -} - -// Similarly mock the SQS client -export function mockSQSClient() { - const mockSend = jest.fn() - jest.unstable_mockModule("@aws-sdk/client-sqs", () => { - return { - ...sqs, - SQSClient: jest.fn().mockImplementation(() => ({ - send: mockSend - })) - } - }) - return {mockSend} -} - export function createMockDataItem(overrides: Partial): PSUDataItem { return { LastModified: "2023-01-02T00:00:00Z", @@ -223,7 +183,7 @@ const mockPrescriptions = new Map([ ["TEST_PRESCRIPTIONS_PARAM_4", [TASK_VALUES[0].prescriptionID]] ]) -export const getTestPrescriptions = jest.fn() +export const getTestPrescriptions = vi.fn() .mockName("getTestPrescriptions") .mockImplementation((param: unknown) => { return Promise.resolve(mockPrescriptions.get(param as string) || []) diff --git a/packages/updatePrescriptionStatus/tests/utils/testValidateNhsNumber.test.ts b/packages/updatePrescriptionStatus/tests/utils/testValidateNhsNumber.test.ts index 4cfea67304..ab4acaba5f 100644 --- a/packages/updatePrescriptionStatus/tests/utils/testValidateNhsNumber.test.ts +++ b/packages/updatePrescriptionStatus/tests/utils/testValidateNhsNumber.test.ts @@ -1,5 +1,6 @@ // https://github.com/tbrd/nhs-numbers +import {describe, it, expect} from "vitest" import {generateInvalidNhsNumbers, generateValidNhsNumbers} from "./nhsNumber" import {validateNhsNumber} from "../../src/utils/nhsNumber" diff --git a/packages/updatePrescriptionStatus/tests/validation/testRequestContentValidation.test.ts b/packages/updatePrescriptionStatus/tests/validation/testRequestContentValidation.test.ts index 813a04215a..7534454fc8 100644 --- a/packages/updatePrescriptionStatus/tests/validation/testRequestContentValidation.test.ts +++ b/packages/updatePrescriptionStatus/tests/validation/testRequestContentValidation.test.ts @@ -2,8 +2,9 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi, + beforeEach +} from "vitest" import {BundleEntry, Task} from "fhir/r4" import { @@ -36,7 +37,7 @@ import { describe("Unit test for overall task validation", () => { beforeEach(() => { - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) }) it("When task is valid, should return true with no issues.", async () => { const expectedOutcome = {valid: true, issues: undefined} diff --git a/packages/updatePrescriptionStatus/tests/validation/testRequestFieldValidation.test.ts b/packages/updatePrescriptionStatus/tests/validation/testRequestFieldValidation.test.ts index 888e145cf8..122c3ca47b 100644 --- a/packages/updatePrescriptionStatus/tests/validation/testRequestFieldValidation.test.ts +++ b/packages/updatePrescriptionStatus/tests/validation/testRequestFieldValidation.test.ts @@ -1,5 +1,5 @@ -import {expect, describe, it} from "@jest/globals" +import {expect, describe, it} from "vitest" import {BundleEntry, Task} from "fhir/r4" import {taskFields, validateFields} from "../../src/validation/fields" diff --git a/packages/updatePrescriptionStatus/tests/validation/testRequestValidationViaHandler.test.ts b/packages/updatePrescriptionStatus/tests/validation/testRequestValidationViaHandler.test.ts index 9292e6275d..b8a70faa49 100644 --- a/packages/updatePrescriptionStatus/tests/validation/testRequestValidationViaHandler.test.ts +++ b/packages/updatePrescriptionStatus/tests/validation/testRequestValidationViaHandler.test.ts @@ -5,8 +5,9 @@ import { expect, describe, it, - jest -} from "@jest/globals" + vi, + beforeEach +} from "vitest" import { DEFAULT_DATE, @@ -21,28 +22,31 @@ import {ONE_DAY_IN_MS} from "../../src/validation/content" import requestSingleItem from "../../../specification/examples/request-dispatched.json" import requestMultipleItems from "../../../specification/examples/request-multiple-items.json" import {accepted, badRequest, bundleWrap} from "../../src/utils/responses" -import {LOG_MESSAGES} from "@psu-common/utilities" -const mockGetParametersByName = jest.fn(async () => Promise.resolve( - {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} -)) - -const mockInitiatedSSMProvider = { - getParametersByName: mockGetParametersByName -} +const {mockInitiatedSSMProvider} = vi.hoisted(() => { + const mockGetParametersByName = vi.fn(async () => Promise.resolve( + {[process.env.ENABLE_NOTIFICATIONS_PARAM!]: "false"} + )) + return { + mockInitiatedSSMProvider: {getParametersByName: mockGetParametersByName} + } +}) -jest.unstable_mockModule("@psu-common/utilities", async () => ({ - getTestPrescriptions: getTestPrescriptions, - initiatedSSMProvider: mockInitiatedSSMProvider, - LOG_MESSAGES: LOG_MESSAGES -})) +vi.mock("@psu-common/utilities", async (importOriginal) => { + const mod = await importOriginal() + return { + ...mod, + getTestPrescriptions: getTestPrescriptions, + initiatedSSMProvider: mockInitiatedSSMProvider + } +}) const {handler} = await import("../../src/updatePrescriptionStatus") describe("Integration tests for validation via updatePrescriptionStatus handler", () => { beforeEach(() => { - jest.resetModules() - jest.useFakeTimers().setSystemTime(DEFAULT_DATE) + vi.resetModules() + vi.useFakeTimers().setSystemTime(DEFAULT_DATE) }) // eslint-disable-next-line max-len diff --git a/packages/updatePrescriptionStatus/vitest.config.ts b/packages/updatePrescriptionStatus/vitest.config.ts new file mode 100644 index 0000000000..e292a3df93 --- /dev/null +++ b/packages/updatePrescriptionStatus/vitest.config.ts @@ -0,0 +1,9 @@ +import {defineConfig, mergeConfig} from "vitest/config" +import defaultConfig from "../../vitest.default.config.ts" + +export default mergeConfig(defaultConfig, defineConfig({ + root: "./", + test: { + setupFiles: ["./.vitest/setup-env.js"] + } +})) diff --git a/sonar-project.properties b/sonar-project.properties index 815621e84a..0eb5a3fa1e 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -5,7 +5,9 @@ sonar.host.url=https://sonarcloud.io sonar.coverage.exclusions=\ **/*.test.*, \ **/mock*, \ - **/jest.*.ts, \ + **/testHelpers.ts, \ + **/testUtils.ts, \ + **/vitest.*.ts, \ **/cli/*, \ scripts/*, \ release.config.js, \ @@ -14,7 +16,9 @@ sonar.coverage.exclusions=\ sonar.cpd.exclusions=\ **/*.test.*, \ **/mock*, \ - **/jest.*.ts, \ + **/testHelpers.ts, \ + **/testUtils.ts, \ + **/vitest.*.ts, \ **/cli/*, \ scripts/*, \ release.config.js, \ diff --git a/vitest.default.config.ts b/vitest.default.config.ts new file mode 100644 index 0000000000..13878a6f2d --- /dev/null +++ b/vitest.default.config.ts @@ -0,0 +1,27 @@ +import {defineConfig} from "vitest/config" +import tsconfigPaths from "vite-tsconfig-paths" + +const vitestConfig = defineConfig({ + plugins: [tsconfigPaths()], + test: { + clearMocks: true, + environment: "node", + include: ["tests/**/*.test.ts"], + coverage: { + provider: "v8", + reportsDirectory: "coverage", + reporter: ["text", "lcov"], + exclude: [ + "**/node_modules/**", + "**/lib/**", + "**/coverage/**", + "**/tests/**", + "**/*.config.ts", + "**/*.d.ts", + "**/vitest.default.config.ts" + ] + } + } +}) + +export default vitestConfig