From 70896b7fa532a5c16d4a8885bd77164bbfcd3f5b Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 18:45:52 -0500 Subject: [PATCH 1/7] fix: resolve npm security vulnerabilities and migrate to ESLint flat config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade all vulnerable packages: eslint 8→10, mocha 10→11, nyc 15→18, typedoc 0.25→0.28, typescript 4→6, @typescript-eslint/* 5→8 - Remove deprecated eslint-config-standard-with-typescript (blocked upgrade path) - Migrate from .eslintrc to eslint.config.mjs (flat config) - Drop unused `error` variable in ArgumentValidator.ts catch clause - Add overrides for brace-expansion and serialize-javascript (no mocha version ships patched copies of these transitive deps) --- .eslintignore | 8 - .eslintrc.json | 41 - eslint.config.mjs | 52 + package-lock.json | 5057 ++++++++++--------------- package.json | 31 +- src/models/ApiResponse.ts | 41 +- src/models/ArgumentValidator.ts | 2 +- src/models/FileInfo.ts | 4 +- tests/ApiResponse.spec.ts | 2 +- tests/GetPagedRecordsResponse.spec.ts | 2 +- tests/OnspringClient.spec.ts | 2 +- tsconfig.cjs.json | 3 +- tsconfig.esm.json | 3 +- tsconfig.json | 5 +- 14 files changed, 2188 insertions(+), 3065 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 044fbe2..0000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -# -.nyc_output/ -coverage/ -dist/ -node_modules/ -.github/ -scripts/ -docs/ \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 3c07d60..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "plugins": ["@typescript-eslint", "mocha", "import"], - "extends": [ - "standard-with-typescript", - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:mocha/recommended", - "prettier" - ], - "overrides": [ - { - "files": [ - "tests/**/*.spec.ts", - "integrationTests/**/*.spec.ts", - "integrationTests/utils/**" - ], - "rules": { - "@typescript-eslint/no-unused-expressions": "off", - "@typescript-eslint/consistent-type-assertions": "off", - "no-new": "off", - "import/extensions": "off" - } - } - ], - "parserOptions": { - "project": "./tsconfig.eslint.json", - "ecmaVersion": "latest", - "sourceType": "module" - }, - "rules": { - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", - "@typescript-eslint/no-useless-constructor": "off", - "@typescript-eslint/no-extraneous-class": "off", - "import/extensions": ["error", "always", { "ignorePackages": true }] - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..522c5d1 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,52 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; + +const typeCheckedFiles = [ + 'src/**/*.ts', + 'tests/**/*.ts', + 'integrationTests/**/*.ts', +]; + +export default [ + { ignores: ['coverage/', 'docs/', 'scripts/', 'eslint.config.*'] }, + eslint.configs.recommended, + ...tseslint.configs.recommended, + { + files: typeCheckedFiles, + languageOptions: { + parserOptions: { project: './tsconfig.eslint.json' }, + }, + }, + { + files: [ + 'tests/**/*.spec.ts', + 'integrationTests/**/*.spec.ts', + 'integrationTests/utils/**', + ], + rules: { + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/consistent-type-assertions': 'off', + 'no-new': 'off', + }, + }, + { + languageOptions: { + globals: { + after: 'readonly', + afterEach: 'readonly', + before: 'readonly', + beforeEach: 'readonly', + describe: 'readonly', + it: 'readonly', + xdescribe: 'readonly', + xit: 'readonly', + }, + }, + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'off', + '@typescript-eslint/no-useless-constructor': 'off', + '@typescript-eslint/no-extraneous-class': 'off', + }, + }, +]; diff --git a/package-lock.json b/package-lock.json index 1718468..4d57fb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,45 +15,46 @@ "devDependencies": { "@commitlint/cli": "^17.8.1", "@commitlint/config-conventional": "^17.8.1", + "@eslint/js": "^10.0.1", "@istanbuljs/nyc-config-typescript": "^1.0.2", "@types/chai": "^4.3.20", + "@types/jest": "^30.0.0", "@types/mocha": "^10.0.10", "@types/node": "^18.19.129", "@types/sinon": "^10.0.20", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@typescript-eslint/eslint-plugin": "^8.65.0", + "@typescript-eslint/parser": "^8.65.0", "chai": "^4.5.0", "dotenv": "^16.6.1", - "eslint": "^8.57.1", + "eslint": "^10.8.0", "eslint-config-prettier": "^8.10.2", - "eslint-config-standard-with-typescript": "^34.0.1", - "eslint-plugin-import": "^2.32.0", "eslint-plugin-mocha": "^10.5.0", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.6.0", + "eslint-plugin-n": "^18.2.2", + "eslint-plugin-promise": "^7.3.0", "husky": "^8.0.3", - "mocha": "^10.8.2", - "nyc": "^15.1.0", + "mocha": "^11.3.0", + "nyc": "^18.0.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", "sinon": "^15.2.0", "ts-node": "^10.9.2", - "typedoc": "^0.25.13", + "typedoc": "^0.28.20", "typedoc-material-theme": "^1.4.0", - "typescript": "^4.9.5" + "typescript": "^6.0.3", + "typescript-eslint": "^8.65.0" }, "engines": { "node": ">=14.x" } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -62,9 +63,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, "license": "MIT", "engines": { @@ -72,21 +73,21 @@ } }, "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "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", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -120,14 +121,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -137,14 +138,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -181,9 +182,9 @@ "license": "ISC" }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "license": "MIT", "engines": { @@ -191,29 +192,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -223,9 +224,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { @@ -233,9 +234,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { @@ -243,9 +244,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "license": "MIT", "engines": { @@ -253,27 +254,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -283,33 +284,33 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "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", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", "debug": "^4.3.1" }, "engines": { @@ -317,14 +318,14 @@ } }, "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -487,6 +488,20 @@ "dev": true, "license": "MIT" }, + "node_modules/@commitlint/load/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@commitlint/message": { "version": "17.8.1", "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.8.1.tgz", @@ -625,9 +640,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", "dev": true, "license": "MIT", "dependencies": { @@ -644,87 +659,151 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, - "license": "MIT", + "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" + "@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": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@eslint/plugin-kit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@gerrit0/mini-shiki": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", + "integrity": "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==", "dev": true, "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^3.23.0", + "@shikijs/langs": "^3.23.0", + "@shikijs/themes": "^3.23.0", + "@shikijs/types": "^3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -741,13 +820,37 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "BSD-3-Clause" + "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", @@ -791,9 +894,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz", + "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==", "dev": true, "license": "MIT", "dependencies": { @@ -863,15 +966,94 @@ } }, "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/@jest/diff-sequences": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", + "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", + "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", + "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/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "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/types": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", + "@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", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -929,48 +1111,70 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@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", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "optional": true, "engines": { - "node": ">= 8" + "node": ">=14" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@shikijs/types": "3.23.0" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.52", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.52.tgz", + "integrity": "sha512-XiMQh7qqVlxZzcVD+kkGMNGMzcTrDMLWI7S4x7z1MkCkbDPrekpZXEUK0eZqZFMuHQg2a2DZOcDIh9o5v3Gonw==", "dev": true, "license": "MIT" }, @@ -1019,13 +1223,14 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "deprecated": "Deprecated: no longer maintained and no longer used by Sinon packages. See\n https://github.com/sinonjs/nise/issues/243 for replacement details.", "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "dev": true, "license": "MIT" }, @@ -1057,6 +1262,68 @@ "dev": true, "license": "MIT" }, + "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.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1064,13 +1331,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", @@ -1086,9 +1346,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.129", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.129.tgz", - "integrity": "sha512-hrmi5jWt2w60ayox3iIXwpMEnfUvOLJCRtrOPbHtH15nTjvO7uhnelvrdAs0dO0/zl5DZ3ZbahiaXEVb54ca/A==", + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "dev": true, "license": "MIT", "dependencies": { @@ -1102,13 +1362,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/sinon": { "version": "10.0.20", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", @@ -1120,129 +1373,187 @@ } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", + "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz", + "integrity": "sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/type-utils": "8.65.0", + "@typescript-eslint/utils": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.65.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz", + "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "debug": "^4.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz", + "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/tsconfig-utils": "^8.65.0", + "@typescript-eslint/types": "^8.65.0", + "debug": "^4.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz", + "integrity": "sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz", + "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz", + "integrity": "sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/utils": "8.65.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.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/@typescript-eslint/types": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz", + "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1250,89 +1561,105 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz", + "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@typescript-eslint/project-service": "8.65.0", + "@typescript-eslint/tsconfig-utils": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.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": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.65.0.tgz", + "integrity": "sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz", + "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.65.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "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": "ISC" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", "bin": { @@ -1353,9 +1680,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "dev": true, "license": "MIT", "dependencies": { @@ -1365,6 +1692,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -1380,9 +1719,9 @@ } }, "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -1396,33 +1735,19 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "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": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.3.tgz", - "integrity": "sha512-+fksAx9eG3Ab6LDnLs3ZqZa8KVJ/jYnX+D4Qe1azX+LFGFAXqynCQLOdLpNYN/l9e7l6hMWwZbrnctqr6eSQSw==", - "dev": true, - "license": "MIT" - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1439,20 +1764,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", @@ -1487,23 +1798,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -1511,121 +1805,6 @@ "dev": true, "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1646,101 +1825,58 @@ "node": "*" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/axios": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", - "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "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" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/baseline-browser-mapping": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.13.tgz", - "integrity": "sha512-7s16KR8io8nIBWQyCYhmFhd+ebIzb9VKTzki+wOJXHTxTnV6+mFGH3+Jwn1zoKaY9/H9T/0BcKCZnzXljPnpSQ==", + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.6.tgz", + "integrity": "sha512-69D/imtToCsIcAl8WBS2YaRwA4jO/j0HhU+hELqMEu9f54MoUtI6+XH5mrKU8rEFNEk/Ui1I2MK4/JkWacclGw==", "dev": true, "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "baseline-browser-mapping": "dist/cli.cjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz", + "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "20 || >=22" } }, "node_modules/browser-stdout": { @@ -1751,9 +1887,9 @@ "license": "ISC" }, "node_modules/browserslist": { - "version": "4.26.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", - "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", "dev": true, "funding": [ { @@ -1771,11 +1907,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.9", - "caniuse-lite": "^1.0.30001746", - "electron-to-chromium": "^1.5.227", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -1784,16 +1920,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -1810,25 +1936,6 @@ "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -1842,23 +1949,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1898,9 +1988,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001748", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001748.tgz", - "integrity": "sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==", + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", "dev": true, "funding": [ { @@ -1968,42 +2058,36 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } }, "node_modules/clean-stack": { "version": "2.2.0", @@ -2030,6 +2114,69 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "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/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2080,13 +2227,6 @@ "dot-prop": "^5.1.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/conventional-changelog-angular": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", @@ -2214,65 +2354,10 @@ "node": ">=8" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2359,42 +2444,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2414,32 +2463,6 @@ "node": ">=0.3.1" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -2480,17 +2503,24 @@ "node": ">= 0.4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.5.232", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.232.tgz", - "integrity": "sha512-ENirSe7wf8WzyPCibqKUG1Cg43cPaxH4wRR7AJsX7MCABCHBIOFqvaYODSLKUuZdraxUTHRE/0A2Aq8BYKEHOg==", + "version": "1.5.398", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.398.tgz", + "integrity": "sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==", "dev": true, "license": "ISC" }, "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==", + "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" }, @@ -2504,83 +2534,41 @@ "once": "^1.4.0" } }, - "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==", + "node_modules/enhanced-resolve": { + "version": "5.24.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.4.tgz", + "integrity": "sha512-GVoi+ICHocoOIU7qVVM48wOJziRsqrsyqlI0Ce0LdowRn6v3bcH2zUa9kp85ncx0nwIb9/HOCOLS3fdThDG/XQ==", "dev": true, "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" } }, "node_modules/es-define-property": { @@ -2602,9 +2590,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -2628,37 +2616,6 @@ "node": ">= 0.4" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -2690,60 +2647,78 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.8.0.tgz", + "integrity": "sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==", "dev": true, "license": "MIT", + "workspaces": [ + "packages/*" + ], "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.2", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "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": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^10.2.5", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" } }, "node_modules/eslint-config-prettier": { @@ -2759,288 +2734,154 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "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" - } + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" ], "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" + "eslint": ">=8" } }, - "node_modules/eslint-config-standard-with-typescript": { - "version": "34.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-34.0.1.tgz", - "integrity": "sha512-J7WvZeLtd0Vr9F+v4dZbqJCLD16cbIy4U+alJMq4MiXdpipdBM3U5NkXaGUjePc4sb1ZE01U9g6VuTBpHHz1fg==", - "deprecated": "Please use eslint-config-love, instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/parser": "^5.43.0", - "eslint-config-standard": "17.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.43.0", - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0", - "typescript": "*" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/eslint-plugin-mocha": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz", + "integrity": "sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "eslint-utils": "^3.0.0", + "globals": "^13.24.0", + "rambda": "^7.4.0" }, "engines": { - "node": ">=4" + "node": ">=14.0.0" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "node_modules/eslint-plugin-n": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-18.2.2.tgz", + "integrity": "sha512-gOO0lIqwEjZ750kv9/SptCWArUoAZXJoBr0vYWTO2dCBxctHUXlBIigiC8xuxxr/NKqgIT6Ehz1xRcilj8a5cA==", "dev": true, "license": "MIT", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.5.0", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "globrex": "^0.1.2", + "ignore": "^5.3.2", + "semver": "^7.6.3" }, "engines": { - "node": ">=8.10.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint": ">=8.57.1", + "ts-declaration-location": "^1.0.6", + "typescript": ">=5.0.0" }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "ts-declaration-location": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, "engines": { - "node": ">=4" + "node": ">=18" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/eslint-plugin-n/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-mocha": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz", - "integrity": "sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^3.0.0", - "globals": "^13.24.0", - "rambda": "^7.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" }, "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node": ">=10" } }, "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.3.0.tgz", + "integrity": "sha512-6uGiOR0INuujr6PEQmeSSP7GbIMJ/ebEXXiEzb/nOj68LknH5Pxzb/AbZivmr6VE6TkTE8rTjRK9zhKpK6HsRA==", "dev": true, "license": "ISC", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "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", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-utils": { @@ -3086,9 +2927,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -3102,31 +2943,27 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "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": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">= 4" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -3137,18 +2974,31 @@ "license": "MIT" }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "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", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^5.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/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", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3169,9 +3019,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "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", "dependencies": { @@ -3181,16 +3031,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3204,7 +3044,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -3214,16 +3054,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -3258,42 +3088,30 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/expect": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "@jest/expect-utils": "30.4.1", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, "engines": { - "node": ">=8.6.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -3310,9 +3128,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", + "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", "dev": true, "funding": [ { @@ -3326,40 +3144,35 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "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", - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, "node_modules/find-cache-dir": { @@ -3408,31 +3221,30 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.3.tgz", + "integrity": "sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -3449,47 +3261,47 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/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": "MIT", + "license": "ISC", "dependencies": { - "is-callable": "^1.2.7" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, "engines": { - "node": ">=8.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "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==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "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" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -3517,9 +3329,9 @@ "license": "MIT" }, "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", "dev": true, "license": "MIT", "dependencies": { @@ -3531,28 +3343,6 @@ "node": ">=14.14" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3562,47 +3352,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3693,28 +3442,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" + "resolve-pkg-maps": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/git-raw-commits": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "deprecated": "Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.", "dev": true, "license": "MIT", "dependencies": { @@ -3732,21 +3477,22 @@ } }, "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "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", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "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" }, - "engines": { - "node": ">=12" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3765,27 +3511,20 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/glob/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "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": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/global-dirs": { @@ -3817,43 +3556,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, "node_modules/gopd": { "version": "1.2.0", @@ -3874,13 +3582,6 @@ "dev": true, "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -3891,19 +3592,6 @@ "node": ">=6" } }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3914,35 +3602,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -3998,9 +3657,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -4039,6 +3698,19 @@ "dev": true, "license": "MIT" }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -4066,9 +3738,9 @@ } }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", "dev": true, "license": "MIT", "engines": { @@ -4122,18 +3794,6 @@ "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -4148,39 +3808,6 @@ "dev": true, "license": "ISC" }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4188,18 +3815,14 @@ "dev": true, "license": "MIT" }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "hasown": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -4208,404 +3831,96 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/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, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "text-extensions": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -4615,52 +3930,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -4671,13 +3940,6 @@ "node": ">=0.10.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4709,35 +3971,26 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.1.tgz", + "integrity": "sha512-s3mX05h5wGZeScG6XnOanygPh4SJu5ujMc9YbvpnLGXWy1cRiGbp0NdVcjHxgoZt3WfQppfBsa0y+gWdYJ2pGQ==", "dev": true, "license": "ISC", "dependencies": { @@ -4745,11 +3998,10 @@ "cross-spawn": "^7.0.3", "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" + "rimraf": "^6.1.3" }, "engines": { - "node": ">=8" + "node": "20 || >=22" } }, "node_modules/istanbul-lib-report": { @@ -4809,7 +4061,146 @@ "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-diff": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", + "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.4.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", + "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.4.1", + "pretty-format": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", + "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.4.1", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-util": "30.4.1", + "picomatch": "^4.0.3", + "pretty-format": "30.4.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-mock": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", + "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.4.1", + "@types/node": "*", + "jest-util": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/js-tokens": { @@ -4820,10 +4211,20 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", + "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4886,17 +4287,10 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4981,6 +4375,26 @@ "dev": true, "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4998,9 +4412,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, @@ -5174,17 +4588,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "node_modules/markdown-it": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", - "bin": { - "marked": "bin/marked.js" + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, - "engines": { - "node": ">= 12" + "bin": { + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/math-intrinsics": { @@ -5196,6 +4625,13 @@ "node": ">= 0.4" } }, + "node_modules/mdurl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", + "dev": true, + "license": "MIT" + }, "node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -5242,30 +4678,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -5308,16 +4720,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.8" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -5345,32 +4760,42 @@ "node": ">= 6" } }, + "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/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.3.0.tgz", + "integrity": "sha512-J0RLIM89xi8y6l77bgbX+03PeBRDQCOVQpnwOcCN7b8hCmbh6JvGI2ZDJ5WMoHz+IaPU+S4lvTd0j51GmBAdgQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "debug": "^4.3.5", "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", "minimatch": "^5.1.6", "ms": "^2.1.3", + "picocolors": "^1.1.1", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" }, "bin": { @@ -5378,29 +4803,7 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/mocha/node_modules/minimatch": { @@ -5432,23 +4835,14 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/mocha/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "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" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/mri": { @@ -5465,7 +4859,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/natural-compare": { @@ -5475,13 +4868,6 @@ "dev": true, "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "license": "MIT" - }, "node_modules/nise": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", @@ -5520,11 +4906,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", - "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", + "version": "2.0.51", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", + "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/normalize-package-data": { "version": "3.0.3", @@ -5542,16 +4931,6 @@ "node": ">=10" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "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", @@ -5566,9 +4945,9 @@ } }, "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-18.0.0.tgz", + "integrity": "sha512-G5UyHinFkB1BxqGTrmZdB6uIYH0+v7ZnVssuflUDi+J+RhKWyAhRT1RCehBSI6jLFLuUUgFDyLt49mUtdO1XeQ==", "dev": true, "license": "ISC", "dependencies": { @@ -5579,13 +4958,13 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", - "glob": "^7.1.6", + "glob": "^13.0.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^3.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", @@ -5594,17 +4973,27 @@ "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", + "spawn-wrap": "^3.0.0", + "test-exclude": "^8.0.0", "yargs": "^15.0.2" }, "bin": { "nyc": "bin/nyc.js" }, "engines": { - "node": ">=8.9" + "node": "20 || >=22" + } + }, + "node_modules/nyc/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/nyc/node_modules/cliui": { @@ -5619,6 +5008,13 @@ "wrap-ansi": "^6.2.0" } }, + "node_modules/nyc/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/nyc/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -5634,22 +5030,18 @@ } }, "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "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" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5668,6 +5060,16 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -5697,6 +5099,51 @@ "node": ">=8" } }, + "node_modules/nyc/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/nyc/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": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/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/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -5756,103 +5203,6 @@ "node": ">=6" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5891,28 +5241,10 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" + "word-wrap": "^1.2.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, "node_modules/p-limit": { @@ -5986,6 +5318,13 @@ "node": ">=8" } }, + "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" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6028,16 +5367,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -6055,6 +5384,30 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -6090,13 +5443,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", + "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -6171,16 +5524,6 @@ "node": ">=8" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6207,6 +5550,35 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-format": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.4.1", + "ansi-styles": "^5.2.0", + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/pretty-quick": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz", @@ -6296,6 +5668,16 @@ "node": ">=8.12.0" } }, + "node_modules/pretty-quick/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/pretty-quick/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -6338,19 +5720,6 @@ "node": ">=8" } }, - "node_modules/pretty-quick/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/process-on-spawn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", @@ -6365,15 +5734,18 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dev": true, "license": "MIT", "dependencies": { @@ -6391,26 +5763,15 @@ "node": ">=6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, - "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" + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/quick-lru": { "version": "4.0.1", @@ -6429,15 +5790,21 @@ "dev": true, "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/react-is-18": { + "name": "react-is", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } + "license": "MIT" + }, + "node_modules/react-is-19": { + "name": "react-is", + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.8.tgz", + "integrity": "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==", + "dev": true, + "license": "MIT" }, "node_modules/read-pkg": { "version": "5.2.0", @@ -6595,16 +5962,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/redent": { @@ -6621,63 +5989,6 @@ "node": ">=8" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -6719,13 +6030,14 @@ "license": "ISC" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -6762,98 +6074,79 @@ "node": ">=8" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^7.1.3" + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "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" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/rimraf/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", "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": { - "queue-microtask": "^1.2.2" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "node_modules/rimraf/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": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=0.4" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/safe-buffer": { @@ -6877,123 +6170,39 @@ ], "license": "MIT" }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "node_modules/serialize-javascript": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4" + "node": ">=20.0.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7017,95 +6226,6 @@ "node": ">=8" } }, - "node_modules/shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -7154,16 +6274,17 @@ } }, "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-3.0.0.tgz", + "integrity": "sha512-z+s5vv4KzFPJVddGab0xX2n7kQPGMdNUX5l9T8EJqsXdKTWpcxmAqWHpsgHEXoC1taGBCc7b79bi62M5kdbrxQ==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { + "cross-spawn": "^7.0.6", "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", "which": "^2.0.1" }, @@ -7171,6 +6292,20 @@ "node": ">=8" } }, + "node_modules/spawn-wrap/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -7201,9 +6336,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -7224,18 +6359,27 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/string_decoder": { @@ -7249,6 +6393,25 @@ } }, "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", @@ -7263,66 +6426,54 @@ "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "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", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "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": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "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": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi": { + "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==", @@ -7335,6 +6486,16 @@ "node": ">=8" } }, + "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", @@ -7407,38 +6568,75 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz", + "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==", "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "glob": "^13.0.6", + "minimatch": "^10.2.2" }, "engines": { - "node": ">=8" + "node": "20 || >=22" } }, "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "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" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/test-exclude/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" @@ -7454,13 +6652,6 @@ "node": ">=0.10" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7478,17 +6669,34 @@ "readable-stream": "3" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/trim-newlines": { @@ -7501,6 +6709,19 @@ "node": ">=8" } }, + "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", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -7555,42 +6776,6 @@ "node": ">=0.3.1" } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7598,29 +6783,6 @@ "dev": true, "license": "0BSD" }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7657,84 +6819,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7746,31 +6830,33 @@ } }, "node_modules/typedoc": { - "version": "0.25.13", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", - "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", + "version": "0.28.20", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.20.tgz", + "integrity": "sha512-uSKqkh8Cr48vllnEy+jdaAgOeR6Y+QCBW7usgUsKj7gJEfR7stw9U/fE49LBnj2tPRKPY0c0EBJSWe9Appmplg==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@gerrit0/mini-shiki": "^3.23.0", "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" + "markdown-it": "^14.3.0", + "minimatch": "^10.2.5", + "yaml": "^2.9.0" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 16" + "node": ">= 18", + "pnpm": ">= 10" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x" } }, "node_modules/typedoc-material-theme": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/typedoc-material-theme/-/typedoc-material-theme-1.4.0.tgz", - "integrity": "sha512-TBoBpX/4zWO6l74/wBLivXHC2rIiD70KXMliYrw1KhcqdybyxkVBLP5z8KiJuNV8aQIeS+rK2QG6GSucQHJQDQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/typedoc-material-theme/-/typedoc-material-theme-1.4.1.tgz", + "integrity": "sha512-/inKZw8SqZPt+pmawpMhDmXCJQyIm+fHFuGChioyJQICZcX2FyzpwZnyPWcZHmJ09upttWFhti4ZI3hESJNkSA==", "dev": true, "funding": [ { @@ -7794,36 +6880,10 @@ "typedoc": "^0.25.13 || ^0.26.x || ^0.27.x || ^0.28.x" } }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/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": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7831,28 +6891,40 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "node_modules/typescript-eslint": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.65.0.tgz", + "integrity": "sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" + "@typescript-eslint/eslint-plugin": "8.65.0", + "@typescript-eslint/parser": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/utils": "8.65.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/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -7871,9 +6943,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -7918,16 +6990,6 @@ "dev": true, "license": "MIT" }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -7946,20 +7008,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true, - "license": "MIT" - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7976,135 +7024,123 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "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": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "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": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "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": "ISC" + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "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": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "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": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/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", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/wrappy": { @@ -8144,10 +7180,26 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dev": true, "license": "MIT", "dependencies": { @@ -8225,6 +7277,51 @@ "node": ">=8" } }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", diff --git a/package.json b/package.json index 321a0ad..ef8c212 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,8 @@ "scripts": { "generate-docs": "typedoc src/index.ts --plugin typedoc-material-theme --themeColor '#194488' --gitRemote github", "clean": "rimraf dist", - "lint": "eslint --ignore-path .eslintignore --ext .js,.ts .", - "lint-fix": "eslint --fix --ignore-path .eslintignore --ext .js,.ts . --max-warnings=0", + "lint": "eslint --config eslint.config.mjs .", + "lint-fix": "eslint --config eslint.config.mjs . --fix", "format-staged": "pretty-quick --staged", "format": "pretty-quick", "build": "npm run test-coverage:ci && npm run clean && tsc --project tsconfig.cjs.json && tsc --project tsconfig.esm.json && node ./scripts/create_dist_package_json.js", @@ -65,35 +65,40 @@ "devDependencies": { "@commitlint/cli": "^17.8.1", "@commitlint/config-conventional": "^17.8.1", + "@eslint/js": "^10.0.1", "@istanbuljs/nyc-config-typescript": "^1.0.2", "@types/chai": "^4.3.20", + "@types/jest": "^30.0.0", "@types/mocha": "^10.0.10", "@types/node": "^18.19.129", "@types/sinon": "^10.0.20", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@typescript-eslint/eslint-plugin": "^8.65.0", + "@typescript-eslint/parser": "^8.65.0", "chai": "^4.5.0", "dotenv": "^16.6.1", - "eslint": "^8.57.1", + "eslint": "^10.8.0", "eslint-config-prettier": "^8.10.2", - "eslint-config-standard-with-typescript": "^34.0.1", - "eslint-plugin-import": "^2.32.0", "eslint-plugin-mocha": "^10.5.0", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.6.0", + "eslint-plugin-n": "^18.2.2", + "eslint-plugin-promise": "^7.3.0", "husky": "^8.0.3", - "mocha": "^10.8.2", - "nyc": "^15.1.0", + "mocha": "^11.3.0", + "nyc": "^18.0.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", "sinon": "^15.2.0", "ts-node": "^10.9.2", - "typedoc": "^0.25.13", + "typedoc": "^0.28.20", "typedoc-material-theme": "^1.4.0", - "typescript": "^4.9.5" + "typescript": "^6.0.3", + "typescript-eslint": "^8.65.0" }, "dependencies": { "axios": "^1.13.6", "form-data": "^4.0.5" + }, + "overrides": { + "brace-expansion": "5.0.8", + "serialize-javascript": "7.0.5" } } diff --git a/src/models/ApiResponse.ts b/src/models/ApiResponse.ts index 300ea5c..20dfe08 100644 --- a/src/models/ApiResponse.ts +++ b/src/models/ApiResponse.ts @@ -283,12 +283,12 @@ export class ApiResponse { response.headers['Content-Length'] ?? 0; - contentLength = parseInt(contentLength); + contentLength = parseInt(String(contentLength)); const file = new File( apiResponse.data, fileName, - contentType, + String(contentType ?? ''), contentLength ); @@ -348,7 +348,7 @@ export class ApiResponse { asReportDataType(): ApiResponse { const apiResponse = this as ApiResponse; - const rows = apiResponse.data.rows.map((row) => { + const rows = apiResponse.data.rows.map((row: any) => { return new Row(row.recordId, row.cells); }); @@ -466,7 +466,8 @@ export class ApiResponse { * @returns {RecordValue} - The RecordValue. */ private static getRecordValueByType(recordValueItem: any): RecordValue { - const type = RecordValueType[recordValueItem.type]; + const type = + RecordValueType[recordValueItem.type as keyof typeof RecordValueType]; switch (type) { case RecordValueType.String: { @@ -577,8 +578,8 @@ export class ApiResponse { * @throws {Error} - If the field item's type is unknown. */ private static getFieldByType(fieldItem: any): Field { - const type = FieldType[fieldItem.type]; - const status = FieldStatus[fieldItem.status]; + const type = FieldType[fieldItem.type as keyof typeof FieldType]; + const status = FieldStatus[fieldItem.status as keyof typeof FieldStatus]; if (type === undefined) { throw new Error(`Unknown field type: ${fieldItem.type as string}`); @@ -586,7 +587,8 @@ export class ApiResponse { switch (type) { case FieldType.Reference: { - const multiplicity = Multiplicity[fieldItem.multiplicity]; + const multiplicity = + Multiplicity[fieldItem.multiplicity as keyof typeof Multiplicity]; return new ReferenceField( fieldItem.id, @@ -602,7 +604,8 @@ export class ApiResponse { } case FieldType.List: { const values = ApiResponse.getListValues(fieldItem); - const multiplicity = Multiplicity[fieldItem.multiplicity]; + const multiplicity = + Multiplicity[fieldItem.multiplicity as keyof typeof Multiplicity]; return new ListField( fieldItem.id, @@ -619,7 +622,10 @@ export class ApiResponse { } case FieldType.Formula: { const values = ApiResponse.getListValues(fieldItem); - const outputType = FormulaOutputType[fieldItem.outputType]; + const outputType = + FormulaOutputType[ + fieldItem.outputType as keyof typeof FormulaOutputType + ]; return new FormulaField( fieldItem.id, @@ -653,7 +659,8 @@ export class ApiResponse { * @returns {Delegate} - The converted Delegate object. */ private static convertToDelegate(delegateItem: any): Delegate { - const delegateType = DelegateType[delegateItem.delegateType]; + const delegateType = + DelegateType[delegateItem.delegateType as keyof typeof DelegateType]; if (delegateType === undefined) { throw new Error( @@ -704,7 +711,10 @@ export class ApiResponse { * @returns {Attachment} - The converted attachment object. */ private static convertToAttachment(attachmentItem: any): Attachment { - const storageLocation = FileStorageSite[attachmentItem.storageLocation]; + const storageLocation = + FileStorageSite[ + attachmentItem.storageLocation as keyof typeof FileStorageSite + ]; if (storageLocation === undefined) { throw new Error( @@ -733,13 +743,18 @@ export class ApiResponse { * @returns {TimeSpanData} - The converted time span data object. */ private static convertToTimeSpanData(timeSpanItem: any): TimeSpanData { - const increment = TimeSpanIncrement[timeSpanItem.increment]; + const increment = + TimeSpanIncrement[ + timeSpanItem.increment as keyof typeof TimeSpanIncrement + ]; const hasRecurrence = timeSpanItem.recurrence !== null && timeSpanItem.recurrence !== undefined; const recurrence = hasRecurrence - ? TimeSpanRecurrenceType[timeSpanItem.recurrence] + ? TimeSpanRecurrenceType[ + timeSpanItem.recurrence as keyof typeof TimeSpanRecurrenceType + ] : null; const hasEndAfterOccurrences = diff --git a/src/models/ArgumentValidator.ts b/src/models/ArgumentValidator.ts index b7aceae..641e6ce 100644 --- a/src/models/ArgumentValidator.ts +++ b/src/models/ArgumentValidator.ts @@ -25,7 +25,7 @@ export class ArgumentValidator { try { url = new URL(value); - } catch (error) { + } catch { return false; } diff --git a/src/models/FileInfo.ts b/src/models/FileInfo.ts index b19fa3e..a19bbcc 100644 --- a/src/models/FileInfo.ts +++ b/src/models/FileInfo.ts @@ -54,11 +54,11 @@ export class FileInfo { notes: string, fileHref: string ) { - if (FieldType[type] === undefined) { + if (FieldType[type as keyof typeof FieldType] === undefined) { throw new Error(`The type '${type}' is not a valid FieldType.`); } - this.type = FieldType[type]; + this.type = FieldType[type as keyof typeof FieldType]; this.contentType = contentType; this.name = name; this.createdDate = createdDate; diff --git a/tests/ApiResponse.spec.ts b/tests/ApiResponse.spec.ts index 8cc4c65..784b760 100644 --- a/tests/ApiResponse.spec.ts +++ b/tests/ApiResponse.spec.ts @@ -921,7 +921,7 @@ describe('ApiResponse', function () { const apiResponse = new ApiResponse(200, 'OK', mockResponseData); const fileResponse = apiResponse.asFileType(mockResponse); - expect(fileResponse.data).to.have.property('contentType', null); + expect(fileResponse.data).to.have.property('contentType', ''); }); it('should return an ApiResponse with proper contentLength value when header is Content-Length', function () { diff --git a/tests/GetPagedRecordsResponse.spec.ts b/tests/GetPagedRecordsResponse.spec.ts index 9c36273..23c9779 100644 --- a/tests/GetPagedRecordsResponse.spec.ts +++ b/tests/GetPagedRecordsResponse.spec.ts @@ -45,7 +45,7 @@ describe('GetPagedRecordsResponse', function () { }); it('should have a constructor that sets the items property', function () { - const items = []; + const items: any[] = []; const pageNumber = 1; const pageSize = 1; const totalPages = 1; diff --git a/tests/OnspringClient.spec.ts b/tests/OnspringClient.spec.ts index 9411448..d13ad3f 100644 --- a/tests/OnspringClient.spec.ts +++ b/tests/OnspringClient.spec.ts @@ -118,7 +118,7 @@ describe('OnspringClient', function () { it('should create a new instance of an onspring client when passed an axios config object', function () { const config = { - validateStatus: function (status) { + validateStatus: function (status: number) { return status >= 200 && status < 300; }, }; diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index 8ab4792..22ef327 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -3,5 +3,6 @@ "compilerOptions": { "module": "CommonJS", "outDir": "./dist/cjs" - } + }, + "include": ["src/**/*"] } diff --git a/tsconfig.esm.json b/tsconfig.esm.json index 72f3b9e..5a3f726 100644 --- a/tsconfig.esm.json +++ b/tsconfig.esm.json @@ -3,5 +3,6 @@ "compilerOptions": { "module": "ES6", "outDir": "./dist/esm" - } + }, + "include": ["src/**/*"] } diff --git a/tsconfig.json b/tsconfig.json index 45334d1..25b1414 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,9 +5,10 @@ "declarationDir": "./dist/types", "esModuleInterop": true, "target": "ES6", - "moduleResolution": "node" + "moduleResolution": "node", + "types": ["mocha", "node"] }, - "include": ["src/**/*"], + "include": ["src/**/*", "tests/**/*", "integrationTests/**/*"], "ts-node": { "compilerOptions": { "module": "commonjs", From d189950538d2de086cd1797dbbbf38e9c6dfbd65 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 19:02:29 -0500 Subject: [PATCH 2/7] fix: extend CI matrix to Node 22/24/26 and pin rimraf for Node 14 compat - Add Node 22.x, 24.x, 26.x to CI test matrix - Add rimraf@4.4.1 override to support Node 14 with nyc@18 --- .github/workflows/lint_format_test.yaml | 2 +- package-lock.json | 301 +++++++++++++++++++----- package.json | 3 +- 3 files changed, 239 insertions(+), 67 deletions(-) diff --git a/.github/workflows/lint_format_test.yaml b/.github/workflows/lint_format_test.yaml index 5d69209..91b18db 100644 --- a/.github/workflows/lint_format_test.yaml +++ b/.github/workflows/lint_format_test.yaml @@ -71,7 +71,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.x, 16.x, 18.x, 20.x] + node-version: [14.x, 16.x, 18.x, 20.x, 22.x, 24.x, 26.x] fail-fast: false steps: - name: Check out repository diff --git a/package-lock.json b/package-lock.json index 4d57fb7..bc07966 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3343,6 +3343,13 @@ "node": ">=14.14" } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -4004,6 +4011,71 @@ "node": "20 || >=22" } }, + "node_modules/istanbul-lib-processinfo/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/minimatch": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", + "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -5116,6 +5188,105 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/nyc/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/rimraf/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/nyc/node_modules/rimraf/node_modules/minimatch": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", + "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/rimraf/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/rimraf/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": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/rimraf/node_modules/path-scurry/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/nyc/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -6084,71 +6255,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/rimraf": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^13.0.3", - "package-json-from-dist": "^1.0.1" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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/rimraf/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/rimraf/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/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6306,6 +6412,71 @@ "node": ">=8.0.0" } }, + "node_modules/spawn-wrap/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/spawn-wrap/node_modules/minimatch": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", + "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/spawn-wrap/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", diff --git a/package.json b/package.json index ef8c212..c48d095 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ }, "overrides": { "brace-expansion": "5.0.8", - "serialize-javascript": "7.0.5" + "serialize-javascript": "7.0.5", + "rimraf": "4.4.1" } } From 76efc86f7f823bebdc3ea2b75a2ebbb5f1ede33c Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 19:27:40 -0500 Subject: [PATCH 3/7] fix: replace baseURL/apiKey exports with getters, upgrade nyc, drop Node 14 from CI - Replace bare `export { baseURL, apiKey }` in integrationTests/mochaRootHooks.ts with getBaseUrl()/getApiKey() getters so imports read the live closure variable set by beforeAll instead of capturing undefined at require time - Update all 22 integration spec files to import and call the getter functions - Keep nyc@^18.0.0, brace-expansion@5.0.8, uuid@11.1.1 overrides (0 vulns) - Remove rimraf override (was only needed for Node 14 / npm 6 incompatibility) - Remove Node 14.x from CI test matrix (npm 6 ignores overrides, can't install rimraf v5+) but keep engines >=14.x for production consumers - Add ignoreDeprecations: "6.0" to tsconfig.json for moduleResolution=node10 --- .github/workflows/lint_format_test.yaml | 2 +- integrationTests/Apps/getAppById.spec.ts | 10 +- integrationTests/Apps/getApps.spec.ts | 10 +- integrationTests/Apps/getAppsByIds.spec.ts | 8 +- integrationTests/Fields/getFieldById.spec.ts | 10 +- .../Fields/getFieldsByAppId.spec.ts | 12 +- .../Fields/getFieldsByIds.spec.ts | 8 +- integrationTests/Files/deleteFileById.spec.ts | 22 +- integrationTests/Files/getFileById.spec.ts | 18 +- .../Files/getFileInfoById.spec.ts | 18 +- integrationTests/Files/saveFile.spec.ts | 20 +- .../Lists/addOrUpdateListItem.spec.ts | 16 +- .../Lists/deleteListItemById.spec.ts | 12 +- integrationTests/Ping/canConnect.spec.ts | 4 +- .../Records/deleteRecordById.spec.ts | 12 +- .../Records/deleteRecordsByIds.spec.ts | 14 +- .../Records/getRecordById.spec.ts | 10 +- .../Records/getRecordsByAppId.spec.ts | 10 +- .../Records/getRecordsByIds.spec.ts | 12 +- integrationTests/Records/queryRecords.spec.ts | 12 +- integrationTests/Records/saveRecord.spec.ts | 16 +- .../Reports/getReportById.spec.ts | 16 +- .../Reports/getReportsByAppId.spec.ts | 10 +- integrationTests/mochaRootHooks.ts | 20 +- package-lock.json | 301 ++++-------------- package.json | 2 +- tsconfig.json | 1 + 27 files changed, 227 insertions(+), 379 deletions(-) diff --git a/.github/workflows/lint_format_test.yaml b/.github/workflows/lint_format_test.yaml index 91b18db..cfcf4a0 100644 --- a/.github/workflows/lint_format_test.yaml +++ b/.github/workflows/lint_format_test.yaml @@ -71,7 +71,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.x, 16.x, 18.x, 20.x, 22.x, 24.x, 26.x] + node-version: [16.x, 18.x, 20.x, 22.x, 24.x, 26.x] fail-fast: false steps: - name: Check out repository diff --git a/integrationTests/Apps/getAppById.spec.ts b/integrationTests/Apps/getAppById.spec.ts index 54c3c6a..537e511 100644 --- a/integrationTests/Apps/getAppById.spec.ts +++ b/integrationTests/Apps/getAppById.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getAppById', function () { this.timeout(30000); this.retries(3); it('should return an app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID === undefined) { return expect.fail('TEST_APP_ID is not defined'); @@ -29,7 +29,7 @@ describe('getAppById', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getAppById(1); expect(response.statusCode).to.equal(401); @@ -39,7 +39,7 @@ describe('getAppById', function () { }); it('should return a 403 error when api key does not have access to the requested app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { return expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -55,7 +55,7 @@ describe('getAppById', function () { }); it('should return a 404 error when an app id cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getAppById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Apps/getApps.spec.ts b/integrationTests/Apps/getApps.spec.ts index 23c9355..de51966 100644 --- a/integrationTests/Apps/getApps.spec.ts +++ b/integrationTests/Apps/getApps.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient, PagingRequest } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getApps', function () { this.timeout(30000); this.retries(3); it('should return a paged list of apps', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getApps(); expect(response.statusCode).to.equal(200); @@ -34,7 +34,7 @@ describe('getApps', function () { }); it('should return a paged list of apps with with correct page size and number when passed paging request', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getApps(new PagingRequest(1, 1)); expect(response.statusCode).to.equal(200); @@ -61,7 +61,7 @@ describe('getApps', function () { }); it('should return a 400 response when an invalid page size is used', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getApps({ pageNumber: 1, pageSize: 1001 }); expect(response.statusCode).to.equal(400); @@ -71,7 +71,7 @@ describe('getApps', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getApps(); expect(response.statusCode).to.equal(401); diff --git a/integrationTests/Apps/getAppsByIds.spec.ts b/integrationTests/Apps/getAppsByIds.spec.ts index 3d85f05..95963ba 100644 --- a/integrationTests/Apps/getAppsByIds.spec.ts +++ b/integrationTests/Apps/getAppsByIds.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getAppsByIds', function () { this.timeout(30000); this.retries(3); it('should return a collection of apps', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const appIds = process.env.TEST_APP_IDS; if (appIds === undefined) { @@ -37,7 +37,7 @@ describe('getAppsByIds', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getAppsByIds([1]); expect(response.statusCode).to.equal(401); @@ -47,7 +47,7 @@ describe('getAppsByIds', function () { }); it('should return a 403 error when api key does not have access to any of the requested app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const appIds = process.env.TEST_APP_IDS_NO_ACCESS; if (appIds === undefined) { diff --git a/integrationTests/Fields/getFieldById.spec.ts b/integrationTests/Fields/getFieldById.spec.ts index 52e017d..2c87e7b 100644 --- a/integrationTests/Fields/getFieldById.spec.ts +++ b/integrationTests/Fields/getFieldById.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getAppById', function () { this.timeout(30000); this.retries(3); it('should return a field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_FIELD_ID === undefined) { return expect.fail('TEST_FIELD_ID is not defined'); @@ -33,7 +33,7 @@ describe('getAppById', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getFieldById(1); expect(response.statusCode).to.equal(401); @@ -43,7 +43,7 @@ describe('getAppById', function () { }); it('should return a 403 error when api key does not have access to the requested field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_FIELD_ID_NO_ACCESS === undefined) { return expect.fail('TEST_FIELD_ID_NO_ACCESS is not defined'); @@ -59,7 +59,7 @@ describe('getAppById', function () { }); it('should return a 404 error when the requested field does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getFieldById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Fields/getFieldsByAppId.spec.ts b/integrationTests/Fields/getFieldsByAppId.spec.ts index 5a2b752..7f08c91 100644 --- a/integrationTests/Fields/getFieldsByAppId.spec.ts +++ b/integrationTests/Fields/getFieldsByAppId.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient, PagingRequest } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFieldsByAppId', function () { this.timeout(30000); this.retries(3); it('should return a paged list of fields', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -44,7 +44,7 @@ describe('getFieldsByAppId', function () { }); it('should return a paged list of fields with with correct page size and number when passed paging request', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -84,7 +84,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 400 response when an invalid page size is used', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -103,7 +103,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getFieldsByAppId(1); expect(response.statusCode).to.equal(401); @@ -113,7 +113,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 403 response when api key does not have access to the app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { return expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Fields/getFieldsByIds.spec.ts b/integrationTests/Fields/getFieldsByIds.spec.ts index 7837e2e..f9771c5 100644 --- a/integrationTests/Fields/getFieldsByIds.spec.ts +++ b/integrationTests/Fields/getFieldsByIds.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFieldsByIds', function () { this.timeout(30000); this.retries(3); it('should return a collection of fields', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_FIELD_IDS === undefined) { return expect.fail('TEST_FIELD_IDS is not defined'); @@ -40,7 +40,7 @@ describe('getFieldsByIds', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getFieldsByIds([1, 2, 3]); expect(response.statusCode).to.equal(401); @@ -50,7 +50,7 @@ describe('getFieldsByIds', function () { }); it('should return a 403 response when the api key does not have access to any of the requested fields', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_FIELD_IDS_NO_ACCESS === undefined) { return expect.fail('TEST_FIELD_IDS_NO_ACCESS is not defined'); diff --git a/integrationTests/Files/deleteFileById.spec.ts b/integrationTests/Files/deleteFileById.spec.ts index 594af2f..99b9b44 100644 --- a/integrationTests/Files/deleteFileById.spec.ts +++ b/integrationTests/Files/deleteFileById.spec.ts @@ -1,6 +1,6 @@ import { OnspringClient, SaveFileRequest } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import fs from 'fs'; import path from 'path'; @@ -17,7 +17,7 @@ describe('deleteFileById', function () { }); it('should delete a file from an attachment field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -40,7 +40,7 @@ describe('deleteFileById', function () { }); it('should delete a file from an image field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -63,7 +63,7 @@ describe('deleteFileById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -86,7 +86,7 @@ describe('deleteFileById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.deleteFileById(1, 1, 1); expect(response.statusCode).to.equal(401); @@ -96,7 +96,7 @@ describe('deleteFileById', function () { }); it('should return a 403 response when the api key does not have access to the field where the file is held', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -115,7 +115,7 @@ describe('deleteFileById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -134,7 +134,7 @@ describe('deleteFileById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.deleteFileById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -144,7 +144,7 @@ describe('deleteFileById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); @@ -164,7 +164,7 @@ describe('deleteFileById', function () { }); async function addAttachmentFile(): Promise { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -193,7 +193,7 @@ async function addAttachmentFile(): Promise { } async function addImageFile(): Promise { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); diff --git a/integrationTests/Files/getFileById.spec.ts b/integrationTests/Files/getFileById.spec.ts index d73751a..c484d2d 100644 --- a/integrationTests/Files/getFileById.spec.ts +++ b/integrationTests/Files/getFileById.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFileById', function () { this.timeout(30000); this.retries(3); it('should return a file in an attachment field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -41,7 +41,7 @@ describe('getFileById', function () { }); it('should return a file in an image field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -74,7 +74,7 @@ describe('getFileById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -100,7 +100,7 @@ describe('getFileById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -126,7 +126,7 @@ describe('getFileById', function () { }); it('should return a 403 response when the api key does not have access to the file field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -142,7 +142,7 @@ describe('getFileById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -158,7 +158,7 @@ describe('getFileById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getFileById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -168,7 +168,7 @@ describe('getFileById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); diff --git a/integrationTests/Files/getFileInfoById.spec.ts b/integrationTests/Files/getFileInfoById.spec.ts index 9e70e24..03ca697 100644 --- a/integrationTests/Files/getFileInfoById.spec.ts +++ b/integrationTests/Files/getFileInfoById.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFileInfoById', function () { this.timeout(30000); this.retries(3); it('should return information about a file in an attachment field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -45,7 +45,7 @@ describe('getFileInfoById', function () { }); it('should return information about a file in an image field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -82,7 +82,7 @@ describe('getFileInfoById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -108,7 +108,7 @@ describe('getFileInfoById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -134,7 +134,7 @@ describe('getFileInfoById', function () { }); it('should return a 403 response when the api key does not have access to the file field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -150,7 +150,7 @@ describe('getFileInfoById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -166,7 +166,7 @@ describe('getFileInfoById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getFileInfoById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -176,7 +176,7 @@ describe('getFileInfoById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); diff --git a/integrationTests/Files/saveFile.spec.ts b/integrationTests/Files/saveFile.spec.ts index 39ead2e..a07e2f7 100644 --- a/integrationTests/Files/saveFile.spec.ts +++ b/integrationTests/Files/saveFile.spec.ts @@ -1,6 +1,6 @@ import { OnspringClient, SaveFileRequest } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import fs from 'fs'; import path from 'path'; @@ -18,7 +18,7 @@ describe('saveFile', function () { }); it('should save a file into an attachment field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -57,7 +57,7 @@ describe('saveFile', function () { }); it('should save a file into an image field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -96,7 +96,7 @@ describe('saveFile', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -130,7 +130,7 @@ describe('saveFile', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '..'); @@ -156,7 +156,7 @@ describe('saveFile', function () { }); it('should return a 403 response when the api key does not have access to the field where the file is held', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -186,7 +186,7 @@ describe('saveFile', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -216,7 +216,7 @@ describe('saveFile', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '..'); @@ -242,7 +242,7 @@ describe('saveFile', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); @@ -273,7 +273,7 @@ describe('saveFile', function () { }); async function deleteFile(newFileId: number): Promise { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if ( process.env.TEST_RECORD === undefined || diff --git a/integrationTests/Lists/addOrUpdateListItem.spec.ts b/integrationTests/Lists/addOrUpdateListItem.spec.ts index e5b1f9b..cd7e36b 100644 --- a/integrationTests/Lists/addOrUpdateListItem.spec.ts +++ b/integrationTests/Lists/addOrUpdateListItem.spec.ts @@ -1,7 +1,7 @@ import { ListItemRequest } from './../../src'; import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('addOrUpdateListItem', function () { this.timeout(30000); @@ -17,7 +17,7 @@ describe('addOrUpdateListItem', function () { }); it('should add a list item', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_FIELD === undefined) { expect.fail('TEST_LIST_FIELD is not defined'); @@ -49,7 +49,7 @@ describe('addOrUpdateListItem', function () { }); it('should update a list item', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_FIELD === undefined) { expect.fail('TEST_LIST_FIELD is not defined'); @@ -93,7 +93,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const request = new ListItemRequest(1, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -104,7 +104,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 403 error when api key does not have access to the list', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const request = new ListItemRequest(1, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -115,7 +115,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 404 error when the list does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const request = new ListItemRequest(0, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -126,7 +126,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 404 error when the list item does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); @@ -150,7 +150,7 @@ describe('addOrUpdateListItem', function () { }); async function deleteListItem(listItemIds: string): Promise { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_ID === undefined) { return; diff --git a/integrationTests/Lists/deleteListItemById.spec.ts b/integrationTests/Lists/deleteListItemById.spec.ts index 746f62c..748e575 100644 --- a/integrationTests/Lists/deleteListItemById.spec.ts +++ b/integrationTests/Lists/deleteListItemById.spec.ts @@ -1,13 +1,13 @@ import { ListItemRequest, OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('deleteListItemById', function () { this.timeout(30000); this.retries(3); it('should delete a list item', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); @@ -40,7 +40,7 @@ describe('deleteListItemById', function () { }); it('should return a 401 error when deleting a list item and the API key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.deleteListItemById(1, '1'); expect(response.statusCode).to.equal(401); @@ -50,7 +50,7 @@ describe('deleteListItemById', function () { }); it('should return a 403 error when deleting a list item and the api key does not have access to update the list', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_ID_NO_ACCESS === undefined) { expect.fail('TEST_LIST_ID_NO_ACCESS is not defined'); @@ -72,7 +72,7 @@ describe('deleteListItemById', function () { }); it('should return a 404 error when deleting a list item and its list does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.deleteListItemById( 0, '3fa85f64-5717-4562-b3fc-2c963f66afa6' @@ -85,7 +85,7 @@ describe('deleteListItemById', function () { }); it('should return a 404 error when deleting a list item that does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); diff --git a/integrationTests/Ping/canConnect.spec.ts b/integrationTests/Ping/canConnect.spec.ts index ac09708..6437fcd 100644 --- a/integrationTests/Ping/canConnect.spec.ts +++ b/integrationTests/Ping/canConnect.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('canConnect', function () { this.timeout(30000); this.retries(3); it('should be able to connect to the API', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.canConnect(); expect(response).to.be.true; }); diff --git a/integrationTests/Records/deleteRecordById.spec.ts b/integrationTests/Records/deleteRecordById.spec.ts index 87f7cbd..1eaf493 100644 --- a/integrationTests/Records/deleteRecordById.spec.ts +++ b/integrationTests/Records/deleteRecordById.spec.ts @@ -1,6 +1,6 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import { addRecord } from '../utils/addRecord'; describe('deleteRecordById', function () { @@ -8,13 +8,13 @@ describe('deleteRecordById', function () { this.retries(3); it('should delete a record', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } - const recordId = await addRecord(baseURL, apiKey); + const recordId = await addRecord(getBaseUrl(), getApiKey()); const response = await client.deleteRecordById( parseInt(process.env.TEST_SURVEY_ID), recordId @@ -27,7 +27,7 @@ describe('deleteRecordById', function () { }); it('should return a 401 error when the API key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.deleteRecordById(1, 1); expect(response.statusCode).to.equal(401); @@ -37,7 +37,7 @@ describe('deleteRecordById', function () { }); it('should return a 403 error when the API key does not have access to the record', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -55,7 +55,7 @@ describe('deleteRecordById', function () { }); it('should return a 404 error when the record does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID === undefined) { expect.fail('TEST_APP_ID is not defined'); diff --git a/integrationTests/Records/deleteRecordsByIds.spec.ts b/integrationTests/Records/deleteRecordsByIds.spec.ts index 923e498..a84ef73 100644 --- a/integrationTests/Records/deleteRecordsByIds.spec.ts +++ b/integrationTests/Records/deleteRecordsByIds.spec.ts @@ -1,6 +1,6 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import { addRecord } from '../utils/addRecord'; describe('deleteRecordsByIds', function () { @@ -8,14 +8,14 @@ describe('deleteRecordsByIds', function () { this.retries(3); it('should delete records', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } - const recordId1 = await addRecord(baseURL, apiKey); - const recordId2 = await addRecord(baseURL, apiKey); + const recordId1 = await addRecord(getBaseUrl(), getApiKey()); + const recordId2 = await addRecord(getBaseUrl(), getApiKey()); const response = await client.deleteRecordsByIds( parseInt(process.env.TEST_SURVEY_ID), @@ -29,7 +29,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 400 error when no record ids are provided', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -47,7 +47,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 401 error when an invalid API key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.deleteRecordsByIds(1, [1]); @@ -58,7 +58,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 403 error when the API key does not have access to the app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/getRecordById.spec.ts b/integrationTests/Records/getRecordById.spec.ts index 909e39b..55bf620 100644 --- a/integrationTests/Records/getRecordById.spec.ts +++ b/integrationTests/Records/getRecordById.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient, GetRecordRequest, DataFormat } from './../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getRecordById', function () { this.timeout(30000); this.retries(3); it('should get a record', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -45,7 +45,7 @@ describe('getRecordById', function () { }); it('should get a record when fieldIds and data format are passed as parameters', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -94,7 +94,7 @@ describe('getRecordById', function () { }); it('should return a 401 error when an invalid API key is used', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getRecordById(new GetRecordRequest(1, 1)); expect(response.statusCode).to.equal(401); @@ -104,7 +104,7 @@ describe('getRecordById', function () { }); it('should return a 404 error when an invalid record id is used', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); diff --git a/integrationTests/Records/getRecordsByAppId.spec.ts b/integrationTests/Records/getRecordsByAppId.spec.ts index e3967c8..43deb0d 100644 --- a/integrationTests/Records/getRecordsByAppId.spec.ts +++ b/integrationTests/Records/getRecordsByAppId.spec.ts @@ -1,14 +1,14 @@ import { GetRecordsByAppIdRequest } from './../../src/models/GetRecordsByAppIdRequest'; import { DataFormat, OnspringClient, PagingRequest } from './../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getRecordsByAppId', function () { this.timeout(30000); this.retries(3); it('should get records', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -54,7 +54,7 @@ describe('getRecordsByAppId', function () { }); it('should get records when fieldIds, paging information, and data format are passed as parameters', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -106,7 +106,7 @@ describe('getRecordsByAppId', function () { }); it('should return a 401 error when an invalid API key is passed', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const request = new GetRecordsByAppIdRequest(0); const response = await client.getRecordsByAppId(request); @@ -117,7 +117,7 @@ describe('getRecordsByAppId', function () { }); it('should return a 403 error when the api key does not have access to the app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/getRecordsByIds.spec.ts b/integrationTests/Records/getRecordsByIds.spec.ts index 2773cec..c10e008 100644 --- a/integrationTests/Records/getRecordsByIds.spec.ts +++ b/integrationTests/Records/getRecordsByIds.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient, GetRecordsRequest, DataFormat } from './../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getRecordsByIds', function () { this.timeout(30000); this.retries(3); it('should get records', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -50,7 +50,7 @@ describe('getRecordsByIds', function () { }); it('should get records when field ids and data format are passed as parameters', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -103,7 +103,7 @@ describe('getRecordsByIds', function () { }); it('should return a 400 error if too many record ids are passed', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const recordIds = new Array(101).fill(1); const request = new GetRecordsRequest(1, recordIds); const response = await client.getRecordsByIds(request); @@ -115,7 +115,7 @@ describe('getRecordsByIds', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const request = new GetRecordsRequest(1, [1]); const response = await client.getRecordsByIds(request); @@ -126,7 +126,7 @@ describe('getRecordsByIds', function () { }); it('should return a 403 error if the user does not have access to the app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/queryRecords.spec.ts b/integrationTests/Records/queryRecords.spec.ts index 34986fd..1f87d70 100644 --- a/integrationTests/Records/queryRecords.spec.ts +++ b/integrationTests/Records/queryRecords.spec.ts @@ -7,14 +7,14 @@ import { QueryRecordsRequest, } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('queryRecords', function () { this.timeout(30000); this.retries(3); it('should return records', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -58,7 +58,7 @@ describe('queryRecords', function () { }); it('should return records when data format, paging information, and fields are passed as parameters', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -109,7 +109,7 @@ describe('queryRecords', function () { }); it('should return a 400 error if page size is invalid', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const request = new QueryRecordsRequest(1, '', [], DataFormat.Formatted, { pageNumber: 1, pageSize: 1001, @@ -124,7 +124,7 @@ describe('queryRecords', function () { }); it('should return a 401 error if the API key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const request = new QueryRecordsRequest(1, ''); const response = await client.queryRecords(request); @@ -135,7 +135,7 @@ describe('queryRecords', function () { }); it('should return a 403 error if the API key does not have access to the app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/saveRecord.spec.ts b/integrationTests/Records/saveRecord.spec.ts index 48bed8c..8f26918 100644 --- a/integrationTests/Records/saveRecord.spec.ts +++ b/integrationTests/Records/saveRecord.spec.ts @@ -1,7 +1,7 @@ import { StringRecordValue } from './../../src/models/StringRecordValue'; import { OnspringClient, Record } from './../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('saveRecord', function () { this.timeout(30000); @@ -16,7 +16,7 @@ describe('saveRecord', function () { }); it('should add a record when no record id is passed', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -50,7 +50,7 @@ describe('saveRecord', function () { }); it('should update a record when a record id is passed', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -101,7 +101,7 @@ describe('saveRecord', function () { }); it('should return a 400 error when field data is empty', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -118,7 +118,7 @@ describe('saveRecord', function () { }); it('should return a 401 error when the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.saveRecord(new Record(0, null, [])); expect(response.statusCode).to.equal(401); @@ -128,7 +128,7 @@ describe('saveRecord', function () { }); it('should return a 403 error when the api key does not have access to the app', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -144,7 +144,7 @@ describe('saveRecord', function () { }); it('should return a 404 error when the record id is not found', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -162,6 +162,6 @@ describe('saveRecord', function () { }); async function deleteRecord(appId: number, recordId: number): Promise { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); await client.deleteRecordById(appId, recordId); } diff --git a/integrationTests/Reports/getReportById.spec.ts b/integrationTests/Reports/getReportById.spec.ts index 4880555..9b2d208 100644 --- a/integrationTests/Reports/getReportById.spec.ts +++ b/integrationTests/Reports/getReportById.spec.ts @@ -1,13 +1,13 @@ import { DataFormat, OnspringClient, ReportDataType } from './../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getReportById', function () { this.timeout(30000); this.retries(3); it('should return a report', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_REPORT === undefined) { expect.fail('TEST_REPORT is not defined'); @@ -38,7 +38,7 @@ describe('getReportById', function () { }); it('should return report data for a report with chart data when report data is requested', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_REPORT_WITH_CHART_DATA === undefined) { expect.fail('TEST_REPORT_WITH_CHART_DATA is not defined'); @@ -69,7 +69,7 @@ describe('getReportById', function () { }); it('should return chart data for a report with a chart when chart data is requested', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_REPORT_WITH_CHART_DATA === undefined) { expect.fail('TEST_REPORT_WITH_CHART_DATA is not defined'); @@ -102,7 +102,7 @@ describe('getReportById', function () { }); it('should return a 400 error if chart data is requested for a report without chart data', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_REPORT === undefined) { expect.fail('TEST_REPORT is not defined'); @@ -121,7 +121,7 @@ describe('getReportById', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getReportById(1); expect(response.statusCode).to.equal(401); @@ -131,7 +131,7 @@ describe('getReportById', function () { }); it('should return a 403 error if the api key does not have access to the report', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getReportById(1); expect(response.statusCode).to.equal(403); @@ -141,7 +141,7 @@ describe('getReportById', function () { }); it('should return a 404 error if the report does not exist', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); const response = await client.getReportById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Reports/getReportsByAppId.spec.ts b/integrationTests/Reports/getReportsByAppId.spec.ts index 449edd3..9a3c9f1 100644 --- a/integrationTests/Reports/getReportsByAppId.spec.ts +++ b/integrationTests/Reports/getReportsByAppId.spec.ts @@ -1,13 +1,13 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { baseURL, apiKey } from '../mochaRootHooks'; +import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getReportsByAppId', function () { this.timeout(30000); this.retries(3); it('should return a list of reports', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -40,7 +40,7 @@ describe('getReportsByAppId', function () { }); it('should return a 400 error if page size is invalid', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -58,7 +58,7 @@ describe('getReportsByAppId', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(baseURL, 'invalid'); + const client = new OnspringClient(getBaseUrl(), 'invalid'); const response = await client.getReportsByAppId(1); expect(response.statusCode).to.equal(401); @@ -68,7 +68,7 @@ describe('getReportsByAppId', function () { }); it('should return a 403 error if the api key does not have access to one of the reports', async function () { - const client = new OnspringClient(baseURL, apiKey); + const client = new OnspringClient(getBaseUrl(), getApiKey()); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/mochaRootHooks.ts b/integrationTests/mochaRootHooks.ts index af3b35b..cbefe6e 100644 --- a/integrationTests/mochaRootHooks.ts +++ b/integrationTests/mochaRootHooks.ts @@ -23,4 +23,22 @@ export const mochaHooks = (): RootHookObject => { }; }; -export { baseURL, apiKey }; +export function getBaseUrl(): string { + if (baseURL === undefined) { + throw new Error( + 'baseURL is not defined. Ensure mochaRootHooks beforeAll has run first.' + ); + } + + return baseURL; +} + +export function getApiKey(): string { + if (apiKey === undefined) { + throw new Error( + 'apiKey is not defined. Ensure mochaRootHooks beforeAll has run first.' + ); + } + + return apiKey; +} diff --git a/package-lock.json b/package-lock.json index bc07966..4d57fb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3343,13 +3343,6 @@ "node": ">=14.14" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -4011,71 +4004,6 @@ "node": "20 || >=22" } }, - "node_modules/istanbul-lib-processinfo/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "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", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/minimatch": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", - "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^9.2.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -5188,105 +5116,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nyc/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^9.2.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/rimraf/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "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", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/rimraf/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/nyc/node_modules/rimraf/node_modules/minimatch": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", - "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/rimraf/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/rimraf/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": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/rimraf/node_modules/path-scurry/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/nyc/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -6255,6 +6084,71 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/rimraf": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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/rimraf/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/rimraf/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/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6412,71 +6306,6 @@ "node": ">=8.0.0" } }, - "node_modules/spawn-wrap/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "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", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/minimatch": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", - "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^9.2.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", diff --git a/package.json b/package.json index c48d095..a2c01a7 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,6 @@ "overrides": { "brace-expansion": "5.0.8", "serialize-javascript": "7.0.5", - "rimraf": "4.4.1" + "uuid": "11.1.1" } } diff --git a/tsconfig.json b/tsconfig.json index 25b1414..cdb2bd0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,7 @@ "esModuleInterop": true, "target": "ES6", "moduleResolution": "node", + "ignoreDeprecations": "6.0", "types": ["mocha", "node"] }, "include": ["src/**/*", "tests/**/*", "integrationTests/**/*"], From 3bc60bb45f017ba0b4ccdab64d31fe9dc9b85096 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 19:39:21 -0500 Subject: [PATCH 4/7] fix: load dotenv via -r dotenv/config and use process.env directly in integration tests On Node 22+ Linux, ESM detection intercepts .ts files loaded via mocha's -r flag before ts-node's CJS hook fires, causing mochaRootHooks.ts to not execute its top-level dotenv.config() and register mochaHooks. Env vars never loaded, beforeAll never ran, and getter functions threw. - Replace getter exports with direct process.env reads in all spec files - Use -r dotenv/config (plain JS, no ts-node dependency) before hooks file - Remove dotenv import from mochaRootHooks.ts --- integrationTests/Apps/getAppById.spec.ts | 18 +++++-- integrationTests/Apps/getApps.spec.ts | 18 +++++-- integrationTests/Apps/getAppsByIds.spec.ts | 13 +++-- integrationTests/Fields/getFieldById.spec.ts | 18 +++++-- .../Fields/getFieldsByAppId.spec.ts | 23 ++++++--- .../Fields/getFieldsByIds.spec.ts | 13 +++-- integrationTests/Files/deleteFileById.spec.ts | 48 ++++++++++++++----- integrationTests/Files/getFileById.spec.ts | 38 +++++++++++---- .../Files/getFileInfoById.spec.ts | 38 +++++++++++---- integrationTests/Files/saveFile.spec.ts | 43 +++++++++++++---- .../Lists/addOrUpdateListItem.spec.ts | 33 +++++++++---- .../Lists/deleteListItemById.spec.ts | 23 ++++++--- integrationTests/Ping/canConnect.spec.ts | 6 ++- .../Records/deleteRecordById.spec.ts | 23 ++++++--- .../Records/deleteRecordsByIds.spec.ts | 28 ++++++++--- .../Records/getRecordById.spec.ts | 18 +++++-- .../Records/getRecordsByAppId.spec.ts | 18 +++++-- .../Records/getRecordsByIds.spec.ts | 23 ++++++--- integrationTests/Records/queryRecords.spec.ts | 23 ++++++--- integrationTests/Records/saveRecord.spec.ts | 33 +++++++++---- .../Reports/getReportById.spec.ts | 33 +++++++++---- .../Reports/getReportsByAppId.spec.ts | 18 +++++-- integrationTests/mochaRootHooks.ts | 32 +------------ package.json | 6 +-- 24 files changed, 414 insertions(+), 173 deletions(-) diff --git a/integrationTests/Apps/getAppById.spec.ts b/integrationTests/Apps/getAppById.spec.ts index 537e511..6afc82c 100644 --- a/integrationTests/Apps/getAppById.spec.ts +++ b/integrationTests/Apps/getAppById.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getAppById', function () { this.timeout(30000); this.retries(3); it('should return an app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID === undefined) { return expect.fail('TEST_APP_ID is not defined'); @@ -29,7 +31,7 @@ describe('getAppById', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getAppById(1); expect(response.statusCode).to.equal(401); @@ -39,7 +41,10 @@ describe('getAppById', function () { }); it('should return a 403 error when api key does not have access to the requested app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { return expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -55,7 +60,10 @@ describe('getAppById', function () { }); it('should return a 404 error when an app id cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getAppById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Apps/getApps.spec.ts b/integrationTests/Apps/getApps.spec.ts index de51966..be956af 100644 --- a/integrationTests/Apps/getApps.spec.ts +++ b/integrationTests/Apps/getApps.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient, PagingRequest } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getApps', function () { this.timeout(30000); this.retries(3); it('should return a paged list of apps', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getApps(); expect(response.statusCode).to.equal(200); @@ -34,7 +36,10 @@ describe('getApps', function () { }); it('should return a paged list of apps with with correct page size and number when passed paging request', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getApps(new PagingRequest(1, 1)); expect(response.statusCode).to.equal(200); @@ -61,7 +66,10 @@ describe('getApps', function () { }); it('should return a 400 response when an invalid page size is used', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getApps({ pageNumber: 1, pageSize: 1001 }); expect(response.statusCode).to.equal(400); @@ -71,7 +79,7 @@ describe('getApps', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getApps(); expect(response.statusCode).to.equal(401); diff --git a/integrationTests/Apps/getAppsByIds.spec.ts b/integrationTests/Apps/getAppsByIds.spec.ts index 95963ba..a05866b 100644 --- a/integrationTests/Apps/getAppsByIds.spec.ts +++ b/integrationTests/Apps/getAppsByIds.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getAppsByIds', function () { this.timeout(30000); this.retries(3); it('should return a collection of apps', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const appIds = process.env.TEST_APP_IDS; if (appIds === undefined) { @@ -37,7 +39,7 @@ describe('getAppsByIds', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getAppsByIds([1]); expect(response.statusCode).to.equal(401); @@ -47,7 +49,10 @@ describe('getAppsByIds', function () { }); it('should return a 403 error when api key does not have access to any of the requested app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const appIds = process.env.TEST_APP_IDS_NO_ACCESS; if (appIds === undefined) { diff --git a/integrationTests/Fields/getFieldById.spec.ts b/integrationTests/Fields/getFieldById.spec.ts index 2c87e7b..ef89004 100644 --- a/integrationTests/Fields/getFieldById.spec.ts +++ b/integrationTests/Fields/getFieldById.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getAppById', function () { this.timeout(30000); this.retries(3); it('should return a field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_FIELD_ID === undefined) { return expect.fail('TEST_FIELD_ID is not defined'); @@ -33,7 +35,7 @@ describe('getAppById', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getFieldById(1); expect(response.statusCode).to.equal(401); @@ -43,7 +45,10 @@ describe('getAppById', function () { }); it('should return a 403 error when api key does not have access to the requested field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_FIELD_ID_NO_ACCESS === undefined) { return expect.fail('TEST_FIELD_ID_NO_ACCESS is not defined'); @@ -59,7 +64,10 @@ describe('getAppById', function () { }); it('should return a 404 error when the requested field does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getFieldById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Fields/getFieldsByAppId.spec.ts b/integrationTests/Fields/getFieldsByAppId.spec.ts index 7f08c91..aed900e 100644 --- a/integrationTests/Fields/getFieldsByAppId.spec.ts +++ b/integrationTests/Fields/getFieldsByAppId.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient, PagingRequest } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFieldsByAppId', function () { this.timeout(30000); this.retries(3); it('should return a paged list of fields', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -44,7 +46,10 @@ describe('getFieldsByAppId', function () { }); it('should return a paged list of fields with with correct page size and number when passed paging request', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -84,7 +89,10 @@ describe('getFieldsByAppId', function () { }); it('should return a 400 response when an invalid page size is used', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -103,7 +111,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getFieldsByAppId(1); expect(response.statusCode).to.equal(401); @@ -113,7 +121,10 @@ describe('getFieldsByAppId', function () { }); it('should return a 403 response when api key does not have access to the app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { return expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Fields/getFieldsByIds.spec.ts b/integrationTests/Fields/getFieldsByIds.spec.ts index f9771c5..a1ea30b 100644 --- a/integrationTests/Fields/getFieldsByIds.spec.ts +++ b/integrationTests/Fields/getFieldsByIds.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFieldsByIds', function () { this.timeout(30000); this.retries(3); it('should return a collection of fields', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_FIELD_IDS === undefined) { return expect.fail('TEST_FIELD_IDS is not defined'); @@ -40,7 +42,7 @@ describe('getFieldsByIds', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getFieldsByIds([1, 2, 3]); expect(response.statusCode).to.equal(401); @@ -50,7 +52,10 @@ describe('getFieldsByIds', function () { }); it('should return a 403 response when the api key does not have access to any of the requested fields', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_FIELD_IDS_NO_ACCESS === undefined) { return expect.fail('TEST_FIELD_IDS_NO_ACCESS is not defined'); diff --git a/integrationTests/Files/deleteFileById.spec.ts b/integrationTests/Files/deleteFileById.spec.ts index 99b9b44..54c2805 100644 --- a/integrationTests/Files/deleteFileById.spec.ts +++ b/integrationTests/Files/deleteFileById.spec.ts @@ -1,6 +1,5 @@ import { OnspringClient, SaveFileRequest } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import fs from 'fs'; import path from 'path'; @@ -17,7 +16,10 @@ describe('deleteFileById', function () { }); it('should delete a file from an attachment field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -40,7 +42,10 @@ describe('deleteFileById', function () { }); it('should delete a file from an image field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -63,7 +68,10 @@ describe('deleteFileById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -86,7 +94,7 @@ describe('deleteFileById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.deleteFileById(1, 1, 1); expect(response.statusCode).to.equal(401); @@ -96,7 +104,10 @@ describe('deleteFileById', function () { }); it('should return a 403 response when the api key does not have access to the field where the file is held', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -115,7 +126,10 @@ describe('deleteFileById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -134,7 +148,10 @@ describe('deleteFileById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.deleteFileById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -144,7 +161,10 @@ describe('deleteFileById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); @@ -164,7 +184,10 @@ describe('deleteFileById', function () { }); async function addAttachmentFile(): Promise { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -193,7 +216,10 @@ async function addAttachmentFile(): Promise { } async function addImageFile(): Promise { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); diff --git a/integrationTests/Files/getFileById.spec.ts b/integrationTests/Files/getFileById.spec.ts index c484d2d..5e2720f 100644 --- a/integrationTests/Files/getFileById.spec.ts +++ b/integrationTests/Files/getFileById.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFileById', function () { this.timeout(30000); this.retries(3); it('should return a file in an attachment field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -41,7 +43,10 @@ describe('getFileById', function () { }); it('should return a file in an image field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -74,7 +79,10 @@ describe('getFileById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -100,7 +108,7 @@ describe('getFileById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -126,7 +134,10 @@ describe('getFileById', function () { }); it('should return a 403 response when the api key does not have access to the file field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -142,7 +153,10 @@ describe('getFileById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -158,7 +172,10 @@ describe('getFileById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getFileById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -168,7 +185,10 @@ describe('getFileById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); diff --git a/integrationTests/Files/getFileInfoById.spec.ts b/integrationTests/Files/getFileInfoById.spec.ts index 03ca697..41cabbd 100644 --- a/integrationTests/Files/getFileInfoById.spec.ts +++ b/integrationTests/Files/getFileInfoById.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getFileInfoById', function () { this.timeout(30000); this.retries(3); it('should return information about a file in an attachment field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -45,7 +47,10 @@ describe('getFileInfoById', function () { }); it('should return information about a file in an image field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -82,7 +87,10 @@ describe('getFileInfoById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -108,7 +116,7 @@ describe('getFileInfoById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -134,7 +142,10 @@ describe('getFileInfoById', function () { }); it('should return a 403 response when the api key does not have access to the file field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -150,7 +161,10 @@ describe('getFileInfoById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -166,7 +180,10 @@ describe('getFileInfoById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getFileInfoById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -176,7 +193,10 @@ describe('getFileInfoById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); diff --git a/integrationTests/Files/saveFile.spec.ts b/integrationTests/Files/saveFile.spec.ts index a07e2f7..7fea136 100644 --- a/integrationTests/Files/saveFile.spec.ts +++ b/integrationTests/Files/saveFile.spec.ts @@ -1,6 +1,5 @@ import { OnspringClient, SaveFileRequest } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import fs from 'fs'; import path from 'path'; @@ -18,7 +17,10 @@ describe('saveFile', function () { }); it('should save a file into an attachment field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -57,7 +59,10 @@ describe('saveFile', function () { }); it('should save a file into an image field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -96,7 +101,10 @@ describe('saveFile', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -130,7 +138,7 @@ describe('saveFile', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '..'); @@ -156,7 +164,10 @@ describe('saveFile', function () { }); it('should return a 403 response when the api key does not have access to the field where the file is held', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -186,7 +197,10 @@ describe('saveFile', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -216,7 +230,10 @@ describe('saveFile', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '..'); @@ -242,7 +259,10 @@ describe('saveFile', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); @@ -273,7 +293,10 @@ describe('saveFile', function () { }); async function deleteFile(newFileId: number): Promise { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if ( process.env.TEST_RECORD === undefined || diff --git a/integrationTests/Lists/addOrUpdateListItem.spec.ts b/integrationTests/Lists/addOrUpdateListItem.spec.ts index cd7e36b..b8df139 100644 --- a/integrationTests/Lists/addOrUpdateListItem.spec.ts +++ b/integrationTests/Lists/addOrUpdateListItem.spec.ts @@ -1,7 +1,6 @@ import { ListItemRequest } from './../../src'; import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('addOrUpdateListItem', function () { this.timeout(30000); @@ -17,7 +16,10 @@ describe('addOrUpdateListItem', function () { }); it('should add a list item', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_FIELD === undefined) { expect.fail('TEST_LIST_FIELD is not defined'); @@ -49,7 +51,10 @@ describe('addOrUpdateListItem', function () { }); it('should update a list item', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_FIELD === undefined) { expect.fail('TEST_LIST_FIELD is not defined'); @@ -93,7 +98,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const request = new ListItemRequest(1, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -104,7 +109,10 @@ describe('addOrUpdateListItem', function () { }); it('should return a 403 error when api key does not have access to the list', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const request = new ListItemRequest(1, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -115,7 +123,10 @@ describe('addOrUpdateListItem', function () { }); it('should return a 404 error when the list does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const request = new ListItemRequest(0, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -126,7 +137,10 @@ describe('addOrUpdateListItem', function () { }); it('should return a 404 error when the list item does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); @@ -150,7 +164,10 @@ describe('addOrUpdateListItem', function () { }); async function deleteListItem(listItemIds: string): Promise { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_ID === undefined) { return; diff --git a/integrationTests/Lists/deleteListItemById.spec.ts b/integrationTests/Lists/deleteListItemById.spec.ts index 748e575..2514777 100644 --- a/integrationTests/Lists/deleteListItemById.spec.ts +++ b/integrationTests/Lists/deleteListItemById.spec.ts @@ -1,13 +1,15 @@ import { ListItemRequest, OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('deleteListItemById', function () { this.timeout(30000); this.retries(3); it('should delete a list item', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); @@ -40,7 +42,7 @@ describe('deleteListItemById', function () { }); it('should return a 401 error when deleting a list item and the API key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.deleteListItemById(1, '1'); expect(response.statusCode).to.equal(401); @@ -50,7 +52,10 @@ describe('deleteListItemById', function () { }); it('should return a 403 error when deleting a list item and the api key does not have access to update the list', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_ID_NO_ACCESS === undefined) { expect.fail('TEST_LIST_ID_NO_ACCESS is not defined'); @@ -72,7 +77,10 @@ describe('deleteListItemById', function () { }); it('should return a 404 error when deleting a list item and its list does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.deleteListItemById( 0, '3fa85f64-5717-4562-b3fc-2c963f66afa6' @@ -85,7 +93,10 @@ describe('deleteListItemById', function () { }); it('should return a 404 error when deleting a list item that does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); diff --git a/integrationTests/Ping/canConnect.spec.ts b/integrationTests/Ping/canConnect.spec.ts index 6437fcd..38fcae8 100644 --- a/integrationTests/Ping/canConnect.spec.ts +++ b/integrationTests/Ping/canConnect.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('canConnect', function () { this.timeout(30000); this.retries(3); it('should be able to connect to the API', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.canConnect(); expect(response).to.be.true; }); diff --git a/integrationTests/Records/deleteRecordById.spec.ts b/integrationTests/Records/deleteRecordById.spec.ts index 1eaf493..b1c341e 100644 --- a/integrationTests/Records/deleteRecordById.spec.ts +++ b/integrationTests/Records/deleteRecordById.spec.ts @@ -1,6 +1,5 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import { addRecord } from '../utils/addRecord'; describe('deleteRecordById', function () { @@ -8,13 +7,19 @@ describe('deleteRecordById', function () { this.retries(3); it('should delete a record', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } - const recordId = await addRecord(getBaseUrl(), getApiKey()); + const recordId = await addRecord( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.deleteRecordById( parseInt(process.env.TEST_SURVEY_ID), recordId @@ -27,7 +32,7 @@ describe('deleteRecordById', function () { }); it('should return a 401 error when the API key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.deleteRecordById(1, 1); expect(response.statusCode).to.equal(401); @@ -37,7 +42,10 @@ describe('deleteRecordById', function () { }); it('should return a 403 error when the API key does not have access to the record', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -55,7 +63,10 @@ describe('deleteRecordById', function () { }); it('should return a 404 error when the record does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID === undefined) { expect.fail('TEST_APP_ID is not defined'); diff --git a/integrationTests/Records/deleteRecordsByIds.spec.ts b/integrationTests/Records/deleteRecordsByIds.spec.ts index a84ef73..8d3c9d5 100644 --- a/integrationTests/Records/deleteRecordsByIds.spec.ts +++ b/integrationTests/Records/deleteRecordsByIds.spec.ts @@ -1,6 +1,5 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; import { addRecord } from '../utils/addRecord'; describe('deleteRecordsByIds', function () { @@ -8,14 +7,23 @@ describe('deleteRecordsByIds', function () { this.retries(3); it('should delete records', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } - const recordId1 = await addRecord(getBaseUrl(), getApiKey()); - const recordId2 = await addRecord(getBaseUrl(), getApiKey()); + const recordId1 = await addRecord( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); + const recordId2 = await addRecord( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.deleteRecordsByIds( parseInt(process.env.TEST_SURVEY_ID), @@ -29,7 +37,10 @@ describe('deleteRecordsByIds', function () { }); it('should return a 400 error when no record ids are provided', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -47,7 +58,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 401 error when an invalid API key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.deleteRecordsByIds(1, [1]); @@ -58,7 +69,10 @@ describe('deleteRecordsByIds', function () { }); it('should return a 403 error when the API key does not have access to the app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/getRecordById.spec.ts b/integrationTests/Records/getRecordById.spec.ts index 55bf620..82a9303 100644 --- a/integrationTests/Records/getRecordById.spec.ts +++ b/integrationTests/Records/getRecordById.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient, GetRecordRequest, DataFormat } from './../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getRecordById', function () { this.timeout(30000); this.retries(3); it('should get a record', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -45,7 +47,10 @@ describe('getRecordById', function () { }); it('should get a record when fieldIds and data format are passed as parameters', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -94,7 +99,7 @@ describe('getRecordById', function () { }); it('should return a 401 error when an invalid API key is used', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getRecordById(new GetRecordRequest(1, 1)); expect(response.statusCode).to.equal(401); @@ -104,7 +109,10 @@ describe('getRecordById', function () { }); it('should return a 404 error when an invalid record id is used', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); diff --git a/integrationTests/Records/getRecordsByAppId.spec.ts b/integrationTests/Records/getRecordsByAppId.spec.ts index 43deb0d..2ced6eb 100644 --- a/integrationTests/Records/getRecordsByAppId.spec.ts +++ b/integrationTests/Records/getRecordsByAppId.spec.ts @@ -1,14 +1,16 @@ import { GetRecordsByAppIdRequest } from './../../src/models/GetRecordsByAppIdRequest'; import { DataFormat, OnspringClient, PagingRequest } from './../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getRecordsByAppId', function () { this.timeout(30000); this.retries(3); it('should get records', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -54,7 +56,10 @@ describe('getRecordsByAppId', function () { }); it('should get records when fieldIds, paging information, and data format are passed as parameters', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -106,7 +111,7 @@ describe('getRecordsByAppId', function () { }); it('should return a 401 error when an invalid API key is passed', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const request = new GetRecordsByAppIdRequest(0); const response = await client.getRecordsByAppId(request); @@ -117,7 +122,10 @@ describe('getRecordsByAppId', function () { }); it('should return a 403 error when the api key does not have access to the app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/getRecordsByIds.spec.ts b/integrationTests/Records/getRecordsByIds.spec.ts index c10e008..3612990 100644 --- a/integrationTests/Records/getRecordsByIds.spec.ts +++ b/integrationTests/Records/getRecordsByIds.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient, GetRecordsRequest, DataFormat } from './../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getRecordsByIds', function () { this.timeout(30000); this.retries(3); it('should get records', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -50,7 +52,10 @@ describe('getRecordsByIds', function () { }); it('should get records when field ids and data format are passed as parameters', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -103,7 +108,10 @@ describe('getRecordsByIds', function () { }); it('should return a 400 error if too many record ids are passed', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const recordIds = new Array(101).fill(1); const request = new GetRecordsRequest(1, recordIds); const response = await client.getRecordsByIds(request); @@ -115,7 +123,7 @@ describe('getRecordsByIds', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const request = new GetRecordsRequest(1, [1]); const response = await client.getRecordsByIds(request); @@ -126,7 +134,10 @@ describe('getRecordsByIds', function () { }); it('should return a 403 error if the user does not have access to the app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/queryRecords.spec.ts b/integrationTests/Records/queryRecords.spec.ts index 1f87d70..22917e8 100644 --- a/integrationTests/Records/queryRecords.spec.ts +++ b/integrationTests/Records/queryRecords.spec.ts @@ -7,14 +7,16 @@ import { QueryRecordsRequest, } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('queryRecords', function () { this.timeout(30000); this.retries(3); it('should return records', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -58,7 +60,10 @@ describe('queryRecords', function () { }); it('should return records when data format, paging information, and fields are passed as parameters', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -109,7 +114,10 @@ describe('queryRecords', function () { }); it('should return a 400 error if page size is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const request = new QueryRecordsRequest(1, '', [], DataFormat.Formatted, { pageNumber: 1, pageSize: 1001, @@ -124,7 +132,7 @@ describe('queryRecords', function () { }); it('should return a 401 error if the API key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const request = new QueryRecordsRequest(1, ''); const response = await client.queryRecords(request); @@ -135,7 +143,10 @@ describe('queryRecords', function () { }); it('should return a 403 error if the API key does not have access to the app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/saveRecord.spec.ts b/integrationTests/Records/saveRecord.spec.ts index 8f26918..065c6a2 100644 --- a/integrationTests/Records/saveRecord.spec.ts +++ b/integrationTests/Records/saveRecord.spec.ts @@ -1,7 +1,6 @@ import { StringRecordValue } from './../../src/models/StringRecordValue'; import { OnspringClient, Record } from './../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('saveRecord', function () { this.timeout(30000); @@ -16,7 +15,10 @@ describe('saveRecord', function () { }); it('should add a record when no record id is passed', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -50,7 +52,10 @@ describe('saveRecord', function () { }); it('should update a record when a record id is passed', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -101,7 +106,10 @@ describe('saveRecord', function () { }); it('should return a 400 error when field data is empty', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -118,7 +126,7 @@ describe('saveRecord', function () { }); it('should return a 401 error when the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.saveRecord(new Record(0, null, [])); expect(response.statusCode).to.equal(401); @@ -128,7 +136,10 @@ describe('saveRecord', function () { }); it('should return a 403 error when the api key does not have access to the app', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -144,7 +155,10 @@ describe('saveRecord', function () { }); it('should return a 404 error when the record id is not found', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -162,6 +176,9 @@ describe('saveRecord', function () { }); async function deleteRecord(appId: number, recordId: number): Promise { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); await client.deleteRecordById(appId, recordId); } diff --git a/integrationTests/Reports/getReportById.spec.ts b/integrationTests/Reports/getReportById.spec.ts index 9b2d208..ea605ec 100644 --- a/integrationTests/Reports/getReportById.spec.ts +++ b/integrationTests/Reports/getReportById.spec.ts @@ -1,13 +1,15 @@ import { DataFormat, OnspringClient, ReportDataType } from './../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getReportById', function () { this.timeout(30000); this.retries(3); it('should return a report', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_REPORT === undefined) { expect.fail('TEST_REPORT is not defined'); @@ -38,7 +40,10 @@ describe('getReportById', function () { }); it('should return report data for a report with chart data when report data is requested', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_REPORT_WITH_CHART_DATA === undefined) { expect.fail('TEST_REPORT_WITH_CHART_DATA is not defined'); @@ -69,7 +74,10 @@ describe('getReportById', function () { }); it('should return chart data for a report with a chart when chart data is requested', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_REPORT_WITH_CHART_DATA === undefined) { expect.fail('TEST_REPORT_WITH_CHART_DATA is not defined'); @@ -102,7 +110,10 @@ describe('getReportById', function () { }); it('should return a 400 error if chart data is requested for a report without chart data', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_REPORT === undefined) { expect.fail('TEST_REPORT is not defined'); @@ -121,7 +132,7 @@ describe('getReportById', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getReportById(1); expect(response.statusCode).to.equal(401); @@ -131,7 +142,10 @@ describe('getReportById', function () { }); it('should return a 403 error if the api key does not have access to the report', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getReportById(1); expect(response.statusCode).to.equal(403); @@ -141,7 +155,10 @@ describe('getReportById', function () { }); it('should return a 404 error if the report does not exist', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); const response = await client.getReportById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Reports/getReportsByAppId.spec.ts b/integrationTests/Reports/getReportsByAppId.spec.ts index 9a3c9f1..b5e229f 100644 --- a/integrationTests/Reports/getReportsByAppId.spec.ts +++ b/integrationTests/Reports/getReportsByAppId.spec.ts @@ -1,13 +1,15 @@ import { OnspringClient } from '../../src'; import { expect } from 'chai'; -import { getBaseUrl, getApiKey } from '../mochaRootHooks'; describe('getReportsByAppId', function () { this.timeout(30000); this.retries(3); it('should return a list of reports', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -40,7 +42,10 @@ describe('getReportsByAppId', function () { }); it('should return a 400 error if page size is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -58,7 +63,7 @@ describe('getReportsByAppId', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(getBaseUrl(), 'invalid'); + const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); const response = await client.getReportsByAppId(1); expect(response.statusCode).to.equal(401); @@ -68,7 +73,10 @@ describe('getReportsByAppId', function () { }); it('should return a 403 error if the api key does not have access to one of the reports', async function () { - const client = new OnspringClient(getBaseUrl(), getApiKey()); + const client = new OnspringClient( + process.env.API_BASE_URL!, + process.env.SANDBOX_API_KEY! + ); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/mochaRootHooks.ts b/integrationTests/mochaRootHooks.ts index cbefe6e..b5b0e31 100644 --- a/integrationTests/mochaRootHooks.ts +++ b/integrationTests/mochaRootHooks.ts @@ -1,44 +1,16 @@ import { type RootHookObject, type Context } from 'mocha'; import { expect } from 'chai'; -import * as dotenv from 'dotenv'; -dotenv.config(); - -let baseURL: string | undefined; -let apiKey: string | undefined; export const mochaHooks = (): RootHookObject => { return { beforeAll(this: Context) { - baseURL = process.env.API_BASE_URL; - apiKey = process.env.SANDBOX_API_KEY; - - if (baseURL === undefined) { + if (process.env.API_BASE_URL === undefined) { return expect.fail('API_BASE_URL is not defined'); } - if (apiKey === undefined) { + if (process.env.SANDBOX_API_KEY === undefined) { return expect.fail('SANDBOX_API_KEY is not defined'); } }, }; }; - -export function getBaseUrl(): string { - if (baseURL === undefined) { - throw new Error( - 'baseURL is not defined. Ensure mochaRootHooks beforeAll has run first.' - ); - } - - return baseURL; -} - -export function getApiKey(): string { - if (apiKey === undefined) { - throw new Error( - 'apiKey is not defined. Ensure mochaRootHooks beforeAll has run first.' - ); - } - - return apiKey; -} diff --git a/package.json b/package.json index a2c01a7..1e35952 100644 --- a/package.json +++ b/package.json @@ -54,10 +54,10 @@ "build:cjs": "tsc --project tsconfig.cjs.json", "build:json": "node ./scripts/create_dist_package_json.js", "test:unit": "mocha -r ts-node/register", - "test:integration": "mocha -r ts-node/register -r integrationTests/mochaRootHooks.ts", + "test:integration": "mocha -r ts-node/register -r dotenv/config -r integrationTests/mochaRootHooks.ts", "tests:unit": "mocha -R progress -r ts-node/register ./tests/**/*.spec.ts", - "tests:integration": "mocha -R progress -r ts-node/register -r integrationTests/mochaRootHooks.ts ./integrationTests/**/*.spec.ts", - "tests": "mocha -R progress -r ts-node/register ./tests/**/*.spec.ts && mocha -R progress -r ts-node/register -r integrationTests/mochaRootHooks.ts ./integrationTests/**/*.spec.ts", + "tests:integration": "mocha -R progress -r ts-node/register -r dotenv/config -r integrationTests/mochaRootHooks.ts ./integrationTests/**/*.spec.ts", + "tests": "mocha -R progress -r ts-node/register ./tests/**/*.spec.ts && mocha -R progress -r ts-node/register -r dotenv/config -r integrationTests/mochaRootHooks.ts ./integrationTests/**/*.spec.ts", "test-coverage": "nyc npm run tests:unit", "test-coverage:ci": "nyc npm run tests", "prepare": "husky install" From a4a7a2835bcf7022352168557904961688400a84 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 19:46:33 -0500 Subject: [PATCH 5/7] fix: migrate from nyc to c8 for coverage nyc has compatibility issues with Node 22+ due to async_hooks changes, causing it to hang after tests complete. c8 uses native V8 coverage, is maintained alongside Node, and is the recommended replacement. - Replace nyc@^18.0.0 + @istanbuljs/nyc-config-typescript with c8 - Create .c8rc.json (checkCoverage, reportsDir, same thresholds) - Remove .nycrc --- .c8rc.json | 12 + .nycrc | 23 - package-lock.json | 1640 +++++++-------------------------------------- package.json | 7 +- 4 files changed, 241 insertions(+), 1441 deletions(-) create mode 100644 .c8rc.json delete mode 100644 .nycrc diff --git a/.c8rc.json b/.c8rc.json new file mode 100644 index 0000000..333a63a --- /dev/null +++ b/.c8rc.json @@ -0,0 +1,12 @@ +{ + "checkCoverage": true, + "branches": 100, + "lines": 100, + "functions": 100, + "statements": 100, + "all": true, + "include": ["src/**/*.ts"], + "exclude": ["src/index.ts", "**/*.spec.ts"], + "reporter": ["html", "lcov", "text", "text-summary"], + "reportsDir": "coverage" +} diff --git a/.nycrc b/.nycrc deleted file mode 100644 index 9b12abb..0000000 --- a/.nycrc +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "@istanbuljs/nyc-config-typescript", - "check-coverage": true, - "branches": 100, - "lines": 100, - "functions": 100, - "statements": 100, - "all": true, - "include": [ - "src/**/*.ts" - ], - "exclude": [ - "src/index.ts", - "**/*.spec.ts" - ], - "reporter": [ - "html", - "lcov", - "text", - "text-summary" - ], - "report-dir": "coverage" -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4d57fb7..685bd55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,6 @@ "@commitlint/cli": "^17.8.1", "@commitlint/config-conventional": "^17.8.1", "@eslint/js": "^10.0.1", - "@istanbuljs/nyc-config-typescript": "^1.0.2", "@types/chai": "^4.3.20", "@types/jest": "^30.0.0", "@types/mocha": "^10.0.10", @@ -24,6 +23,7 @@ "@types/sinon": "^10.0.20", "@typescript-eslint/eslint-plugin": "^8.65.0", "@typescript-eslint/parser": "^8.65.0", + "c8": "^12.0.0", "chai": "^4.5.0", "dotenv": "^16.6.1", "eslint": "^10.8.0", @@ -33,7 +33,6 @@ "eslint-plugin-promise": "^7.3.0", "husky": "^8.0.3", "mocha": "^11.3.0", - "nyc": "^18.0.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", "sinon": "^15.2.0", @@ -62,177 +61,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", - "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", - "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helpers": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7", - "@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/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/helper-globals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", - "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", - "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", - "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", @@ -243,92 +71,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", - "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", - "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, "node_modules/@commitlint/cli": { @@ -852,119 +602,6 @@ "node": ">=12" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "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/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz", - "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "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", - "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" - } - }, - "node_modules/@istanbuljs/nyc-config-typescript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.2.tgz", - "integrity": "sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "nyc": ">=15" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", @@ -1054,28 +691,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -1704,24 +1319,10 @@ "node": ">= 6.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -1764,26 +1365,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true, - "license": "MIT" - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -1853,19 +1434,6 @@ "node": "18 || 20 || >=22" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.6.tgz", - "integrity": "sha512-69D/imtToCsIcAl8WBS2YaRwA4jO/j0HhU+hELqMEu9f54MoUtI6+XH5mrKU8rEFNEk/Ui1I2MK4/JkWacclGw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/brace-expansion": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz", @@ -1886,54 +1454,182 @@ "dev": true, "license": "ISC" }, - "node_modules/browserslist": { - "version": "4.28.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", - "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "node_modules/c8": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-12.0.0.tgz", + "integrity": "sha512-4zpJvrd1nKWutnnKC2pXkFmb6iM1l+ffN//o1CzlTNwW7GSOs9a1xrLqkC48nU8oEkjmPZLPiwMsIaOvoF4Pqg==", "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": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.1", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^8.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^18.0.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + }, + "peerDependencies": { + "monocart-coverage-reports": "^2" + }, + "peerDependenciesMeta": { + "monocart-coverage-reports": { + "optional": true } - ], + } + }, + "node_modules/c8/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": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/c8/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/c8/node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.44", - "caniuse-lite": "^1.0.30001806", - "electron-to-chromium": "^1.5.393", - "node-releases": "^2.0.51", - "update-browserslist-db": "^1.2.3" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, - "bin": { - "browserslist": "cli.js" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/c8/node_modules/string-width": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", + "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "node_modules/c8/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/c8/node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/yargs": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz", + "integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^8.2.1", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/c8/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/c8/node_modules/yargs/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/call-bind-apply-helpers": { @@ -1987,27 +1683,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001806", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", - "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", - "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/chai": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", @@ -2089,16 +1764,6 @@ "node": ">=8" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2209,13 +1874,6 @@ "node": ">= 0.8" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" - }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -2273,9 +1931,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, @@ -2428,22 +2086,6 @@ "dev": true, "license": "MIT" }, - "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2510,13 +2152,6 @@ "dev": true, "license": "MIT" }, - "node_modules/electron-to-chromium": { - "version": "1.5.398", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.398.tgz", - "integrity": "sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==", - "dev": true, - "license": "ISC" - }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2616,13 +2251,6 @@ "node": ">= 0.4" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "license": "MIT" - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -3004,20 +2632,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", @@ -3175,24 +2789,6 @@ "node": ">=16.0.0" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -3307,27 +2903,6 @@ "node": ">= 6" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "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" - }, "node_modules/fs-extra": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", @@ -3352,16 +2927,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -3372,6 +2937,19 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-func-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", @@ -3406,16 +2984,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -3629,43 +3197,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "node": ">= 0.4" } }, "node_modules/he": { @@ -3910,13 +3451,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -3930,16 +3464,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3957,53 +3481,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.1.tgz", - "integrity": "sha512-s3mX05h5wGZeScG6XnOanygPh4SJu5ujMc9YbvpnLGXWy1cRiGbp0NdVcjHxgoZt3WfQppfBsa0y+gWdYJ2pGQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^6.1.3" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -4019,37 +3496,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/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": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", @@ -4233,19 +3679,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -4274,19 +3707,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jsonfile": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", @@ -4425,13 +3845,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -4543,31 +3956,21 @@ "license": "MIT" }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "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": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -4892,29 +4295,6 @@ "@sinonjs/commons": "^3.0.1" } }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.51", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -4922,285 +4302,26 @@ "dev": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "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/nyc": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-18.0.0.tgz", - "integrity": "sha512-G5UyHinFkB1BxqGTrmZdB6uIYH0+v7ZnVssuflUDi+J+RhKWyAhRT1RCehBSI6jLFLuUUgFDyLt49mUtdO1XeQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^3.3.0", - "get-package-type": "^0.1.0", - "glob": "^13.0.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^6.0.2", - "istanbul-lib-processinfo": "^3.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^6.1.3", - "signal-exit": "^3.0.2", - "spawn-wrap": "^3.0.0", - "test-exclude": "^8.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/nyc/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/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/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/nyc/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/nyc/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/nyc/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/nyc/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/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" - } - }, - "node_modules/nyc/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/nyc/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": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/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/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "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": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/once": { @@ -5279,19 +4400,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5302,22 +4410,6 @@ "node": ">=6" } }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "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", @@ -5455,75 +4547,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5720,19 +4743,6 @@ "node": ">=8" } }, - "node_modules/process-on-spawn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", - "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/proxy-from-env": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", @@ -5989,19 +4999,6 @@ "node": ">=8" } }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "license": "ISC", - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -6022,13 +5019,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "license": "ISC" - }, "node_modules/resolve": { "version": "1.22.12", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", @@ -6084,71 +5074,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/rimraf": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^13.0.3", - "package-json-from-dist": "^1.0.1" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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/rimraf/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/rimraf/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/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6196,13 +5121,6 @@ "node": ">=20.0.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6263,49 +5181,6 @@ "node": ">=8" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawn-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-3.0.0.tgz", - "integrity": "sha512-z+s5vv4KzFPJVddGab0xX2n7kQPGMdNUX5l9T8EJqsXdKTWpcxmAqWHpsgHEXoC1taGBCc7b79bi62M5kdbrxQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "cross-spawn": "^7.0.6", - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^6.1.3", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -6352,13 +5227,6 @@ "readable-stream": "^3.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -6496,16 +5364,6 @@ "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", @@ -6819,16 +5677,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typedoc": { "version": "0.28.20", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.20.tgz", @@ -6942,37 +5790,6 @@ "node": ">= 10.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "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/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6997,6 +5814,21 @@ "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7024,13 +5856,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "license": "ISC" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -7150,19 +5975,6 @@ "dev": true, "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 1e35952..e542e74 100644 --- a/package.json +++ b/package.json @@ -58,15 +58,14 @@ "tests:unit": "mocha -R progress -r ts-node/register ./tests/**/*.spec.ts", "tests:integration": "mocha -R progress -r ts-node/register -r dotenv/config -r integrationTests/mochaRootHooks.ts ./integrationTests/**/*.spec.ts", "tests": "mocha -R progress -r ts-node/register ./tests/**/*.spec.ts && mocha -R progress -r ts-node/register -r dotenv/config -r integrationTests/mochaRootHooks.ts ./integrationTests/**/*.spec.ts", - "test-coverage": "nyc npm run tests:unit", - "test-coverage:ci": "nyc npm run tests", + "test-coverage": "c8 npm run tests:unit", + "test-coverage:ci": "c8 npm run tests", "prepare": "husky install" }, "devDependencies": { "@commitlint/cli": "^17.8.1", "@commitlint/config-conventional": "^17.8.1", "@eslint/js": "^10.0.1", - "@istanbuljs/nyc-config-typescript": "^1.0.2", "@types/chai": "^4.3.20", "@types/jest": "^30.0.0", "@types/mocha": "^10.0.10", @@ -74,6 +73,7 @@ "@types/sinon": "^10.0.20", "@typescript-eslint/eslint-plugin": "^8.65.0", "@typescript-eslint/parser": "^8.65.0", + "c8": "^12.0.0", "chai": "^4.5.0", "dotenv": "^16.6.1", "eslint": "^10.8.0", @@ -83,7 +83,6 @@ "eslint-plugin-promise": "^7.3.0", "husky": "^8.0.3", "mocha": "^11.3.0", - "nyc": "^18.0.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", "sinon": "^15.2.0", From 1faca74008182b9d20d73621b69068fb544c5475 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 20:03:52 -0500 Subject: [PATCH 6/7] fix: prevent integration test hang on Node 22+ by using non-keepalive agents via getClient() helper - Add getClient() helper in mochaRootHooks.ts with keepAlive:false agents so HTTP sockets close immediately and Node exits cleanly - Revert --exit flag (no longer needed with proper agent cleanup) - Update all 22 spec files to call getClient() instead of new OnspringClient(process.env.API_BASE_URL!, ...) - Refactor addRecord() to accept a client instance - Drop Node 16/18 from CI matrix (c8 v12 requires Node 20+) --- .github/workflows/lint_format_test.yaml | 2 +- integrationTests/Apps/getAppById.spec.ts | 19 ++----- integrationTests/Apps/getApps.spec.ts | 20 +++----- integrationTests/Apps/getAppsByIds.spec.ts | 14 ++---- integrationTests/Fields/getFieldById.spec.ts | 19 ++----- .../Fields/getFieldsByAppId.spec.ts | 25 +++------- .../Fields/getFieldsByIds.spec.ts | 14 ++---- integrationTests/Files/deleteFileById.spec.ts | 50 +++++-------------- integrationTests/Files/getFileById.spec.ts | 39 ++++----------- .../Files/getFileInfoById.spec.ts | 39 ++++----------- integrationTests/Files/saveFile.spec.ts | 45 ++++------------- .../Lists/addOrUpdateListItem.spec.ts | 34 +++---------- .../Lists/deleteListItemById.spec.ts | 25 +++------- integrationTests/Ping/canConnect.spec.ts | 7 +-- .../Records/deleteRecordById.spec.ts | 24 +++------ .../Records/deleteRecordsByIds.spec.ts | 29 +++-------- .../Records/getRecordById.spec.ts | 20 +++----- .../Records/getRecordsByAppId.spec.ts | 20 +++----- .../Records/getRecordsByIds.spec.ts | 25 +++------- integrationTests/Records/queryRecords.spec.ts | 24 +++------ integrationTests/Records/saveRecord.spec.ts | 35 ++++--------- .../Reports/getReportById.spec.ts | 35 ++++--------- .../Reports/getReportsByAppId.spec.ts | 19 ++----- integrationTests/mochaRootHooks.ts | 14 ++++++ integrationTests/utils/addRecord.ts | 7 +-- 25 files changed, 166 insertions(+), 438 deletions(-) diff --git a/.github/workflows/lint_format_test.yaml b/.github/workflows/lint_format_test.yaml index cfcf4a0..a75f5eb 100644 --- a/.github/workflows/lint_format_test.yaml +++ b/.github/workflows/lint_format_test.yaml @@ -71,7 +71,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [16.x, 18.x, 20.x, 22.x, 24.x, 26.x] + node-version: [20.x, 22.x, 24.x, 26.x] fail-fast: false steps: - name: Check out repository diff --git a/integrationTests/Apps/getAppById.spec.ts b/integrationTests/Apps/getAppById.spec.ts index 6afc82c..4c34497 100644 --- a/integrationTests/Apps/getAppById.spec.ts +++ b/integrationTests/Apps/getAppById.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getAppById', function () { @@ -6,10 +6,7 @@ describe('getAppById', function () { this.retries(3); it('should return an app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID === undefined) { return expect.fail('TEST_APP_ID is not defined'); @@ -31,7 +28,7 @@ describe('getAppById', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getAppById(1); expect(response.statusCode).to.equal(401); @@ -41,10 +38,7 @@ describe('getAppById', function () { }); it('should return a 403 error when api key does not have access to the requested app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { return expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -60,10 +54,7 @@ describe('getAppById', function () { }); it('should return a 404 error when an app id cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getAppById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Apps/getApps.spec.ts b/integrationTests/Apps/getApps.spec.ts index be956af..4a223e5 100644 --- a/integrationTests/Apps/getApps.spec.ts +++ b/integrationTests/Apps/getApps.spec.ts @@ -1,15 +1,13 @@ -import { OnspringClient, PagingRequest } from '../../src'; +import { PagingRequest } from '../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('getApps', function () { this.timeout(30000); this.retries(3); it('should return a paged list of apps', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getApps(); expect(response.statusCode).to.equal(200); @@ -36,10 +34,7 @@ describe('getApps', function () { }); it('should return a paged list of apps with with correct page size and number when passed paging request', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getApps(new PagingRequest(1, 1)); expect(response.statusCode).to.equal(200); @@ -66,10 +61,7 @@ describe('getApps', function () { }); it('should return a 400 response when an invalid page size is used', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getApps({ pageNumber: 1, pageSize: 1001 }); expect(response.statusCode).to.equal(400); @@ -79,7 +71,7 @@ describe('getApps', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getApps(); expect(response.statusCode).to.equal(401); diff --git a/integrationTests/Apps/getAppsByIds.spec.ts b/integrationTests/Apps/getAppsByIds.spec.ts index a05866b..64e3587 100644 --- a/integrationTests/Apps/getAppsByIds.spec.ts +++ b/integrationTests/Apps/getAppsByIds.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getAppsByIds', function () { @@ -6,10 +6,7 @@ describe('getAppsByIds', function () { this.retries(3); it('should return a collection of apps', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const appIds = process.env.TEST_APP_IDS; if (appIds === undefined) { @@ -39,7 +36,7 @@ describe('getAppsByIds', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getAppsByIds([1]); expect(response.statusCode).to.equal(401); @@ -49,10 +46,7 @@ describe('getAppsByIds', function () { }); it('should return a 403 error when api key does not have access to any of the requested app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const appIds = process.env.TEST_APP_IDS_NO_ACCESS; if (appIds === undefined) { diff --git a/integrationTests/Fields/getFieldById.spec.ts b/integrationTests/Fields/getFieldById.spec.ts index ef89004..e3f6c3c 100644 --- a/integrationTests/Fields/getFieldById.spec.ts +++ b/integrationTests/Fields/getFieldById.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getAppById', function () { @@ -6,10 +6,7 @@ describe('getAppById', function () { this.retries(3); it('should return a field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_FIELD_ID === undefined) { return expect.fail('TEST_FIELD_ID is not defined'); @@ -35,7 +32,7 @@ describe('getAppById', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getFieldById(1); expect(response.statusCode).to.equal(401); @@ -45,10 +42,7 @@ describe('getAppById', function () { }); it('should return a 403 error when api key does not have access to the requested field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_FIELD_ID_NO_ACCESS === undefined) { return expect.fail('TEST_FIELD_ID_NO_ACCESS is not defined'); @@ -64,10 +58,7 @@ describe('getAppById', function () { }); it('should return a 404 error when the requested field does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getFieldById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Fields/getFieldsByAppId.spec.ts b/integrationTests/Fields/getFieldsByAppId.spec.ts index aed900e..ec17b41 100644 --- a/integrationTests/Fields/getFieldsByAppId.spec.ts +++ b/integrationTests/Fields/getFieldsByAppId.spec.ts @@ -1,15 +1,13 @@ -import { OnspringClient, PagingRequest } from '../../src'; +import { PagingRequest } from '../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('getFieldsByAppId', function () { this.timeout(30000); this.retries(3); it('should return a paged list of fields', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -46,10 +44,7 @@ describe('getFieldsByAppId', function () { }); it('should return a paged list of fields with with correct page size and number when passed paging request', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -89,10 +84,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 400 response when an invalid page size is used', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { return expect.fail('TEST_SURVEY_ID is not defined'); @@ -111,7 +103,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getFieldsByAppId(1); expect(response.statusCode).to.equal(401); @@ -121,10 +113,7 @@ describe('getFieldsByAppId', function () { }); it('should return a 403 response when api key does not have access to the app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { return expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Fields/getFieldsByIds.spec.ts b/integrationTests/Fields/getFieldsByIds.spec.ts index a1ea30b..f12d12b 100644 --- a/integrationTests/Fields/getFieldsByIds.spec.ts +++ b/integrationTests/Fields/getFieldsByIds.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getFieldsByIds', function () { @@ -6,10 +6,7 @@ describe('getFieldsByIds', function () { this.retries(3); it('should return a collection of fields', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_FIELD_IDS === undefined) { return expect.fail('TEST_FIELD_IDS is not defined'); @@ -42,7 +39,7 @@ describe('getFieldsByIds', function () { }); it('should return a 401 response when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getFieldsByIds([1, 2, 3]); expect(response.statusCode).to.equal(401); @@ -52,10 +49,7 @@ describe('getFieldsByIds', function () { }); it('should return a 403 response when the api key does not have access to any of the requested fields', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_FIELD_IDS_NO_ACCESS === undefined) { return expect.fail('TEST_FIELD_IDS_NO_ACCESS is not defined'); diff --git a/integrationTests/Files/deleteFileById.spec.ts b/integrationTests/Files/deleteFileById.spec.ts index 54c2805..0953395 100644 --- a/integrationTests/Files/deleteFileById.spec.ts +++ b/integrationTests/Files/deleteFileById.spec.ts @@ -1,5 +1,6 @@ -import { OnspringClient, SaveFileRequest } from '../../src'; +import { SaveFileRequest } from '../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; import fs from 'fs'; import path from 'path'; @@ -16,10 +17,7 @@ describe('deleteFileById', function () { }); it('should delete a file from an attachment field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -42,10 +40,7 @@ describe('deleteFileById', function () { }); it('should delete a file from an image field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -68,10 +63,7 @@ describe('deleteFileById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -94,7 +86,7 @@ describe('deleteFileById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.deleteFileById(1, 1, 1); expect(response.statusCode).to.equal(401); @@ -104,10 +96,7 @@ describe('deleteFileById', function () { }); it('should return a 403 response when the api key does not have access to the field where the file is held', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -126,10 +115,7 @@ describe('deleteFileById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -148,10 +134,7 @@ describe('deleteFileById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.deleteFileById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -161,10 +144,7 @@ describe('deleteFileById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); @@ -184,10 +164,7 @@ describe('deleteFileById', function () { }); async function addAttachmentFile(): Promise { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -216,10 +193,7 @@ async function addAttachmentFile(): Promise { } async function addImageFile(): Promise { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); diff --git a/integrationTests/Files/getFileById.spec.ts b/integrationTests/Files/getFileById.spec.ts index 5e2720f..548b5fa 100644 --- a/integrationTests/Files/getFileById.spec.ts +++ b/integrationTests/Files/getFileById.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getFileById', function () { @@ -6,10 +6,7 @@ describe('getFileById', function () { this.retries(3); it('should return a file in an attachment field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -43,10 +40,7 @@ describe('getFileById', function () { }); it('should return a file in an image field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -79,10 +73,7 @@ describe('getFileById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -108,7 +99,7 @@ describe('getFileById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -134,10 +125,7 @@ describe('getFileById', function () { }); it('should return a 403 response when the api key does not have access to the file field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -153,10 +141,7 @@ describe('getFileById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -172,10 +157,7 @@ describe('getFileById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getFileById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -185,10 +167,7 @@ describe('getFileById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); diff --git a/integrationTests/Files/getFileInfoById.spec.ts b/integrationTests/Files/getFileInfoById.spec.ts index 41cabbd..126fe02 100644 --- a/integrationTests/Files/getFileInfoById.spec.ts +++ b/integrationTests/Files/getFileInfoById.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getFileInfoById', function () { @@ -6,10 +6,7 @@ describe('getFileInfoById', function () { this.retries(3); it('should return information about a file in an attachment field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -47,10 +44,7 @@ describe('getFileInfoById', function () { }); it('should return information about a file in an image field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -87,10 +81,7 @@ describe('getFileInfoById', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -116,7 +107,7 @@ describe('getFileInfoById', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -142,10 +133,7 @@ describe('getFileInfoById', function () { }); it('should return a 403 response when the api key does not have access to the file field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -161,10 +149,7 @@ describe('getFileInfoById', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -180,10 +165,7 @@ describe('getFileInfoById', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getFileInfoById(1, 0, 1); expect(response.statusCode).to.equal(404); @@ -193,10 +175,7 @@ describe('getFileInfoById', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); diff --git a/integrationTests/Files/saveFile.spec.ts b/integrationTests/Files/saveFile.spec.ts index 7fea136..88aa390 100644 --- a/integrationTests/Files/saveFile.spec.ts +++ b/integrationTests/Files/saveFile.spec.ts @@ -1,5 +1,6 @@ -import { OnspringClient, SaveFileRequest } from '../../src'; +import { SaveFileRequest } from '../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; import fs from 'fs'; import path from 'path'; @@ -17,10 +18,7 @@ describe('saveFile', function () { }); it('should save a file into an attachment field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -59,10 +57,7 @@ describe('saveFile', function () { }); it('should save a file into an image field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -101,10 +96,7 @@ describe('saveFile', function () { }); it('should return a 400 response when fieldId is not for a file field', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_RECORD === undefined) { expect.fail('TEST_RECORD is not defined'); @@ -138,7 +130,7 @@ describe('saveFile', function () { }); it('should return a 401 response when the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '..'); @@ -164,10 +156,7 @@ describe('saveFile', function () { }); it('should return a 403 response when the api key does not have access to the field where the file is held', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_FIELD is not defined'); @@ -197,10 +186,7 @@ describe('saveFile', function () { }); it('should return a 403 response when the api key does not have access to the app where the file is held', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD_NO_ACCESS_APP === undefined) { expect.fail('TEST_ATTACHMENT_FIELD_NO_ACCESS_APP is not defined'); @@ -230,10 +216,7 @@ describe('saveFile', function () { }); it('should return a 404 response when the file field cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '..'); @@ -259,10 +242,7 @@ describe('saveFile', function () { }); it('should return a 404 response when the file record cannot be found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_ATTACHMENT_FIELD === undefined) { expect.fail('TEST_ATTACHMENT_FIELD is not defined'); @@ -293,10 +273,7 @@ describe('saveFile', function () { }); async function deleteFile(newFileId: number): Promise { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if ( process.env.TEST_RECORD === undefined || diff --git a/integrationTests/Lists/addOrUpdateListItem.spec.ts b/integrationTests/Lists/addOrUpdateListItem.spec.ts index b8df139..d6187df 100644 --- a/integrationTests/Lists/addOrUpdateListItem.spec.ts +++ b/integrationTests/Lists/addOrUpdateListItem.spec.ts @@ -1,5 +1,5 @@ import { ListItemRequest } from './../../src'; -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('addOrUpdateListItem', function () { @@ -16,10 +16,7 @@ describe('addOrUpdateListItem', function () { }); it('should add a list item', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_FIELD === undefined) { expect.fail('TEST_LIST_FIELD is not defined'); @@ -51,10 +48,7 @@ describe('addOrUpdateListItem', function () { }); it('should update a list item', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_FIELD === undefined) { expect.fail('TEST_LIST_FIELD is not defined'); @@ -98,7 +92,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 401 error when an invalid api key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const request = new ListItemRequest(1, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -109,10 +103,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 403 error when api key does not have access to the list', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const request = new ListItemRequest(1, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -123,10 +114,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 404 error when the list does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const request = new ListItemRequest(0, null, 'test', 1, '#000000'); const response = await client.addOrUpdateListItem(request); @@ -137,10 +125,7 @@ describe('addOrUpdateListItem', function () { }); it('should return a 404 error when the list item does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); @@ -164,10 +149,7 @@ describe('addOrUpdateListItem', function () { }); async function deleteListItem(listItemIds: string): Promise { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_ID === undefined) { return; diff --git a/integrationTests/Lists/deleteListItemById.spec.ts b/integrationTests/Lists/deleteListItemById.spec.ts index 2514777..22ad4b6 100644 --- a/integrationTests/Lists/deleteListItemById.spec.ts +++ b/integrationTests/Lists/deleteListItemById.spec.ts @@ -1,4 +1,5 @@ -import { ListItemRequest, OnspringClient } from '../../src'; +import { ListItemRequest } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('deleteListItemById', function () { @@ -6,10 +7,7 @@ describe('deleteListItemById', function () { this.retries(3); it('should delete a list item', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); @@ -42,7 +40,7 @@ describe('deleteListItemById', function () { }); it('should return a 401 error when deleting a list item and the API key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.deleteListItemById(1, '1'); expect(response.statusCode).to.equal(401); @@ -52,10 +50,7 @@ describe('deleteListItemById', function () { }); it('should return a 403 error when deleting a list item and the api key does not have access to update the list', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_ID_NO_ACCESS === undefined) { expect.fail('TEST_LIST_ID_NO_ACCESS is not defined'); @@ -77,10 +72,7 @@ describe('deleteListItemById', function () { }); it('should return a 404 error when deleting a list item and its list does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.deleteListItemById( 0, '3fa85f64-5717-4562-b3fc-2c963f66afa6' @@ -93,10 +85,7 @@ describe('deleteListItemById', function () { }); it('should return a 404 error when deleting a list item that does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_LIST_ID === undefined) { expect.fail('TEST_LIST_ID is not defined'); diff --git a/integrationTests/Ping/canConnect.spec.ts b/integrationTests/Ping/canConnect.spec.ts index 38fcae8..921f577 100644 --- a/integrationTests/Ping/canConnect.spec.ts +++ b/integrationTests/Ping/canConnect.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('canConnect', function () { @@ -6,10 +6,7 @@ describe('canConnect', function () { this.retries(3); it('should be able to connect to the API', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.canConnect(); expect(response).to.be.true; }); diff --git a/integrationTests/Records/deleteRecordById.spec.ts b/integrationTests/Records/deleteRecordById.spec.ts index b1c341e..611a208 100644 --- a/integrationTests/Records/deleteRecordById.spec.ts +++ b/integrationTests/Records/deleteRecordById.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; import { addRecord } from '../utils/addRecord'; @@ -7,19 +7,13 @@ describe('deleteRecordById', function () { this.retries(3); it('should delete a record', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } - const recordId = await addRecord( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const recordId = await addRecord(getClient()); const response = await client.deleteRecordById( parseInt(process.env.TEST_SURVEY_ID), recordId @@ -32,7 +26,7 @@ describe('deleteRecordById', function () { }); it('should return a 401 error when the API key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.deleteRecordById(1, 1); expect(response.statusCode).to.equal(401); @@ -42,10 +36,7 @@ describe('deleteRecordById', function () { }); it('should return a 403 error when the API key does not have access to the record', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -63,10 +54,7 @@ describe('deleteRecordById', function () { }); it('should return a 404 error when the record does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID === undefined) { expect.fail('TEST_APP_ID is not defined'); diff --git a/integrationTests/Records/deleteRecordsByIds.spec.ts b/integrationTests/Records/deleteRecordsByIds.spec.ts index 8d3c9d5..0065000 100644 --- a/integrationTests/Records/deleteRecordsByIds.spec.ts +++ b/integrationTests/Records/deleteRecordsByIds.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; import { addRecord } from '../utils/addRecord'; @@ -7,23 +7,14 @@ describe('deleteRecordsByIds', function () { this.retries(3); it('should delete records', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } - const recordId1 = await addRecord( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); - const recordId2 = await addRecord( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const recordId1 = await addRecord(getClient()); + const recordId2 = await addRecord(getClient()); const response = await client.deleteRecordsByIds( parseInt(process.env.TEST_SURVEY_ID), @@ -37,10 +28,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 400 error when no record ids are provided', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -58,7 +46,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 401 error when an invalid API key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.deleteRecordsByIds(1, [1]); @@ -69,10 +57,7 @@ describe('deleteRecordsByIds', function () { }); it('should return a 403 error when the API key does not have access to the app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/getRecordById.spec.ts b/integrationTests/Records/getRecordById.spec.ts index 82a9303..f551682 100644 --- a/integrationTests/Records/getRecordById.spec.ts +++ b/integrationTests/Records/getRecordById.spec.ts @@ -1,15 +1,13 @@ -import { OnspringClient, GetRecordRequest, DataFormat } from './../../src'; +import { GetRecordRequest, DataFormat } from './../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('getRecordById', function () { this.timeout(30000); this.retries(3); it('should get a record', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -47,10 +45,7 @@ describe('getRecordById', function () { }); it('should get a record when fieldIds and data format are passed as parameters', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -99,7 +94,7 @@ describe('getRecordById', function () { }); it('should return a 401 error when an invalid API key is used', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getRecordById(new GetRecordRequest(1, 1)); expect(response.statusCode).to.equal(401); @@ -109,10 +104,7 @@ describe('getRecordById', function () { }); it('should return a 404 error when an invalid record id is used', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); diff --git a/integrationTests/Records/getRecordsByAppId.spec.ts b/integrationTests/Records/getRecordsByAppId.spec.ts index 2ced6eb..af69c95 100644 --- a/integrationTests/Records/getRecordsByAppId.spec.ts +++ b/integrationTests/Records/getRecordsByAppId.spec.ts @@ -1,16 +1,14 @@ import { GetRecordsByAppIdRequest } from './../../src/models/GetRecordsByAppIdRequest'; -import { DataFormat, OnspringClient, PagingRequest } from './../../src'; +import { DataFormat, PagingRequest } from './../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('getRecordsByAppId', function () { this.timeout(30000); this.retries(3); it('should get records', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -56,10 +54,7 @@ describe('getRecordsByAppId', function () { }); it('should get records when fieldIds, paging information, and data format are passed as parameters', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -111,7 +106,7 @@ describe('getRecordsByAppId', function () { }); it('should return a 401 error when an invalid API key is passed', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const request = new GetRecordsByAppIdRequest(0); const response = await client.getRecordsByAppId(request); @@ -122,10 +117,7 @@ describe('getRecordsByAppId', function () { }); it('should return a 403 error when the api key does not have access to the app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/getRecordsByIds.spec.ts b/integrationTests/Records/getRecordsByIds.spec.ts index 3612990..43635e4 100644 --- a/integrationTests/Records/getRecordsByIds.spec.ts +++ b/integrationTests/Records/getRecordsByIds.spec.ts @@ -1,15 +1,13 @@ -import { OnspringClient, GetRecordsRequest, DataFormat } from './../../src'; +import { GetRecordsRequest, DataFormat } from './../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('getRecordsByIds', function () { this.timeout(30000); this.retries(3); it('should get records', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -52,10 +50,7 @@ describe('getRecordsByIds', function () { }); it('should get records when field ids and data format are passed as parameters', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -108,10 +103,7 @@ describe('getRecordsByIds', function () { }); it('should return a 400 error if too many record ids are passed', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const recordIds = new Array(101).fill(1); const request = new GetRecordsRequest(1, recordIds); const response = await client.getRecordsByIds(request); @@ -123,7 +115,7 @@ describe('getRecordsByIds', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const request = new GetRecordsRequest(1, [1]); const response = await client.getRecordsByIds(request); @@ -134,10 +126,7 @@ describe('getRecordsByIds', function () { }); it('should return a 403 error if the user does not have access to the app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/queryRecords.spec.ts b/integrationTests/Records/queryRecords.spec.ts index 22917e8..b45192a 100644 --- a/integrationTests/Records/queryRecords.spec.ts +++ b/integrationTests/Records/queryRecords.spec.ts @@ -1,22 +1,19 @@ import { DataFormat, FilterOperators, - OnspringClient, PagingRequest, QueryFilter, QueryRecordsRequest, } from '../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('queryRecords', function () { this.timeout(30000); this.retries(3); it('should return records', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -60,10 +57,7 @@ describe('queryRecords', function () { }); it('should return records when data format, paging information, and fields are passed as parameters', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -114,10 +108,7 @@ describe('queryRecords', function () { }); it('should return a 400 error if page size is invalid', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const request = new QueryRecordsRequest(1, '', [], DataFormat.Formatted, { pageNumber: 1, pageSize: 1001, @@ -132,7 +123,7 @@ describe('queryRecords', function () { }); it('should return a 401 error if the API key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const request = new QueryRecordsRequest(1, ''); const response = await client.queryRecords(request); @@ -143,10 +134,7 @@ describe('queryRecords', function () { }); it('should return a 403 error if the API key does not have access to the app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/Records/saveRecord.spec.ts b/integrationTests/Records/saveRecord.spec.ts index 065c6a2..e12e77b 100644 --- a/integrationTests/Records/saveRecord.spec.ts +++ b/integrationTests/Records/saveRecord.spec.ts @@ -1,6 +1,7 @@ import { StringRecordValue } from './../../src/models/StringRecordValue'; -import { OnspringClient, Record } from './../../src'; +import { Record } from './../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('saveRecord', function () { this.timeout(30000); @@ -15,10 +16,7 @@ describe('saveRecord', function () { }); it('should add a record when no record id is passed', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -52,10 +50,7 @@ describe('saveRecord', function () { }); it('should update a record when a record id is passed', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -106,10 +101,7 @@ describe('saveRecord', function () { }); it('should return a 400 error when field data is empty', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -126,7 +118,7 @@ describe('saveRecord', function () { }); it('should return a 401 error when the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.saveRecord(new Record(0, null, [])); expect(response.statusCode).to.equal(401); @@ -136,10 +128,7 @@ describe('saveRecord', function () { }); it('should return a 403 error when the api key does not have access to the app', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); @@ -155,10 +144,7 @@ describe('saveRecord', function () { }); it('should return a 404 error when the record id is not found', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -176,9 +162,6 @@ describe('saveRecord', function () { }); async function deleteRecord(appId: number, recordId: number): Promise { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); await client.deleteRecordById(appId, recordId); } diff --git a/integrationTests/Reports/getReportById.spec.ts b/integrationTests/Reports/getReportById.spec.ts index ea605ec..181f4e7 100644 --- a/integrationTests/Reports/getReportById.spec.ts +++ b/integrationTests/Reports/getReportById.spec.ts @@ -1,15 +1,13 @@ -import { DataFormat, OnspringClient, ReportDataType } from './../../src'; +import { DataFormat, ReportDataType } from './../../src'; import { expect } from 'chai'; +import { getClient } from '../mochaRootHooks'; describe('getReportById', function () { this.timeout(30000); this.retries(3); it('should return a report', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_REPORT === undefined) { expect.fail('TEST_REPORT is not defined'); @@ -40,10 +38,7 @@ describe('getReportById', function () { }); it('should return report data for a report with chart data when report data is requested', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_REPORT_WITH_CHART_DATA === undefined) { expect.fail('TEST_REPORT_WITH_CHART_DATA is not defined'); @@ -74,10 +69,7 @@ describe('getReportById', function () { }); it('should return chart data for a report with a chart when chart data is requested', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_REPORT_WITH_CHART_DATA === undefined) { expect.fail('TEST_REPORT_WITH_CHART_DATA is not defined'); @@ -110,10 +102,7 @@ describe('getReportById', function () { }); it('should return a 400 error if chart data is requested for a report without chart data', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_REPORT === undefined) { expect.fail('TEST_REPORT is not defined'); @@ -132,7 +121,7 @@ describe('getReportById', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getReportById(1); expect(response.statusCode).to.equal(401); @@ -142,10 +131,7 @@ describe('getReportById', function () { }); it('should return a 403 error if the api key does not have access to the report', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getReportById(1); expect(response.statusCode).to.equal(403); @@ -155,10 +141,7 @@ describe('getReportById', function () { }); it('should return a 404 error if the report does not exist', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); const response = await client.getReportById(0); expect(response.statusCode).to.equal(404); diff --git a/integrationTests/Reports/getReportsByAppId.spec.ts b/integrationTests/Reports/getReportsByAppId.spec.ts index b5e229f..1b82357 100644 --- a/integrationTests/Reports/getReportsByAppId.spec.ts +++ b/integrationTests/Reports/getReportsByAppId.spec.ts @@ -1,4 +1,4 @@ -import { OnspringClient } from '../../src'; +import { getClient } from '../mochaRootHooks'; import { expect } from 'chai'; describe('getReportsByAppId', function () { @@ -6,10 +6,7 @@ describe('getReportsByAppId', function () { this.retries(3); it('should return a list of reports', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -42,10 +39,7 @@ describe('getReportsByAppId', function () { }); it('should return a 400 error if page size is invalid', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); @@ -63,7 +57,7 @@ describe('getReportsByAppId', function () { }); it('should return a 401 error if the api key is invalid', async function () { - const client = new OnspringClient(process.env.API_BASE_URL!, 'invalid'); + const client = getClient('invalid'); const response = await client.getReportsByAppId(1); expect(response.statusCode).to.equal(401); @@ -73,10 +67,7 @@ describe('getReportsByAppId', function () { }); it('should return a 403 error if the api key does not have access to one of the reports', async function () { - const client = new OnspringClient( - process.env.API_BASE_URL!, - process.env.SANDBOX_API_KEY! - ); + const client = getClient(); if (process.env.TEST_APP_ID_NO_ACCESS === undefined) { expect.fail('TEST_APP_ID_NO_ACCESS is not defined'); diff --git a/integrationTests/mochaRootHooks.ts b/integrationTests/mochaRootHooks.ts index b5b0e31..ba706f9 100644 --- a/integrationTests/mochaRootHooks.ts +++ b/integrationTests/mochaRootHooks.ts @@ -1,5 +1,11 @@ import { type RootHookObject, type Context } from 'mocha'; import { expect } from 'chai'; +import http from 'http'; +import https from 'https'; +import { OnspringClient } from '../src'; + +const httpAgent = new http.Agent({ keepAlive: false }); +const httpsAgent = new https.Agent({ keepAlive: false }); export const mochaHooks = (): RootHookObject => { return { @@ -14,3 +20,11 @@ export const mochaHooks = (): RootHookObject => { }, }; }; + +export function getClient(apiKey?: string): OnspringClient { + return new OnspringClient( + process.env.API_BASE_URL!, + apiKey ?? process.env.SANDBOX_API_KEY!, + { httpAgent, httpsAgent } + ); +} diff --git a/integrationTests/utils/addRecord.ts b/integrationTests/utils/addRecord.ts index 97aea54..ddc357f 100644 --- a/integrationTests/utils/addRecord.ts +++ b/integrationTests/utils/addRecord.ts @@ -1,12 +1,7 @@ import { OnspringClient, Record, StringRecordValue } from '../../src'; import { expect } from 'chai'; -async function addRecord( - baseURL: string | undefined, - apiKey: string | undefined -): Promise { - const client = new OnspringClient(baseURL, apiKey); - +async function addRecord(client: OnspringClient): Promise { if (process.env.TEST_SURVEY_ID === undefined) { expect.fail('TEST_SURVEY_ID is not defined'); } From 0ef06144cebd2bdf019e95204ba0870f25026e34 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 20:10:46 -0500 Subject: [PATCH 7/7] chore: ignore dist folder from linting --- eslint.config.mjs | 2 +- package-lock.json | 66 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + tsconfig.cjs.json | 3 ++- tsconfig.esm.json | 3 ++- 5 files changed, 72 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 522c5d1..6ff663c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -8,7 +8,7 @@ const typeCheckedFiles = [ ]; export default [ - { ignores: ['coverage/', 'docs/', 'scripts/', 'eslint.config.*'] }, + { ignores: ['coverage/', 'docs/', 'scripts/', 'dist/', 'eslint.config.*'] }, eslint.configs.recommended, ...tseslint.configs.recommended, { diff --git a/package-lock.json b/package-lock.json index 685bd55..9a78364 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,7 @@ "mocha": "^11.3.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", + "rimraf": "^6.1.3", "sinon": "^15.2.0", "ts-node": "^10.9.2", "typedoc": "^0.28.20", @@ -5074,6 +5075,71 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/rimraf": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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/rimraf/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/rimraf/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/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", diff --git a/package.json b/package.json index e542e74..304bd7f 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "mocha": "^11.3.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", + "rimraf": "^6.1.3", "sinon": "^15.2.0", "ts-node": "^10.9.2", "typedoc": "^0.28.20", diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index 22ef327..f5ca65e 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -2,7 +2,8 @@ "extends": "./tsconfig.json", "compilerOptions": { "module": "CommonJS", - "outDir": "./dist/cjs" + "outDir": "./dist/cjs", + "rootDir": "./src" }, "include": ["src/**/*"] } diff --git a/tsconfig.esm.json b/tsconfig.esm.json index 5a3f726..2be1ec7 100644 --- a/tsconfig.esm.json +++ b/tsconfig.esm.json @@ -2,7 +2,8 @@ "extends": "./tsconfig.json", "compilerOptions": { "module": "ES6", - "outDir": "./dist/esm" + "outDir": "./dist/esm", + "rootDir": "./src" }, "include": ["src/**/*"] }