diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index d616432d3..000000000 --- a/.eslintignore +++ /dev/null @@ -1,9 +0,0 @@ -node_modules -dist -jest.setup.ts -jest.config.js -commitlint.config.js -.eslintrc.js -webpack.config.js -scripts -src/package.json \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index f708d1dbc..000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - env: { - browser: true, - node: true, - }, - extends: [require.resolve('tsjs/eslint-config')], - parserOptions: { - project: 'tsconfig.eslint.json', - tsconfigRootDir: __dirname, - sourceType: 'module', - }, - overrides: [ - { - files: ['**/*.spec.ts'], - env: { - jest: true, - }, - extends: ['plugin:jest/recommended'], - }, - ], -}; diff --git a/.github/actions/lint/action.yml b/.github/actions/lint/action.yml index f27700e08..cfa46a232 100644 --- a/.github/actions/lint/action.yml +++ b/.github/actions/lint/action.yml @@ -3,5 +3,5 @@ description: 'Check files respect ESLint & Prettier rules' runs: using: composite steps: - - run: npm run prettier:check && npm run eslint:check + - run: npm run lint shell: bash diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 000000000..408703d1d --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,4 @@ +printWidth: 120 +tabWidth: 4 +singleQuote: true +bracketSpacing: false diff --git a/commitlint.config.cjs b/commitlint.config.cjs deleted file mode 100644 index 3347cb961..000000000 --- a/commitlint.config.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = {extends: ['@commitlint/config-conventional']}; diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 000000000..97d85d543 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,5 @@ +const Configuration = { + extends: ['@commitlint/config-conventional'], +}; + +export default Configuration; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..0a494cb2c --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,52 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import eslintConfigPrettier from 'eslint-config-prettier'; +import eslintPluginJest from 'eslint-plugin-jest'; +import jsdoc from 'eslint-plugin-jsdoc'; +import {dirname} from 'node:path'; +import {fileURLToPath} from 'node:url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default tseslint.config( + {ignores: ['dist']}, + { + extends: [ + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + jsdoc.configs['flat/recommended-typescript'], + eslintConfigPrettier, + ], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: __dirname, + }, + }, + rules: { + '@typescript-eslint/no-unused-vars': [ + 'error', + { + args: 'all', + argsIgnorePattern: '^_', + caughtErrors: 'all', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + '@typescript-eslint/prefer-promise-reject-errors': 'warn', + '@typescript-eslint/only-throw-error': 'warn', + '@typescript-eslint/unbound-method': 'warn', + }, + }, + { + files: ['**/*.spec.ts'], + extends: [eslintPluginJest.configs['flat/recommended']], + rules: { + '@typescript-eslint/no-explicit-any': 'warn', + }, + }, + {files: ['**/*.js', '**/*.mjs'], ...tseslint.configs.disableTypeChecked}, +); diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..6c3a4363d --- /dev/null +++ b/jest.config.js @@ -0,0 +1,26 @@ +const unmockedDependencies = ['query-string-esm', 'decode-uri-component', 'split-on-first', 'filter-obj']; + +// /* +// * For a detailed explanation regarding each configuration property, visit: +// * https://jestjs.io/docs/configuration +// */ + +export default { + extensionsToTreatAsEsm: ['.ts'], + preset: 'ts-jest/presets/default-esm', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + '^#query-string': 'query-string-cjs', + }, + transform: { + '^.+\\.[tj]s$': ['ts-jest', {tsconfig: '/../tsconfig.test.json', useESM: true}], + }, + clearMocks: true, + collectCoverage: true, + collectCoverageFrom: ['/**/*.{ts,tsx}'], + coverageDirectory: 'coverage', + setupFiles: ['../jest.setup.ts'], + transformIgnorePatterns: [`node_modules/(?!(${unmockedDependencies.join('|')}))`], + rootDir: './src', + testEnvironment: 'node', +}; diff --git a/jest.config.mjs b/jest.config.mjs deleted file mode 100644 index 2e9f87c3c..000000000 --- a/jest.config.mjs +++ /dev/null @@ -1,37 +0,0 @@ -const unmockedDependencies = ['decode-uri-component', 'split-on-first', 'filter-obj']; - -// /* -// * For a detailed explanation regarding each configuration property, visit: -// * https://jestjs.io/docs/configuration -// */ - -/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ -export default { - projects: [ - { - displayName: 'ESLint', - runner: 'jest-runner-eslint', - watchPlugins: ['jest-runner-eslint/watch-fix'], - }, - { - displayName: 'ts-check and test', - extensionsToTreatAsEsm: ['.ts'], - preset: 'ts-jest/presets/default-esm', - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - '^#query-string': 'query-string-cjs', - }, - transform: { - '^.+\\.[tj]s$': ['ts-jest', {tsconfig: '/../tsconfig.test.json', useESM: true}], - }, - clearMocks: true, - collectCoverage: true, - collectCoverageFrom: ['/**/*.{ts,tsx}'], - coverageDirectory: 'coverage', - setupFiles: ['../jest.setup.ts'], - transformIgnorePatterns: [`node_modules/(?!(${unmockedDependencies.join('|')}))`], - rootDir: './src', - testEnvironment: 'node', - }, - ], -}; diff --git a/package-lock.json b/package-lock.json index fbfe546af..ad1897fb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,33 +17,29 @@ "devDependencies": { "@commitlint/cli": "19.5.0", "@commitlint/config-conventional": "19.5.0", + "@eslint/js": "9.9.1", + "@types/eslint__js": "8.42.3", "@types/jest": "29.5.13", - "@typescript-eslint/eslint-plugin": "7.18.0", - "@typescript-eslint/parser": "7.18.0", "abortcontroller-polyfill": "1.7.5", "cz-conventional-changelog": "3.3.0", - "eslint": "8.57.1", + "eslint": "9.9.1", "eslint-config-prettier": "9.1.0", - "eslint-config-typescript": "3.0.0", "eslint-plugin-jest": "28.8.3", - "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-jsdoc": "50.3.1", "husky": "9.1.6", "jest": "29.7.0", "jest-fetch-mock": "3.0.3", - "jest-runner-eslint": "2.2.0", "lint-staged": "15.2.10", "prettier": "3.3.3", "semantic-release": "24.1.2", "ts-jest": "29.2.5", - "tsjs": "5.0.1", "tslib": "2.7.0", - "typescript": "5.6.2" + "typescript": "5.6.2", + "typescript-eslint": "8.4.0" } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -56,8 +52,6 @@ }, "node_modules/@babel/code-frame": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "license": "MIT", "dependencies": { @@ -70,8 +64,6 @@ }, "node_modules/@babel/compat-data": { "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "license": "MIT", "engines": { @@ -80,8 +72,6 @@ }, "node_modules/@babel/core": { "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "license": "MIT", "dependencies": { @@ -111,8 +101,6 @@ }, "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": { @@ -121,8 +109,6 @@ }, "node_modules/@babel/generator": { "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dev": true, "license": "MIT", "dependencies": { @@ -137,8 +123,6 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "license": "MIT", "dependencies": { @@ -154,8 +138,6 @@ }, "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": { @@ -164,8 +146,6 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "license": "MIT", "dependencies": { @@ -178,8 +158,6 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "license": "MIT", "dependencies": { @@ -197,8 +175,6 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "license": "MIT", "engines": { @@ -207,8 +183,6 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "license": "MIT", "dependencies": { @@ -221,8 +195,6 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "license": "MIT", "engines": { @@ -231,8 +203,6 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "license": "MIT", "engines": { @@ -241,8 +211,6 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "license": "MIT", "engines": { @@ -251,8 +219,6 @@ }, "node_modules/@babel/helpers": { "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -265,8 +231,6 @@ }, "node_modules/@babel/highlight": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "license": "MIT", "dependencies": { @@ -281,8 +245,6 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", "dependencies": { @@ -294,8 +256,6 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -309,8 +269,6 @@ }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -319,8 +277,6 @@ }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", "engines": { @@ -329,8 +285,6 @@ }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { @@ -342,8 +296,6 @@ }, "node_modules/@babel/parser": { "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -358,8 +310,6 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { @@ -371,8 +321,6 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", "dependencies": { @@ -384,8 +332,6 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { @@ -397,8 +343,6 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", "dependencies": { @@ -413,8 +357,6 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -429,8 +371,6 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { @@ -442,8 +382,6 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { @@ -455,8 +393,6 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -471,8 +407,6 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { @@ -484,8 +418,6 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -497,8 +429,6 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { @@ -510,8 +440,6 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { @@ -523,8 +451,6 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -536,8 +462,6 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { @@ -549,8 +473,6 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", "dependencies": { @@ -565,8 +487,6 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { @@ -581,8 +501,6 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", "dev": true, "license": "MIT", "dependencies": { @@ -597,8 +515,6 @@ }, "node_modules/@babel/template": { "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -612,8 +528,6 @@ }, "node_modules/@babel/traverse": { "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -631,8 +545,6 @@ }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "license": "MIT", "engines": { @@ -641,8 +553,6 @@ }, "node_modules/@babel/types": { "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "license": "MIT", "dependencies": { @@ -656,15 +566,11 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", "optional": true, @@ -929,152 +835,61 @@ "node": ">=v18" } }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], "license": "MIT", - "peer": true, - "engines": { - "node": "^14 || ^16 || >=18" + "dependencies": { + "eslint-visitor-keys": "^3.3.0" }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, "engines": { - "node": "^14 || ^16 || >=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@csstools/selector-specificity": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "peer": true, + "license": "Apache-2.0", "engines": { - "node": "^14 || ^16 || >=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "postcss-selector-parser": "^6.0.13" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz", - "integrity": "sha512-922xqFsTpHs6D0BUiG4toiyPOMc8/jafnWKxz1KWgS4XzKPy2qXf1Pe6UFuNSCQqt6tOuhAWXBNuuyUhJmw9Vg==", + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", "dev": true, "license": "MIT", - "dependencies": { - "comment-parser": "1.3.1", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~3.1.0" - }, "engines": { - "node": "^14 || ^16 || ^17 || ^18 || ^19" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@eslint/config-array": { + "version": "0.18.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, - "license": "MIT", "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1082,7 +897,7 @@ "strip-json-comments": "^3.1.1" }, "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" @@ -1090,8 +905,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -1105,91 +918,29 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "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==", + "version": "9.9.1", "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" } }, - "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/@eslint/object-schema": { + "version": "2.1.4", "dev": true, "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1200,18 +951,20 @@ "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.3.0", "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/@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": { @@ -1227,8 +980,6 @@ }, "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": { @@ -1237,8 +988,6 @@ }, "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": { @@ -1251,8 +1000,6 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -1265,8 +1012,6 @@ }, "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": { @@ -1278,8 +1023,6 @@ }, "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": { @@ -1294,8 +1037,6 @@ }, "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": { @@ -1307,8 +1048,6 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -1317,8 +1056,6 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { @@ -1327,8 +1064,6 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1345,8 +1080,6 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -1361,8 +1094,6 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1378,8 +1109,6 @@ }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1391,15 +1120,11 @@ }, "node_modules/@jest/console/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/@jest/core": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", "dependencies": { @@ -1446,8 +1171,6 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -1462,8 +1185,6 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1479,8 +1200,6 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1492,15 +1211,11 @@ }, "node_modules/@jest/core/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/@jest/environment": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1515,8 +1230,6 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1529,8 +1242,6 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", "dependencies": { @@ -1542,8 +1253,6 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1560,8 +1269,6 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1576,8 +1283,6 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { @@ -1620,8 +1325,6 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -1636,8 +1339,6 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1653,8 +1354,6 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1666,15 +1365,11 @@ }, "node_modules/@jest/reporters/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { @@ -1686,8 +1381,6 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { @@ -1701,8 +1394,6 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", "dependencies": { @@ -1717,8 +1408,6 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", "dependencies": { @@ -1733,8 +1422,6 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", "dependencies": { @@ -1760,8 +1447,6 @@ }, "node_modules/@jest/transform/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -1776,8 +1461,6 @@ }, "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1793,8 +1476,6 @@ }, "node_modules/@jest/transform/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1806,15 +1487,11 @@ }, "node_modules/@jest/transform/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { @@ -1831,8 +1508,6 @@ }, "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -1847,8 +1522,6 @@ }, "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1864,8 +1537,6 @@ }, "node_modules/@jest/types/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1877,15 +1548,11 @@ }, "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "license": "MIT", "dependencies": { @@ -1899,8 +1566,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -1909,8 +1574,6 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "license": "MIT", "engines": { @@ -1919,15 +1582,11 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1935,24 +1594,8 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -1965,8 +1608,6 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -1975,8 +1616,6 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -2053,13 +1692,13 @@ "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.3.tgz", - "integrity": "sha512-o4WRoOJZlKqEEgj+i9CpcmnByvtzoUYC6I8PD2SA95M+BJ2x8h7oLcVOg9qcowWXBOdcTRsMZiwvM3EyLm9AfA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz", + "integrity": "sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.5.0" + "@octokit/types": "^13.6.0" }, "engines": { "node": ">= 18" @@ -2120,9 +1759,9 @@ } }, "node_modules/@octokit/request-error": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz", - "integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz", + "integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2133,9 +1772,9 @@ } }, "node_modules/@octokit/types": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", - "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.0.tgz", + "integrity": "sha512-CrooV/vKCXqwLa+osmHLIMUb87brpgUqlqkPGc6iE2wCkUvTrHiXFMhAKoDDaAAYJrtKtrFTgSQTg5nObBEaew==", "dev": true, "license": "MIT", "dependencies": { @@ -2157,8 +1796,6 @@ }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, "license": "MIT", "engines": { @@ -2167,8 +1804,6 @@ }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, "license": "MIT", "dependencies": { @@ -2180,15 +1815,11 @@ }, "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true, "license": "ISC" }, "node_modules/@pnpm/npm-conf": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, "license": "MIT", "dependencies": { @@ -2200,24 +1831,13 @@ "node": ">=12" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "dev": true, "license": "MIT" }, "node_modules/@semantic-release/commit-analyzer": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", - "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2239,8 +1859,6 @@ }, "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", - "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", "dev": true, "license": "ISC", "dependencies": { @@ -2252,8 +1870,6 @@ }, "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-parser": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", - "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", "dev": true, "license": "MIT", "dependencies": { @@ -2268,8 +1884,6 @@ }, "node_modules/@semantic-release/commit-analyzer/node_modules/meow": { "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, "license": "MIT", "engines": { @@ -2281,8 +1895,6 @@ }, "node_modules/@semantic-release/error": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", "engines": { @@ -2320,57 +1932,8 @@ "semantic-release": ">=24.1.0" } }, - "node_modules/@semantic-release/github/node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@semantic-release/npm": { "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", - "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", "dev": true, "license": "MIT", "dependencies": { @@ -2397,8 +1960,6 @@ }, "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", "engines": { @@ -2409,9 +1970,7 @@ } }, "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", - "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", + "version": "9.3.1", "dev": true, "license": "MIT", "dependencies": { @@ -2422,7 +1981,7 @@ "human-signals": "^8.0.0", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", + "npm-run-path": "^5.2.0", "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", @@ -2437,8 +1996,6 @@ }, "node_modules/@semantic-release/npm/node_modules/figures": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "license": "MIT", "dependencies": { @@ -2453,8 +2010,6 @@ }, "node_modules/@semantic-release/npm/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "license": "MIT", "dependencies": { @@ -2468,8 +2023,6 @@ }, "node_modules/@semantic-release/npm/node_modules/get-stream": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { @@ -2485,8 +2038,6 @@ }, "node_modules/@semantic-release/npm/node_modules/human-signals": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2495,8 +2046,6 @@ }, "node_modules/@semantic-release/npm/node_modules/is-stream": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", "engines": { @@ -2507,9 +2056,7 @@ } }, "node_modules/@semantic-release/npm/node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { @@ -2519,16 +2066,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, "engines": { "node": ">=18" }, @@ -2536,75 +2077,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/@semantic-release/release-notes-generator": { + "version": "14.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz", - "integrity": "sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^8.0.0", - "conventional-changelog-writer": "^8.0.0", - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.0.0", - "debug": "^4.0.0", - "get-stream": "^7.0.0", - "import-from-esm": "^1.0.3", - "into-stream": "^7.0.0", - "lodash-es": "^4.17.21", - "read-package-up": "^11.0.0" + "dependencies": { + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-package-up": "^11.0.0" }, "engines": { "node": ">=20.8.1" @@ -2615,8 +2102,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", - "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", "dev": true, "license": "ISC", "dependencies": { @@ -2628,8 +2113,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-parser": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", - "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", "dev": true, "license": "MIT", "dependencies": { @@ -2644,8 +2127,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, "license": "MIT", "engines": { @@ -2657,8 +2138,6 @@ }, "node_modules/@semantic-release/release-notes-generator/node_modules/meow": { "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, "license": "MIT", "engines": { @@ -2670,15 +2149,11 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "license": "MIT", "engines": { @@ -2703,8 +2178,6 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2713,8 +2186,6 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2723,8 +2194,6 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { @@ -2737,8 +2206,6 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "license": "MIT", "dependencies": { @@ -2747,8 +2214,6 @@ }, "node_modules/@types/babel__template": { "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { @@ -2758,8 +2223,6 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "license": "MIT", "dependencies": { @@ -2776,21 +2239,30 @@ "@types/node": "*" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/@types/eslint": { + "version": "9.6.1", "dev": true, "license": "MIT", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint__js": { + "version": "8.42.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2799,15 +2271,11 @@ }, "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": { @@ -2816,8 +2284,6 @@ }, "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": { @@ -2837,37 +2303,11 @@ }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true, "license": "MIT" }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/@types/node": { - "version": "22.5.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", - "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "version": "22.5.2", "dev": true, "license": "MIT", "dependencies": { @@ -2876,75 +2316,21 @@ }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true, "license": "MIT" }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@types/semver": { "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "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": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "dev": true, "license": "MIT" }, - "node_modules/@types/vfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", - "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/unist": "*", - "@types/vfile-message": "*" - } - }, - "node_modules/@types/vfile-message": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-1.0.1.tgz", - "integrity": "sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/unist": "*" - } - }, "node_modules/@types/yargs": { "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", "dependencies": { @@ -2953,38 +2339,34 @@ }, "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": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "version": "8.4.0", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.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": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2993,27 +2375,25 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "version": "8.4.0", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3022,17 +2402,15 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "version": "8.4.0", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -3040,27 +2418,22 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "version": "8.4.0", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -3068,13 +2441,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "version": "8.4.0", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -3082,23 +2453,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "version": "8.4.0", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -3110,65 +2479,83 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "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/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "version": "8.4.0", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "version": "8.4.0", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/types": "8.4.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || >=20.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.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", "dev": true, - "license": "ISC" + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/abortcontroller-polyfill": { "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", "dev": true, "license": "MIT" }, "node_modules/acorn": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "license": "MIT", "bin": { @@ -3180,8 +2567,6 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -3203,8 +2588,6 @@ }, "node_modules/aggregate-error": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "license": "MIT", "dependencies": { @@ -3237,8 +2620,6 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3251,23 +2632,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "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": { @@ -3276,8 +2642,6 @@ }, "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": { @@ -3289,15 +2653,11 @@ }, "node_modules/any-promise": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, "license": "MIT" }, "node_modules/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": { @@ -3308,405 +2668,493 @@ "node": ">= 8" } }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/argv-formatter": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", "dev": true, "license": "MIT" }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "node_modules/array-ify": { + "version": "1.0.0", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">= 4.0.0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/babel-jest": { + "version": "29.7.0", "dev": true, "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "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==", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, "engines": { "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "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/before-after-hook": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bl": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "node_modules/braces": { + "version": "3.0.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "node_modules/browserslist": { + "version": "4.23.3", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "node_modules/bs-logger": { + "version": "0.2.6", "dev": true, "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "node_modules/bser": { + "version": "2.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "node_modules/buffer": { + "version": "5.7.1", "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", - "engines": { - "node": ">=4" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "node_modules/buffer-from": { + "version": "1.1.2", "dev": true, "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/cachedir": { + "version": "2.3.0", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">=6" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/callsites": { + "version": "3.1.0", "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, + "license": "MIT", "engines": { - "node": ">= 4.5.0" + "node": ">=6" } }, - "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "engines": { + "node": ">=6" } }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "node_modules/caniuse-lite": { + "version": "1.0.30001655", "dev": true, - "license": "ISC" + "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/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/chalk": { + "version": "5.3.0", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/char-regex": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/chardet": { + "version": "0.7.0", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.16" }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -3719,10 +3167,8 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/babel-jest/node_modules/chalk": { + "node_modules/cli-highlight/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -3736,10 +3182,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-jest/node_modules/color-convert": { + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3749,656 +3203,611 @@ "node": ">=7.0.0" } }, - "node_modules/babel-jest/node_modules/color-name": { + "node_modules/cli-highlight/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/cli-spinners": { + "version": "2.9.2", "dev": true, "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "node_modules/cli-table3": { + "version": "0.6.5", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "string-width": "^4.2.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, "license": "MIT" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/cli-width": { + "version": "3.0.0", "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": "ISC", + "engines": { + "node": ">= 10" + } }, - "node_modules/before-after-hook": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", - "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "node_modules/cliui": { + "version": "8.0.1", "dev": true, - "license": "Apache-2.0" + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/clone": { + "version": "1.0.4", "dev": true, "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "engines": { + "node": ">=0.8" } }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "node_modules/co": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", "dev": true, "license": "MIT" }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/color-convert": { + "version": "1.9.3", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "color-name": "1.1.3" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "node_modules/commitizen": { + "version": "4.3.0", "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": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", + "dedent": "0.7.0", + "detect-indent": "6.1.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.5", + "is-utf8": "^0.2.1", + "lodash": "4.17.21", + "minimist": "1.2.7", + "strip-bom": "4.0.0", + "strip-json-comments": "3.1.1" }, "bin": { - "browserslist": "cli.js" + "commitizen": "bin/commitizen", + "cz": "bin/git-cz", + "git-cz": "bin/git-cz" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 12" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/commitizen/node_modules/minimist": { + "version": "1.2.7", "dev": true, "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/compare-func": { + "version": "2.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "node-int64": "^0.4.0" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/conventional-changelog-writer": { + "version": "8.0.0", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "@types/semver": "^7.5.5", + "conventional-commits-filter": "^5.0.0", + "handlebars": "^4.7.7", + "meow": "^13.0.0", + "semver": "^7.5.2" }, - "engines": { - "node": ">= 0.4" + "bin": { + "conventional-changelog-writer": "dist/cli/index.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=18" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "13.2.0", "dev": true, "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-commits-filter": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, "license": "MIT", "dependencies": { - "caller-callsite": "^2.0.0" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" }, "engines": { - "node": ">=4" + "node": ">=16" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/convert-hrtime": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/convert-source-map": { + "version": "2.0.0", "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.38.1", + "hasInstallScript": true, "license": "MIT", - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==", + "node_modules/core-util-is": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", "dev": true, "license": "MIT", "dependencies": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "node_modules/cosmiconfig-typescript-loader": { + "version": "5.0.0", "dev": true, "license": "MIT", + "dependencies": { + "jiti": "^1.19.1" + }, "engines": { - "node": ">=4" + "node": ">=v16" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=8.2", + "typescript": ">=4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001662", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz", - "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==", - "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/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "node_modules/create-jest": { + "version": "29.7.0", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/character-entities-html4": { + "node_modules/create-jest/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.1.8", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "node-fetch": "^2.6.12" } }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "node_modules/crypto-random-string": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", "dev": true, - "license": "MIT" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" } }, - "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { + "version": "3.2.1", "dev": true, "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/cz-conventional-changelog/node_modules/chalk": { + "version": "2.4.2", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=0.8.0" } }, - "node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "node_modules/cz-conventional-changelog/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cz-conventional-changelog/node_modules/supports-color": { + "version": "5.5.0", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "5.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, "license": "MIT", "engines": { @@ -4408,680 +3817,474 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/debug": { + "version": "4.3.6", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "dev": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "bin": { - "highlight": "bin/highlight" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/cli-highlight/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/decode-uri-component": { + "version": "0.2.2", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10" } }, - "node_modules/cli-highlight/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/dedent": { + "version": "0.7.0", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } + "license": "MIT" }, - "node_modules/cli-highlight/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/deep-extend": { + "version": "0.6.0", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=4.0.0" } }, - "node_modules/cli-highlight/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/deep-is": { + "version": "0.1.4", "dev": true, "license": "MIT" }, - "node_modules/cli-highlight/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/deepmerge": { + "version": "4.3.1", "dev": true, "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cli-highlight/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "node_modules/defaults": { + "version": "1.0.4", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "clone": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "node_modules/detect-file": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">=0.10.0" } }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "node_modules/detect-indent": { + "version": "6.1.0", "dev": true, "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/detect-newline": { + "version": "3.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "node_modules/diff-sequences": { + "version": "29.6.3", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/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": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/dot-prop": { + "version": "5.3.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/duplexer2": { + "version": "0.1.4", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10" + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/clone-regexp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", - "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "is-regexp": "^1.0.0", - "is-supported-regexp-flag": "^1.0.0" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/electron-to-chromium": { + "version": "1.5.13", "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } + "license": "ISC" }, - "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "node_modules/emittery": { + "version": "0.13.1", "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "node_modules/emoji-regex": { + "version": "8.0.0", "dev": true, "license": "MIT" }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "node_modules/emojilib": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/env-ci": { + "version": "11.1.0", "dev": true, "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "execa": "^8.0.0", + "java-properties": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17 || >=20.6.1" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/env-paths": { + "version": "2.2.1", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">=6" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/environment": { + "version": "1.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "node_modules/error-ex": { + "version": "1.3.2", "dev": true, "license": "MIT", - "peer": true + "dependencies": { + "is-arrayish": "^0.2.1" + } }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true, "license": "MIT" }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/escalade": { + "version": "3.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/comment-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", - "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 12.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commitizen": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.0.tgz", - "integrity": "sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==", + "node_modules/eslint": { + "version": "9.9.1", "dev": true, "license": "MIT", "dependencies": { - "cachedir": "2.3.0", - "cz-conventional-changelog": "3.3.0", - "dedent": "0.7.0", - "detect-indent": "6.1.0", - "find-node-modules": "^2.1.2", - "find-root": "1.1.0", - "fs-extra": "9.1.0", - "glob": "7.2.3", - "inquirer": "8.2.5", - "is-utf8": "^0.2.1", - "lodash": "4.17.21", - "minimist": "1.2.7", - "strip-bom": "4.0.0", - "strip-json-comments": "3.1.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { - "commitizen": "bin/commitizen", - "cz": "bin/git-cz", - "git-cz": "bin/git-cz" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 12" - } - }, - "node_modules/commitizen/node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "license": "MIT", + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "node_modules/eslint-config-prettier": { + "version": "9.1.0", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.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/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/eslint-plugin-jest": { + "version": "28.8.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", + "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", "dev": true, "license": "MIT", "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "engines": { - "node": ">=16" + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "node_modules/eslint-plugin-jsdoc": { + "version": "50.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.3.1.tgz", + "integrity": "sha512-SY9oUuTMr6aWoJggUS40LtMjsRzJPB5ZT7F432xZIHK3EfHF+8i48GbUBpwanrtlL9l1gILNTHK9o8gEhYLcKA==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "compare-func": "^2.0.0" + "@es-joy/jsdoccomment": "~0.48.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.6", + "escape-string-regexp": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.6.0", + "parse-imports": "^2.1.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "synckit": "^0.9.1" }, "engines": { - "node": ">=16" + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/conventional-changelog-writer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", - "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", + "node_modules/eslint-plugin-jsdoc/node_modules/@es-joy/jsdoccomment": { + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", + "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", "dev": true, "license": "MIT", "dependencies": { - "@types/semver": "^7.5.5", - "conventional-commits-filter": "^5.0.0", - "handlebars": "^4.7.7", - "meow": "^13.0.0", - "semver": "^7.5.2" - }, - "bin": { - "conventional-changelog-writer": "dist/cli/index.js" + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { - "node": ">=18" + "node": ">=16" } }, - "node_modules/conventional-changelog-writer/node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "node_modules/eslint-plugin-jsdoc/node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12.0.0" } }, - "node_modules/conventional-commit-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", - "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-commits-filter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", - "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "node_modules/eslint-plugin-jsdoc/node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12.0.0" } }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" - }, - "engines": { - "node": ">=16" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/eslint-scope": { + "version": "8.0.2", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/eslint" } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", - "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", "dev": true, - "license": "MIT", - "dependencies": { - "jiti": "^1.19.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=v16" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=8.2", - "typescript": ">=4" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/create-jest/node_modules/ansi-styles": { + "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -5094,10 +4297,8 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/create-jest/node_modules/chalk": { + "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -5111,10 +4312,8 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/create-jest/node_modules/color-convert": { + "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5124,60 +4323,52 @@ "node": ">=7.0.0" } }, - "node_modules/create-jest/node_modules/color-name": { + "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^1.0.1" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { "node": ">=10" }, @@ -5185,531 +4376,407 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=12 || >=16" + "node": ">=8" } }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "node_modules/espree": { + "version": "10.1.0", "dev": true, - "license": "MIT", - "peer": true, + "license": "BSD-2-Clause", "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/esprima": { + "version": "4.0.1", "dev": true, - "license": "MIT", - "peer": true, + "license": "BSD-2-Clause", "bin": { - "cssesc": "bin/cssesc" + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cz-conventional-changelog": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", - "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "node_modules/esquery": { + "version": "1.6.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "node": ">=0.10" } }, - "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/esrecurse": { + "version": "4.3.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^1.9.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/cz-conventional-changelog/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/estraverse": { + "version": "5.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/esutils": { + "version": "2.0.3", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/cz-conventional-changelog/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/cz-conventional-changelog/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/execa": { + "version": "8.0.1", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dargs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", - "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", - "dev": true, - "license": "MIT", + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/exit": { + "version": "0.1.2", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/expand-tilde": { + "version": "2.0.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "homedir-polyfill": "^1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "node_modules/expect": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/exponential-backoff": { + "version": "3.1.1", + "license": "Apache-2.0" + }, + "node_modules/external-editor": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=4" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/fast-glob": { + "version": "3.3.2", "dev": true, "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6.0" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=0.10" + "node": ">= 6" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "dev": true, "license": "MIT" }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } + "license": "MIT" }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", "dev": true, "license": "MIT" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/fastq": { + "version": "1.17.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/fb-watchman": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bser": "2.1.1" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/figures": { + "version": "3.2.0", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", "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": ">=0.8.0" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/file-entry-cache": { + "version": "8.0.0", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/fill-range": { + "version": "7.1.1", "dev": true, "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, + "node_modules/filter-obj": { + "version": "1.1.0", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "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==", + "node_modules/find-node-modules": { + "version": "2.1.3", "dev": true, "license": "MIT", "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" + "findup-sync": "^4.0.0", + "merge": "^2.1.1" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/find-root": { + "version": "1.1.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "node_modules/find-up-simple": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", + "engines": { + "node": ">=18" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "node_modules/find-versions": { + "version": "6.0.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "domelementtype": "1" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "node_modules/findup-sync": { + "version": "4.0.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/flat-cache": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "node_modules/flatted": { + "version": "3.3.1", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } + "license": "ISC" }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "node_modules/from2": { + "version": "2.3.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } }, - "node_modules/duplexer2/node_modules/readable-stream": { + "node_modules/from2/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -5722,254 +4789,195 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/duplexer2/node_modules/safe-buffer": { + "node_modules/from2/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, - "node_modules/duplexer2/node_modules/string_decoder": { + "node_modules/from2/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "node_modules/fs-extra": { + "version": "9.1.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.27", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz", - "integrity": "sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==", + "node_modules/fs.realpath": { + "version": "1.0.0", "dev": true, "license": "ISC" }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/fsevents": { + "version": "2.3.3", "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/emojilib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/entities": { + "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/env-ci": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz", - "integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==", "dev": true, "license": "MIT", - "dependencies": { - "execa": "^8.0.0", - "java-properties": "^1.0.2" - }, - "engines": { - "node": "^18.17 || >=20.6.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/env-ci/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/function-timeout": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, "engines": { - "node": ">=16.17" + "node": ">=18" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", "dev": true, "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/env-ci/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "node_modules/get-caller-file": { + "version": "2.0.5", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "engines": { - "node": ">=16.17.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/env-ci/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/get-package-type": { + "version": "0.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/get-stream": { + "version": "8.0.1", "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/git-log-parser": { + "version": "1.2.1", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "0.6.8" + } + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "through2": "~2.0.0" } }, - "node_modules/env-ci/node_modules/path-key": { + "node_modules/git-raw-commits": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" } }, - "node_modules/env-ci/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/glob": { + "version": "7.2.3", "dev": true, "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=14" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/env-ci/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/glob-parent": { + "version": "6.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, "engines": { "node": ">=18" }, @@ -5977,710 +4985,441 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/global-modules": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/global-prefix": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } + "license": "ISC" }, - "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" + "isexe": "^2.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "which": "bin/which" } }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "node_modules/globals": { + "version": "14.0.0", "dev": true, "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "node": ">=18" }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/globby/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" }, "bin": { - "eslint": "bin/eslint.js" + "handlebars": "bin/handlebars" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "node": ">=0.4.7" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/eslint-config-typescript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-typescript/-/eslint-config-typescript-3.0.0.tgz", - "integrity": "sha512-CwC2cQ29OLE1OUw0k+Twpc6wpCdenG8rrErl89sWrzmMpWfkulyeQS1HJhhjU0B3Tb4k41zdei4LtX26x5m60Q==", + "node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "peerDependencies": { - "@typescript-eslint/eslint-plugin": ">=1.8.0", - "@typescript-eslint/parser": ">=1.8.0", - "eslint": ">=6.0.0", - "typescript": "*" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/hasown": { + "version": "2.0.2", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.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==", + "node_modules/highlight.js": { + "version": "10.7.3", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "license": "BSD-3-Clause", + "engines": { + "node": "*" } }, - "node_modules/eslint-module-utils": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", - "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "node_modules/homedir-polyfill": { + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "parse-passwd": "^1.0.0" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/hook-std": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", - "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", + "node_modules/hosted-git-info": { + "version": "7.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.9.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "ISC" }, - "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/html-escaper": { + "version": "2.0.2", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } + "license": "MIT" }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": "*" + "node": ">= 14" } }, - "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/human-signals": { + "version": "5.0.0", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "28.8.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", - "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", + "node_modules/husky": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + "bin": { + "husky": "bin.js" }, "engines": { - "node": "^16.10.0 || ^18.12.0 || >=20.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", - "jest": "*" + "node": ">=18" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "39.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.9.1.tgz", - "integrity": "sha512-Rq2QY6BZP2meNIs48aZ3GlIlJgBqFCmR55+UBvaDkA3ZNQ0SvQXOs2QKkubakEijV8UbIVbVZKsOVN8G3MuqZw==", + "node_modules/iconv-lite": { + "version": "0.4.24", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@es-joy/jsdoccomment": "~0.36.1", - "comment-parser": "1.3.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.4.0", - "semver": "^7.3.8", - "spdx-expression-parse": "^3.0.1" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^14 || ^16 || ^17 || ^18 || ^19" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-prefer-arrow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", - "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", + "node_modules/ieee754": { + "version": "1.2.1", "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=2.0.0" - } + "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": "BSD-3-Clause" }, - "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "node_modules/ignore": { + "version": "5.3.2", "dev": true, "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" - }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "node": ">= 4" } }, - "node_modules/eslint-plugin-react": { - "version": "7.36.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", - "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", + "node_modules/import-fresh": { + "version": "3.3.0", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", - "string.prototype.repeat": "^1.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "node": ">=4" } }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/import-from-esm": { + "version": "1.3.4", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-react/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" + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.20" } }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/import-local": { + "version": "3.2.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "*" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", "dev": true, "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint-plugin-react/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/imurmurhash": { + "version": "0.1.4", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">=0.8.19" } }, - "node_modules/eslint-plugin-unused-imports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", - "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", + "node_modules/indent-string": { + "version": "5.0.0", "dev": true, "license": "MIT", - "dependencies": { - "eslint-rule-composer": "^0.3.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "6 - 7", - "eslint": "8" + "node": ">=12" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "node_modules/index-to-position": { + "version": "0.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/inflight": { + "version": "1.0.6", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/inherits": { + "version": "2.0.4", "dev": true, - "license": "Apache-2.0", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/inquirer": { + "version": "8.2.5", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=12.0.0" } }, - "node_modules/eslint/node_modules/ansi-styles": { + "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -6693,21 +5432,8 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { @@ -6721,10 +5447,8 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { + "node_modules/inquirer/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6734,11749 +5458,4684 @@ "node": ">=7.0.0" } }, - "node_modules/eslint/node_modules/color-name": { + "node_modules/inquirer/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/into-stream": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/is-arrayish": { + "version": "0.2.1", "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/is-core-module": { + "version": "2.15.1", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/is-extglob": { + "version": "2.1.1", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/is-generator-fn": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==", + "node_modules/is-glob": { + "version": "4.0.3", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.10.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/is-interactive": { + "version": "1.0.0", "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/is-number": { + "version": "7.0.0", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=0.12.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/is-obj": { + "version": "2.0.0", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/is-path-inside": { + "version": "3.0.3", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/is-plain-obj": { + "version": "4.1.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "node_modules/is-stream": { + "version": "3.0.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "text-extensions": "^2.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha512-/J0Q8CvOvlAdpvhfkD/WnTQ4H1eU0exze2nFGPj/RSC7jpQ0NkKe2r28T5eMkhEEs+fzepMZNy1kVRKNlC04nQ==", + "node_modules/is-utf8": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-windows": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "clone-regexp": "^1.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/isarray": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "license": "MIT" }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.17 || >=20.6.1" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "is-descriptor": "^0.1.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": ">=0.10.0" + "node": ">=10" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "is-extendable": "^0.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/istanbul-reports": { + "version": "3.1.7", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "homedir-polyfill": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "license": "Apache-2.0" + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/java-properties": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/jest": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/jest-changed-files": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", "dev": true, "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", "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.4" + "path-key": "^3.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=8" } }, - "node_modules/fast-glob/node_modules/glob-parent": { + "node_modules/jest-changed-files/node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "node_modules/jest-changed-files/node_modules/signal-exit": { + "version": "3.0.7", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/jest-changed-files/node_modules/strip-final-newline": { + "version": "2.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "node": ">=6" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/jest-circus": { + "version": "29.7.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/dedent": { + "version": "1.5.3", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/find-node-modules": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", - "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "findup-sync": "^4.0.0", - "merge": "^2.1.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "node_modules/jest-config": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/find-versions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", - "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "semver-regex": "^4.0.5", - "super-regex": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=7.0.0" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/jest-diff": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/jest-docblock": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/from2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/jest-each": { + "version": "29.7.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/jest-fetch-mock": { + "version": "3.0.3", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" } }, - "node_modules/function-timeout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", - "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "node_modules/jest-get-type": { + "version": "29.6.3", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/jest-haste-map": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "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" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "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==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", "dev": true, "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=6.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8.0.0" + "node": ">=7.0.0" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util": { + "version": "29.7.0", "dev": true, "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/git-log-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", - "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-mock": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "0.6.8" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dev": true, - "license": "ISC", - "dependencies": { - "through2": "~2.0.0" - } - }, - "node_modules/git-raw-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", - "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", "dev": true, "license": "MIT", - "dependencies": { - "dargs": "^8.0.0", - "meow": "^12.0.1", - "split2": "^4.0.0" + "engines": { + "node": ">=6" }, - "bin": { - "git-raw-commits": "cli.mjs" + "peerDependencies": { + "jest-resolve": "*" }, - "engines": { - "node": ">=16" + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "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", + "node_modules/jest-regex-util": { + "version": "29.6.3", "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/jest-resolve": { + "version": "29.7.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true, - "license": "BSD" - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "ini": "4.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/jest-runner": { + "version": "29.7.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, - "bin": { - "which": "bin/which" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", "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" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "node_modules/jest-runtime": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=0.6.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "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/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.4.7" + "node": ">=10" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-snapshot": { + "version": "29.7.0", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "color-convert": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-util": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-validate": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "parse-passwd": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hook-std": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", - "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/hosted-git-info": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz", - "integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==", + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^10.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=7.0.0" } }, - "node_modules/hosted-git-info/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/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "node_modules/jest-watcher": { + "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 14" + "node": ">=7.0.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "license": "MIT" }, - "node_modules/husky": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", - "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", + "node_modules/jest-worker": { + "version": "29.7.0", "dev": true, "license": "MIT", - "bin": { - "husky": "bin.js" + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/jiti": { + "version": "1.21.6", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/jsesc": { + "version": "2.5.2", "dev": true, "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { "node": ">=4" } }, - "node_modules/import-from-esm": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", - "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "import-meta-resolve": "^4.0.0" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=16.20" + "node": ">=6" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "node_modules/jsonfile": { + "version": "6.1.0", "dev": true, "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, - "license": "MIT", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "JSONStream": "bin.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "node_modules/keyv": { + "version": "4.5.4", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/kleur": { + "version": "3.0.3", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.19" + "node": ">=6" } }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "node_modules/leven": { + "version": "3.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/index-to-position": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", - "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "node_modules/lines-and-columns": { + "version": "1.2.4", "dev": true, "license": "MIT" }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/lint-staged": { + "version": "15.2.10", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", + "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "node_modules/listr2": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, "license": "MIT" }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/into-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", - "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "node_modules/listr2/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": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "node_modules/load-json-file": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "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", "engines": { "node": ">=4" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "p-locate": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "node_modules/lodash": { + "version": "4.17.21", "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/lodash-es": { + "version": "4.17.21", "dev": true, - "license": "MIT", - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "license": "MIT" }, - "node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.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/log-symbols/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/log-update/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "license": "MIT" }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/log-update/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/log-update/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "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" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/log-update/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": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "node_modules/longest": { + "version": "2.0.1", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/make-dir": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "semver": "^7.5.3" }, - "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" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/make-error": { + "version": "1.3.6", "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "ISC" }, - "node_modules/is-supported-regexp-flag": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", - "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", + "node_modules/makeerror": { + "version": "1.0.12", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/marked": { + "version": "12.0.2", "dev": true, "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" + "bin": { + "marked": "bin/marked.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 18" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "node_modules/marked-terminal": { + "version": "7.1.0", "dev": true, "license": "MIT", "dependencies": { - "text-extensions": "^2.0.0" + "ansi-escapes": "^7.0.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <14" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "environment": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=16.10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "node_modules/merge": { + "version": "2.1.1", "dev": true, "license": "MIT" }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/micromatch": { + "version": "4.0.8", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.6" } }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "node_modules/mime": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", + "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "bin": { + "mime": "bin/cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=16" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "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==", + "node_modules/minimatch": { + "version": "3.1.2", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "node_modules/minimist": { + "version": "1.2.8", "dev": true, "license": "MIT", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "node_modules/ms": { + "version": "2.1.2", "dev": true, "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/issue-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", - "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "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-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "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.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/mute-stream": { + "version": "0.0.8", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "ISC" }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/mz": { + "version": "2.7.0", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/natural-compare": { + "version": "1.4.0", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "license": "MIT" }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/neo-async": { + "version": "2.6.2", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "license": "MIT" }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/nerf-dart": { + "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/node-emoji": { + "version": "2.1.3", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" }, "engines": { - "node": "*" - } - }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" + "node": ">=18" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/node-fetch": { + "version": "2.7.0", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "node-notifier": { + "encoding": { "optional": true } } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/node-int64": { + "version": "0.4.0", "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-fetch-mock": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", - "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-fetch": "^3.0.4", - "promise-polyfill": "^8.1.3" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner-eslint": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jest-runner-eslint/-/jest-runner-eslint-2.2.0.tgz", - "integrity": "sha512-uR0kS/PCwCybIFh1yvbJSr3ajmusrueO8vnA4H3ItTpKCoYpQ9k2j2COrR1rdb4MnnbVBczrodCChrcJ/Hq3AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "create-jest-runner": "^0.11.2", - "dot-prop": "^6.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "eslint": "^7 || ^8", - "jest": "^27 || ^28 || ^29" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/jest-runner-eslint/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/jest-runner-eslint/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner-eslint/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runner-eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner-eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner-eslint/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/jest-runner-eslint/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-runner-eslint/node_modules/create-jest-runner": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/create-jest-runner/-/create-jest-runner-0.11.2.tgz", - "integrity": "sha512-6lwspphs4M1PLKV9baBNxHQtWVBPZuDU8kAP4MyrVWa6aEpEcpi2HZeeA6WncwaqgsGNXpP0N2STS7XNM/nHKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "jest-worker": "^28.0.2", - "throat": "^6.0.1" - }, - "bin": { - "create-jest-runner": "generator/index.js" - }, - "peerDependencies": { - "@jest/test-result": "^28.0.0", - "jest-runner": "^28.0.0" - }, - "peerDependenciesMeta": { - "@jest/test-result": { - "optional": true - }, - "jest-runner": { - "optional": true - } - } - }, - "node_modules/jest-runner-eslint/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runner-eslint/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-runner-eslint/node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-runner-eslint/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner-eslint/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", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner-eslint/node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-runner-eslint/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", - "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/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.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lint-staged": { - "version": "15.2.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", - "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "~5.3.0", - "commander": "~12.1.0", - "debug": "~4.3.6", - "execa": "~8.0.1", - "lilconfig": "~3.1.2", - "listr2": "~8.2.4", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.5.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/listr2/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/listr2/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/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/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.upperfirst": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", - "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/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/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/longest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", - "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/marked": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", - "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/marked-terminal": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz", - "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "chalk": "^5.3.0", - "cli-highlight": "^2.1.11", - "cli-table3": "^0.6.5", - "node-emoji": "^2.1.3", - "supports-hyperlinks": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "marked": ">=1 <14" - } - }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-compact": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", - "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", - "dev": true, - "license": "MIT", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0", - "peer": true - }, - "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", - "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "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": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", - "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa" - ], - "license": "MIT", - "bin": { - "mime": "bin/cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/minimist-options/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/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "license": "ISC" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-emoji": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", - "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "char-regex": "^1.0.2", - "emojilib": "^2.4.0", - "skin-tone": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data/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/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/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm": { - "version": "10.8.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.3.tgz", - "integrity": "sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/promise-spawn", - "@npmcli/redact", - "@npmcli/run-script", - "@sigstore/tuf", - "abbrev", - "archy", - "cacache", - "chalk", - "ci-info", - "cli-columns", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "ms", - "node-gyp", - "nopt", - "normalize-package-data", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "semver", - "spdx-expression-parse", - "ssri", - "supports-color", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dev": true, - "license": "Artistic-2.0", - "workspaces": [ - "docs", - "smoke-tests", - "mock-globals", - "mock-registry", - "workspaces/*" - ], - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.5.4", - "@npmcli/config": "^8.3.4", - "@npmcli/fs": "^3.1.1", - "@npmcli/map-workspaces": "^3.0.6", - "@npmcli/package-json": "^5.2.0", - "@npmcli/promise-spawn": "^7.0.2", - "@npmcli/redact": "^2.0.1", - "@npmcli/run-script": "^8.1.0", - "@sigstore/tuf": "^2.3.4", - "abbrev": "^2.0.0", - "archy": "~1.0.0", - "cacache": "^18.0.4", - "chalk": "^5.3.0", - "ci-info": "^4.0.0", - "cli-columns": "^4.0.0", - "fastest-levenshtein": "^1.0.16", - "fs-minipass": "^3.0.3", - "glob": "^10.4.5", - "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.2", - "ini": "^4.1.3", - "init-package-json": "^6.0.3", - "is-cidr": "^5.1.0", - "json-parse-even-better-errors": "^3.0.2", - "libnpmaccess": "^8.0.6", - "libnpmdiff": "^6.1.4", - "libnpmexec": "^8.1.4", - "libnpmfund": "^5.0.12", - "libnpmhook": "^10.0.5", - "libnpmorg": "^6.0.6", - "libnpmpack": "^7.0.4", - "libnpmpublish": "^9.0.9", - "libnpmsearch": "^7.0.6", - "libnpmteam": "^6.0.5", - "libnpmversion": "^6.0.3", - "make-fetch-happen": "^13.0.1", - "minimatch": "^9.0.5", - "minipass": "^7.1.1", - "minipass-pipeline": "^1.2.4", - "ms": "^2.1.2", - "node-gyp": "^10.2.0", - "nopt": "^7.2.1", - "normalize-package-data": "^6.0.2", - "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.3", - "npm-pick-manifest": "^9.1.0", - "npm-profile": "^10.0.0", - "npm-registry-fetch": "^17.1.0", - "npm-user-validate": "^2.0.1", - "p-map": "^4.0.0", - "pacote": "^18.0.6", - "parse-conflict-json": "^3.0.1", - "proc-log": "^4.2.0", - "qrcode-terminal": "^0.12.0", - "read": "^3.0.1", - "semver": "^7.6.3", - "spdx-expression-parse": "^4.0.0", - "ssri": "^10.0.6", - "supports-color": "^9.4.0", - "tar": "^6.2.1", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.1", - "which": "^4.0.0", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "dev": true, - "inBundle": 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/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": 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/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.5.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.1", - "@npmcli/installed-package-contents": "^2.1.0", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.1.1", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.1.0", - "@npmcli/query": "^3.1.0", - "@npmcli/redact": "^2.0.0", - "@npmcli/run-script": "^8.1.0", - "bin-links": "^4.0.4", - "cacache": "^18.0.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.2", - "json-parse-even-better-errors": "^3.0.2", - "json-stringify-nice": "^1.1.4", - "lru-cache": "^10.2.2", - "minimatch": "^9.0.4", - "nopt": "^7.2.1", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.2", - "npm-pick-manifest": "^9.0.1", - "npm-registry-fetch": "^17.0.1", - "pacote": "^18.0.6", - "parse-conflict-json": "^3.0.0", - "proc-log": "^4.2.0", - "proggy": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^10.0.6", - "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.3.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/package-json": "^5.1.1", - "ci-info": "^4.0.0", - "ini": "^4.1.2", - "nopt": "^7.2.1", - "proc-log": "^4.2.0", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.8", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^18.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^18.0.0", - "proc-log": "^4.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/redact": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "8.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.3.2", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/core": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.3.2", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.3.4", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^2.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/verify": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.2" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/abbrev": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/agent-base": { - "version": "7.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/cacache": { - "version": "18.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/chalk": { - "version": "5.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ci-info": { - "version": "4.0.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^5.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/diff": { - "version": "5.2.0", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/npm/node_modules/foreground-child": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "10.4.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ini": { - "version": "4.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/package-json": "^5.0.0", - "npm-package-arg": "^11.0.0", - "promzard": "^1.0.0", - "read": "^3.0.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/ip-address": { - "version": "9.0.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^4.1.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jackspeak": { - "version": "3.4.3", - "dev": true, - "inBundle": 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/npm/node_modules/jsbn": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.5.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.2", - "npm-registry-fetch": "^17.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.5.4", - "@npmcli/installed-package-contents": "^2.1.0", - "binary-extensions": "^2.3.0", - "diff": "^5.1.0", - "minimatch": "^9.0.4", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6", - "tar": "^6.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "8.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.5.4", - "@npmcli/run-script": "^8.1.0", - "ci-info": "^4.0.0", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6", - "proc-log": "^4.2.0", - "read": "^3.0.1", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.12", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.5.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "7.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.5.4", - "@npmcli/run-script": "^8.1.0", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.9", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ci-info": "^4.0.0", - "normalize-package-data": "^6.0.1", - "npm-package-arg": "^11.0.2", - "npm-registry-fetch": "^17.0.1", - "proc-log": "^4.2.0", - "semver": "^7.3.7", - "sigstore": "^2.2.0", - "ssri": "^10.0.6" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^17.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "6.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.7", - "@npmcli/run-script": "^8.1.0", - "json-parse-even-better-errors": "^3.0.2", - "proc-log": "^4.2.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "9.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "7.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "10.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", - "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "7.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.3.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^6.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "10.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^17.0.1", - "proc-log": "^4.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "17.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/redact": "^2.0.0", - "jsonparse": "^1.3.1", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/package-json-from-dist": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/npm/node_modules/pacote": { - "version": "18.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^17.0.0", - "proc-log": "^4.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "bin/index.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/path-scurry": { - "version": "1.11.1", - "dev": true, - "inBundle": 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/npm/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/proc-log": { - "version": "4.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/proggy": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "^3.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/read": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/npm/node_modules/semver": { - "version": "7.6.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/sigstore": { - "version": "2.3.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^2.3.2", - "@sigstore/tuf": "^2.3.4", - "@sigstore/verify": "^1.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks": { - "version": "2.8.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.1", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.5.0", - "dev": true, - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.18", - "dev": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/npm/node_modules/ssri": { - "version": "10.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": 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/npm/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, - "inBundle": 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/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/supports-color": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/npm/node_modules/tar": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/tuf-js": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/unique-slug": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/which": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/npm/node_modules/wrap-ansi": { - "version": "8.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "inBundle": 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/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": 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/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "node_modules/node-releases": { + "version": "2.0.18", "dev": true, "license": "MIT" - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "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-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "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", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=7.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/normalize-path": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/p-each-series": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", - "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "node_modules/normalize-url": { + "version": "8.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-filter": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", - "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "node_modules/npm": { + "version": "10.8.3", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], "dev": true, - "license": "MIT", + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { - "p-map": "^7.0.1" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.2.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.1", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.4", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.4", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.4.5", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.3", + "init-package-json": "^6.0.3", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.4", + "libnpmfund": "^5.0.12", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.4", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.3", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.2.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.2", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.3", + "npm-pick-manifest": "^9.1.0", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.1.0", + "npm-user-validate": "^2.0.1", + "p-map": "^4.0.0", + "pacote": "^18.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^4.2.0", + "qrcode-terminal": "^0.12.0", + "read": "^3.0.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.1", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" }, - "engines": { - "node": ">=18" + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/npm-run-path": { + "version": "5.3.0", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "yocto-queue": "^1.0.0" + "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.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/p-map": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", - "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-reduce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", - "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, "engines": { - "node": ">=6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.5.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "callsites": "^3.0.0" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.1.1", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", + "parse-conflict-json": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.6", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" }, "engines": { - "node": ">=6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.3.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "semver": "^7.3.5" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.8", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.1.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "parse5": "^6.0.1" + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.2.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "8.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", "dev": true, + "inBundle": true, "license": "MIT", + "optional": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=14" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.3.2", "dev": true, - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": ">=0.10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "locate-path": "^2.0.0" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^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==", + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, + "inBundle": 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==", + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", "dev": true, + "inBundle": true, "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pkg-dir/node_modules/p-limit": { + "node_modules/npm/node_modules/binary-extensions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" }, "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==", + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", "dev": true, "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/sibiraj-s" } ], + "inBundle": true, "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" - }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=8" } }, - "node_modules/postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.1.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "htmlparser2": "^3.10.0" + "ip-regex": "^5.0.0" }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" + "engines": { + "node": ">=14" } }, - "node_modules/postcss-jsx": { - "version": "0.36.4", - "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz", - "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==", + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "@babel/core": ">=7.2.2" - }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" + "engines": { + "node": ">=6" } }, - "node_modules/postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.14" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6.14.4" + "node": ">= 10" } }, - "node_modules/postcss-less/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-less/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.3", "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-markdown": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", - "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "remark": "^10.0.1", - "unist-util-find-all-after": "^1.0.2" + "color-name": "~1.1.4" }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/postcss-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", - "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "postcss": "^7.0.7" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/postcss-reporter/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "color-convert": "^1.9.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/postcss-reporter/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, - "node_modules/postcss-reporter/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/npm/node_modules/debug": { + "version": "4.3.6", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/postcss-reporter/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-reporter/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.3.1" } }, - "node_modules/postcss-reporter/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", "dev": true, - "license": "ISC" + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-reporter/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", "dev": true, + "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "iconv-lite": "^0.6.2" } }, - "node_modules/postcss-reporter/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", "dev": true, + "inBundle": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=12.0" + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" }, - "peerDependencies": { - "postcss": "^8.3.3" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-sass": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", - "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", + "node_modules/npm/node_modules/glob": { + "version": "10.4.5", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "gonzales-pe": "^4.2.3", - "postcss": "^7.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-sass/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", "dev": true, + "inBundle": true, "license": "ISC" }, - "node_modules/postcss-sass/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.6" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=6.0.0" + "node": ">= 14" } }, - "node_modules/postcss-scss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-scss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.5", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 14" } }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, + "inBundle": true, "license": "MIT", - "peer": true, + "optional": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/postcss-sorting": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", - "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.5", "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.4.20" + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, + "inBundle": true, "license": "MIT", - "peerDependencies": { - "postcss": ">=5.0.0" + "engines": { + "node": ">=0.8.19" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/npm/node_modules/ini": { + "version": "4.1.3", "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.3", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "fast-diff": "^1.1.2" + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12" } }, - "node_modules/pretty-ms": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", - "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, "engines": { - "node": ">=18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/promise-polyfill": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", - "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==", - "dev": true, - "license": "MIT" - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "cidr-regex": "^4.1.1" }, "engines": { - "node": ">= 6" + "node": ">=14" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "engines": { + "node": ">=8" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", "dev": true, + "inBundle": true, "license": "ISC" }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.3", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/query-string-cjs": { - "name": "query-string", - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", - "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/query-string-esm": { - "name": "query-string", - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-9.1.0.tgz", - "integrity": "sha512-t6dqMECpCkqfyv2FfwVS1xcB6lgXW/0XZSaKdsCNGYkqMO76AFiJEg4vINzoDKcZa6MS7JX+OHIjwh06K5vczw==", - "license": "MIT", + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "decode-uri-component": "^0.4.1", - "filter-obj": "^5.1.0", - "split-on-first": "^3.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/query-string-esm/node_modules/decode-uri-component": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.4.1.tgz", - "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==", - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/query-string-esm/node_modules/filter-obj": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz", - "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/query-string-esm/node_modules/split-on-first": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz", - "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==", - "license": "MIT", - "engines": { - "node": ">=12" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "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/npm/node_modules/jsbn": { + "version": "1.1.0", "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" - } - ], + "inBundle": true, "license": "MIT" }, - "node_modules/quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==", + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", "dev": true, - "license": "ISC" + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/read-package-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", - "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-package-up/node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.1.4", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "node_modules/npm/node_modules/libnpmexec": { + "version": "8.1.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.12", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "@npmcli/arborist": "^7.5.4" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.5", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "locate-path": "^2.0.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/npm/node_modules/libnpmpack": { + "version": "7.0.4", "dev": true, - "license": "BSD-2-Clause", + "inBundle": true, + "license": "ISC", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.9", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "p-try": "^1.0.0" + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.6" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "p-limit": "^1.1.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.5", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/npm/node_modules/libnpmversion": { + "version": "6.0.3", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", + "semver": "^7.3.7" + }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/npm/node_modules/lru-cache": { + "version": "10.4.3", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "pify": "^3.0.0" + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-pkg-up/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", "dev": true, + "inBundle": true, "license": "ISC", - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", - "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.22.13", - "index-to-position": "^0.1.2", - "type-fest": "^4.7.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.5", "dev": true, - "license": "(MIT OR CC0-1.0)", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, "engines": { - "node": ">=16" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==", + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/redent/node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">= 8" } }, - "node_modules/remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", - "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "remark-parse": "^6.0.0", - "remark-stringify": "^6.0.0", - "unified": "^7.0.0" - } - }, - "node_modules/remark-parse": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", - "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "node_modules/remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "license": "MIT", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, + "inBundle": true, "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=0.10" + "node": ">=10" } }, - "node_modules/replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==", + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "node_modules/npm/node_modules/node-gyp": { + "version": "10.2.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" }, "bin": { - "resolve": "bin/resolve" + "node-gyp": "bin/node-gyp.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/npm/node_modules/nopt": { + "version": "7.2.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "resolve-from": "^5.0.0" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/resolve-from": { + "node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, "engines": { - "node": ">=0.12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.3", "dev": true, + "inBundle": true, "license": "ISC", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, "engines": { - "node": ">=0.12.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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/npm/node_modules/npm-pick-manifest": { + "version": "9.1.0", "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", + "inBundle": true, + "license": "ISC", "dependencies": { - "queue-microtask": "^1.2.2" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/npm/node_modules/npm-profile": { + "version": "10.0.0", "dev": true, - "license": "Apache-2.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "tslib": "^2.1.0" + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "17.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "ret": "~0.1.10" + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "BlueOak-1.0.0" }, - "node_modules/semantic-release": { - "version": "24.1.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.2.tgz", - "integrity": "sha512-hvEJ7yI97pzJuLsDZCYzJgmRxF8kiEJvNZhf0oiZQcexw+Ycjy4wbdsn/sVMURgNCu8rwbAXJdBRyIxM4pe32g==", + "node_modules/npm/node_modules/pacote": { + "version": "18.0.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "@semantic-release/commit-analyzer": "^13.0.0-beta.1", - "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^11.0.0", - "@semantic-release/npm": "^12.0.0", - "@semantic-release/release-notes-generator": "^14.0.0-beta.1", - "aggregate-error": "^5.0.0", - "cosmiconfig": "^9.0.0", - "debug": "^4.0.0", - "env-ci": "^11.0.0", - "execa": "^9.0.0", - "figures": "^6.0.0", - "find-versions": "^6.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^3.0.0", - "hosted-git-info": "^8.0.0", - "import-from-esm": "^1.3.1", - "lodash-es": "^4.17.21", - "marked": "^12.0.0", - "marked-terminal": "^7.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^3.0.0", - "p-reduce": "^3.0.0", - "read-package-up": "^11.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^4.0.0", - "signale": "^1.2.1", - "yargs": "^17.5.1" + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, "bin": { - "semantic-release": "bin/semantic-release.js" + "pacote": "bin/index.js" }, "engines": { - "node": ">=20.8.1" - } - }, - "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } - }, - "node_modules/semantic-release/node_modules/execa": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", - "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" }, "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", "dev": true, + "inBundle": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=18" + "node": ">=16 || 14 >=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.1.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/semantic-release/node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "node_modules/npm/node_modules/proc-log": { + "version": "4.2.0", "dev": true, - "license": "Apache-2.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=18.18.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semantic-release/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=18" - }, + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, + "inBundle": true, + "license": "ISC", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/semantic-release/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/npm/node_modules/promzard": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^3.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semantic-release/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "3.0.1", "dev": true, + "inBundle": true, "license": "ISC", - "engines": { - "node": ">=14" + "dependencies": { + "mute-stream": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semantic-release/node_modules/strip-final-newline": { + "node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=18" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semantic-release/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/semver": { + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "inBundle": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -18485,2543 +10144,2170 @@ "node": ">=10" } }, - "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "node_modules/npm/node_modules/sigstore": { + "version": "2.3.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "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==", + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.4", "dev": true, + "inBundle": 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" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" }, "engines": { - "node": ">= 0.4" + "node": ">= 14" } }, - "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==", + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.18", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "CC0-1.0" }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "isobject": "^3.0.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", "dev": true, + "inBundle": 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/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/signale/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/signale/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/signale/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/signale/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "escape-string-regexp": "^1.0.5" + "minipass": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/signale/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/signale/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/skin-tone": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", - "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "unicode-emoji-modifier-base": "^1.0.0" - }, - "engines": { - "node": ">=8" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/slash": { + "node_modules/npm/node_modules/treeverse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.2.0" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/snapdragon-util/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "ISC" }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/npm/node_modules/which": { + "version": "4.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-buffer": "^1.1.5" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=0.10.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", "dev": true, - "license": "BSD-3-Clause", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", "dev": true, - "license": "BSD-3-Clause", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", "dev": true, - "license": "BSD-3-Clause", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", "dev": true, - "license": "MIT", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/object-assign": { + "version": "4.1.1", "dev": true, "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true, - "license": "MIT" - }, - "node_modules/spawn-error-forwarder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "node_modules/once": { + "version": "1.4.0", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "wrappy": "1" } }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/onetime": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/specificity": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", - "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "node_modules/optionator": { + "version": "0.9.4", "dev": true, "license": "MIT", - "bin": { - "specificity": "bin/specificity" - } - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/ora": { + "version": "5.4.1", "dev": true, "license": "MIT", "dependencies": { - "extend-shallow": "^3.0.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 10.x" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "license": "MIT" }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "node_modules/os-tmpdir": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/p-each-series": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" + "p-map": "^7.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "node_modules/p-is-promise": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/stream-combiner2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/stream-combiner2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/p-limit": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stream-combiner2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/stream-combiner2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "license": "MIT", + "p-limit": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.6.19" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/p-map": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", "dev": true, "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/p-reduce": { + "version": "3.0.0", "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": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/p-try": { + "version": "2.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "node_modules/parent-module": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", - "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "callsites": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "node_modules/parse-imports": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz", + "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-module-lexer": "^1.5.3", + "slashes": "^3.0.12" + }, + "engines": { + "node": ">= 18" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "node_modules/parse-json": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "node_modules/parse-ms": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/parse-passwd": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "node_modules/parse5": { + "version": "5.1.1", "dev": true, - "license": "MIT", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } + "license": "MIT" }, - "node_modules/strip-ansi": { + "node_modules/parse5-htmlparser2-tree-adapter": { "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" + "parse5": "^6.0.1" } }, - "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==", + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/path-is-absolute": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "node_modules/path-key": { + "version": "3.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "node_modules/picocolors": { + "version": "1.1.0", "dev": true, "license": "ISC" }, - "node_modules/stylelint": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", - "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "node_modules/picomatch": { + "version": "2.3.1", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0", - "@csstools/media-query-list-parser": "^2.1.4", - "@csstools/selector-specificity": "^3.0.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.2.0", - "css-functions-list": "^3.2.1", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.1", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^7.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.29.0", - "mathml-tag-names": "^2.1.3", - "meow": "^10.1.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.28", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" + "engines": { + "node": ">=8.6" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "dev": true, + "license": "MIT", "bin": { - "stylelint": "bin/stylelint.mjs" + "pidtree": "bin/pidtree.js" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" + "node": ">=0.10" } }, - "node_modules/stylelint-config-rational-order": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stylelint-config-rational-order/-/stylelint-config-rational-order-0.1.2.tgz", - "integrity": "sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew==", + "node_modules/pify": { + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "stylelint": "^9.10.1", - "stylelint-order": "^2.2.1" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "node_modules/pirates": { + "version": "4.0.6", "dev": true, "license": "MIT", "engines": { "node": ">= 6" } }, - "node_modules/stylelint-config-rational-order/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/pkg-conf": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/stylelint-config-rational-order/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/camelcase": { + "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "path-type": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint-config-rational-order/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "node_modules/prelude-ls": { + "version": "1.2.1", "dev": true, "license": "MIT", - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, "engines": { - "node": ">=4.0.0" + "node": ">= 0.8.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/file-entry-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-4.0.0.tgz", - "integrity": "sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==", + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", - "dependencies": { - "flat-cache": "^2.0.1" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/stylelint-config-rational-order/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "node_modules/pretty-format": { + "version": "29.7.0", "dev": true, "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/pretty-ms": { + "version": "9.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/flat-cache": { + "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "license": "MIT" + }, + "node_modules/promise-polyfill": { + "version": "8.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/stylelint-config-rational-order/node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "node_modules/proto-list": { + "version": "1.2.4", "dev": true, "license": "ISC" }, - "node_modules/stylelint-config-rational-order/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/stylelint-config-rational-order/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "node_modules/punycode": { + "version": "2.3.1", "dev": true, "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/stylelint-config-rational-order/node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "node_modules/pure-rand": { + "version": "6.1.0", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/query-string-cjs": { + "name": "query-string", + "version": "7.1.3", "license": "MIT", "dependencies": { - "global-prefix": "^3.0.0" + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, + "node_modules/query-string-esm": { + "name": "query-string", + "version": "9.1.0", "license": "MIT", "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "decode-uri-component": "^0.4.1", + "filter-obj": "^5.1.0", + "split-on-first": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, + "node_modules/query-string-esm/node_modules/decode-uri-component": { + "version": "0.4.1", "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=14.16" } }, - "node_modules/stylelint-config-rational-order/node_modules/globby/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, + "node_modules/query-string-esm/node_modules/filter-obj": { + "version": "5.1.0", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/has-flag": { + "node_modules/query-string-esm/node_modules/split-on-first": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint-config-rational-order/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "node_modules/queue-microtask": { + "version": "1.2.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "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/stylelint-config-rational-order/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "node_modules/rc": { + "version": "1.2.8", "dev": true, - "license": "MIT", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "engines": { - "node": ">=4" + "bin": { + "rc": "cli.js" } }, - "node_modules/stylelint-config-rational-order/node_modules/import-fresh/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "ISC" }, - "node_modules/stylelint-config-rational-order/node_modules/import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint-config-rational-order/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "node_modules/react-is": { + "version": "18.3.1", "dev": true, "license": "MIT" }, - "node_modules/stylelint-config-rational-order/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/read-package-up": { + "version": "11.0.0", "dev": true, "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.26.0", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/read-pkg": { + "version": "9.0.1", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.26.0", "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint-config-rational-order/node_modules/known-css-properties": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.11.0.tgz", - "integrity": "sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint-config-rational-order/node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "node_modules/readable-stream": { + "version": "3.6.2", "dev": true, "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/stylelint-config-rational-order/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/registry-auth-token": { + "version": "5.0.2", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^2.0.1" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=14" } }, - "node_modules/stylelint-config-rational-order/node_modules/meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "node_modules/require-directory": { + "version": "2.1.1", "dev": true, "license": "MIT", - "dependencies": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/resolve": { + "version": "1.22.8", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint-config-rational-order/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/resolve-cwd": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/resolve-dir": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/resolve-from": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint-config-rational-order/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/resolve.exports": { + "version": "2.0.2", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/stylelint-config-rational-order/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/restore-cursor": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/stylelint-config-rational-order/node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", "dev": true, "license": "MIT", - "dependencies": { - "postcss": "^7.0.26" - }, "engines": { - "node": ">=6.0.0" + "node": ">=6" } }, - "node_modules/stylelint-config-rational-order/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", "dev": true, "license": "MIT", "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/postcss-sorting": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-4.1.0.tgz", - "integrity": "sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw==", + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/reusify": { + "version": "1.0.4", "dev": true, "license": "MIT", - "dependencies": { - "lodash": "^4.17.4", - "postcss": "^7.0.0" - }, "engines": { - "node": ">=6.14.3" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true, "license": "MIT" }, - "node_modules/stylelint-config-rational-order/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/run-async": { + "version": "2.4.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.12.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/run-parallel": { + "version": "1.2.0", "dev": true, - "license": "ISC", + "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": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "queue-microtask": "^1.2.2" } }, - "node_modules/stylelint-config-rational-order/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/rxjs": { + "version": "7.8.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/safe-buffer": { + "version": "5.2.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "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/stylelint-config-rational-order/node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/safer-buffer": { + "version": "2.1.2", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/stylelint-config-rational-order/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/semantic-release": { + "version": "24.1.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.2.tgz", + "integrity": "sha512-hvEJ7yI97pzJuLsDZCYzJgmRxF8kiEJvNZhf0oiZQcexw+Ycjy4wbdsn/sVMURgNCu8rwbAXJdBRyIxM4pe32g==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^11.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^9.0.0", + "debug": "^4.0.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^8.0.0", + "import-from-esm": "^1.3.1", + "lodash-es": "^4.17.21", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-package-up": "^11.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": ">=6" + "node": ">=20.8.1" } }, - "node_modules/stylelint-config-rational-order/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/stylelint": { - "version": "9.10.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-9.10.1.tgz", - "integrity": "sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==", + "node_modules/semantic-release/node_modules/execa": { + "version": "9.3.1", "dev": true, "license": "MIT", "dependencies": { - "autoprefixer": "^9.0.0", - "balanced-match": "^1.0.0", - "chalk": "^2.4.1", - "cosmiconfig": "^5.0.0", - "debug": "^4.0.0", - "execall": "^1.0.0", - "file-entry-cache": "^4.0.0", - "get-stdin": "^6.0.0", - "global-modules": "^2.0.0", - "globby": "^9.0.0", - "globjoin": "^0.1.4", - "html-tags": "^2.0.0", - "ignore": "^5.0.4", - "import-lazy": "^3.1.0", - "imurmurhash": "^0.1.4", - "known-css-properties": "^0.11.0", - "leven": "^2.1.0", - "lodash": "^4.17.4", - "log-symbols": "^2.0.0", - "mathml-tag-names": "^2.0.1", - "meow": "^5.0.0", - "micromatch": "^3.1.10", - "normalize-selector": "^0.2.0", - "pify": "^4.0.0", - "postcss": "^7.0.13", - "postcss-html": "^0.36.0", - "postcss-jsx": "^0.36.0", - "postcss-less": "^3.1.0", - "postcss-markdown": "^0.36.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-reporter": "^6.0.0", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.0", - "postcss-sass": "^0.3.5", - "postcss-scss": "^2.0.0", - "postcss-selector-parser": "^3.1.0", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^3.3.0", - "resolve-from": "^4.0.0", - "signal-exit": "^3.0.2", - "slash": "^2.0.0", - "specificity": "^0.4.1", - "string-width": "^3.0.0", - "style-search": "^0.1.0", - "sugarss": "^2.0.0", - "svg-tags": "^1.0.0", - "table": "^5.0.0" - }, - "bin": { - "stylelint": "bin/stylelint.js" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/stylelint-config-rational-order/node_modules/stylelint-order": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-2.2.1.tgz", - "integrity": "sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg==", + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.10", - "postcss": "^7.0.2", - "postcss-sorting": "^4.1.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">=6" + "node": ">=18" }, - "peerDependencies": { - "stylelint": "^9.10.1 || ^10.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/semantic-release/node_modules/figures": { + "version": "6.1.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/stylelint-config-rational-order/node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "node": ">=18" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/semantic-release/node_modules/get-stream": { + "version": "6.0.1", "dev": true, "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-rational-order/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz", + "integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "lru-cache": "^10.0.1" }, - "bin": { - "which": "bin/which" + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/stylelint-config-rational-order/node_modules/yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "node_modules/semantic-release/node_modules/human-signals": { + "version": "8.0.0", "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^4.1.0" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, - "node_modules/stylelint-order": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", - "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", + "node_modules/semantic-release/node_modules/is-stream": { + "version": "4.0.1", "dev": true, "license": "MIT", - "dependencies": { - "postcss": "^8.4.32", - "postcss-sorting": "^8.0.2" + "engines": { + "node": ">=18" }, - "peerDependencies": { - "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-prettier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-4.1.0.tgz", - "integrity": "sha512-dd653q/d1IfvsSQshz1uAMe+XDm6hfM/7XiFH0htYY8Lse/s5ERTg7SURQehZPwVvm/rs7AsFhda9EQ2E9TS0g==", + "node_modules/semantic-release/node_modules/is-unicode-supported": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": ">=18" }, - "peerDependencies": { - "prettier": ">=3.0.0", - "stylelint": ">=15.8.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "node_modules/semantic-release/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": "MIT", - "peer": true + "license": "ISC" }, - "node_modules/stylelint/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "4.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "node_modules/semver": { + "version": "7.6.3", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "node_modules/semver-diff": { + "version": "4.0.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "node_modules/semver-regex": { + "version": "4.0.5", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", - "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", + "node_modules/shebang-command": { + "version": "2.0.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "flat-cache": "^3.2.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=8" } }, - "node_modules/stylelint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylelint/node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "node_modules/signale": { + "version": "1.4.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "global-prefix": "^3.0.0" + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" }, "engines": { "node": ">=6" } }, - "node_modules/stylelint/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "node_modules/signale/node_modules/ansi-styles": { + "version": "3.2.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/signale/node_modules/chalk": { + "version": "2.4.2", "dev": true, - "license": "ISC", - "peer": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/signale/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, - "license": "ISC", - "peer": true + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } }, - "node_modules/stylelint/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==", + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "p-locate": "^5.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/sisteransi": { + "version": "1.0.5", "dev": true, - "license": "ISC", - "peer": true, + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "unicode-emoji-modifier-base": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/stylelint/node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "node_modules/slash": { + "version": "3.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/meow": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "node_modules/slashes": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", + "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", + "dev": true, + "license": "ISC" + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/stylelint/node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/source-map-support": { + "version": "0.5.13", "dev": true, - "license": "BSD-2-Clause", - "peer": true, + "license": "MIT", "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" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/stylelint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/stylelint/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/spdx-license-ids": { + "version": "3.0.20", "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split-on-first": { + "version": "1.1.0", "license": "MIT", - "peer": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/stylelint/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, - "license": "MIT", - "peer": true, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10.x" } }, - "node_modules/stylelint/node_modules/read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/stylelint/node_modules/read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/stylelint/node_modules/redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "node_modules/stream-combiner2": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/node_modules/readable-stream": { + "version": "2.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-combiner2/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-combiner2/node_modules/string_decoder": { + "version": "1.1.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "safe-buffer": "~5.1.0" } }, - "node_modules/stylelint/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", - "peer": true, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "node_modules/string_decoder": { + "version": "1.3.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "safe-buffer": "~5.2.0" } }, - "node_modules/stylelint/node_modules/trim-newlines": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "node_modules/string-argv": { + "version": "0.3.2", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.6.19" } }, - "node_modules/stylelint/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/string-length": { + "version": "4.0.2", "dev": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/string-width": { + "version": "4.2.3", "dev": true, - "license": "ISC", - "peer": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=8" } }, - "node_modules/stylelint/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, - "license": "ISC", - "peer": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/stylelint/node_modules/yallist": { + "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/stylelint/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", - "peer": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "node_modules/strip-final-newline": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "postcss": "^7.0.2" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sugarss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true, - "license": "ISC" - }, - "node_modules/sugarss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/strip-json-comments": { + "version": "3.1.1", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/super-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", - "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", "dev": true, "license": "MIT", "dependencies": { @@ -21037,8 +12323,6 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -21050,8 +12334,6 @@ }, "node_modules/supports-hyperlinks": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "license": "MIT", "dependencies": { @@ -21067,8 +12349,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -21078,12 +12358,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, "node_modules/synckit": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", @@ -21101,108 +12375,8 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/table/node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/table/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", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/temp-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, "license": "MIT", "engines": { @@ -21211,8 +12385,6 @@ }, "node_modules/tempy": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, "license": "MIT", "dependencies": { @@ -21228,23 +12400,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tempy/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -21256,8 +12413,6 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { @@ -21269,30 +12424,6 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/text-extensions": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", @@ -21308,15 +12439,11 @@ }, "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/thenify": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "license": "MIT", "dependencies": { @@ -21325,8 +12452,6 @@ }, "node_modules/thenify-all": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "license": "MIT", "dependencies": { @@ -21336,24 +12461,13 @@ "node": ">=0.8" } }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true, - "license": "MIT" - }, "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "license": "MIT" }, "node_modules/through2": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21361,17 +12475,8 @@ "xtend": "~4.0.1" } }, - "node_modules/through2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, "node_modules/through2/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -21386,15 +12491,11 @@ }, "node_modules/through2/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/through2/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { @@ -21403,8 +12504,6 @@ }, "node_modules/time-span": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", "dev": true, "license": "MIT", "dependencies": { @@ -21420,93 +12519,36 @@ "node_modules/tinyexec": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", - "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", "dev": true, "license": "MIT" }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/tmp": { + "version": "0.0.33", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/tmpl": { + "version": "1.0.5", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21518,15 +12560,11 @@ }, "node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "license": "MIT" }, "node_modules/traverse": { "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, "license": "MIT", "engines": { @@ -21536,49 +12574,8 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", - "deprecated": "Use String.prototype.trim() instead", - "dev": true - }, - "node_modules/trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/ts-api-utils": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "license": "MIT", "engines": { @@ -21637,296 +12634,6 @@ } } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@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/tsjs": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/tsjs/-/tsjs-5.0.1.tgz", - "integrity": "sha512-9qENBqmha55BiTUHiAU7bV354QHslSVBSN+YvuAINnSFdDOPsmiZ/5HG6yQjan4/z8xBWoR/v00gMGlLFq3IiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", - "eslint": "^8.18.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsdoc": "^39.3.3", - "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.30.1", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-unused-imports": "^3.0.0", - "stylelint-config-rational-order": "^0.1.2", - "stylelint-order": "^6.0.3", - "stylelint-prettier": "^4.0.2" - }, - "peerDependencies": { - "prettier": "^3.0.1", - "stylelint": "^15.10.2" - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/tsjs/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/tsjs/node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/tsjs/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "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/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", @@ -21936,8 +12643,6 @@ }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -21947,104 +12652,23 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "node_modules/type-detect": { + "version": "4.0.8", "dev": true, "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "node_modules/type-fest": { + "version": "0.21.3", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { @@ -22061,10 +12685,30 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.4.0", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/uglify-js": { "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -22075,48 +12719,13 @@ "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici-types": { "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true, "license": "MIT" }, - "node_modules/unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", - "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "dev": true, "license": "MIT", "engines": { @@ -22125,8 +12734,6 @@ }, "node_modules/unicorn-magic": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, "license": "MIT", "engines": { @@ -22136,70 +12743,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unified": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", - "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "@types/vfile": "^3.0.0", - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", - "trough": "^1.0.0", - "vfile": "^3.0.0", - "x-is-string": "^0.1.0" - } - }, - "node_modules/unified/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/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true, - "license": "MIT" - }, "node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22212,68 +12757,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unist-util-find-all-after": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz", - "integrity": "sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "unist-util-is": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, "node_modules/universal-user-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", @@ -22283,77 +12766,14 @@ }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, "node_modules/update-browserslist-db": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -22383,22 +12803,12 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true, - "license": "MIT" - }, "node_modules/url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", @@ -22409,27 +12819,13 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "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": { @@ -22443,8 +12839,6 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -22452,44 +12846,8 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", - "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" - } - }, - "node_modules/vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "unist-util-stringify-position": "^1.1.1" - } - }, "node_modules/walker": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -22498,8 +12856,6 @@ }, "node_modules/wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", "dependencies": { @@ -22508,15 +12864,11 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", "dependencies": { @@ -22526,8 +12878,6 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -22540,93 +12890,8 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", - "dev": true, - "license": "MIT", - "dependencies": { - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -22635,15 +12900,11 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, "license": "MIT" }, "node_modules/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": { @@ -22660,8 +12921,6 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -22676,8 +12935,6 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22689,35 +12946,16 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/write-file-atomic": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", "dependencies": { @@ -22728,16 +12966,13 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==", - "dev": true + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "license": "MIT", "engines": { @@ -22746,8 +12981,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -22756,8 +12989,6 @@ }, "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" }, @@ -22776,8 +13007,6 @@ }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -22795,8 +13024,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -22805,8 +13032,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -22818,8 +13043,6 @@ }, "node_modules/yoctocolors": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 570fe6d6f..0efcea135 100644 --- a/package.json +++ b/package.json @@ -28,39 +28,37 @@ "test:watch": "jest --watchAll", "release": "semantic-release", "commit-cli": "git-cz", - "lintfix": "prettier --write \"**/*.{ts,js,json,md,yml}\" && eslint -c ./.eslintrc.cjs \"src/**.*\" --fix", + "lint:fix": "prettier --list-different --write \"**/*.{ts,js,json,md,yml}\" && eslint . --fix --quiet", + "lint": "prettier --check \"**/*.{ts,js,json,md,yml}\" && eslint .", "prepare": "husky install" }, "devDependencies": { "@commitlint/cli": "19.5.0", "@commitlint/config-conventional": "19.5.0", + "@eslint/js": "9.9.1", + "@types/eslint__js": "8.42.3", "@types/jest": "29.5.13", - "@typescript-eslint/eslint-plugin": "7.18.0", - "@typescript-eslint/parser": "7.18.0", "abortcontroller-polyfill": "1.7.5", "cz-conventional-changelog": "3.3.0", - "eslint": "8.57.1", + "eslint": "9.9.1", "eslint-config-prettier": "9.1.0", - "eslint-config-typescript": "3.0.0", "eslint-plugin-jest": "28.8.3", - "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-jsdoc": "50.3.1", "husky": "9.1.6", "jest": "29.7.0", "jest-fetch-mock": "3.0.3", - "jest-runner-eslint": "2.2.0", "lint-staged": "15.2.10", "prettier": "3.3.3", "semantic-release": "24.1.2", "ts-jest": "29.2.5", - "tsjs": "5.0.1", "tslib": "2.7.0", - "typescript": "5.6.2" + "typescript": "5.6.2", + "typescript-eslint": "8.4.0" }, - "prettier": "tsjs/prettier-config", "lint-staged": { "**/*.{ts,js}": [ "prettier --write", - "eslint -c ./.eslintrc.cjs --fix" + "eslint . --fix" ], "**/*.{md,json,yml}": [ "prettier --write" diff --git a/src/APICore.ts b/src/APICore.ts index 33a070546..a2ddc1058 100644 --- a/src/APICore.ts +++ b/src/APICore.ts @@ -12,23 +12,36 @@ import {handleRequest} from './handlers/request/RequestHandlers.js'; interface TokenInfo { authentication: UserModel; - [key: string]: any; + [key: string]: unknown; } const HEADERS_JSON_CONTENT_TYPE: HeadersInit = Object.freeze({'Content-Type': 'application/json'}); -/** Check whether the response status is `429 Too Many Requests`. */ +/** + * Check whether the response status is `429 Too Many Requests`. + * @param response + */ const isTooManyRequests: Predicate = (response) => response.status === 429; -/** Check whether the method is 'GET' (case insensitive). */ -const isGet: Predicate = RegExp.prototype.test.bind(/^GET$/i); - -/** "Logical OR" two optional abort signals. */ +/** + * Check whether the method is 'GET' (case insensitive). + * @param value + */ +const isGet: Predicate = (value) => (value ? /^GET$/i.test(value) : false); + +/** + * "Logical OR" two optional abort signals. + * @param signal1 + * @param signal2 + */ const abortOnEither = ( signal1: AbortSignal | null | undefined, signal2: AbortSignal | null | undefined, ): AbortSignal | null | undefined => { if (signal1 && signal2) { const joined = new AbortController(); + /** + * + */ function forwardAbort(this: AbortSignal) { joined.abort(this.reason); } @@ -40,7 +53,7 @@ const abortOnEither = ( }; const withBody = ( - body: any, + body: object, userArgs: CoveoPlatformClientRequestInit | undefined, ): CoveoPlatformClientRequestInit | undefined => userArgs?.body ? undefined : {headers: HEADERS_JSON_CONTENT_TYPE, body: JSON.stringify(body)}; @@ -76,12 +89,12 @@ export default class API { ): Promise; async post>( url: string, - body?: any, + body?: object, args?: Omit, ): Promise; async post>( url: string, - body: any = {}, + body: object = {}, args?: CoveoPlatformClientRequestInit, ): Promise { return await this.request( @@ -106,12 +119,12 @@ export default class API { ): Promise; async put>( url: string, - body?: any, + body?: object, args?: Omit, ): Promise; async put>( url: string, - body: any = {}, + body: object = {}, args?: CoveoPlatformClientRequestInit, ): Promise { return await this.request( @@ -128,12 +141,12 @@ export default class API { ): Promise; async patch>( url: string, - body?: any, + body?: object, args?: Omit, ): Promise; async patch>( url: string, - body: any = {}, + body: object = {}, args?: CoveoPlatformClientRequestInit, ): Promise { return await this.request( diff --git a/src/handlers/request/RequestHandlerInterfaces.ts b/src/handlers/request/RequestHandlerInterfaces.ts index 56d940397..4a543449d 100644 --- a/src/handlers/request/RequestHandlerInterfaces.ts +++ b/src/handlers/request/RequestHandlerInterfaces.ts @@ -11,7 +11,6 @@ export interface RequestHandler { canProcess: Predicate; /** * How to process the requests. - * * @param request The [request object](https://developer.mozilla.org/en-US/docs/Web/API/Request). */ process(request: EnrichedRequestInit): EnrichedRequestInit; diff --git a/src/handlers/request/RequestHandlers.ts b/src/handlers/request/RequestHandlers.ts index cfeb3d32c..89124576e 100644 --- a/src/handlers/request/RequestHandlers.ts +++ b/src/handlers/request/RequestHandlers.ts @@ -11,7 +11,10 @@ export const handleRequest = ( return requestHandlers.reduce( (enrichedOptions: EnrichedRequestInit, currentHandler: RequestHandler) => { - if (!currentHandler.hasOwnProperty('canProcess') || !currentHandler.hasOwnProperty('process')) { + if ( + !Object.prototype.hasOwnProperty.call(currentHandler, 'canProcess') || + !Object.prototype.hasOwnProperty.call(currentHandler, 'process') + ) { return enrichedOptions; } diff --git a/src/handlers/request/tests/RequestHandlers.spec.ts b/src/handlers/request/tests/RequestHandlers.spec.ts index b0fb6c763..f18ab3ae9 100644 --- a/src/handlers/request/tests/RequestHandlers.spec.ts +++ b/src/handlers/request/tests/RequestHandlers.spec.ts @@ -1,5 +1,5 @@ -import {EnrichedRequestInit} from '..'; -import {handleRequest} from '../RequestHandlers'; +import {EnrichedRequestInit} from '../RequestHandlerInterfaces.js'; +import {handleRequest} from '../RequestHandlers.js'; describe('RequestHandlers', () => { it('returns provided init options if no handlers are provided', () => { diff --git a/src/handlers/response/ResponseHandlers.ts b/src/handlers/response/ResponseHandlers.ts index 0343e75eb..3396027db 100644 --- a/src/handlers/response/ResponseHandlers.ts +++ b/src/handlers/response/ResponseHandlers.ts @@ -3,29 +3,35 @@ import 'core-js/actual/json/parse.js'; import {Predicate} from '../../utils/types.js'; import {ResponseBodyFormat, ResponseHandler} from './ResponseHandlerInterfaces.js'; -/** Check whether the response status is `204 No Content`. */ +/** + * Check whether the response status is `204 No Content`. + * @param response + */ export const isNoContent: Predicate = (response) => response.status === 204; -/** Check whether the response is considered to have any "ok" status code (not just 200). */ +/** + * Check whether the response is considered to have any "ok" status code (not just 200). + * @param response + */ export const isAnyOkStatus: Predicate = (response) => response.ok; const noContent: ResponseHandler = { canProcess: isNoContent, - process: async (): Promise => ({}) as T, + process: (): Promise => Promise.resolve({} as T), }; const success: ResponseHandler = { canProcess: isAnyOkStatus, - process: async (response, responseBodyFormat = 'json') => { + process: async (response: Response, responseBodyFormat: ResponseBodyFormat = 'json'): Promise => { if (responseBodyFormat !== 'json') { - return response[responseBodyFormat](); + return response[responseBodyFormat]() as T; } const content = await response.text(); return ( JSON.parse as ( text: string, - reviver?: (key: string, value: any, context: {source: any}) => any | undefined, - ) => any + reviver?: (key: string, value: K, context: {source: K}) => K | undefined, + ) => T )(content, (_key, value, context) => { if (typeof value === 'number' && !Number.isSafeInteger(Math.floor(value))) { return context.source; @@ -45,13 +51,13 @@ const successBlob: ResponseHandler = { const error: ResponseHandler = { canProcess: () => true, - process: async (response: Response): Promise => { - const responseJson = await response.json(); + process: async (response: Response) => { + const responseJson = (await response.json()) as Record; const platformError = new CoveoPlatformClientError(); Object.assign(platformError, responseJson); platformError.xRequestId = response.headers.get('X-Request-ID') ?? 'unknown'; - platformError.title = responseJson.title ?? getErrorTypeFromAliases(responseJson) ?? 'unknown'; - platformError.detail = responseJson.detail ?? getErrorDetailFromAliases(responseJson) ?? 'unknown'; + platformError.title = (responseJson.title as string) ?? getErrorTypeFromAliases(responseJson) ?? 'unknown'; + platformError.detail = (responseJson.detail as string) ?? getErrorDetailFromAliases(responseJson) ?? 'unknown'; platformError.status = response.status; throw platformError; }, @@ -59,7 +65,7 @@ const error: ResponseHandler = { const blockedByWAF: ResponseHandler = { canProcess: (response) => response.headers.get('x-coveo-waf-action') === 'block', - process: async (response) => { + process: (response) => { const platformError = new CoveoPlatformClientError(); platformError.xRequestId = response.headers.get('X-Request-ID') ?? 'unknown'; platformError.title = 'Request blocked for security reasons'; @@ -71,7 +77,7 @@ const blockedByWAF: ResponseHandler = { const badGateway: ResponseHandler = { canProcess: (response) => response.status === 502, - process: async (response) => { + process: (response) => { const platformError = new CoveoPlatformClientError(); platformError.xRequestId = response.headers.get('X-Request-ID') ?? 'unknown'; platformError.title = 'Endpoint unreachable'; @@ -129,8 +135,8 @@ export default async ( const handlers = customHandlers?.length ? customHandlers : defaultResponseHandlers; const handler = handlers.find( (candidate) => - candidate.hasOwnProperty('canProcess') && - candidate.hasOwnProperty('process') && + Object.prototype.hasOwnProperty.call(candidate, 'canProcess') && + Object.prototype.hasOwnProperty.call(candidate, 'process') && candidate.canProcess(response), ); if (!handler) { diff --git a/src/handlers/response/tests/ResponseHandlers.spec.ts b/src/handlers/response/tests/ResponseHandlers.spec.ts index 585aa90ea..111b41846 100644 --- a/src/handlers/response/tests/ResponseHandlers.spec.ts +++ b/src/handlers/response/tests/ResponseHandlers.spec.ts @@ -79,7 +79,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError).toMatchObject(httpError); @@ -95,7 +95,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse, null, 'text'); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.status).toBe(403); @@ -115,7 +115,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse, null, 'text'); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.status).toBe(502); @@ -135,7 +135,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse, null, 'text'); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.status).toBe(403); @@ -153,7 +153,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.status).toBe(400); @@ -170,7 +170,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.xRequestId).toBe('DidyoueverhearthetragedyofDarthPlagueisTheWise?'); @@ -184,7 +184,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.[key]).toBe('unknown'); @@ -200,7 +200,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.[key]).toBe('shouldBeThis'); @@ -215,7 +215,7 @@ describe('ResponseHandlers', () => { try { await handleResponse(errorResponse); } catch (error) { - rejectedError = error; + rejectedError = error as CoveoPlatformClientError; } expect(rejectedError?.[key]).toBe('shouldBeAlias'); diff --git a/src/resources/AWS/tests/AWS.spec.ts b/src/resources/AWS/tests/AWS.spec.ts index eab83c112..9a291a02c 100644 --- a/src/resources/AWS/tests/AWS.spec.ts +++ b/src/resources/AWS/tests/AWS.spec.ts @@ -3,12 +3,10 @@ import AWS from '../AWS.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Cluster', () => { let aws: AWS; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,8 +14,8 @@ describe('Cluster', () => { }); describe('list', () => { - it('should make a GET call to the Cluster base url', () => { - aws.list(); + it('should make a GET call to the Cluster base url', async () => { + await aws.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(AWS.baseUrl); }); diff --git a/src/resources/Activities/Activities.ts b/src/resources/Activities/Activities.ts index 3bc86ba2a..e63d10224 100644 --- a/src/resources/Activities/Activities.ts +++ b/src/resources/Activities/Activities.ts @@ -24,9 +24,8 @@ export default class Activity extends Resource { /** * Retrieves a list of ActivityOperation for a given organization. - * - * @param {boolean} includeInternal Whether or not to include internal operations. - * @returns {Promise} A list of activity operations. + * @param includeInternal Whether or not to include internal operations. + * @returns A list of activity operations. */ getOperationTypes(includeInternal = false) { const operationTypesUrl = `${Activity.getBaseUrl()}/operationtypes`; @@ -38,7 +37,7 @@ export default class Activity extends Resource { } list(params?: ListActivitiesParams, activityFacet?: ActivityListingFilters) { - const isPublic = !Boolean(activityFacet?.sections?.includes('INTERNAL')); + const isPublic = !activityFacet?.sections?.includes('INTERNAL'); return this.api.post>( this.buildPath(isPublic ? `${Activity.getBaseUrl()}/public` : Activity.getBaseUrl(), params), activityFacet, @@ -46,7 +45,7 @@ export default class Activity extends Resource { } listFacets(params?: ListActivitiesFacetsParams, activityFacet?: ActivityListingFilters) { - const isPublic = !Boolean(activityFacet?.sections?.includes('INTERNAL')); + const isPublic = !activityFacet?.sections?.includes('INTERNAL'); return this.api.post( this.buildPath( isPublic ? `${Activity.getBaseUrl()}/facets/public` : `${Activity.getBaseUrl()}/facets`, diff --git a/src/resources/Activities/ActivitiesInterfaces.ts b/src/resources/Activities/ActivitiesInterfaces.ts index d3715d98b..8239e7e16 100644 --- a/src/resources/Activities/ActivitiesInterfaces.ts +++ b/src/resources/Activities/ActivitiesInterfaces.ts @@ -2,6 +2,7 @@ import {Paginated} from '../BaseInterfaces.js'; import {ActivityOperation, FacetOrSortStatus} from '../Enums.js'; export interface ActivityModel { + // eslint-disable-next-line @typescript-eslint/no-explicit-any content?: any; createDate?: number; duration?: number; @@ -21,6 +22,7 @@ export interface ActivityModel { errorCode?: string; errorDetail?: string; abortReason?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any abortedBy?: any; snapShotId?: string; documentsProcessed?: number; diff --git a/src/resources/Activities/tests/Activities.spec.ts b/src/resources/Activities/tests/Activities.spec.ts index 5ad96026a..f75133a5a 100644 --- a/src/resources/Activities/tests/Activities.spec.ts +++ b/src/resources/Activities/tests/Activities.spec.ts @@ -9,12 +9,11 @@ import { } from '../ActivitiesInterfaces.js'; jest.mock('../../../APICore.ts.js'); -const APIMock: jest.Mock = API as any; describe('Activity', () => { let activity: Activity; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -22,92 +21,92 @@ describe('Activity', () => { }); describe('get', () => { - it('should make a GET call to the specific Activity url', () => { + it('should make a GET call to the specific Activity url', async () => { const activityId = 'gandalf'; - activity.get(activityId); + await activity.get(activityId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/${activityId}`); }); }); describe('getResourceTypes', () => { - it('should make a GET call to the specific Activity url', () => { - activity.getResourceTypes(); + it('should make a GET call to the specific Activity url', async () => { + await activity.getResourceTypes(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/resourcetypes`); }); }); describe('getOperationTypes', () => { - it('should make a GET call to return non internal operation types', () => { - activity.getOperationTypes(); + it('should make a GET call to return non internal operation types', async () => { + await activity.getOperationTypes(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/operationtypes`); }); - it('should make a GET call to return all operation types', () => { - activity.getOperationTypes(true); + it('should make a GET call to return all operation types', async () => { + await activity.getOperationTypes(true); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/operationtypes/all`); }); }); describe('getListOfResourcesAndOperations', () => { - it('should make a GET call to return all resources and their operation types', () => { - activity.getListOfResourcesAndOperations(); + it('should make a GET call to return all resources and their operation types', async () => { + await activity.getListOfResourcesAndOperations(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/resourcesandoperations`); }); }); describe('list', () => { - it('should make a POST call to the specific Activity url to fetch activities of an organization', () => { + it('should make a POST call to the specific Activity url to fetch activities of an organization', async () => { const params: ListActivitiesParams = {}; const activityFacet: ActivityListingFilters = {sections: ['INTERNAL']}; - activity.list(params, activityFacet); + await activity.list(params, activityFacet); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Activity.getBaseUrl(), activityFacet); }); - it('should make a POST call to the specific Activity url to fetch public activities of an organization', () => { + it('should make a POST call to the specific Activity url to fetch public activities of an organization', async () => { const params: ListActivitiesParams = {}; const activityFacet: ActivityListingFilters = {}; - activity.list(params, activityFacet); + await activity.list(params, activityFacet); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/public`, activityFacet); }); }); describe('listFacets', () => { - it('should make a POST call to the specific Activity url to fetch the facets', () => { + it('should make a POST call to the specific Activity url to fetch the facets', async () => { const params: ListActivitiesFacetsParams = {}; const activityFacet: ActivityListingFilters = {sections: ['INTERNAL']}; - activity.listFacets(params, activityFacet); + await activity.listFacets(params, activityFacet); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/facets`, activityFacet); }); - it('should make a POST call to the specific Activity url to fetch the public facets', () => { + it('should make a POST call to the specific Activity url to fetch the public facets', async () => { const params: ListActivitiesFacetsParams = {}; const activityFacet: ActivityListingFilters = {}; - activity.listFacets(params, activityFacet); + await activity.listFacets(params, activityFacet); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/facets/public`, activityFacet); }); }); describe('listAll', () => { - it('should make a POST call to the specific Activity url to fetch activities of all organizations', () => { + it('should make a POST call to the specific Activity url to fetch activities of all organizations', async () => { const params: ListActivitiesFacetsParams = {}; const activityFacet: ActivityListingFilters = {}; - activity.listAll(params, activityFacet); + await activity.listAll(params, activityFacet); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Activity.getBaseUrlAllOrgs(), activityFacet); }); }); describe('abortActivity', () => { - it('should make a POST call to the specific Activity url', () => { + it('should make a POST call to the specific Activity url', async () => { const activityId = 'gimli'; const triggeredBy: TriggeredByAttributes = { type: 'randomType', @@ -122,7 +121,7 @@ describe('Activity', () => { resourceType: '', }; - activity.abortActivity(activityId, abortActivityModel); + await activity.abortActivity(activityId, abortActivityModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Activity.getBaseUrl()}/${activityId}/abort`, abortActivityModel); }); diff --git a/src/resources/AnalyticsAdmin/Properties/Properties.ts b/src/resources/AnalyticsAdmin/Properties/Properties.ts index f829fdf42..d4ee1b170 100644 --- a/src/resources/AnalyticsAdmin/Properties/Properties.ts +++ b/src/resources/AnalyticsAdmin/Properties/Properties.ts @@ -7,19 +7,18 @@ export default class Properties extends Resource { static baseUrl = `/rest/organizations/${API.orgPlaceholder}/analyticsadmin/v1`; /** * Build the request path, handling the optional `org` query parameter. - * * @param route The path part of the request. * @param queryParams Optional query parameters object. * If this object contains an `org` property, it will override the value from the configuration. * @returns The request path including formatted query parameters. */ - protected buildPathWithOrg(route: string, queryParams?: any): string { + protected buildPathWithOrg(route: string, queryParams?: object): string { return super.buildPath(route, {org: this.api.organizationId, ...queryParams}); } /** * List all properties - * + * @param params * @returns Promise> */ list(params?: ListPropertiesParams): Promise> { @@ -30,7 +29,7 @@ export default class Properties extends Resource { /** * Get a property - * + * @param trackingId * @returns Promise */ get(trackingId: string): Promise { @@ -39,7 +38,8 @@ export default class Properties extends Resource { /** * Create a property - * + * @param trackingId + * @param displayName * @returns Promise */ create(trackingId: string, displayName: string): Promise { @@ -50,7 +50,8 @@ export default class Properties extends Resource { /** * Edit a property - * + * @param trackingId + * @param displayName * @returns Promise */ update(trackingId: string, displayName: string): Promise { @@ -61,7 +62,7 @@ export default class Properties extends Resource { /** * Delete a property - * + * @param trackingId * @returns Promise */ delete(trackingId: string): Promise { diff --git a/src/resources/AnalyticsAdmin/tests/Properties.spec.ts b/src/resources/AnalyticsAdmin/tests/Properties.spec.ts index e5f3baadb..973283ec9 100644 --- a/src/resources/AnalyticsAdmin/tests/Properties.spec.ts +++ b/src/resources/AnalyticsAdmin/tests/Properties.spec.ts @@ -3,12 +3,10 @@ import Properties from '../Properties/Properties.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Properties', () => { let properties: Properties; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,22 +14,22 @@ describe('Properties', () => { }); describe('listProperties', () => { - it('should make a GET call to the list path', () => { - properties.list(); + it('should make a GET call to the list path', async () => { + await properties.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Properties.baseUrl}/properties/list`); }); - it('should make a GET call to the list path with pagination', () => { - properties.list({page: 1, perPage: 2}); + it('should make a GET call to the list path with pagination', async () => { + await properties.list({page: 1, perPage: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Properties.baseUrl}/properties/list?page=1&perPage=2`); }); - it('should make a GET call to the list path with filter', () => { - properties.list({filter: 'test'}); + it('should make a GET call to the list path with filter', async () => { + await properties.list({filter: 'test'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Properties.baseUrl}/properties/list?filter=test`); @@ -39,8 +37,8 @@ describe('Properties', () => { }); describe('getProperty', () => { - it('should make a GET call to the properties path', () => { - properties.get('trackingId'); + it('should make a GET call to the properties path', async () => { + await properties.get('trackingId'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Properties.baseUrl}/properties/trackingId`); @@ -48,8 +46,8 @@ describe('Properties', () => { }); describe('createProperty', () => { - it('should make a POST call to the properties path', () => { - properties.create('trackingId', 'displayName'); + it('should make a POST call to the properties path', async () => { + await properties.create('trackingId', 'displayName'); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -59,8 +57,8 @@ describe('Properties', () => { }); describe('updateProperty', () => { - it('should make a PUT call to the properties path', () => { - properties.update('trackingId', 'displayName'); + it('should make a PUT call to the properties path', async () => { + await properties.update('trackingId', 'displayName'); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Properties.baseUrl}/properties/trackingId?displayName=displayName`); @@ -68,8 +66,8 @@ describe('Properties', () => { }); describe('deleteProperty', () => { - it('should make a DELETE call to the properties path', () => { - properties.delete('trackingId'); + it('should make a DELETE call to the properties path', async () => { + await properties.delete('trackingId'); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Properties.baseUrl}/properties/trackingId`); diff --git a/src/resources/ApiKeyTemplate/test/ApiKeyTemplate.spec.ts b/src/resources/ApiKeyTemplate/test/ApiKeyTemplate.spec.ts index 5c98ff203..838845aaa 100644 --- a/src/resources/ApiKeyTemplate/test/ApiKeyTemplate.spec.ts +++ b/src/resources/ApiKeyTemplate/test/ApiKeyTemplate.spec.ts @@ -4,12 +4,10 @@ import ApiKeyTemplate from '../ApiKeyTemplate.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('ApiKeyTemplateModel', () => { let apiKeyTemplate: ApiKeyTemplate; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); diff --git a/src/resources/ApiKeys/ApiKeys.ts b/src/resources/ApiKeys/ApiKeys.ts index 693238337..9578e9a91 100644 --- a/src/resources/ApiKeys/ApiKeys.ts +++ b/src/resources/ApiKeys/ApiKeys.ts @@ -10,7 +10,7 @@ export default class ApiKey extends Resource { return this.api.get(ApiKey.baseUrl); } - create(apiKey: New, options?: CreateApiKeyOptions) { + create(apiKey: New, options?: CreateApiKeyOptions) { return this.api.post(this.buildPath(ApiKey.baseUrl, options), apiKey); } diff --git a/src/resources/ApiKeys/ApiKeysInterfaces.ts b/src/resources/ApiKeys/ApiKeysInterfaces.ts index 4eee04b58..d17769e80 100644 --- a/src/resources/ApiKeys/ApiKeysInterfaces.ts +++ b/src/resources/ApiKeys/ApiKeysInterfaces.ts @@ -1,5 +1,5 @@ import {GranularResource, PrivilegeModel} from '../BaseInterfaces.js'; -import { ApiKeyStatus } from '../Enums.js'; +import {ApiKeyStatus} from '../Enums.js'; export interface ApiKeyModel extends GranularResource { /** * The unique identifier of the [organization](https://docs.coveo.com/en/222/) the API key was created for. @@ -36,6 +36,7 @@ export interface ApiKeyModel extends GranularResource { /** * The username or the email address that was used to create this API key. */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any createdBy?: any; /** * The API key creation date in Unix timestamp in milliseconds. @@ -79,7 +80,6 @@ export interface ApiKeyModel extends GranularResource { * **Example:** t4hk287bfj5sg6wskg64ckk5a */ resourceId?: string; - /** * Additional configuration to be included in an API key. [to be revised] */ @@ -89,21 +89,21 @@ export interface ApiKeyModel extends GranularResource { */ expirationDate?: number; /** - * The status of the API key. + * The status of the API key. */ status?: ApiKeyStatus; /** * The ID of the template to which the API key is bound. */ - apiKeyTemplateId?: string; - /** - * The date of activation of the API key. - */ - activationDate?: number; - /** - * The date the API key has been disabled. - */ - disabledDate?: number + apiKeyTemplateId?: string; + /** + * The date of activation of the API key. + */ + activationDate?: number; + /** + * The date the API key has been disabled. + */ + disabledDate?: number; } export interface CreateApiKeyOptions { @@ -158,4 +158,4 @@ interface EnforceQueryPipelineConfigurationModel { interface ImpersonationRestrictionsModel { allowedUserIds: QueryAuthenticationModel[]; -} \ No newline at end of file +} diff --git a/src/resources/ApiKeys/test/ApiKeys.spec.ts b/src/resources/ApiKeys/test/ApiKeys.spec.ts index e62756fb7..5a8080113 100644 --- a/src/resources/ApiKeys/test/ApiKeys.spec.ts +++ b/src/resources/ApiKeys/test/ApiKeys.spec.ts @@ -5,12 +5,10 @@ import {ApiKeyModel} from '../ApiKeysInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('ApiKey', () => { let apiKey: ApiKey; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,55 +16,55 @@ describe('ApiKey', () => { }); describe('list', () => { - it('should make a GET call to the ApiKeys base url', () => { - apiKey.list(); + it('should make a GET call to the ApiKeys base url', async () => { + await apiKey.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ApiKey.baseUrl); }); }); describe('create', () => { - it('should make a POST call to the ApiKeys base url', () => { + it('should make a POST call to the ApiKeys base url', async () => { const apiKeyModel: New = { organizationId: 'a-smol-org', value: '', }; - apiKey.create(apiKeyModel); + await apiKey.create(apiKeyModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(ApiKey.baseUrl, apiKeyModel); }); }); describe('get', () => { - it('should make a GET call to the specific ApiKey url', () => { + it('should make a GET call to the specific ApiKey url', async () => { const apiKeyToGetId = 'ApiKey-to-be-fetched'; - apiKey.get(apiKeyToGetId); + await apiKey.get(apiKeyToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ApiKey.baseUrl}/${apiKeyToGetId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific ApiKey url', () => { + it('should make a PUT call to the specific ApiKey url', async () => { const apiKeyModel: ApiKeyModel = { organizationId: 'a-smol-org', id: 'a-specific-id', value: '', }; - apiKey.update(apiKeyModel); + await apiKey.update(apiKeyModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${ApiKey.baseUrl}/${apiKeyModel.id}`, apiKeyModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific ApiKey url', () => { + it('should make a DELETE call to the specific ApiKey url', async () => { const apiKeyToDeleteId = 'ApiKey-to-be-deleted'; - apiKey.delete(apiKeyToDeleteId); + await apiKey.delete(apiKeyToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${ApiKey.baseUrl}/${apiKeyToDeleteId}`); }); @@ -78,18 +76,18 @@ describe('ApiKey', () => { organizationId: 'a-smol-org', }; - it('should make a PUT call to disable the specific apiKey', () => { + it('should make a PUT call to disable the specific apiKey', async () => { apiKeyModel.enabled = true; - apiKey.toggle(apiKeyModel); + await apiKey.toggle(apiKeyModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${ApiKey.baseUrl}/${apiKeyModel.id}/disable`, apiKeyModel); }); - it('should make a PUT call to activate the specific apiKey', () => { + it('should make a PUT call to activate the specific apiKey', async () => { apiKeyModel.enabled = false; - apiKey.toggle(apiKeyModel); + await apiKey.toggle(apiKeyModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${ApiKey.baseUrl}/${apiKeyModel.id}/activate`, apiKeyModel); }); diff --git a/src/resources/BaseInterfaces.ts b/src/resources/BaseInterfaces.ts index 6156b57fb..f454917d3 100644 --- a/src/resources/BaseInterfaces.ts +++ b/src/resources/BaseInterfaces.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type PageModel = { [key in TItemsKey]: T[]; } & { diff --git a/src/resources/CaseAssistConfigs/CaseAssistConfigInterfaces.ts b/src/resources/CaseAssistConfigs/CaseAssistConfigInterfaces.ts index df4880099..b6ee1a5b8 100644 --- a/src/resources/CaseAssistConfigs/CaseAssistConfigInterfaces.ts +++ b/src/resources/CaseAssistConfigs/CaseAssistConfigInterfaces.ts @@ -14,7 +14,7 @@ export enum CaseClassificationStrategies { Axon = 'Axon', } -export interface CaseAssistConfigListOptions extends Paginated {} +export type CaseAssistConfigListOptions = Paginated; export interface ITDConfigurationModel { pipeline?: string; diff --git a/src/resources/CaseAssistConfigs/tests/CaseAssistConfig.spec.ts b/src/resources/CaseAssistConfigs/tests/CaseAssistConfig.spec.ts index 294bcdc9b..cc96b40a4 100644 --- a/src/resources/CaseAssistConfigs/tests/CaseAssistConfig.spec.ts +++ b/src/resources/CaseAssistConfigs/tests/CaseAssistConfig.spec.ts @@ -12,12 +12,10 @@ import {PreviewRequestBody} from '../CaseAssistPreviewInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('CaseAssistConfig', () => { let caseAssist: CaseAssistConfig; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const caseAssistModels: CaseAssistConfigModel[] = [ { @@ -83,8 +81,8 @@ describe('CaseAssistConfig', () => { }); describe('list', () => { - it('should make a GET call to the CaseAssistConfig base url', () => { - caseAssist.list({page: 2, perPage: 10}); + it('should make a GET call to the CaseAssistConfig base url', async () => { + await caseAssist.list({page: 2, perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CaseAssistConfig.baseUrl}?page=2&perPage=10`); @@ -92,21 +90,18 @@ describe('CaseAssistConfig', () => { }); describe('create', () => { - const newCaseAssistModels: any[] = caseAssistModels; - newCaseAssistModels.forEach((caseAssistModel) => { - it('should make a POST call to the CaseAssistConfig base url', () => { - caseAssist.create(caseAssistModel); + it('should make a POST call to the CaseAssistConfig base url', async () => { + await caseAssist.create(caseAssistModels[0]); - expect(api.post).toHaveBeenCalledTimes(1); - expect(api.post).toHaveBeenCalledWith(CaseAssistConfig.baseUrl, caseAssistModel); - }); + expect(api.post).toHaveBeenCalledTimes(1); + expect(api.post).toHaveBeenCalledWith(CaseAssistConfig.baseUrl, caseAssistModels[0]); }); }); describe('delete', () => { - it('should make a DELETE call to the specific CaseAssistConfig url', () => { + it('should make a DELETE call to the specific CaseAssistConfig url', async () => { const caseAssistToDeleteId = 'CaseAssist-to-be-deleted'; - caseAssist.delete(caseAssistToDeleteId); + await caseAssist.delete(caseAssistToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${CaseAssistConfig.baseUrl}/${caseAssistToDeleteId}`); @@ -114,9 +109,9 @@ describe('CaseAssistConfig', () => { }); describe('get', () => { - it('should make a GET call to the specific CaseAssistConfig url', () => { + it('should make a GET call to the specific CaseAssistConfig url', async () => { const caseAssistToGetId = 'CaseAssist-to-be-fetched'; - caseAssist.get(caseAssistToGetId); + await caseAssist.get(caseAssistToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CaseAssistConfig.baseUrl}/${caseAssistToGetId}`); @@ -125,8 +120,8 @@ describe('CaseAssistConfig', () => { describe('update', () => { caseAssistModels.forEach((caseAssistModel) => { - it('should make a PUT call to the specific CaseAssistConfig url', () => { - caseAssist.update(caseAssistModel); + it('should make a PUT call to the specific CaseAssistConfig url', async () => { + await caseAssist.update(caseAssistModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -138,7 +133,7 @@ describe('CaseAssistConfig', () => { }); describe('classify', () => { - it('should make a POST call to get classifications', () => { + it('should make a POST call to get classifications', async () => { const testId = 'some config id'; const testBody: SuggestionRequestBody = { visitorId: testVisitorId, @@ -146,7 +141,7 @@ describe('CaseAssistConfig', () => { fields: testContextFields, }; - caseAssist.classify(testId, testBody); + await caseAssist.classify(testId, testBody); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${CaseAssistConfig.baseUrl}/${testId}/classify`, testBody); @@ -154,7 +149,7 @@ describe('CaseAssistConfig', () => { }); describe('suggestDocuments', () => { - it('should make a POST call to get document suggestions', () => { + it('should make a POST call to get document suggestions', async () => { const testId = 'some config id'; const testBody: SuggestionRequestBody = { visitorId: testVisitorId, @@ -162,7 +157,7 @@ describe('CaseAssistConfig', () => { fields: testContextFields, }; - caseAssist.suggestDocuments(testId, testBody); + await caseAssist.suggestDocuments(testId, testBody); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${CaseAssistConfig.baseUrl}/${testId}/documents/suggest`, testBody); @@ -171,14 +166,14 @@ describe('CaseAssistConfig', () => { describe('previewDocumentSuggestion', () => { caseAssistModels.forEach((caseAssistModel) => { - it('should make a POST call to get document suggestion preview for configuration', () => { + it('should make a POST call to get document suggestion preview for configuration', async () => { const testBody: PreviewRequestBody = { visitorId: testVisitorId, locale: testLocale, fields: testContextFields, configuration: caseAssistModel, }; - caseAssist.previewDocumentSuggestion(testBody); + await caseAssist.previewDocumentSuggestion(testBody); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -191,14 +186,14 @@ describe('CaseAssistConfig', () => { describe('previewCaseClassication', () => { caseAssistModels.forEach((caseAssistModel) => { - it('should make a POST call to get document suggestion preview for configuration', () => { + it('should make a POST call to get document suggestion preview for configuration', async () => { const testBody: PreviewRequestBody = { visitorId: testVisitorId, locale: testLocale, fields: testContextFields, configuration: caseAssistModel, }; - caseAssist.previewCaseClassication(testBody); + await caseAssist.previewCaseClassication(testBody); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${CaseAssistConfig.baseUrl}/preview/classify`, testBody); diff --git a/src/resources/Catalogs/Catalog.ts b/src/resources/Catalogs/Catalog.ts index e8f32d5e7..7053ee6ae 100644 --- a/src/resources/Catalogs/Catalog.ts +++ b/src/resources/Catalogs/Catalog.ts @@ -33,6 +33,8 @@ export default class Catalog extends Resource { } /** + * @param catalogId + * @param options * @deprecated getFields(catalogId: string, options?: CatalogFieldsOptions) is kept for backward compatibility, you should now use `getFieldStats(catalogId: string, options?: CatalogFieldStatsOptions)`. */ getFields(catalogId: string, options?: CatalogFieldsOptions) { @@ -41,7 +43,6 @@ export default class Catalog extends Resource { ); } - /* eslint-disable @typescript-eslint/unified-signatures */ update(catalog: CreateCatalogModel); /** * @deprecated `update(catalog: CatalogModel) is kept for backward compatibility, you should now use `update(catalog: CreateCatalogModel)`. @@ -50,7 +51,6 @@ export default class Catalog extends Resource { update(catalog: CreateCatalogModel | CatalogModel) { return this.api.put(`${Catalog.baseUrl}/${catalog.id}`, catalog); } - /* eslint-enable @typescript-eslint/unified-signatures */ getFieldsSuggestions(query: FieldsSuggestionsQueryModel) { return this.api.post(`${Catalog.baseUrl}/fieldsSuggestions`, query); diff --git a/src/resources/Catalogs/ProductListing.ts b/src/resources/Catalogs/ProductListing.ts index f6a38e326..0e2f77271 100644 --- a/src/resources/Catalogs/ProductListing.ts +++ b/src/resources/Catalogs/ProductListing.ts @@ -16,6 +16,8 @@ export default class ProductListing extends Resource { static baseProductListingsUrl = `/rest/organizations/${API.orgPlaceholder}/productlistings`; /** + * @param catalogId + * @param options * @deprecated */ list(catalogId: string, options?: ProductListingsListOptions) { @@ -26,6 +28,8 @@ export default class ProductListing extends Resource { } /** + * @param catalogId + * @param model * @deprecated */ create(catalogId: string, model: New) { @@ -36,6 +40,8 @@ export default class ProductListing extends Resource { } /** + * @param catalogId + * @param productListingId * @deprecated */ delete(catalogId: string, productListingId: string) { @@ -43,6 +49,8 @@ export default class ProductListing extends Resource { } /** + * @param catalogId + * @param productListingId * @deprecated */ get(catalogId: string, productListingId: string) { @@ -52,6 +60,8 @@ export default class ProductListing extends Resource { } /** + * @param catalogId + * @param model * @deprecated */ update(catalogId: string, model: ProductListingModel) { diff --git a/src/resources/Catalogs/ProductListingConfiguration.ts b/src/resources/Catalogs/ProductListingConfiguration.ts index a7845b666..1c6ce4c0d 100644 --- a/src/resources/Catalogs/ProductListingConfiguration.ts +++ b/src/resources/Catalogs/ProductListingConfiguration.ts @@ -14,6 +14,9 @@ export default class ProductListingConfiguration extends Resource { static baseUrl = `/rest/organizations/${API.orgPlaceholder}/catalogs`; /** + * @param catalogId + * @param productListingId + * @param options * @deprecated */ list(catalogId: string, productListingId: string, options?: ProductListingConfigurationOptions) { @@ -27,6 +30,9 @@ export default class ProductListingConfiguration extends Resource { } /** + * @param catalogId + * @param productListingId + * @param rankingConfiguration * @deprecated */ create(catalogId: string, productListingId: string, rankingConfiguration: New) { @@ -37,6 +43,9 @@ export default class ProductListingConfiguration extends Resource { } /** + * @param catalogId + * @param productListingId + * @param productListingConfigurationId * @deprecated */ delete(catalogId: string, productListingId: string, productListingConfigurationId: string) { @@ -46,6 +55,9 @@ export default class ProductListingConfiguration extends Resource { } /** + * @param catalogId + * @param productListingId + * @param productListingConfigurationId * @deprecated */ get(catalogId: string, productListingId: string, productListingConfigurationId: string) { @@ -55,6 +67,10 @@ export default class ProductListingConfiguration extends Resource { } /** + * @param catalogId + * @param productListingId + * @param productListingConfigurationId + * @param rankingConfiguration * @deprecated */ update( diff --git a/src/resources/Catalogs/tests/Catalog.spec.ts b/src/resources/Catalogs/tests/Catalog.spec.ts index 4dcf4790c..4a30ca249 100644 --- a/src/resources/Catalogs/tests/Catalog.spec.ts +++ b/src/resources/Catalogs/tests/Catalog.spec.ts @@ -5,12 +5,10 @@ import {CreateCatalogModel, CatalogModel, FieldsSuggestionsQueryModel} from '../ jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Catalog', () => { let catalog: Catalog; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,26 +16,26 @@ describe('Catalog', () => { }); describe('list', () => { - it('should make a GET call to the catalogs base url', () => { - catalog.list({page: 2, pageSize: 10}); + it('should make a GET call to the catalogs base url', async () => { + await catalog.list({page: 2, pageSize: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Catalog.baseUrl}?page=2&pageSize=10`); }); }); describe('create', () => { - it('should make a POST call to the catalogs base url', () => { + it('should make a POST call to the catalogs base url', async () => { const catalogModel: New = { name: 'New catalog', catalogConfigurationId: 'id', }; - catalog.create(catalogModel); + await catalog.create(catalogModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Catalog.baseUrl, catalogModel); }); - it('should be backward compatible with the legacy structure', () => { + it('should be backward compatible with the legacy structure', async () => { const catalogModel: New = { name: 'New catalog', configuration: { @@ -50,12 +48,12 @@ describe('Catalog', () => { }, }; - catalog.create(catalogModel); + await catalog.create(catalogModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Catalog.baseUrl, catalogModel); }); - it('should be backward compatible with the fields array', () => { + it('should be backward compatible with the fields array', async () => { const catalogModel: New = { name: 'New catalog', product: { @@ -76,41 +74,41 @@ describe('Catalog', () => { }, }; - catalog.create(catalogModel); + await catalog.create(catalogModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Catalog.baseUrl, catalogModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific catalog url', () => { + it('should make a DELETE call to the specific catalog url', async () => { const catalogToDeleteId = 'catalog-to-be-deleted'; - catalog.delete(catalogToDeleteId); + await catalog.delete(catalogToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogToDeleteId}`); }); }); describe('get', () => { - it('should make a GET call to the specific catalog url', () => { + it('should make a GET call to the specific catalog url', async () => { const catalogToGetId = 'catalog-to-be-fetched'; - catalog.get(catalogToGetId); + await catalog.get(catalogToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogToGetId}`); }); }); describe('getFields', () => { - it("should make a GET call to the specific catalog's fields url", () => { + it("should make a GET call to the specific catalog's fields url", async () => { const catalogOfFieldsToGetId = 'catalog-of-fields'; - catalog.getFields(catalogOfFieldsToGetId); + await catalog.getFields(catalogOfFieldsToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogOfFieldsToGetId}/fields`); }); - it('should allow bypassing the cache', () => { + it('should allow bypassing the cache', async () => { const catalogOfFieldsToGetId = 'catalog-of-fields'; - catalog.getFields(catalogOfFieldsToGetId, {bypassCache: true}); + await catalog.getFields(catalogOfFieldsToGetId, {bypassCache: true}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Catalog.baseUrl}/${catalogOfFieldsToGetId}/fields?bypassCache=true`, @@ -119,7 +117,7 @@ describe('Catalog', () => { }); describe('getFieldsSuggestions', () => { - it('should make a POST call to to retrieve fields suggestions', () => { + it('should make a POST call to to retrieve fields suggestions', async () => { const query: FieldsSuggestionsQueryModel = { sourceNames: ['source1'], availabilitySourceNames: ['availability_source1'], @@ -127,14 +125,14 @@ describe('Catalog', () => { variantObjectType: 'Variant', availabilityObjectType: 'Availability', }; - catalog.getFieldsSuggestions(query); + await catalog.getFieldsSuggestions(query); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Catalog.baseUrl}/fieldsSuggestions`, query); }); }); describe('update', () => { - it('should make a PUT call to the specific catalog url', () => { + it('should make a PUT call to the specific catalog url', async () => { const catalogModel: CreateCatalogModel = { id: 'catalog-to-update-id', name: 'Catalog to be updated', @@ -148,24 +146,24 @@ describe('Catalog', () => { }, }; - catalog.update(catalogModel); + await catalog.update(catalogModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogModel.id}`, catalogModel); }); - it('should allow a PUT call with a catalog configuration id', () => { + it('should allow a PUT call with a catalog configuration id', async () => { const catalogModel: CreateCatalogModel = { id: 'catalog-to-update-id', name: 'Catalog to be updated', catalogConfigurationId: 'abc-123-def', }; - catalog.update(catalogModel); + await catalog.update(catalogModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogModel.id}`, catalogModel); }); - it('should be backward compatible with the legacy structure', () => { + it('should be backward compatible with the legacy structure', async () => { const catalogModel: CatalogModel = { id: 'catalog-to-update-id', name: 'New catalog', @@ -187,23 +185,23 @@ describe('Catalog', () => { }, }; - catalog.update(catalogModel); + await catalog.update(catalogModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogModel.id}`, catalogModel); }); }); describe('getFieldStats', () => { - it("should make a GET call to the specific catalog's fields stats url", () => { + it("should make a GET call to the specific catalog's fields stats url", async () => { const catalogOfFieldsToGetId = 'catalog-of-fields'; - catalog.getFieldStats(catalogOfFieldsToGetId); + await catalog.getFieldStats(catalogOfFieldsToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Catalog.baseUrl}/${catalogOfFieldsToGetId}/fieldStats`); }); - it('should allow refreshing the field statistics cache', () => { + it('should allow refreshing the field statistics cache', async () => { const catalogOfFieldsToGetId = 'catalog-of-fields'; - catalog.getFieldStats(catalogOfFieldsToGetId, {forceRefresh: true}); + await catalog.getFieldStats(catalogOfFieldsToGetId, {forceRefresh: true}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Catalog.baseUrl}/${catalogOfFieldsToGetId}/fieldStats?forceRefresh=true`, diff --git a/src/resources/Catalogs/tests/CatalogConfigurations.spec.ts b/src/resources/Catalogs/tests/CatalogConfigurations.spec.ts index 4be529a76..ea5236984 100644 --- a/src/resources/Catalogs/tests/CatalogConfigurations.spec.ts +++ b/src/resources/Catalogs/tests/CatalogConfigurations.spec.ts @@ -5,12 +5,10 @@ import {CreateCatalogConfigurationModel} from '../CatalogInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('CatalogConfiguration', () => { let catalogConfiguration: CatalogConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,15 +16,15 @@ describe('CatalogConfiguration', () => { }); describe('list', () => { - it('should make a GET call to the catalog configurations base url', () => { - catalogConfiguration.list({page: 2, pageSize: 10}); + it('should make a GET call to the catalog configurations base url', async () => { + await catalogConfiguration.list({page: 2, pageSize: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CatalogConfiguration.baseUrl}?page=2&pageSize=10`); }); }); describe('create', () => { - it('should make a POST call to the catalog configurations base url', () => { + it('should make a POST call to the catalog configurations base url', async () => { const catalogConfigurationModel: New = { name: 'New configuration', product: { @@ -38,32 +36,32 @@ describe('CatalogConfiguration', () => { locale: 'en-us-usd', }; - catalogConfiguration.create(catalogConfigurationModel); + await catalogConfiguration.create(catalogConfigurationModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(CatalogConfiguration.baseUrl, catalogConfigurationModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific configuration url', () => { + it('should make a DELETE call to the specific configuration url', async () => { const configurationToDeleteId = 'configuration-to-be-deleted'; - catalogConfiguration.delete(configurationToDeleteId); + await catalogConfiguration.delete(configurationToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${CatalogConfiguration.baseUrl}/${configurationToDeleteId}`); }); }); describe('get', () => { - it('should make a GET call to the specific configuration url', () => { + it('should make a GET call to the specific configuration url', async () => { const configurationToGetId = 'configuration-to-be-fetched'; - catalogConfiguration.get(configurationToGetId); + await catalogConfiguration.get(configurationToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CatalogConfiguration.baseUrl}/${configurationToGetId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific catalog configuration url', () => { + it('should make a PUT call to the specific catalog configuration url', async () => { const catalogConfigurationModel: CreateCatalogConfigurationModel = { id: 'wow', name: 'Configuration to be updated', @@ -76,7 +74,7 @@ describe('CatalogConfiguration', () => { locale: 'en-us-usd', }; - catalogConfiguration.update(catalogConfigurationModel); + await catalogConfiguration.update(catalogConfigurationModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${CatalogConfiguration.baseUrl}/${catalogConfigurationModel.id}`, diff --git a/src/resources/Catalogs/tests/CatalogContent.spec.ts b/src/resources/Catalogs/tests/CatalogContent.spec.ts index 5c63da833..789c330ed 100644 --- a/src/resources/Catalogs/tests/CatalogContent.spec.ts +++ b/src/resources/Catalogs/tests/CatalogContent.spec.ts @@ -5,12 +5,10 @@ import queryString from '#query-string'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('CatalogContent', () => { let metadata: CatalogContent; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const baseUrl = `/rest/organizations/${API.orgPlaceholder}/catalogcontent/source`; @@ -20,22 +18,22 @@ describe('CatalogContent', () => { }); describe('getObjectTypes', () => { - it('should make a GET call to the specific CatalogContent url', () => { + it('should make a GET call to the specific CatalogContent url', async () => { const sourceId = 'McDonald'; - metadata.getObjectTypes(sourceId); + await metadata.getObjectTypes(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${baseUrl}/${sourceId}/objecttypes`); }); }); describe('getMetadataValues', () => { - it('should make a GET call to the specific CatalogContent url', () => { + it('should make a GET call to the specific CatalogContent url', async () => { const defaultOptions: queryString.StringifyOptions = {skipEmptyString: true, skipNull: true, sort: false}; const sourceId = 'McDonald'; const objectType: ObjectType = {objectType: 'Provigo'}; - metadata.getMetadataValues(sourceId, objectType); + await metadata.getMetadataValues(sourceId, objectType); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${baseUrl}/${sourceId}/metadatavalues?${queryString.stringify(objectType, {...defaultOptions})}`, @@ -44,12 +42,12 @@ describe('CatalogContent', () => { }); describe('getMetadata', () => { - it('should make a GET call to the specific CatalogContent url', () => { + it('should make a GET call to the specific CatalogContent url', async () => { const defaultOptions: queryString.StringifyOptions = {skipEmptyString: true, skipNull: true, sort: false}; const sourceId = 'KFC'; const objectType: ObjectType = {objectType: 'Provigo'}; - metadata.getMetadata(sourceId, objectType); + await metadata.getMetadata(sourceId, objectType); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${baseUrl}/${sourceId}/metadata?${queryString.stringify(objectType, {...defaultOptions})}`, @@ -58,7 +56,7 @@ describe('CatalogContent', () => { }); describe('getMetadataV2', () => { - it('should make a GET call to the specific metadataName url', () => { + it('should make a GET call to the specific metadataName url', async () => { const defaultOptions: queryString.StringifyOptions = {skipEmptyString: true, skipNull: true, sort: false}; const sourceId = 'KFC'; @@ -70,7 +68,7 @@ describe('CatalogContent', () => { perPage: 100, }; - metadata.getMetadataV2(sourceId, params); + await metadata.getMetadataV2(sourceId, params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${baseUrl}/${sourceId}/metadata?${queryString.stringify(params, {...defaultOptions})}`, diff --git a/src/resources/Catalogs/tests/ProductListing.spec.ts b/src/resources/Catalogs/tests/ProductListing.spec.ts index a1ab7fab9..c5af17087 100644 --- a/src/resources/Catalogs/tests/ProductListing.spec.ts +++ b/src/resources/Catalogs/tests/ProductListing.spec.ts @@ -6,13 +6,11 @@ import {ProductListingModel} from '../ProductListingInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('ProductListings', () => { const catalogId = 'catalogId'; let productListing: ProductListing; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -20,8 +18,8 @@ describe('ProductListings', () => { }); describe('list', () => { - it('should make a GET call to the base product listings url of a catalog', () => { - productListing.list(catalogId, {page: 2, perPage: 10}); + it('should make a GET call to the base product listings url of a catalog', async () => { + await productListing.list(catalogId, {page: 2, perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${ProductListing.baseCatalogsUrl}/${catalogId}/productlistings?page=2&pageSize=10`, @@ -30,7 +28,7 @@ describe('ProductListings', () => { }); describe('create', () => { - it('should make a POST call to the base product listing url of a catalog', () => { + it('should make a POST call to the base product listing url of a catalog', async () => { const productListingModel: New = { name: 'New product listing', include: [ @@ -46,7 +44,7 @@ describe('ProductListings', () => { urls: ['first-url', 'second-url'], }; - productListing.create(catalogId, productListingModel); + await productListing.create(catalogId, productListingModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${ProductListing.baseCatalogsUrl}/${catalogId}/productlistings`, @@ -56,9 +54,9 @@ describe('ProductListings', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific product listing url of a catalog', () => { + it('should make a DELETE call to the specific product listing url of a catalog', async () => { const productListingToDeleteId = 'product-listing-to-be-deleted'; - productListing.delete(catalogId, productListingToDeleteId); + await productListing.delete(catalogId, productListingToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${ProductListing.baseCatalogsUrl}/${catalogId}/productlistings/${productListingToDeleteId}`, @@ -67,9 +65,9 @@ describe('ProductListings', () => { }); describe('get product listing for a catalog', () => { - it('should make a GET call to the specific product listing url of a catalog', () => { + it('should make a GET call to the specific product listing url of a catalog', async () => { const productListingToGetId = 'product-listing-to-be-fetched'; - productListing.get(catalogId, productListingToGetId); + await productListing.get(catalogId, productListingToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${ProductListing.baseCatalogsUrl}/${catalogId}/productlistings/${productListingToGetId}`, @@ -78,7 +76,7 @@ describe('ProductListings', () => { }); describe('update', () => { - it('should make a PUT call to the specific product listing url of a catalog', () => { + it('should make a PUT call to the specific product listing url of a catalog', async () => { const productListingModel: ProductListingModel = { id: '1234', name: 'New product listing', @@ -95,7 +93,7 @@ describe('ProductListings', () => { urls: ['first-url', 'second-url'], }; - productListing.update(catalogId, productListingModel); + await productListing.update(catalogId, productListingModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${ProductListing.baseCatalogsUrl}/${catalogId}/productlistings/${productListingModel.id}`, @@ -105,16 +103,16 @@ describe('ProductListings', () => { }); describe('get product listings grouped by catalog', () => { - it('should make a GET call to a specific url on the product listing base path', () => { - productListing.getByCatalog(); + it('should make a GET call to a specific url on the product listing base path', async () => { + await productListing.getByCatalog(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ProductListing.baseProductListingsUrl}/catalogs`); }); }); describe('get urls to query product listings', () => { - it('should make a GET call to a specific url on the product listing base path', () => { - productListing.getUrls(); + it('should make a GET call to a specific url on the product listing base path', async () => { + await productListing.getUrls(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ProductListing.baseProductListingsUrl}/urls`); }); diff --git a/src/resources/Catalogs/tests/ProductListingConfiguration.spec.ts b/src/resources/Catalogs/tests/ProductListingConfiguration.spec.ts index 0954b40fb..e05995015 100644 --- a/src/resources/Catalogs/tests/ProductListingConfiguration.spec.ts +++ b/src/resources/Catalogs/tests/ProductListingConfiguration.spec.ts @@ -6,14 +6,12 @@ import {ProductListingConfigurationModel, RankingTypeEnum} from '../ProductListi jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('ProductListingConfiguration', () => { const catalogId = 'catalogId'; const productListingId = 'productlistingId'; let productListingConfiguration: ProductListingConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -21,8 +19,8 @@ describe('ProductListingConfiguration', () => { }); describe('list', () => { - it('should make a GET call to the product listing configuration base url', () => { - productListingConfiguration.list(catalogId, productListingId, {page: 2, perPage: 10}); + it('should make a GET call to the product listing configuration base url', async () => { + await productListingConfiguration.list(catalogId, productListingId, {page: 2, perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${ProductListingConfiguration.baseUrl}/${catalogId}/productlistings/${productListingId}/configurations?page=2&pageSize=10`, @@ -31,7 +29,7 @@ describe('ProductListingConfiguration', () => { }); describe('create', () => { - it('should make a POST call to the product listing configuration base url', () => { + it('should make a POST call to the product listing configuration base url', async () => { const productListingConfigurationModel: New = { rankingConfigurations: [ { @@ -69,7 +67,7 @@ describe('ProductListingConfiguration', () => { ], }; - productListingConfiguration.create(catalogId, productListingId, productListingConfigurationModel); + await productListingConfiguration.create(catalogId, productListingId, productListingConfigurationModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${ProductListingConfiguration.baseUrl}/${catalogId}/productlistings/${productListingId}/configurations`, @@ -79,9 +77,13 @@ describe('ProductListingConfiguration', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific product listing configuration url', () => { + it('should make a DELETE call to the specific product listing configuration url', async () => { const productListingConfigurationToDeleteId = 'product-listing-configuration-to-be-deleted'; - productListingConfiguration.delete(catalogId, productListingId, productListingConfigurationToDeleteId); + await productListingConfiguration.delete( + catalogId, + productListingId, + productListingConfigurationToDeleteId, + ); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${ProductListingConfiguration.baseUrl}/${catalogId}/productlistings/${productListingId}/configurations/${productListingConfigurationToDeleteId}`, @@ -90,9 +92,9 @@ describe('ProductListingConfiguration', () => { }); describe('get product listing for a catalog', () => { - it('should make a GET call to the specific product listing configuration url', () => { + it('should make a GET call to the specific product listing configuration url', async () => { const productListingConfigurationToGetId = 'product-listing-configuration-to-be-fetched'; - productListingConfiguration.get(catalogId, productListingId, productListingConfigurationToGetId); + await productListingConfiguration.get(catalogId, productListingId, productListingConfigurationToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${ProductListingConfiguration.baseUrl}/${catalogId}/productlistings/${productListingId}/configurations/${productListingConfigurationToGetId}`, @@ -103,7 +105,7 @@ describe('ProductListingConfiguration', () => { describe('update', () => { const productListingConfigurationToUpdateId = 'product-listing-configuration-to-be-updated'; - it('should make a PUT call to the specific product listing configuration url', () => { + it('should make a PUT call to the specific product listing configuration url', async () => { const productListingConfigurationModel = { id: 'testId', rankingConfigurations: [ @@ -142,7 +144,7 @@ describe('ProductListingConfiguration', () => { ], } as ProductListingConfigurationModel; - productListingConfiguration.update( + await productListingConfiguration.update( catalogId, productListingId, productListingConfigurationToUpdateId, diff --git a/src/resources/Clusters/Agents/tests/ClusterAgent.spec.ts b/src/resources/Clusters/Agents/tests/ClusterAgent.spec.ts index 02ef4ee75..bae6d5b30 100644 --- a/src/resources/Clusters/Agents/tests/ClusterAgent.spec.ts +++ b/src/resources/Clusters/Agents/tests/ClusterAgent.spec.ts @@ -4,12 +4,10 @@ import ClusterAgent from '../ClusterAgent.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('clusterAgent', () => { let clusterAgent: ClusterAgent; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const clusterId = '🦋'; beforeEach(() => { @@ -18,8 +16,8 @@ describe('clusterAgent', () => { }); describe('list', () => { - it('should make a GET call to the ClusterAgent base url', () => { - clusterAgent.list(clusterId); + it('should make a GET call to the ClusterAgent base url', async () => { + await clusterAgent.list(clusterId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ClusterAgent.getBaseUrl(clusterId)); @@ -27,10 +25,10 @@ describe('clusterAgent', () => { }); describe('upgrade', () => { - it('should make a PUT call to the upgrade cluster agent url', () => { + it('should make a PUT call to the upgrade cluster agent url', async () => { const agentId = '👐'; const data: ClusterNodeUpgradeDataModel = {componentName: 'butterfly', version: '1.2.3'}; - clusterAgent.upgrade(clusterId, agentId, data); + await clusterAgent.upgrade(clusterId, agentId, data); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${ClusterAgent.getBaseUrl(clusterId)}/${agentId}/upgrade`, data); diff --git a/src/resources/Clusters/Nodes/ClusterNodeInterfaces.ts b/src/resources/Clusters/Nodes/ClusterNodeInterfaces.ts index da0527544..8c40e1c21 100644 --- a/src/resources/Clusters/Nodes/ClusterNodeInterfaces.ts +++ b/src/resources/Clusters/Nodes/ClusterNodeInterfaces.ts @@ -10,6 +10,7 @@ export interface ClusterNodeModel { isCustom: boolean; latestVersion: string; name: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any params?: any; status: ClusterNodeStatusModel; version: string; diff --git a/src/resources/Clusters/Nodes/tests/ClusterNode.spec.ts b/src/resources/Clusters/Nodes/tests/ClusterNode.spec.ts index d53ccfe68..5c898c3e7 100644 --- a/src/resources/Clusters/Nodes/tests/ClusterNode.spec.ts +++ b/src/resources/Clusters/Nodes/tests/ClusterNode.spec.ts @@ -4,12 +4,10 @@ import ClusterNode from '../ClusterNode.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('clusterNode', () => { let clusterNode: ClusterNode; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const clusterId = 'cluster-id'; beforeEach(() => { @@ -18,8 +16,8 @@ describe('clusterNode', () => { }); describe('list', () => { - it('should make a GET call to the ClusterNode base url', () => { - clusterNode.list(clusterId); + it('should make a GET call to the ClusterNode base url', async () => { + await clusterNode.list(clusterId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ClusterNode.getBaseUrl(clusterId)); @@ -27,9 +25,9 @@ describe('clusterNode', () => { }); describe('listUpgrades', () => { - it('should make a GET call to the ClusterNode upgrades url', () => { + it('should make a GET call to the ClusterNode upgrades url', async () => { const nodeId = 'expected-node-id'; - clusterNode.listUpgrades(clusterId, nodeId); + await clusterNode.listUpgrades(clusterId, nodeId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ClusterNode.getBaseUrl(clusterId)}/${nodeId}/upgrades`); @@ -37,9 +35,9 @@ describe('clusterNode', () => { }); describe('start', () => { - it('should make a POST call to the ClusterNode start url', () => { + it('should make a POST call to the ClusterNode start url', async () => { const nodeId = 'expected-node-id'; - clusterNode.start(clusterId, nodeId); + await clusterNode.start(clusterId, nodeId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${ClusterNode.getBaseUrl(clusterId)}/${nodeId}/start`); @@ -47,9 +45,9 @@ describe('clusterNode', () => { }); describe('stop', () => { - it('should make a POST call to the ClusterNode stop url', () => { + it('should make a POST call to the ClusterNode stop url', async () => { const nodeId = 'expected-node-id'; - clusterNode.stop(clusterId, nodeId); + await clusterNode.stop(clusterId, nodeId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${ClusterNode.getBaseUrl(clusterId)}/${nodeId}/stop`); @@ -57,9 +55,9 @@ describe('clusterNode', () => { }); describe('dumps', () => { - it('should make a POST call to the ClusterNode dumps url', () => { + it('should make a POST call to the ClusterNode dumps url', async () => { const nodeId = 'expected-node-id'; - clusterNode.dump(clusterId, nodeId); + await clusterNode.dump(clusterId, nodeId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${ClusterNode.getBaseUrl(clusterId)}/${nodeId}/dumps`); @@ -67,10 +65,10 @@ describe('clusterNode', () => { }); describe('upgrade', () => { - it('should make a PUT call to the upgrade cluster agent url', () => { + it('should make a PUT call to the upgrade cluster agent url', async () => { const nodeId = 'expected-node-id'; const data: ClusterNodeUpgradeDataModel = {componentName: 'butterfly', version: '1.2.3'}; - clusterNode.upgrade(clusterId, nodeId, data); + await clusterNode.upgrade(clusterId, nodeId, data); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${ClusterNode.getBaseUrl(clusterId)}/${nodeId}/upgrade`, data); diff --git a/src/resources/Clusters/tests/Clusters.spec.ts b/src/resources/Clusters/tests/Clusters.spec.ts index 59314dd92..71eac9fe0 100644 --- a/src/resources/Clusters/tests/Clusters.spec.ts +++ b/src/resources/Clusters/tests/Clusters.spec.ts @@ -3,12 +3,10 @@ import Cluster from '../Cluster.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Cluster', () => { let cluster: Cluster; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,43 +14,43 @@ describe('Cluster', () => { }); describe('list', () => { - it('should make a GET call to the Cluster base url', () => { - cluster.list(); + it('should make a GET call to the Cluster base url', async () => { + await cluster.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Cluster.baseUrl); }); }); describe('listAgents', () => { - it('should make a GET call to the cluster agents url', () => { + it('should make a GET call to the cluster agents url', async () => { const clusterToGet = 'cluster-to-get'; - cluster.listAgents(clusterToGet); + await cluster.listAgents(clusterToGet); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Cluster.baseUrl}/${clusterToGet}/agents`); }); }); describe('live', () => { - it('should make a GET call to the live cluster url', () => { - cluster.live(); + it('should make a GET call to the live cluster url', async () => { + await cluster.live(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Cluster.baseUrl}/live`); }); }); describe('status', () => { - it('should make a GET call to the status cluster url', () => { + it('should make a GET call to the status cluster url', async () => { const clusterToGet = 'cluster-to-get'; - cluster.status(clusterToGet); + await cluster.status(clusterToGet); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Cluster.baseUrl}/${clusterToGet}/status`); }); }); describe('synchronize', () => { - it('should make a POST call to the live cluster url', () => { + it('should make a POST call to the live cluster url', async () => { const clusterToSync = 'cluster-to-sync'; - cluster.synchronize(clusterToSync); + await cluster.synchronize(clusterToSync); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Cluster.baseUrl}/${clusterToSync}/synchronize`); }); diff --git a/src/resources/Connectivity/tests/Connectivity.spec.ts b/src/resources/Connectivity/tests/Connectivity.spec.ts index 8d4924267..4e6a426ee 100644 --- a/src/resources/Connectivity/tests/Connectivity.spec.ts +++ b/src/resources/Connectivity/tests/Connectivity.spec.ts @@ -4,12 +4,10 @@ import {LogRequestResourceType} from '../ConnectivityInterface.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Connectivity Service', () => { let connectivity: Connectivity; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -21,8 +19,8 @@ describe('Connectivity Service', () => { const activityId = 'ACTIVITY_ID'; const logRequestId = 'LOGREQUEST_ID'; - it('should post a new new log request', () => { - connectivity.requestLog({resourceId, activityId}); + it('should post a new new log request', async () => { + await connectivity.requestLog({resourceId, activityId}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Connectivity.baseUrl}?resourceType=SOURCE`, { resourceId, @@ -30,14 +28,14 @@ describe('Connectivity Service', () => { }); }); - it('should get the state of a log request', () => { - connectivity.getLogRequestState(logRequestId); + it('should get the state of a log request', async () => { + await connectivity.getLogRequestState(logRequestId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Connectivity.baseUrl}/${logRequestId}`); }); - it('should have the resource type if specified', () => { - connectivity.requestLog({resourceId, activityId}, LogRequestResourceType.SECURITY_PROVIDER); + it('should have the resource type if specified', async () => { + await connectivity.requestLog({resourceId, activityId}, LogRequestResourceType.SECURITY_PROVIDER); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Connectivity.baseUrl}?resourceType=SECURITY_PROVIDER`, { resourceId, diff --git a/src/resources/CrawlingModule/CrawlingModuleInterfaces.ts b/src/resources/CrawlingModule/CrawlingModuleInterfaces.ts index da16e94ad..744a96c82 100644 --- a/src/resources/CrawlingModule/CrawlingModuleInterfaces.ts +++ b/src/resources/CrawlingModule/CrawlingModuleInterfaces.ts @@ -197,14 +197,10 @@ export interface CrawlingModuleDeployment { name: string; /** * The status of the Crawling Module - * - * @type {CrawlingModuleStatus} */ status?: CrawlingModuleStatus; /** * The component versions of the Crawling Module - * - * @type {ComponentVersion}. */ versions: ComponentVersion; } diff --git a/src/resources/CrawlingModule/tests/CrawlingModule.spec.ts b/src/resources/CrawlingModule/tests/CrawlingModule.spec.ts index 0e51f8673..9416f86d4 100644 --- a/src/resources/CrawlingModule/tests/CrawlingModule.spec.ts +++ b/src/resources/CrawlingModule/tests/CrawlingModule.spec.ts @@ -9,12 +9,10 @@ import { jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Crawling Module Calls', () => { let crawlingModule: CrawlingModule; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const crawlingModuleId = 'https://youtu.be/UYpWYIET1uE'; beforeEach(() => { @@ -23,69 +21,69 @@ describe('Crawling Module Calls', () => { }); describe('list', () => { - it('should list the crawling modules for an org', () => { - crawlingModule.list(); + it('should list the crawling modules for an org', async () => { + await crawlingModule.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}`); }); }); describe('getUpdateStatus', () => { - it('should get the update status for a given crawling module', () => { - crawlingModule.getUpdateStatus(crawlingModuleId); + it('should get the update status for a given crawling module', async () => { + await crawlingModule.getUpdateStatus(crawlingModuleId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/${crawlingModuleId}/update`); }); }); describe('getMaestroVersions', () => { - it('should get the component versions for the release version of maestro', () => { + it('should get the component versions for the release version of maestro', async () => { const options = { crawlingModuleVersion: 'v2', }; - crawlingModule.getMaestroVersions(options); + await crawlingModule.getMaestroVersions(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/versions/latest?crawlingModuleVersion=v2`); }); - it('should get the component versions for maestro', () => { - crawlingModule.getMaestroVersions(); + it('should get the component versions for maestro', async () => { + await crawlingModule.getMaestroVersions(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/versions/latest`); }); }); describe('listDatabaseVersions', () => { - it('should list the database version history', () => { - crawlingModule.listDatabaseVersions(); + it('should list the database version history', async () => { + await crawlingModule.listDatabaseVersions(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/versions/database`); }); }); describe('listWorkerVersions', () => { - it('should list worker version history', () => { - crawlingModule.listWorkerVersions(); + it('should list worker version history', async () => { + await crawlingModule.listWorkerVersions(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/versions/worker`); }); }); describe('listSecurityWorkerVersions', () => { - it('should list security worker version', () => { - crawlingModule.listSecurityWorkerVersions(); + it('should list security worker version', async () => { + await crawlingModule.listSecurityWorkerVersions(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/versions/securityWorker`); }); }); - it('should post a new new crawling module log request', () => { + it('should post a new new crawling module log request', async () => { const createModel: CreateCrawlingModuleLogRequestModel = { instanceId: 'INSTANCE_ID', logType: CrawlingModuleLogRequestLogType.MAESTRO, operationId: 'OPERATION_ID', }; - crawlingModule.createLogRequest(crawlingModuleId, createModel); + await crawlingModule.createLogRequest(crawlingModuleId, createModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${CrawlingModule.connectivityBaseUrl}/${crawlingModuleId}/logrequests`, @@ -93,17 +91,17 @@ describe('Crawling Module Calls', () => { ); }); - it('should get the state of all log requests', () => { - crawlingModule.getLogRequests(crawlingModuleId, CrawlingModuleLogRequestState.SUCCESSFUL); + it('should get the state of all log requests', async () => { + await crawlingModule.getLogRequests(crawlingModuleId, CrawlingModuleLogRequestState.SUCCESSFUL); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${CrawlingModule.connectivityBaseUrl}/${crawlingModuleId}/logrequests?state=SUCCESSFUL`, ); }); - it('should get the download url', () => { + it('should get the download url', async () => { const logRequestId = 'LOGREQUEST_ID'; - crawlingModule.getLogRequestDownload(crawlingModuleId, logRequestId); + await crawlingModule.getLogRequestDownload(crawlingModuleId, logRequestId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${CrawlingModule.connectivityBaseUrl}/${crawlingModuleId}/logrequests/${logRequestId}/download`, @@ -111,22 +109,22 @@ describe('Crawling Module Calls', () => { }); describe('reportDeployment', () => { - it('should add the deployment', () => { + it('should add the deployment', async () => { const body: CrawlingModuleDeployment = { name: 'test', versions: { maestroVersion: '1.1.1', }, }; - crawlingModule.reportDeployment(crawlingModuleId, body); + await crawlingModule.reportDeployment(crawlingModuleId, body); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/${crawlingModuleId}`, body); }); }); describe('removeDeployment', () => { - it('should delete the deployment', () => { - crawlingModule.removeDeployment(crawlingModuleId); + it('should delete the deployment', async () => { + await crawlingModule.removeDeployment(crawlingModuleId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${CrawlingModule.baseUrl}/${crawlingModuleId}`); }); diff --git a/src/resources/Enums.ts b/src/resources/Enums.ts index f49dee2c5..b28690d5a 100644 --- a/src/resources/Enums.ts +++ b/src/resources/Enums.ts @@ -1170,10 +1170,10 @@ export enum FeedbackConsumerType { } export enum ApiKeyStatus { - ENABLED='ENABLED', - DISABLED='DISABLED', - DISABLED_FOR_INACTIVITY='DISABLED_FOR_INACTIVITY', - EXPIRED='EXPIRED', - SOON_TO_BE_EXPIRED='SOON_TO_BE_EXPIRED', - SOON_TO_BE_DISABLED='SOON_TO_BE_DISABLED' + ENABLED = 'ENABLED', + DISABLED = 'DISABLED', + DISABLED_FOR_INACTIVITY = 'DISABLED_FOR_INACTIVITY', + EXPIRED = 'EXPIRED', + SOON_TO_BE_EXPIRED = 'SOON_TO_BE_EXPIRED', + SOON_TO_BE_DISABLED = 'SOON_TO_BE_DISABLED', } diff --git a/src/resources/Extensions/Extensions.ts b/src/resources/Extensions/Extensions.ts index ea25e7d10..6d85fe572 100644 --- a/src/resources/Extensions/Extensions.ts +++ b/src/resources/Extensions/Extensions.ts @@ -41,6 +41,7 @@ export default class Extension extends Resource { /** * Lists all versions of an [extension](https://docs.coveo.com/en/206/) in a [Coveo Cloud organization](https://docs.coveo.com/en/185/). + * @param extensionId */ listVersions(extensionId: string) { return this.api.get(`${Extension.baseUrl}/${extensionId}/versions`); @@ -48,6 +49,8 @@ export default class Extension extends Resource { /** * Shows a specific version of an [extension](https://docs.coveo.com/en/206/) in a [Coveo Cloud organization](https://docs.coveo.com/en/185/). + * @param extensionId + * @param versionId */ getVersion(extensionId: string, versionId: string) { return this.api.get(`${Extension.baseUrl}/${extensionId}/versions/${versionId}`); @@ -55,8 +58,7 @@ export default class Extension extends Resource { /** * Validates the extension's script - * - * @param {ExtensionCompileCode} extensionCode The code to compile + * @param extensionCode The code to compile */ validateCode(extensionCode: ExtensionCompileCode) { return this.api.post(`${Extension.baseUrl}/test/compile`, extensionCode); diff --git a/src/resources/Extensions/ExtensionsInterfaces.ts b/src/resources/Extensions/ExtensionsInterfaces.ts index 00da9e3b0..abb5188e8 100644 --- a/src/resources/Extensions/ExtensionsInterfaces.ts +++ b/src/resources/Extensions/ExtensionsInterfaces.ts @@ -100,13 +100,11 @@ export interface ExtensionCompileError { export interface ExtensionContentVersionModel { /** * The date at which the extension version was created (in number of milliseconds since UNIX epoch), i.e., the date of the modification of the extension when this extension version was created. - * * @example 1556308241000 */ lastModified: number; /** * The unique identifier of the extension target version. - * * @example hdJSDb4hTkdnsCynNtF.d657FgLSDydcj */ id: string; diff --git a/src/resources/Extensions/tests/Extensions.spec.ts b/src/resources/Extensions/tests/Extensions.spec.ts index 02c8c89ae..e70378356 100644 --- a/src/resources/Extensions/tests/Extensions.spec.ts +++ b/src/resources/Extensions/tests/Extensions.spec.ts @@ -5,12 +5,10 @@ import {CreateExtension, ExtensionCompileCode} from '../ExtensionsInterfaces.js' jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Extension', () => { let extension: Extension; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,108 +16,108 @@ describe('Extension', () => { }); describe('create', () => { - it('should make a post call to the specific Extension url', () => { + it('should make a post call to the specific Extension url', async () => { const testExtension: CreateExtension = { name: 'Test', content: 'print("hello world")', }; - extension.create(testExtension); + await extension.create(testExtension); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Extension.baseUrl, testExtension); }); }); describe('update', () => { - it('should make a put call to the specific Extension url', () => { + it('should make a put call to the specific Extension url', async () => { const extensionId = '1'; const testExtension: CreateExtension = { name: 'Test', content: 'print("hello worlds")', }; - extension.update(extensionId, testExtension); + await extension.update(extensionId, testExtension); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Extension.baseUrl}/${extensionId}`, testExtension); }); }); describe('delete', () => { - it('should make a delete call to the specific Extension url', () => { + it('should make a delete call to the specific Extension url', async () => { const extensionId = '1'; - extension.delete(extensionId); + await extension.delete(extensionId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Extension.baseUrl}/${extensionId}`); }); }); describe('enable', () => { - it('should make a post call to the specific Extension url to enable an extension', () => { + it('should make a post call to the specific Extension url to enable an extension', async () => { const extensionId = '1'; - extension.enable(extensionId); + await extension.enable(extensionId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Extension.baseUrl}/${extensionId}/enable`); }); }); describe('disable', () => { - it('should make a post call to the specific Extension url to disable an extension', () => { + it('should make a post call to the specific Extension url to disable an extension', async () => { const extensionId = '1'; - extension.disable(extensionId); + await extension.disable(extensionId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Extension.baseUrl}/${extensionId}/disable`, {}); }); - it('should make a post call to the specific Extension url to disable an extension with a reason', () => { + it('should make a post call to the specific Extension url to disable an extension with a reason', async () => { const extensionId = '1'; const reason = 'maintenance'; - extension.disable(extensionId, reason); + await extension.disable(extensionId, reason); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Extension.baseUrl}/${extensionId}/disable`, {reason}); }); }); describe('get', () => { - it('should make a get call to the specific Extension url', () => { + it('should make a get call to the specific Extension url', async () => { const extensionId = '1'; - extension.get(extensionId); + await extension.get(extensionId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Extension.baseUrl}/${extensionId}`); }); }); describe('list', () => { - it('should make a GET call to the specific Extension url', () => { - extension.list(); + it('should make a GET call to the specific Extension url', async () => { + await extension.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Extension.baseUrl); }); }); describe('validateCode', () => { - it('should make a POST call to the specific Extension url', () => { + it('should make a POST call to the specific Extension url', async () => { const testExtensionCode: ExtensionCompileCode = { code: 'print("hello world")', language: ExtensionLanguageType.PYTHON3, }; - extension.validateCode(testExtensionCode); + await extension.validateCode(testExtensionCode); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Extension.baseUrl}/test/compile`, testExtensionCode); }); }); describe('listVersions', () => { - it('makes a GET call to the specific extension versions url', () => { + it('makes a GET call to the specific extension versions url', async () => { const extensionId = '1'; - extension.listVersions(extensionId); + await extension.listVersions(extensionId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/extensions/1/versions'); }); }); describe('getVersion', () => { - it('make a get call to the extension version url', () => { + it('make a get call to the extension version url', async () => { const extensionId = '1'; const versionId = 'a'; - extension.getVersion(extensionId, versionId); + await extension.getVersion(extensionId, versionId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/extensions/1/versions/a'); }); diff --git a/src/resources/Fields/Fields.ts b/src/resources/Fields/Fields.ts index 5cf13e3ee..3d962475e 100644 --- a/src/resources/Fields/Fields.ts +++ b/src/resources/Fields/Fields.ts @@ -40,6 +40,7 @@ export default class Field extends Resource { } /** + * @param params * @deprecated list(params?: ListFieldsParams) is kept for backward compatibility, you should now use `search(params?: FieldListingOptions)`. */ list(params?: ListFieldsParams) { diff --git a/src/resources/Fields/tests/Fields.spec.ts b/src/resources/Fields/tests/Fields.spec.ts index dcdbda4a1..613cd8541 100644 --- a/src/resources/Fields/tests/Fields.spec.ts +++ b/src/resources/Fields/tests/Fields.spec.ts @@ -6,12 +6,10 @@ import {FieldListingOptions, FieldModel, ListFieldsParams} from '../FieldsInterf jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Field', () => { let field: Field; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -19,30 +17,30 @@ describe('Field', () => { }); describe('create', () => { - it('should make a POST call to the specific Field url', () => { + it('should make a POST call to the specific Field url', async () => { const fieldModel: FieldModel = {}; - field.create(fieldModel); + await field.create(fieldModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Field.baseUrl, fieldModel); }); }); describe('createFields', () => { - it('should make a POST call to the specific Field url', () => { + it('should make a POST call to the specific Field url', async () => { const fieldModels: FieldModel[] = []; - field.createFields(fieldModels); + await field.createFields(fieldModels); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Field.baseUrl}/batch/create`, fieldModels); }); }); describe('deleteFields', () => { - it('should make a DELETE call to the specific Field url', () => { + it('should make a DELETE call to the specific Field url', async () => { const fieldIds = ['🧀', '', '🥓']; - field.deleteFields(fieldIds); + await field.deleteFields(fieldIds); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${Field.baseUrl}/batch/delete?fields=%F0%9F%A7%80&fields=%F0%9F%A5%93`, @@ -51,85 +49,85 @@ describe('Field', () => { }); describe('updateFields', () => { - it('should make a PUT call to the specific Field url', () => { + it('should make a PUT call to the specific Field url', async () => { const fieldModels: FieldModel[] = []; - field.updateFields(fieldModels); + await field.updateFields(fieldModels); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Field.baseUrl}/batch/update`, fieldModels); }); }); describe('synchronize', () => { - it('should make a POST call to the specific Field url', () => { - field.synchronize(); + it('should make a POST call to the specific Field url', async () => { + await field.synchronize(); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Field.baseUrl}/synchronize`); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Field url', () => { + it('should make a DELETE call to the specific Field url', async () => { const fieldId = '🦊'; - field.delete(fieldId); + await field.delete(fieldId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Field.baseUrl}/${fieldId}`); }); }); describe('get', () => { - it('should make a GET call to the specific Field url', () => { + it('should make a GET call to the specific Field url', async () => { const fieldId = '🍓'; - field.get(fieldId); + await field.get(fieldId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Field.baseUrl}/${fieldId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific Field url', () => { + it('should make a PUT call to the specific Field url', async () => { const fieldId = '🍰'; const fieldModel: FieldModel = {}; - field.update(fieldId, fieldModel); + await field.update(fieldId, fieldModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Field.baseUrl}/${fieldId}`, fieldModel); }); }); describe('list', () => { - it('should make a GET call to the specific Field url', () => { + it('should make a GET call to the specific Field url', async () => { const params: ListFieldsParams = {}; - field.list(params); + await field.list(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Indexes.baseUrl}/page/fields`); }); - it('should make a GET call to the specific Field url with the facetsOnly parameter set as true', () => { + it('should make a GET call to the specific Field url with the facetsOnly parameter set as true', async () => { const params: ListFieldsParams = {facetsOnly: true}; - field.list(params); + await field.list(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Indexes.baseUrl}/page/fields?facetsOnly=true`); }); }); describe('search', () => { - it('should make a POST call to the specific Field url', () => { + it('should make a POST call to the specific Field url', async () => { const params: FieldListingOptions = {}; - field.search(params); + await field.search(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Field.baseUrl}/search`, {}); }); - it('should make a POST call to the specific Field url with the facetsOnly parameter set as true', () => { + it('should make a POST call to the specific Field url with the facetsOnly parameter set as true', async () => { const params: FieldListingOptions = {order: SortingOrder.ASC}; - field.search(params); + await field.search(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Field.baseUrl}/search`, params); }); diff --git a/src/resources/Global/OrganizationConfigurations/tests/OrganizationConfiguration.spec.ts b/src/resources/Global/OrganizationConfigurations/tests/OrganizationConfiguration.spec.ts index d0a81dc11..1a703fce6 100644 --- a/src/resources/Global/OrganizationConfigurations/tests/OrganizationConfiguration.spec.ts +++ b/src/resources/Global/OrganizationConfigurations/tests/OrganizationConfiguration.spec.ts @@ -3,12 +3,10 @@ import OrganizationConfiguration from '../OrganizationConfiguration.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('OrganizationConfiguration', () => { let organizationConfiguration: OrganizationConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,16 +14,16 @@ describe('OrganizationConfiguration', () => { }); describe('list', () => { - it('should make a GET call to "/global/organizations"', () => { - organizationConfiguration.list(); + it('should make a GET call to "/global/organizations"', async () => { + await organizationConfiguration.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/global/organizations'); }); }); describe('get', () => { - it('should make a GET call to "/global/organizations/:organizationId"', () => { - organizationConfiguration.get('🥵'); + it('should make a GET call to "/global/organizations/:organizationId"', async () => { + await organizationConfiguration.get('🥵'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/global/organizations/🥵'); }); diff --git a/src/resources/Global/RegionConfigurations/tests/RegionConfiguration.spec.ts b/src/resources/Global/RegionConfigurations/tests/RegionConfiguration.spec.ts index f61656042..c82ab67fc 100644 --- a/src/resources/Global/RegionConfigurations/tests/RegionConfiguration.spec.ts +++ b/src/resources/Global/RegionConfigurations/tests/RegionConfiguration.spec.ts @@ -3,12 +3,10 @@ import RegionConfiguration from '../RegionConfiguration.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('RegionConfiguration', () => { let regionConfiguration: RegionConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,16 +14,16 @@ describe('RegionConfiguration', () => { }); describe('list', () => { - it('should make a GET call to "/global/regions"', () => { - regionConfiguration.list(); + it('should make a GET call to "/global/regions"', async () => { + await regionConfiguration.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/global/regions'); }); }); describe('get', () => { - it('should make a GET call to "/global/regions/:region"', () => { - regionConfiguration.get('🥵'); + it('should make a GET call to "/global/regions/:region"', async () => { + await regionConfiguration.get('🥵'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/global/regions/🥵'); }); diff --git a/src/resources/Global/tests/Global.spec.ts b/src/resources/Global/tests/Global.spec.ts index 6bf5741dd..7fd2078d4 100644 --- a/src/resources/Global/tests/Global.spec.ts +++ b/src/resources/Global/tests/Global.spec.ts @@ -5,12 +5,10 @@ import RegionConfiguration from '../RegionConfigurations/RegionConfiguration.js' jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Global', () => { let global: Global; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); diff --git a/src/resources/GlobalGroups/tests/GlobalGroup.spec.ts b/src/resources/GlobalGroups/tests/GlobalGroup.spec.ts index 8c84b8922..6bbf7638c 100644 --- a/src/resources/GlobalGroups/tests/GlobalGroup.spec.ts +++ b/src/resources/GlobalGroups/tests/GlobalGroup.spec.ts @@ -5,12 +5,10 @@ import {GlobalGroupModel} from '../GlobalGroupInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('GlobalGroup', () => { let Globalgroup: GlobalGroup; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,15 +16,15 @@ describe('GlobalGroup', () => { }); describe('list', () => { - it('should make a GET call to the GlobalGroups base url', () => { - Globalgroup.list(); + it('should make a GET call to the GlobalGroups base url', async () => { + await Globalgroup.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(GlobalGroup.baseUrl); }); }); describe('create', () => { - it('should make a POST call to the GlobalGroups base url', () => { + it('should make a POST call to the GlobalGroups base url', async () => { const globalgroupModel: New = { displayName: 'My new Globalgroup', members: [], @@ -36,32 +34,32 @@ describe('GlobalGroup', () => { temporaryPrivilegeConfigurations: [], }; - Globalgroup.create(globalgroupModel); + await Globalgroup.create(globalgroupModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(GlobalGroup.baseUrl, globalgroupModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific GlobalGroup url', () => { + it('should make a DELETE call to the specific GlobalGroup url', async () => { const globalgroupToDeleteId = 'GlobalGroup-to-be-deleted'; - Globalgroup.delete(globalgroupToDeleteId); + await Globalgroup.delete(globalgroupToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${GlobalGroup.baseUrl}/${globalgroupToDeleteId}`); }); }); describe('get', () => { - it('should make a GET call to the specific GlobalGroup url', () => { + it('should make a GET call to the specific GlobalGroup url', async () => { const globalgroupToGetId = 'GlobalGroup-to-be-fetched'; - Globalgroup.get(globalgroupToGetId); + await Globalgroup.get(globalgroupToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${GlobalGroup.baseUrl}/${globalgroupToGetId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific GlobalGroup url', () => { + it('should make a PUT call to the specific GlobalGroup url', async () => { const globalgroupModel: GlobalGroupModel = { id: 'Globalgroup-to-update-id', displayName: 'GlobalGroup to be updated', @@ -72,7 +70,7 @@ describe('GlobalGroup', () => { temporaryPrivilegeConfigurations: [], }; - Globalgroup.update(globalgroupModel); + await Globalgroup.update(globalgroupModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${GlobalGroup.baseUrl}/${globalgroupModel.id}`, globalgroupModel); }); diff --git a/src/resources/Groups/Invites/tests/GroupInvite.spec.ts b/src/resources/Groups/Invites/tests/GroupInvite.spec.ts index 920109d70..427603e90 100644 --- a/src/resources/Groups/Invites/tests/GroupInvite.spec.ts +++ b/src/resources/Groups/Invites/tests/GroupInvite.spec.ts @@ -5,12 +5,10 @@ import {InviteModel} from '../GroupInviteInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('groupInvite', () => { let invite: GroupInvite; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const groupId = '💎'; beforeEach(() => { @@ -19,8 +17,8 @@ describe('groupInvite', () => { }); describe('list', () => { - it('should make a GET call to the group invites url', () => { - invite.list(groupId); + it('should make a GET call to the group invites url', async () => { + await invite.list(groupId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/invites'); @@ -28,11 +26,11 @@ describe('groupInvite', () => { }); describe('add', () => { - it('should make a POST call to the groups invites url and set the "sendEmail" parameter to true by default', () => { + it('should make a POST call to the groups invites url and set the "sendEmail" parameter to true by default', async () => { const inviteModel: New = { username: '🐠@coveo.com-google', }; - invite.add(groupId, inviteModel); + await invite.add(groupId, inviteModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -41,11 +39,11 @@ describe('groupInvite', () => { ); }); - it('should make a POST call to the groups invites url and set the "sendEmail" parameter to false if specified', () => { + it('should make a POST call to the groups invites url and set the "sendEmail" parameter to false if specified', async () => { const inviteModel: New = { username: '🐠@coveo.com-google', }; - invite.add(groupId, inviteModel, {sendEmail: false}); + await invite.add(groupId, inviteModel, {sendEmail: false}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -56,8 +54,8 @@ describe('groupInvite', () => { }); describe('delete', () => { - it('should make a DELETE call to /invites/:usernameOrEmail', () => { - invite.delete(groupId, '🐢'); + it('should make a DELETE call to /invites/:usernameOrEmail', async () => { + await invite.delete(groupId, '🐢'); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/invites/🐢'); @@ -65,8 +63,8 @@ describe('groupInvite', () => { }); describe('accept', () => { - it('should make a POST call to /invites/accept', () => { - invite.accept(groupId); + it('should make a POST call to /invites/accept', async () => { + await invite.accept(groupId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/invites/accept'); @@ -74,8 +72,8 @@ describe('groupInvite', () => { }); describe('decline', () => { - it('should make a POST call to /invites/decline', () => { - invite.decline(groupId); + it('should make a POST call to /invites/decline', async () => { + await invite.decline(groupId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/invites/decline'); diff --git a/src/resources/Groups/Members/tests/GroupMember.spec.ts b/src/resources/Groups/Members/tests/GroupMember.spec.ts index 0e2118834..be842807d 100644 --- a/src/resources/Groups/Members/tests/GroupMember.spec.ts +++ b/src/resources/Groups/Members/tests/GroupMember.spec.ts @@ -4,12 +4,10 @@ import {MemberModel} from '../GroupMemberInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('groupmember', () => { let groupMember: GroupMember; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const groupId = '💎'; beforeEach(() => { @@ -18,8 +16,8 @@ describe('groupmember', () => { }); describe('list', () => { - it('should make a GET call to the GroupMember base url', () => { - groupMember.list(groupId); + it('should make a GET call to the GroupMember base url', async () => { + await groupMember.list(groupId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/members'); @@ -32,8 +30,8 @@ describe('groupmember', () => { username: '🐙@coveo.com-google', }; - it('should make a POST call to the GroupMember base url and set the send email param to true by default', () => { - groupMember.add(groupId, member); + it('should make a POST call to the GroupMember base url and set the send email param to true by default', async () => { + await groupMember.add(groupId, member); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -42,8 +40,8 @@ describe('groupmember', () => { ); }); - it('should set the send email param to false if specified to false', () => { - groupMember.add(groupId, member, {sendEmailOnInvite: false}); + it('should set the send email param to false if specified to false', async () => { + await groupMember.add(groupId, member, {sendEmailOnInvite: false}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -54,8 +52,8 @@ describe('groupmember', () => { }); describe('delete', () => { - it('should make a DELETE call to /members/:username', () => { - groupMember.delete(groupId, '🐢'); + it('should make a DELETE call to /members/:username', async () => { + await groupMember.delete(groupId, '🐢'); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/members/🐢'); @@ -63,8 +61,8 @@ describe('groupmember', () => { }); describe('get', () => { - it('should make a GET call to /members/:username', () => { - groupMember.get(groupId, '🐟'); + it('should make a GET call to /members/:username', async () => { + await groupMember.get(groupId, '🐟'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/groups/💎/members/🐟'); diff --git a/src/resources/Groups/Realms/tests/GroupRealm.spec.ts b/src/resources/Groups/Realms/tests/GroupRealm.spec.ts index cb9cb5bfc..e4e5d1c6f 100644 --- a/src/resources/Groups/Realms/tests/GroupRealm.spec.ts +++ b/src/resources/Groups/Realms/tests/GroupRealm.spec.ts @@ -5,12 +5,10 @@ import {RealmModel} from '../GroupRealmInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('groupRealm', () => { let groupRealm: GroupRealm; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const groupId = '💎'; beforeEach(() => { @@ -19,8 +17,8 @@ describe('groupRealm', () => { }); describe('list', () => { - it('should make a GET call to the GroupRealm base url', () => { - groupRealm.list(groupId); + it('should make a GET call to the GroupRealm base url', async () => { + await groupRealm.list(groupId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(GroupRealm.getBaseUrl(groupId)); @@ -28,13 +26,13 @@ describe('groupRealm', () => { }); describe('add', () => { - it('should make a POST call to the GroupRealm base url', () => { + it('should make a POST call to the GroupRealm base url', async () => { const realm: RealmModel = { id: '🐡', displayName: '🐚', provider: AuthProvider.GOOGLE, }; - groupRealm.add(groupId, realm); + await groupRealm.add(groupId, realm); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(GroupRealm.getBaseUrl(groupId), realm); @@ -42,8 +40,8 @@ describe('groupRealm', () => { }); describe('delete', () => { - it('should make a DELETE call to /realms/:id', () => { - groupRealm.delete(groupId, '🐢'); + it('should make a DELETE call to /realms/:id', async () => { + await groupRealm.delete(groupId, '🐢'); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${GroupRealm.getBaseUrl(groupId)}/🐢`); @@ -51,8 +49,8 @@ describe('groupRealm', () => { }); describe('get', () => { - it('should make a GET call to /realms/:id', () => { - groupRealm.get(groupId, '🐟'); + it('should make a GET call to /realms/:id', async () => { + await groupRealm.get(groupId, '🐟'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${GroupRealm.getBaseUrl(groupId)}/🐟`); diff --git a/src/resources/Groups/tests/Groups.spec.ts b/src/resources/Groups/tests/Groups.spec.ts index ee95ced04..723e09811 100644 --- a/src/resources/Groups/tests/Groups.spec.ts +++ b/src/resources/Groups/tests/Groups.spec.ts @@ -8,12 +8,10 @@ import GroupRealm from '../Realms/GroupRealm.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Group', () => { let group: Group; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -21,59 +19,59 @@ describe('Group', () => { }); describe('list', () => { - it('should make a GET call to the Groups base url', () => { - group.list(); + it('should make a GET call to the Groups base url', async () => { + await group.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Group.baseUrl); }); }); describe('create', () => { - it('should make a POST call to the Groups base url', () => { + it('should make a POST call to the Groups base url', async () => { const groupModel: New = { displayName: 'My new group', }; - group.create(groupModel); + await group.create(groupModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Group.baseUrl, groupModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Group url', () => { + it('should make a DELETE call to the specific Group url', async () => { const groupToDeleteId = 'Group-to-be-deleted'; - group.delete(groupToDeleteId); + await group.delete(groupToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Group.baseUrl}/${groupToDeleteId}`); }); }); describe('get', () => { - it('should make a GET call to the specific Group url', () => { + it('should make a GET call to the specific Group url', async () => { const groupToGetId = 'Group-to-be-fetched'; - group.get(groupToGetId); + await group.get(groupToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Group.baseUrl}/${groupToGetId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific Group url', () => { + it('should make a PUT call to the specific Group url', async () => { const groupModel: GroupModel = { id: 'group-to-update-id', displayName: 'Group to be updated', }; - group.update(groupModel); + await group.update(groupModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Group.baseUrl}/${groupModel.id}`, groupModel); }); }); describe('listExclusivePrivileges', () => { - it('should make a GET call to the /groups/{groupId}/privileges/exclusive/me', () => { - group.listExclusivePrivileges('💎'); + it('should make a GET call to the /groups/{groupId}/privileges/exclusive/me', async () => { + await group.listExclusivePrivileges('💎'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( diff --git a/src/resources/HostedInterfacesCore/HostedInterfaceVersionsCore.ts b/src/resources/HostedInterfacesCore/HostedInterfaceVersionsCore.ts index c681ea940..cdc7462a9 100644 --- a/src/resources/HostedInterfacesCore/HostedInterfaceVersionsCore.ts +++ b/src/resources/HostedInterfacesCore/HostedInterfaceVersionsCore.ts @@ -80,13 +80,11 @@ export interface HostedInterfaceVersion { export interface ListHostedInterfaceVersionsParams extends Paginated { /** * The zero-based page to retrieve. - * * @default `0` */ page?: number; /** * The number of versions to return per page. - * * @default `10` */ perPage?: number; @@ -101,7 +99,6 @@ export interface ListHostedInterfaceVersionsParams extends Paginated { * - `undefined`: Configurations are returned in no specific order. * - `asc`: Sort version by number in ascending order. * - `desc`: Sort version by number in descending order. - * * @default `undefined` */ order?: 'asc' | 'desc'; @@ -150,14 +147,12 @@ export interface IAccesses { /** * When set to true, all users can share and see the search page. - * * @default false */ sharingLinkEnabled?: boolean; /** * When set to true, the domain sharing is enabled. Otherwise, only users that have explicitly access to the search page can access it. - * * @default false */ sharingDomainEnabled?: boolean; diff --git a/src/resources/HostedPages/tests/HostedPages.spec.ts b/src/resources/HostedPages/tests/HostedPages.spec.ts index 240e069e9..b0009ac0b 100644 --- a/src/resources/HostedPages/tests/HostedPages.spec.ts +++ b/src/resources/HostedPages/tests/HostedPages.spec.ts @@ -4,13 +4,11 @@ import HostedPages from '../HostedPages.js'; import {HostedPage} from '../HostedPages.model.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('HostedPages', () => { let hostedPages: HostedPages; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const hostedPage: New = { name: 'my new page1', html: '', @@ -36,8 +34,8 @@ describe('HostedPages', () => { }); describe('list', () => { - it('should make a GET call with all parameters', () => { - hostedPages.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); + it('should make a GET call with all parameters', async () => { + await hostedPages.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -45,29 +43,29 @@ describe('HostedPages', () => { ); }); - it('should make a GET call with page', () => { - hostedPages.list({page: 2}); + it('should make a GET call with page', async () => { + await hostedPages.list({page: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${HostedPages.baseUrl}?page=2`); }); - it('should make a GET call with perPage', () => { - hostedPages.list({perPage: 10}); + it('should make a GET call with perPage', async () => { + await hostedPages.list({perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${HostedPages.baseUrl}?perPage=10`); }); - it('should make a GET call with filter', () => { - hostedPages.list({filter: 'Accounting'}); + it('should make a GET call with filter', async () => { + await hostedPages.list({filter: 'Accounting'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${HostedPages.baseUrl}?filter=Accounting`); }); - it('should make a GET call with order', () => { - hostedPages.list({order: 'asc'}); + it('should make a GET call with order', async () => { + await hostedPages.list({order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${HostedPages.baseUrl}?order=asc`); @@ -75,8 +73,8 @@ describe('HostedPages', () => { }); describe('create', () => { - it('should make a POST call to the HostedPages base url', () => { - hostedPages.create(hostedPage); + it('should make a POST call to the HostedPages base url', async () => { + await hostedPages.create(hostedPage); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(HostedPages.baseUrl, hostedPage); @@ -84,10 +82,10 @@ describe('HostedPages', () => { }); describe('get', () => { - it('should make a GET call to the HostedPages base url', () => { + it('should make a GET call to the HostedPages base url', async () => { const id = 'HostedPage-id-to-get'; - hostedPages.get(id); + await hostedPages.get(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${HostedPages.baseUrl}/${id}`); @@ -95,10 +93,10 @@ describe('HostedPages', () => { }); describe('update', () => { - it('should make an UPDATE call to the HostedPages base url', () => { + it('should make an UPDATE call to the HostedPages base url', async () => { const id = 'HostedPage-id-to-update'; - hostedPages.update({...hostedPage, id}); + await hostedPages.update({...hostedPage, id}); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${HostedPages.baseUrl}/${id}`, hostedPage); @@ -106,10 +104,10 @@ describe('HostedPages', () => { }); describe('delete', () => { - it('should make a DELETE call to the InsightPanelInterface base url', () => { + it('should make a DELETE call to the InsightPanelInterface base url', async () => { const id = 'HostedPage-id-to-delete'; - hostedPages.delete(id); + await hostedPages.delete(id); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${HostedPages.baseUrl}/${id}`); diff --git a/src/resources/IPXInterfaces/IPXInterface.model.ts b/src/resources/IPXInterfaces/IPXInterface.model.ts index d255d9d31..4d3808a42 100644 --- a/src/resources/IPXInterfaces/IPXInterface.model.ts +++ b/src/resources/IPXInterfaces/IPXInterface.model.ts @@ -14,9 +14,9 @@ export enum IPXResultTemplateLayout { Thumbnail = 'thumbnail', } -export interface IPXFacet extends HostedInterfaceFacet {} +export type IPXFacet = HostedInterfaceFacet; -export interface IPXCondition extends HostedInterfaceCondition {} +export type IPXCondition = HostedInterfaceCondition; export interface IPXTab extends HostedInterfaceTab { /** * A constant query expression or filter that the Tab should add to any outgoing query. @@ -28,9 +28,9 @@ export interface IPXTab extends HostedInterfaceTab { conditions: IPXCondition[]; } -export interface IPXResultTemplateBadge extends HostedInterfaceResultTemplateBadge {} +export type IPXResultTemplateBadge = HostedInterfaceResultTemplateBadge; -export interface IPXResultTemplateDetail extends HostedInterfaceResultTemplateDetail {} +export type IPXResultTemplateDetail = HostedInterfaceResultTemplateDetail; export interface IPXResultTemplate extends HostedInterfaceResultTemplate { layout: IPXResultTemplateLayout; diff --git a/src/resources/IPXInterfaces/tests/IPXInterface.spec.ts b/src/resources/IPXInterfaces/tests/IPXInterface.spec.ts index 34582acb1..f1d4d9838 100644 --- a/src/resources/IPXInterfaces/tests/IPXInterface.spec.ts +++ b/src/resources/IPXInterfaces/tests/IPXInterface.spec.ts @@ -4,13 +4,11 @@ import {HostedInterfaceConditionOperator} from '../../HostedInterfacesCore/index import IPXInterface from '../IPXInterface.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('IPXInterface', () => { let ipxInterface: IPXInterface; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const config: New = { name: 'some ipx name', facets: [ @@ -109,8 +107,8 @@ describe('IPXInterface', () => { }); describe('list', () => { - it('should make a GET call with all parameters', () => { - ipxInterface.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); + it('should make a GET call with all parameters', async () => { + await ipxInterface.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -118,29 +116,29 @@ describe('IPXInterface', () => { ); }); - it('should make a GET call with page', () => { - ipxInterface.list({page: 2}); + it('should make a GET call with page', async () => { + await ipxInterface.list({page: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}?page=2`); }); - it('should make a GET call with perPage', () => { - ipxInterface.list({perPage: 10}); + it('should make a GET call with perPage', async () => { + await ipxInterface.list({perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}?perPage=10`); }); - it('should make a GET call with filter', () => { - ipxInterface.list({filter: 'Accounting'}); + it('should make a GET call with filter', async () => { + await ipxInterface.list({filter: 'Accounting'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}?filter=Accounting`); }); - it('should make a GET call with order', () => { - ipxInterface.list({order: 'asc'}); + it('should make a GET call with order', async () => { + await ipxInterface.list({order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}?order=asc`); @@ -148,8 +146,8 @@ describe('IPXInterface', () => { }); describe('create', () => { - it('should make a POST call to the IPXInterface base url', () => { - ipxInterface.create(config); + it('should make a POST call to the IPXInterface base url', async () => { + await ipxInterface.create(config); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(IPXInterface.baseUrl, config); @@ -157,10 +155,10 @@ describe('IPXInterface', () => { }); describe('get', () => { - it('should make a GET call to the IPXInterface base url', () => { + it('should make a GET call to the IPXInterface base url', async () => { const id = 'IPInterface-id-to-get'; - ipxInterface.get(id); + await ipxInterface.get(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}`); @@ -168,10 +166,10 @@ describe('IPXInterface', () => { }); describe('update', () => { - it('should make an UPDATE call to the IPXInterface base url', () => { + it('should make an UPDATE call to the IPXInterface base url', async () => { const id = 'IPInterface-id-to-update'; - ipxInterface.update(id, config); + await ipxInterface.update(id, config); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}`, config); @@ -179,10 +177,10 @@ describe('IPXInterface', () => { }); describe('delete', () => { - it('should make a DELETE call to the IPXInterface base url', () => { + it('should make a DELETE call to the IPXInterface base url', async () => { const id = 'IPInterface-id-to-delete'; - ipxInterface.delete(id); + await ipxInterface.delete(id); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}`); @@ -190,10 +188,10 @@ describe('IPXInterface', () => { }); describe('loader', () => { - it('should make a GET call to the IPXInterface base url appended with /loader', () => { + it('should make a GET call to the IPXInterface base url appended with /loader', async () => { const id = 'IPInterface-id-to-get'; - ipxInterface.getLoader(id); + await ipxInterface.getLoader(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}/loader`); @@ -201,10 +199,10 @@ describe('IPXInterface', () => { }); describe('generatePreview', () => { - it('should make a POST call to the IPXInterface base url appended with /preview', () => { + it('should make a POST call to the IPXInterface base url appended with /preview', async () => { const id = 'IPInterface-id-to-preview'; - ipxInterface.generatePreview(id, config); + await ipxInterface.generatePreview(id, config); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}/preview`, config); @@ -212,10 +210,10 @@ describe('IPXInterface', () => { }); describe('getEditInterface', () => { - it('should make a GET call to the IPXInterface base url appended with /edit', () => { + it('should make a GET call to the IPXInterface base url appended with /edit', async () => { const id = 'IPInterface-id-to-edit'; - ipxInterface.getEditInterface(id); + await ipxInterface.getEditInterface(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}/edit`); @@ -223,10 +221,10 @@ describe('IPXInterface', () => { }); describe('getLoginPage', () => { - it('should make a GET call to the IPXInterface base url appended with /login', () => { + it('should make a GET call to the IPXInterface base url appended with /login', async () => { const id = 'IPInterface-id-to-login'; - ipxInterface.getLoginPage(id); + await ipxInterface.getLoginPage(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}/login`); @@ -234,10 +232,10 @@ describe('IPXInterface', () => { }); describe('getToken', () => { - it('should make a GET call to the IPXInterface base url appended with /token', () => { + it('should make a GET call to the IPXInterface base url appended with /token', async () => { const id = 'IPInterface-id-to-get-token'; - ipxInterface.getToken(id); + await ipxInterface.getToken(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${IPXInterface.baseUrl}/${id}/token`); diff --git a/src/resources/InProductExperiences/InProductExperiences.ts b/src/resources/InProductExperiences/InProductExperiences.ts index 0a8f2fefc..da3caedfa 100644 --- a/src/resources/InProductExperiences/InProductExperiences.ts +++ b/src/resources/InProductExperiences/InProductExperiences.ts @@ -53,6 +53,7 @@ export default class InProductExperiences extends Resource { /** * `delete` is a helper method based on observed behavior of the Coveo UI where deletion logic calls out to the * Search Pages endpoint to delete an IPX. + * @param ipxId */ delete(ipxId: string) { return this.searchPages.delete(ipxId); diff --git a/src/resources/InProductExperiences/InProductExperiencesInterfaces.ts b/src/resources/InProductExperiences/InProductExperiencesInterfaces.ts index ca0c0cdca..8d0fdc75a 100644 --- a/src/resources/InProductExperiences/InProductExperiencesInterfaces.ts +++ b/src/resources/InProductExperiences/InProductExperiencesInterfaces.ts @@ -237,7 +237,6 @@ export enum ButtonPositionVerticalRequestModel { } export enum ButtonPositionHorizontalResponseModel { - // eslint-disable-next-line id-blacklist Undefined = 'Undefined', Left = 'Left', Center = 'Center', @@ -245,7 +244,6 @@ export enum ButtonPositionHorizontalResponseModel { } export enum ButtonPositionVerticalResponseModel { - // eslint-disable-next-line id-blacklist Undefined = 'Undefined', Top = 'Top', Middle = 'Middle', @@ -377,7 +375,6 @@ export interface IPXButtonModel { /** * The button host's CSS selector, which defines where the button is rendered. * If unset, it defaults to "" and renders a floating button in the ``. - * * @default `""` */ buttonTargetSelector: string; diff --git a/src/resources/InProductExperiences/tests/InProductExperiences.spec.ts b/src/resources/InProductExperiences/tests/InProductExperiences.spec.ts index 24a5ac723..e4cf395db 100644 --- a/src/resources/InProductExperiences/tests/InProductExperiences.spec.ts +++ b/src/resources/InProductExperiences/tests/InProductExperiences.spec.ts @@ -5,12 +5,10 @@ import {CreateInProductExperienceModel, UpdateInProductExperienceModel} from '.. jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('InProductExperiences', () => { let ipxService: InProductExperiences; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,39 +16,39 @@ describe('InProductExperiences', () => { }); describe('list', () => { - it('should make a GET call to the specific In-Product Experiences url', () => { - ipxService.list(); + it('should make a GET call to the specific In-Product Experiences url', async () => { + await ipxService.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InProductExperiences.ipxBaseUrl}s`); }); }); describe('create', () => { - it('should make a POST call to the In-Product Experiences base url', () => { + it('should make a POST call to the In-Product Experiences base url', async () => { const ipxModel: CreateInProductExperienceModel = { name: 'create-ipx-test', searchHub: 'IpxHub', title: 'Awesome Search', }; - ipxService.create(ipxModel); + await ipxService.create(ipxModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(InProductExperiences.ipxBaseUrl, ipxModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Search Pages url', () => { + it('should make a DELETE call to the specific Search Pages url', async () => { const ipxId = '🐱'; - ipxService.delete(ipxId); + await ipxService.delete(ipxId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${SearchPages.baseUrl}/${ipxId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific In-Product Experiences url', () => { + it('should make a PUT call to the specific In-Product Experiences url', async () => { const ipxId = '🙀'; const ipxModel: UpdateInProductExperienceModel = { name: 'update-ipx-test', @@ -58,26 +56,26 @@ describe('InProductExperiences', () => { title: 'Awesome Search', }; - ipxService.update(ipxId, ipxModel); + await ipxService.update(ipxId, ipxModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${InProductExperiences.ipxBaseUrl}/${ipxId}`, ipxModel); }); }); describe('get loader', () => { - it('should make a GET call to the specific In-Product Experiences url for retrieving the loader script', () => { + it('should make a GET call to the specific In-Product Experiences url for retrieving the loader script', async () => { const ipxId = '🙀'; - ipxService.getLoader(ipxId); + await ipxService.getLoader(ipxId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InProductExperiences.baseUrl}/${ipxId}/inappwidget/loader`); }); - it('should make a GET call to the specific In-Product Experiences url for retrieving the loader script with a specific access token', () => { + it('should make a GET call to the specific In-Product Experiences url for retrieving the loader script with a specific access token', async () => { const ipxId = '🙀'; const accessToken = 'a-fake-token'; - ipxService.getLoader(ipxId, accessToken); + await ipxService.getLoader(ipxId, accessToken); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${InProductExperiences.baseUrl}/${ipxId}/inappwidget/loader?access_token=${accessToken}`, diff --git a/src/resources/Indexes/Documents/Documents.ts b/src/resources/Indexes/Documents/Documents.ts index 86181154d..96a64f8bc 100644 --- a/src/resources/Indexes/Documents/Documents.ts +++ b/src/resources/Indexes/Documents/Documents.ts @@ -8,10 +8,8 @@ export default class Documents extends Resource { /** * Lists the [permissions](https://docs.coveo.com/en/223/glossary/permission) of an [item](https://docs.coveo.com/en/210/glossary/item) in a Coveo Cloud organization index. - * - * @param {string} indexId The unique identifier of the target index. - * @param {string} documentId The unique identifier of the item whose permissions to list. - * + * @param indexId The unique identifier of the target index. + * @param documentId The unique identifier of the item whose permissions to list. */ listPermissions(indexId: string, documentId: string) { return this.api.get( @@ -23,10 +21,9 @@ export default class Documents extends Resource { /** * Lists the [effective permissions](https://docs.coveo.com/en/194/glossary/effective-permissions) of an [item](https://docs.coveo.com/en/210/glossary/item) in a Coveo Cloud organization index. - * - * @param {string} indexId The unique identifier of the target index. - * @param {string} documentId The unique identifier of the item whose permissions to list. - * @param {ListEffectivePermissionsOptions} options + * @param indexId The unique identifier of the target index. + * @param documentId The unique identifier of the item whose permissions to list. + * @param options */ listEffectivePermissions(indexId: string, documentId: string, options: ListEffectivePermissionsOptions = {}) { return this.api.get( diff --git a/src/resources/Indexes/Documents/tests/Documents.spec.ts b/src/resources/Indexes/Documents/tests/Documents.spec.ts index 8caf54d18..fbadea195 100644 --- a/src/resources/Indexes/Documents/tests/Documents.spec.ts +++ b/src/resources/Indexes/Documents/tests/Documents.spec.ts @@ -4,15 +4,13 @@ import Documents from '../Documents.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - const INDEX_ID = 'index-id'; const DOCUMENT_ID = '42.31537$file://movies/the-shining.txt'; describe('Documents', () => { let documents: Documents; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -20,8 +18,8 @@ describe('Documents', () => { }); describe('listPermissions', () => { - it('should make a GET call to the specific Documents url', () => { - documents.listPermissions(INDEX_ID, DOCUMENT_ID); + it('should make a GET call to the specific Documents url', async () => { + await documents.listPermissions(INDEX_ID, DOCUMENT_ID); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Documents.baseUrl}/${INDEX_ID}/documents/42.31537%2524file%253A%252F%252Fmovies%252Fthe-shining.txt/permissions`, @@ -30,16 +28,16 @@ describe('Documents', () => { }); describe('listEffectivePermissions', () => { - it('should make a GET call to the specific Documents url', () => { - documents.listEffectivePermissions(INDEX_ID, DOCUMENT_ID); + it('should make a GET call to the specific Documents url', async () => { + await documents.listEffectivePermissions(INDEX_ID, DOCUMENT_ID); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Documents.baseUrl}/${INDEX_ID}/documents/42.31537%2524file%253A%252F%252Fmovies%252Fthe-shining.txt/permissions/effective`, ); }); - it('should use the passed options in the query parameters', () => { - documents.listEffectivePermissions(INDEX_ID, DOCUMENT_ID, { + it('should use the passed options in the query parameters', async () => { + await documents.listEffectivePermissions(INDEX_ID, DOCUMENT_ID, { states: [SinglePermissionState.OUT_OF_DATE, SinglePermissionState.DISABLED], page: 0, perPage: 25, diff --git a/src/resources/Indexes/tests/Indexes.spec.ts b/src/resources/Indexes/tests/Indexes.spec.ts index b4662d0fd..af7819d5f 100644 --- a/src/resources/Indexes/tests/Indexes.spec.ts +++ b/src/resources/Indexes/tests/Indexes.spec.ts @@ -1,15 +1,13 @@ import API from '../../../APICore.js'; import Indexes from '../Indexes.js'; -import {CreateCoveoIndexModel} from '../IndexesInterface.js'; +import {CreateCoveoIndexModel, RawIndexConfig} from '../IndexesInterface.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Cluster', () => { let indexes: Indexes; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,39 +15,39 @@ describe('Cluster', () => { }); describe('list', () => { - it('should make a GET call to the Cluster base url', () => { - indexes.list(); + it('should make a GET call to the Cluster base url', async () => { + await indexes.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Indexes.baseUrl); }); }); describe('get', () => { - it('should make a GET call for specific index', () => { + it('should make a GET call for specific index', async () => { const indexId = 'ABC123'; - indexes.get(indexId); + await indexes.get(indexId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}`); }); }); describe('delete', () => { - it('should make a DELETE call for specific index', () => { + it('should make a DELETE call for specific index', async () => { const indexId = 'ABC123'; - indexes.delete(indexId); + await indexes.delete(indexId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}`); }); }); describe('create', () => { - it('should make a CREATE call with no arguments', () => { - indexes.create({}); + it('should make a CREATE call with no arguments', async () => { + await indexes.create({}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Indexes.baseUrl, {}); }); - it('should make a CREATE call to mimick COPY_INDEX', () => { + it('should make a CREATE call to mimick COPY_INDEX', async () => { const indexToBeCopied: CreateCoveoIndexModel = { copyFromId: 'originalIndexID', machineSpec: { @@ -63,23 +61,23 @@ describe('Cluster', () => { }, }; - indexes.create(indexToBeCopied); + await indexes.create(indexToBeCopied); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Indexes.baseUrl, indexToBeCopied); }); }); describe('backup', () => { - it('should make a BACKUP call for specified index', () => { + it('should make a BACKUP call for specified index', async () => { const indexId = 'ABC123'; - indexes.backup(indexId); + await indexes.backup(indexId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/backup`, {}); }); }); describe('get all backups', () => { - it('should make a GETBACKUPS call', () => { + it('should make a GETBACKUPS call', async () => { const options = { backupId: 'backupId', from: 0, @@ -91,7 +89,7 @@ describe('Cluster', () => { to: 20, }; - indexes.getBackups(options); + await indexes.getBackups(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Indexes.indexBackupUrl}?backupId=backupId&from=0&indexId=indexId&order=asc&page=100&perPage=10&sortBy=name&to=20`, @@ -100,86 +98,86 @@ describe('Cluster', () => { }); describe('forceCommit', () => { - it('should make a FORCECOMMIT call for specified index', () => { + it('should make a FORCECOMMIT call for specified index', async () => { const indexId = 'ABC123'; - indexes.forceCommit(indexId); + await indexes.forceCommit(indexId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/commit`, {}); }); }); describe('readOnly', () => { - it('should make a READONLY call for specified index', () => { + it('should make a READONLY call for specified index', async () => { const isReadOnly = true; const indexId = 'ABC123'; - indexes.readOnly(indexId, isReadOnly); + await indexes.readOnly(indexId, isReadOnly); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/readonly?isReadOnly=true`, {}); }); }); describe('resize', () => { - it('should make a RESIZE call for specified index', () => { + it('should make a RESIZE call for specified index', async () => { const sizeInGibibytes = 100; const indexId = 'ABC123'; - indexes.resize(indexId, sizeInGibibytes); + await indexes.resize(indexId, sizeInGibibytes); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/resize`, {sizeInGibibytes}); }); }); describe('stats', () => { - it('should make a RESIZE call for specified index', () => { + it('should make a RESIZE call for specified index', async () => { const indexId = 'ABC123'; - indexes.stats(indexId); + await indexes.stats(indexId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/stats`); }); }); describe('isOnline', () => { - it('should make a ISONLINE call for specified index', () => { + it('should make a ISONLINE call for specified index', async () => { const isOnline = true; const indexId = 'ABC123'; - indexes.isOnline(indexId, isOnline); + await indexes.isOnline(indexId, isOnline); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/online?isOnline=true`, {}); }); }); describe('restore', () => { - it('should make a RESTORE call for specified index', () => { + it('should make a RESTORE call for specified index', async () => { const backupId = 'backUpID'; const indexId = 'ABC123'; - indexes.restore(indexId, backupId); + await indexes.restore(indexId, backupId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/restore?backupId=backUpID`, {}); }); }); describe('getJason', () => { - it('should make a GETJSON call for specified index', () => { + it('should make a GETJSON call for specified index', async () => { const indexId = 'ABC123'; - indexes.getJson(indexId); + await indexes.getJson(indexId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/configuration`); }); }); describe('editJason', () => { - it('should make a EDITJSON call for specified index', () => { + it('should make a EDITJSON call for specified index', async () => { const indexId = 'ABC123'; const indexConfig: any = {}; - indexes.editJson(indexId, indexConfig); + await indexes.editJson(indexId, indexConfig as unknown as RawIndexConfig); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Indexes.baseUrl}/${indexId}/configuration`, indexConfig); }); }); describe('editJasonAll', () => { - it('should make a EDITJSONALL call for specified index', () => { + it('should make a EDITJSONALL call for specified index', async () => { const indexConfig: any = {}; - indexes.editJsonAll(indexConfig); + await indexes.editJsonAll(indexConfig as unknown as RawIndexConfig); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Indexes.baseUrl}/raw`, indexConfig); }); diff --git a/src/resources/InsightPanelConfigs/InsightPanelConfigInterfaces.ts b/src/resources/InsightPanelConfigs/InsightPanelConfigInterfaces.ts index 14f32ebe4..8e7dc5fee 100644 --- a/src/resources/InsightPanelConfigs/InsightPanelConfigInterfaces.ts +++ b/src/resources/InsightPanelConfigs/InsightPanelConfigInterfaces.ts @@ -6,13 +6,11 @@ import {Paginated, WithRequired} from '../BaseInterfaces.js'; export interface InsightPanelConfigListOptions extends Paginated { /** * The zero-based page to retrieve. - * * @default `0` */ page?: number; /** * The number of configurations to return per page. - * * @default `10` */ perPage?: number; @@ -27,7 +25,6 @@ export interface InsightPanelConfigListOptions extends Paginated { * - `undefined`: Configurations are returned in no specific order. * - `asc`: Sort configurations by name in ascending order. * - `desc`: Sort configurations by name in descending order. - * * @default `undefined` */ order?: 'asc' | 'desc'; @@ -58,7 +55,6 @@ export interface InsightPanelConfigCreationParams { * The key is the context information such as `subject` or `description`. * * The value is a CRM reference allowing the Insight Panel integration to retrieve the context information from the CRM. - * * @example * ```json * { @@ -162,7 +158,6 @@ export interface InsightPanelConfigModel { * The key is the context information such as `subject` or `description`. * * The value is a CRM reference allowing the Insight Panel integration to retrieve the context information from the CRM. - * * @example * ```json * { diff --git a/src/resources/InsightPanelConfigs/tests/InsightPanelConfig.spec.ts b/src/resources/InsightPanelConfigs/tests/InsightPanelConfig.spec.ts index cc864c68e..6d585fce8 100644 --- a/src/resources/InsightPanelConfigs/tests/InsightPanelConfig.spec.ts +++ b/src/resources/InsightPanelConfigs/tests/InsightPanelConfig.spec.ts @@ -3,12 +3,10 @@ import InsightPanelConfig from '../InsightPanelConfig.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('InsightPanelConfig', () => { let insightPanel: InsightPanelConfig; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,8 +14,8 @@ describe('InsightPanelConfig', () => { }); describe('list', () => { - it('should make a GET call to the InsightPanelConfig base URL', () => { - insightPanel.list({page: 2, perPage: 10, filter: 'anything', order: 'desc'}); + it('should make a GET call to the InsightPanelConfig base URL', async () => { + await insightPanel.list({page: 2, perPage: 10, filter: 'anything', order: 'desc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -26,22 +24,22 @@ describe('InsightPanelConfig', () => { }); describe('with order parameter', () => { - it('should not sort by default', () => { - insightPanel.list(); + it('should not sort by default', async () => { + await insightPanel.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(InsightPanelConfig.baseUrl); }); - it('should sort in ascending order when specified', () => { - insightPanel.list({order: 'asc'}); + it('should sort in ascending order when specified', async () => { + await insightPanel.list({order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelConfig.baseUrl}?order=asc`); }); - it('should sort in descending order when specified', () => { - insightPanel.list({order: 'desc'}); + it('should sort in descending order when specified', async () => { + await insightPanel.list({order: 'desc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelConfig.baseUrl}?order=desc`); @@ -50,13 +48,13 @@ describe('InsightPanelConfig', () => { }); describe('create', () => { - it('should make a POST call to the InsightPanelConfig base URL', () => { + it('should make a POST call to the InsightPanelConfig base URL', async () => { const newInsightPanelModel = { name: 'my insight panel', pipeline: 'some query pipeline', }; - insightPanel.create(newInsightPanelModel); + await insightPanel.create(newInsightPanelModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(InsightPanelConfig.baseUrl, newInsightPanelModel); @@ -64,9 +62,9 @@ describe('InsightPanelConfig', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific InsightPanelConfig URL', () => { + it('should make a DELETE call to the specific InsightPanelConfig URL', async () => { const insightPanelConfigId = 'some-insight-panel-config'; - insightPanel.delete(insightPanelConfigId); + await insightPanel.delete(insightPanelConfigId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${InsightPanelConfig.baseUrl}/${insightPanelConfigId}`); @@ -74,7 +72,7 @@ describe('InsightPanelConfig', () => { }); describe('update', () => { - it('should make a PUT call to the specific InsightPanelConfig URL', () => { + it('should make a PUT call to the specific InsightPanelConfig URL', async () => { const insightPanelModel = { id: 'some-insight-panel-config', name: 'my insight panel', @@ -87,7 +85,7 @@ describe('InsightPanelConfig', () => { }; const {id: _, ...insightPanelModelWithoutId} = insightPanelModel; - insightPanel.update(insightPanelModel); + await insightPanel.update(insightPanelModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -98,9 +96,9 @@ describe('InsightPanelConfig', () => { }); describe('get', () => { - it('should make a GET call to the specific InsightPanelConfig URL', () => { + it('should make a GET call to the specific InsightPanelConfig URL', async () => { const insightPanelConfigId = 'some-insight-panel-config'; - insightPanel.get(insightPanelConfigId); + await insightPanel.get(insightPanelConfigId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelConfig.baseUrl}/${insightPanelConfigId}`); @@ -108,14 +106,14 @@ describe('InsightPanelConfig', () => { }); describe('duplicate', () => { - it('should make a POST call to the specific InsightPanelConfig URL', () => { + it('should make a POST call to the specific InsightPanelConfig URL', async () => { const duplicateInsightPanelParams = { name: 'my duplicated insight panel', id: 'some-insight-panel-config', }; const {id, name} = duplicateInsightPanelParams; - insightPanel.duplicate(duplicateInsightPanelParams); + await insightPanel.duplicate(duplicateInsightPanelParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${InsightPanelConfig.baseUrl}/${id}`, {name}); diff --git a/src/resources/InsightPanelInterfaces/InsightPanelInterface.model.ts b/src/resources/InsightPanelInterfaces/InsightPanelInterface.model.ts index 2622bf22d..ffdd4a79a 100644 --- a/src/resources/InsightPanelInterfaces/InsightPanelInterface.model.ts +++ b/src/resources/InsightPanelInterfaces/InsightPanelInterface.model.ts @@ -18,18 +18,18 @@ export enum InsightPanelResultTemplateLayout { Thumbnail = 'thumbnail', } -interface InsightPanelOption extends HostedInterfaceOption {} +type InsightPanelOption = HostedInterfaceOption; interface InsightPanelResultTagOptions { enabled: boolean; color: string; } -export interface InsightPanelResultTemplateBadge extends HostedInterfaceResultTemplateBadge {} +export type InsightPanelResultTemplateBadge = HostedInterfaceResultTemplateBadge; -export interface InsightPanelCondition extends HostedInterfaceCondition {} +export type InsightPanelCondition = HostedInterfaceCondition; -export interface InsightPanelResultTemplateDetail extends HostedInterfaceResultTemplateDetail {} +export type InsightPanelResultTemplateDetail = HostedInterfaceResultTemplateDetail; export interface InsightPanelResultActions { /** @@ -103,7 +103,7 @@ export interface InsightPanelResultTemplate extends HostedInterfaceResultTemplat tags: InsightPanelResultTags; } -export interface InsightPanelFacet extends HostedInterfaceFacet {} +export type InsightPanelFacet = HostedInterfaceFacet; export interface InsightPanelTab extends HostedInterfaceTab { /** @@ -186,7 +186,7 @@ export interface InsightPanelInterfaceConfiguration extends HostedInterfaceConfi publishedVersion?: number; } -export interface IListInsightPanelInterfacesParameters extends ListHostedInterfacesParams {} +export type IListInsightPanelInterfacesParameters = ListHostedInterfacesParams; export interface InsightPanelInterfaceConfigurationUpdateParams extends Omit, @@ -197,4 +197,4 @@ export interface InsightPanelInterfaceConfigurationUpdateParams settings: WithOptional; } -export interface InsightPanelInterfaceVersion extends HostedInterfaceVersion {} +export type InsightPanelInterfaceVersion = HostedInterfaceVersion; diff --git a/src/resources/InsightPanelInterfaces/tests/InsightPanelInterface.spec.ts b/src/resources/InsightPanelInterfaces/tests/InsightPanelInterface.spec.ts index 2624ba9fb..8b2f468e3 100644 --- a/src/resources/InsightPanelInterfaces/tests/InsightPanelInterface.spec.ts +++ b/src/resources/InsightPanelInterfaces/tests/InsightPanelInterface.spec.ts @@ -5,13 +5,11 @@ import InsightPanelInterface from '../InsightPanelInterface.js'; import {InsightPanelInterfaceConfiguration, InsightPanelResultTemplateLayout} from '../InsightPanelInterface.model.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('InsightPanelInterface', () => { let insightPanelInterface: InsightPanelInterface; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const config: New = { name: 'some insight panel name', facets: [ @@ -117,8 +115,8 @@ describe('InsightPanelInterface', () => { }); describe('list', () => { - it('should make a GET call with all parameters', () => { - insightPanelInterface.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); + it('should make a GET call with all parameters', async () => { + await insightPanelInterface.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -126,29 +124,29 @@ describe('InsightPanelInterface', () => { ); }); - it('should make a GET call with page', () => { - insightPanelInterface.list({page: 2}); + it('should make a GET call with page', async () => { + await insightPanelInterface.list({page: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}?page=2`); }); - it('should make a GET call with perPage', () => { - insightPanelInterface.list({perPage: 10}); + it('should make a GET call with perPage', async () => { + await insightPanelInterface.list({perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}?perPage=10`); }); - it('should make a GET call with filter', () => { - insightPanelInterface.list({filter: 'Accounting'}); + it('should make a GET call with filter', async () => { + await insightPanelInterface.list({filter: 'Accounting'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}?filter=Accounting`); }); - it('should make a GET call with order', () => { - insightPanelInterface.list({order: 'asc'}); + it('should make a GET call with order', async () => { + await insightPanelInterface.list({order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}?order=asc`); @@ -156,8 +154,8 @@ describe('InsightPanelInterface', () => { }); describe('create', () => { - it('should make a POST call to the InsightPanelInterface base url', () => { - insightPanelInterface.create(config); + it('should make a POST call to the InsightPanelInterface base url', async () => { + await insightPanelInterface.create(config); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(InsightPanelInterface.baseUrl, config); @@ -165,10 +163,10 @@ describe('InsightPanelInterface', () => { }); describe('get', () => { - it('should make a GET call to the InsightPanelInterface base url', () => { + it('should make a GET call to the InsightPanelInterface base url', async () => { const id = 'IPInterface-id-to-get'; - insightPanelInterface.get(id); + await insightPanelInterface.get(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}`); @@ -176,10 +174,10 @@ describe('InsightPanelInterface', () => { }); describe('update', () => { - it('should make an UPDATE call to the InsightPanelInterface base url', () => { + it('should make an UPDATE call to the InsightPanelInterface base url', async () => { const id = 'IPInterface-id-to-update'; - insightPanelInterface.update({...config, id}); + await insightPanelInterface.update({...config, id}); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}`, config); @@ -187,10 +185,10 @@ describe('InsightPanelInterface', () => { }); describe('delete', () => { - it('should make a DELETE call to the InsightPanelInterface base url', () => { + it('should make a DELETE call to the InsightPanelInterface base url', async () => { const id = 'IPInterface-id-to-delete'; - insightPanelInterface.delete(id); + await insightPanelInterface.delete(id); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}`); @@ -200,8 +198,8 @@ describe('InsightPanelInterface', () => { describe('listVersions', () => { const id = 'IPInterface-id-to-get'; - it('should make a GET call with all parameters', () => { - insightPanelInterface.listVersions(id, {page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); + it('should make a GET call with all parameters', async () => { + await insightPanelInterface.listVersions(id, {page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -209,29 +207,29 @@ describe('InsightPanelInterface', () => { ); }); - it('should make a GET call with page', () => { - insightPanelInterface.listVersions(id, {page: 2}); + it('should make a GET call with page', async () => { + await insightPanelInterface.listVersions(id, {page: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}/versions?page=2`); }); - it('should make a GET call with perPage', () => { - insightPanelInterface.listVersions(id, {perPage: 10}); + it('should make a GET call with perPage', async () => { + await insightPanelInterface.listVersions(id, {perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}/versions?perPage=10`); }); - it('should make a GET call with filter', () => { - insightPanelInterface.listVersions(id, {filter: 'Accounting'}); + it('should make a GET call with filter', async () => { + await insightPanelInterface.listVersions(id, {filter: 'Accounting'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}/versions?filter=Accounting`); }); - it('should make a GET call with order', () => { - insightPanelInterface.listVersions(id, {order: 'asc'}); + it('should make a GET call with order', async () => { + await insightPanelInterface.listVersions(id, {order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}/versions?order=asc`); @@ -239,11 +237,11 @@ describe('InsightPanelInterface', () => { }); describe('getVersion', () => { - it('should make a GET call to the InsightPanelInterface version url', () => { + it('should make a GET call to the InsightPanelInterface version url', async () => { const id = 'IPInterface-id-to-get'; const versionNumber = 1; - insightPanelInterface.getVersion(id, versionNumber); + await insightPanelInterface.getVersion(id, versionNumber); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${InsightPanelInterface.baseUrl}/${id}/versions/${versionNumber}`); @@ -251,12 +249,12 @@ describe('InsightPanelInterface', () => { }); describe('restoreVersion', () => { - it('should make a POST call to the InsightPanelInterface version restore url', () => { + it('should make a POST call to the InsightPanelInterface version restore url', async () => { const id = 'IPInterface-id-to-get'; const versionNumber = 2; const label = 'Some version label'; - insightPanelInterface.restoreVersion(id, versionNumber, { + await insightPanelInterface.restoreVersion(id, versionNumber, { label, }); @@ -271,12 +269,12 @@ describe('InsightPanelInterface', () => { }); describe('updateVersionLabel', () => { - it('should make a PUT call to the InsightPanelInterface version label url', () => { + it('should make a PUT call to the InsightPanelInterface version label url', async () => { const id = 'IPInterface-id-to-get'; const versionNumber = 3; const label = 'some-label'; - insightPanelInterface.updateVersionLabel(id, versionNumber, { + await insightPanelInterface.updateVersionLabel(id, versionNumber, { label, }); diff --git a/src/resources/InternalBaseInterface.ts b/src/resources/InternalBaseInterface.ts index 1bf54e954..4a6b0399c 100644 --- a/src/resources/InternalBaseInterface.ts +++ b/src/resources/InternalBaseInterface.ts @@ -5,7 +5,6 @@ export interface DeprecatedPaginated { page?: number; /** * The number of elements to list per page. - * * @deprecated use @see {Paginated} and @see {perPage} instead. */ pageSize?: number; diff --git a/src/resources/Invites/tests/Invites.spec.ts b/src/resources/Invites/tests/Invites.spec.ts index 6195355c9..35f306372 100644 --- a/src/resources/Invites/tests/Invites.spec.ts +++ b/src/resources/Invites/tests/Invites.spec.ts @@ -2,13 +2,11 @@ import API from '../../../APICore.js'; import Invites from '../Invites.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Invites', () => { let invites: Invites; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,8 +14,8 @@ describe('Invites', () => { }); describe('list', () => { - it('should make a GET call with all parameters', () => { - invites.list(); + it('should make a GET call with all parameters', async () => { + await invites.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Invites.baseUrl); diff --git a/src/resources/License/LicenseInterfaces.ts b/src/resources/License/LicenseInterfaces.ts index e2f200b16..2d9306ace 100644 --- a/src/resources/License/LicenseInterfaces.ts +++ b/src/resources/License/LicenseInterfaces.ts @@ -91,6 +91,7 @@ export interface LicenseModel { /** * Various properties/configurations settings that apply to the organization. */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any properties: any; /** * The type of the license diff --git a/src/resources/License/tests/License.spec.ts b/src/resources/License/tests/License.spec.ts index 6ecc1b788..4d4af7205 100644 --- a/src/resources/License/tests/License.spec.ts +++ b/src/resources/License/tests/License.spec.ts @@ -5,13 +5,11 @@ import {LicenseModel} from '../LicenseInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('License', () => { let license: License; const sectionName = LicenseSection.searchapi; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -19,14 +17,14 @@ describe('License', () => { }); describe('get', () => { - it('should make a GET call to the specific License url', () => { - license.get(sectionName); + it('should make a GET call to the specific License url', async () => { + await license.get(sectionName); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/license/searchapi'); }); - it('should make a get call to the generic License URL if no section is specified', () => { - license.get(); + it('should make a get call to the generic License URL if no section is specified', async () => { + await license.get(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/license'); @@ -34,16 +32,16 @@ describe('License', () => { }); describe('full', () => { - it('should make a GET call to the full License url', () => { - license.full(); + it('should make a GET call to the full License url', async () => { + await license.full(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/license`); }); }); describe('update', () => { - it('should make a PUT call to the specific License url', () => { - license.update(sectionName, {value: 100}); + it('should make a PUT call to the specific License url', async () => { + await license.update(sectionName, {value: 100}); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith('/rest/organizations/{organizationName}/license/searchapi', { value: 100, @@ -52,8 +50,8 @@ describe('License', () => { }); describe('updateAll', () => { - it('should make a PUT call to the specific License url', () => { - license.updateLicense({value: 100} as unknown as LicenseModel); + it('should make a PUT call to the specific License url', async () => { + await license.updateLicense({value: 100} as unknown as LicenseModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith('/rest/organizations/{organizationName}/license', { value: 100, @@ -62,10 +60,10 @@ describe('License', () => { }); describe('updateExpirationDate', () => { - it('should make a PUT call to the specific License url', () => { + it('should make a PUT call to the specific License url', async () => { const now = new Date(); - license.updateExpirationDate({expirationDate: now.getTime()}); + await license.updateExpirationDate({expirationDate: now.getTime()}); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/license/expiration?expirationDate=${now.getTime()}`, @@ -74,8 +72,8 @@ describe('License', () => { }); describe('getPossibleSourceTypes', () => { - it('should make a GET call to the specific License url', () => { - license.getPossibleSourceTypes(); + it('should make a GET call to the specific License url', async () => { + await license.getPossibleSourceTypes(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/license/sourcetypes'); }); diff --git a/src/resources/Limits/Limits.ts b/src/resources/Limits/Limits.ts index f3e26809a..20c5833ce 100644 --- a/src/resources/Limits/Limits.ts +++ b/src/resources/Limits/Limits.ts @@ -32,7 +32,6 @@ export default class Limits extends Resource { /** * Shows the status of a specific limit in an organization - * * @param sectionName The name of the target license section * @param limitKey The unique identifier of the target limit status to show */ diff --git a/src/resources/Limits/tests/Limits.spec.ts b/src/resources/Limits/tests/Limits.spec.ts index 1e1b6f0b0..1b0f0463d 100644 --- a/src/resources/Limits/tests/Limits.spec.ts +++ b/src/resources/Limits/tests/Limits.spec.ts @@ -5,12 +5,10 @@ import {LimitType} from '../LimitsInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Limits', () => { let limits: Limits; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,30 +16,30 @@ describe('Limits', () => { }); describe('get', () => { - it('should make a GET call to the specific part of the limits', () => { - limits.get(LicenseSection.content); + it('should make a GET call to the specific part of the limits', async () => { + await limits.get(LicenseSection.content); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/limits/content`); }); }); describe('getAll', () => { - it('should make a GET call to get all limits', () => { - limits.getAll(); + it('should make a GET call to get all limits', async () => { + await limits.getAll(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/limits`); }); }); describe('getHistoryLimit', () => { - it('should make a GET call to get specific history limit to the specific part of the limit', () => { - limits.getHistoryLimit(LicenseSection.content, '123'); + it('should make a GET call to get specific history limit to the specific part of the limit', async () => { + await limits.getHistoryLimit(LicenseSection.content, '123'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/limits/content/123/history`); }); - it('should make a GET call to get specific history limit to the specific part of the limit with specific date when defined', () => { - limits.getHistoryLimit(LicenseSection.content, '123', {from: '2020-05-06', to: '2021-10-05'}); + it('should make a GET call to get specific history limit to the specific part of the limit with specific date when defined', async () => { + await limits.getHistoryLimit(LicenseSection.content, '123', {from: '2020-05-06', to: '2021-10-05'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/limits/content/123/history?from=2020-05-06&to=2021-10-05`, @@ -50,16 +48,16 @@ describe('Limits', () => { }); describe('getAllPerLimitType', () => { - it('should make a GET call to get all limits with specified limit type', () => { - limits.getAllPerLimitType(LimitType.TECHNICAL); + it('should make a GET call to get all limits with specified limit type', async () => { + await limits.getAllPerLimitType(LimitType.TECHNICAL); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/limits?limitType=TECHNICAL`); }); }); describe('getSpecificLimitStatus', () => { - it('should make a GET call to get a specific limit status', () => { - limits.getSpecificLimitStatus(LicenseSection.content, '123'); + it('should make a GET call to get a specific limit status', async () => { + await limits.getSpecificLimitStatus(LicenseSection.content, '123'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/limits/content/123`); }); diff --git a/src/resources/Links/tests/Links.spec.ts b/src/resources/Links/tests/Links.spec.ts index b2698feb9..3386386fe 100644 --- a/src/resources/Links/tests/Links.spec.ts +++ b/src/resources/Links/tests/Links.spec.ts @@ -3,12 +3,10 @@ import Links from '../Links.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Links', () => { let links: Links; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,8 +14,8 @@ describe('Links', () => { }); describe('delete all links', () => { - it('should make a DELETE call to the specific links url', () => { - links.deleteAll(); + it('should make a DELETE call to the specific links url', async () => { + await links.deleteAll(); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Links.baseUrl}`); diff --git a/src/resources/Logs/LogsInterfaces.ts b/src/resources/Logs/LogsInterfaces.ts index b6ae3603f..c1ebd61ee 100644 --- a/src/resources/Logs/LogsInterfaces.ts +++ b/src/resources/Logs/LogsInterfaces.ts @@ -34,6 +34,7 @@ export interface IndexingPipelineLogEntry { datetime: string; guid: string; id: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any meta: Record; operation: IndexingPipelineLogOperations; organizationId: string; diff --git a/src/resources/Logs/tests/Logs.spec.ts b/src/resources/Logs/tests/Logs.spec.ts index 80dac49f1..632562c8c 100644 --- a/src/resources/Logs/tests/Logs.spec.ts +++ b/src/resources/Logs/tests/Logs.spec.ts @@ -4,12 +4,10 @@ import {GetFacetsParams, GetLogsOrFacetsRequestBodyModel, GetLogsParams} from '. jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Logs', () => { let logs: Logs; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,33 +15,33 @@ describe('Logs', () => { }); describe('get', () => { - it('should make a POST call to the logs base url', () => { + it('should make a POST call to the logs base url', async () => { const params = {} as GetLogsParams; const options = {} as GetLogsOrFacetsRequestBodyModel; - logs.get(params, options); + await logs.get(params, options); expect(serverlessApi.post).toHaveBeenCalledTimes(1); expect(serverlessApi.post).toHaveBeenCalledWith('/logs/v1/organizations/{organizationName}', {}); }); }); describe('getFacets', () => { - it('should make a POST call to the specific logs url', () => { + it('should make a POST call to the specific logs url', async () => { const params = {} as GetFacetsParams; const options = {} as GetLogsOrFacetsRequestBodyModel; - logs.getFacets(params, options); + await logs.getFacets(params, options); expect(serverlessApi.post).toHaveBeenCalledTimes(1); expect(serverlessApi.post).toHaveBeenCalledWith('/logs/v1/organizations/{organizationName}/facets', {}); }); }); describe('getFacetsStats', () => { - it('should make a POST call to the specific logs url', () => { + it('should make a POST call to the specific logs url', async () => { const params = {} as GetFacetsParams; const options = {} as GetLogsOrFacetsRequestBodyModel; - logs.getFacetsStats(params, options); + await logs.getFacetsStats(params, options); expect(serverlessApi.post).toHaveBeenCalledTimes(1); expect(serverlessApi.post).toHaveBeenCalledWith( '/logs/v1/organizations/{organizationName}/facetsStats', diff --git a/src/resources/MachineLearning/CaseClassificationConfiguration/CaseClassificationConfiguration.ts b/src/resources/MachineLearning/CaseClassificationConfiguration/CaseClassificationConfiguration.ts index c05a60133..23d9d3fb1 100644 --- a/src/resources/MachineLearning/CaseClassificationConfiguration/CaseClassificationConfiguration.ts +++ b/src/resources/MachineLearning/CaseClassificationConfiguration/CaseClassificationConfiguration.ts @@ -20,6 +20,7 @@ export default class CaseClassificationConfiguration extends Resource { static previewUrl = `${CaseClassificationConfiguration.baseUrl}/preview`; /** + * @param configModel * @deprecated create(configModel: CaseClassificationConfigurationModel) is kept for backward compatibility. You should now use MachineLearning `register(registration: RegistrationModel)` instead. */ create(configModel: New) { @@ -30,6 +31,7 @@ export default class CaseClassificationConfiguration extends Resource { } /** + * @param modelId * @deprecated delete(modelId: string) is kept for backward compatibility. You should now use Models `delete(modelId: string)` instead. */ delete(modelId: string) { @@ -37,6 +39,7 @@ export default class CaseClassificationConfiguration extends Resource { } /** + * @param modelId * @deprecated get(modelId: string) is kept for backward compatibility. You should now use Models `get(modelId: string)` instead. */ get(modelId: string) { @@ -46,6 +49,7 @@ export default class CaseClassificationConfiguration extends Resource { } /** + * @param configModel * @deprecated update(configModel: CaseClassificationConfigurationModel) is kept for backward compatibility. You should now use Models `update(modelId: string, update: RegistrationModel)` instead. */ update(configModel: CaseClassificationConfigurationModel) { diff --git a/src/resources/MachineLearning/CaseClassificationConfiguration/tests/CaseClassificationConfiguration.spec.ts b/src/resources/MachineLearning/CaseClassificationConfiguration/tests/CaseClassificationConfiguration.spec.ts index d594486c0..45120f565 100644 --- a/src/resources/MachineLearning/CaseClassificationConfiguration/tests/CaseClassificationConfiguration.spec.ts +++ b/src/resources/MachineLearning/CaseClassificationConfiguration/tests/CaseClassificationConfiguration.spec.ts @@ -8,12 +8,10 @@ import { jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('CaseClassificationConfiguration', () => { let ccConfig: CaseClassificationConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const modelConfigs: CaseClassificationConfigurationModel[] = [ { @@ -74,9 +72,9 @@ describe('CaseClassificationConfiguration', () => { describe('create', () => { const newCCConfigModel = modelConfigs; newCCConfigModel.forEach((config) => { - it('should make a POST call to the Case Classification Configuration base url', () => { + it('should make a POST call to the Case Classification Configuration base url', async () => { const {modelId: _, ...newConfig} = config; - ccConfig.create(newConfig); + await ccConfig.create(newConfig); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(CaseClassificationConfiguration.modelUrl, newConfig); @@ -85,9 +83,9 @@ describe('CaseClassificationConfiguration', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific Case Classification Configuration url', () => { + it('should make a DELETE call to the specific Case Classification Configuration url', async () => { const configToDeleteId = 'config-to-be-deleted'; - ccConfig.delete(configToDeleteId); + await ccConfig.delete(configToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${CaseClassificationConfiguration.modelUrl}/${configToDeleteId}`); @@ -95,9 +93,9 @@ describe('CaseClassificationConfiguration', () => { }); describe('get', () => { - it('should make a GET call to the specific Case Classification Configuration url', () => { + it('should make a GET call to the specific Case Classification Configuration url', async () => { const configToGetId = 'config-to-be-fetched'; - ccConfig.get(configToGetId); + await ccConfig.get(configToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${CaseClassificationConfiguration.modelUrl}/${configToGetId}`); @@ -106,8 +104,8 @@ describe('CaseClassificationConfiguration', () => { describe('update', () => { modelConfigs.forEach((config) => { - it('should make a PUT call to the specific Case Classification Configuration url', () => { - ccConfig.update(config); + it('should make a PUT call to the specific Case Classification Configuration url', async () => { + await ccConfig.update(config); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -119,7 +117,7 @@ describe('CaseClassificationConfiguration', () => { }); describe('fields', () => { - it('should make a POST call to retrieve valid content field candidates for the Case Classification model configuration', () => { + it('should make a POST call to retrieve valid content field candidates for the Case Classification model configuration', async () => { const params: CaseClassificationContentFieldsParams = { sources: ['1st-source', '2nd-source'], languageField: 'English', @@ -135,16 +133,16 @@ describe('CaseClassificationConfiguration', () => { }, ], }; - ccConfig.fields(params); + await ccConfig.fields(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(CaseClassificationConfiguration.fieldsUrl, params); }); - it('should make a POST call to retrieve valid content field candidates for the Case Classification model configuration with an advancedQuery', () => { + it('should make a POST call to retrieve valid content field candidates for the Case Classification model configuration with an advancedQuery', async () => { const params = {advancedQuery: "@source='some source'"}; - ccConfig.fields(params); + await ccConfig.fields(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(CaseClassificationConfiguration.fieldsUrl, params); @@ -152,7 +150,7 @@ describe('CaseClassificationConfiguration', () => { }); describe('preview', () => { - it('should make a POST call to retrieve document group preview info from the Case Classification model configuration preview url', () => { + it('should make a POST call to retrieve document group preview info from the Case Classification model configuration preview url', async () => { const params: CaseClassificationContentFieldsParams = { sources: ['1st-source', '2nd-source'], languageField: 'English', @@ -168,7 +166,7 @@ describe('CaseClassificationConfiguration', () => { }, ], }; - ccConfig.preview(params); + await ccConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(CaseClassificationConfiguration.previewUrl, params); @@ -177,10 +175,10 @@ describe('CaseClassificationConfiguration', () => { describe('documentCount', () => { modelConfigs.forEach(() => { - it('should make a POST call to the specific Case Classification Configuration url with an advancedQuery', () => { + it('should make a POST call to the specific Case Classification Configuration url with an advancedQuery', async () => { const params = {advancedQuery: "@source='some source'"}; - ccConfig.documentCount('fieldTest', params); + await ccConfig.documentCount('fieldTest', params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -189,14 +187,14 @@ describe('CaseClassificationConfiguration', () => { ); }); - it('should make a POST call to the specific Case Classification Configuration url with standard params', () => { + it('should make a POST call to the specific Case Classification Configuration url with standard params', async () => { const params = { sources: ['some source'], languageField: 'language', caseExtractionPeriod: {exportPeriod: 'P6M', dateField: 'date'}, }; - ccConfig.documentCount('fieldTest', params); + await ccConfig.documentCount('fieldTest', params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -209,10 +207,10 @@ describe('CaseClassificationConfiguration', () => { describe('valueCount', () => { modelConfigs.forEach(() => { - it('should make a POST call to the specific Case Classification Configuration url with an advancedQuery', () => { + it('should make a POST call to the specific Case Classification Configuration url with an advancedQuery', async () => { const params = {advancedQuery: "@source='some source'"}; - ccConfig.valueCount('fieldTest', params); + await ccConfig.valueCount('fieldTest', params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -221,14 +219,14 @@ describe('CaseClassificationConfiguration', () => { ); }); - it('should make a POST call to the specific Case Classification Configuration url with standard params', () => { + it('should make a POST call to the specific Case Classification Configuration url with standard params', async () => { const params = { sources: ['some source'], languageField: 'language', caseExtractionPeriod: {exportPeriod: 'P6M', dateField: 'date'}, }; - ccConfig.valueCount('fieldTest', params); + await ccConfig.valueCount('fieldTest', params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( diff --git a/src/resources/MachineLearning/DNEConfiguration/tests/DNEConfiguration.spec.ts b/src/resources/MachineLearning/DNEConfiguration/tests/DNEConfiguration.spec.ts index eeacb5954..5a4196d64 100644 --- a/src/resources/MachineLearning/DNEConfiguration/tests/DNEConfiguration.spec.ts +++ b/src/resources/MachineLearning/DNEConfiguration/tests/DNEConfiguration.spec.ts @@ -8,12 +8,10 @@ import { jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('DNEConfiguration', () => { let dneConfig: DNEConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -21,25 +19,25 @@ describe('DNEConfiguration', () => { }); describe('listFields', () => { - it('should make a GET call to the specific DNEConfiguration url', () => { - dneConfig.listFields(); + it('should make a GET call to the specific DNEConfiguration url', async () => { + await dneConfig.listFields(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/autoselectionfieldcandidates`); }); }); describe('getDocumentExtractionPreview', () => { - it('should make a GET call to the specific DNEConfiguration url', () => { - dneConfig.getDocumentExtractionPreview(); + it('should make a GET call to the specific DNEConfiguration url', async () => { + await dneConfig.getDocumentExtractionPreview(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/documentextractionpreview`); }); }); describe('getDocumentExtractionQuery', () => { - it('should make a POST call to the specific DNEConfiguration url', () => { + it('should make a POST call to the specific DNEConfiguration url', async () => { const model: DocumentExtractionQueryModel = {}; - dneConfig.getDocumentExtractionQuery(model); + await dneConfig.getDocumentExtractionQuery(model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/documentextractionquery`, model); @@ -47,9 +45,9 @@ describe('DNEConfiguration', () => { }); describe('parseDocumentExtractionQuery', () => { - it('should make a GET call to the specific DNEConfiguration url', () => { + it('should make a GET call to the specific DNEConfiguration url', async () => { const query = 'lala'; - dneConfig.parseDocumentExtractionQuery(query); + await dneConfig.parseDocumentExtractionQuery(query); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/documentextractionquerymodel?query=lala`); @@ -71,9 +69,9 @@ describe('DNEConfiguration', () => { }); describe('createWithQuery', () => { - it('should make a POST call to the specific DNEConfiguration url', () => { + it('should make a POST call to the specific DNEConfiguration url', async () => { const model: DNENewConfigurationModel = {modelDisplayName: '🐩'}; - dneConfig.createWithQuery(model); + await dneConfig.createWithQuery(model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/model`, model); @@ -81,9 +79,9 @@ describe('DNEConfiguration', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific DNEConfiguration url', () => { + it('should make a DELETE call to the specific DNEConfiguration url', async () => { const modelId = '🦆'; - dneConfig.delete(modelId); + await dneConfig.delete(modelId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/model/${modelId}`); @@ -91,9 +89,9 @@ describe('DNEConfiguration', () => { }); describe('get', () => { - it('should make a GET call to the specific DNEConfiguration url', () => { + it('should make a GET call to the specific DNEConfiguration url', async () => { const modelId = '🦆'; - dneConfig.get(modelId); + await dneConfig.get(modelId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/model/${modelId}`); @@ -101,10 +99,10 @@ describe('DNEConfiguration', () => { }); describe('update', () => { - it('should make a PUT call to the specific DNEConfiguration url', () => { + it('should make a PUT call to the specific DNEConfiguration url', async () => { const modelId = '🦆'; const modelConfig: DNEConfigurationModel = {modelDisplayName: '🐺'}; - dneConfig.update(modelId, modelConfig); + await dneConfig.update(modelId, modelConfig); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${DNEConfiguration.baseUrl}/model/${modelId}`, modelConfig); diff --git a/src/resources/MachineLearning/DocumentInterfaces.ts b/src/resources/MachineLearning/DocumentInterfaces.ts index ed6c5a8bd..102c5f96c 100644 --- a/src/resources/MachineLearning/DocumentInterfaces.ts +++ b/src/resources/MachineLearning/DocumentInterfaces.ts @@ -7,7 +7,6 @@ export interface DocumentPreviewParamsAdvanced { filterConditions?: never; /** * The query that determines the documents to extract. Cannot be used with other document extraction parameters, e.g. sources, filter conditions, etc. - * * @Example @source==("My source") AND @permanentid AND @language="English"; */ advancedQuery: string; diff --git a/src/resources/MachineLearning/IAPRConfiguration/IAPRConfigurationInterfaces.ts b/src/resources/MachineLearning/IAPRConfiguration/IAPRConfigurationInterfaces.ts index 710e522cd..46c4c4e21 100644 --- a/src/resources/MachineLearning/IAPRConfiguration/IAPRConfigurationInterfaces.ts +++ b/src/resources/MachineLearning/IAPRConfiguration/IAPRConfigurationInterfaces.ts @@ -10,7 +10,6 @@ export interface IAPRConfigurationModel { modelDisplayName: string; /** * The trackingIds that usage analytics events must contain for the model to use those events in its learning process. The model will use an event if it contains at least one of the specified IDs - * * @Example: [ "sport" ] */ trackingIds: string[]; diff --git a/src/resources/MachineLearning/IAPRConfiguration/tests/IAPRConfiguration.spec.ts b/src/resources/MachineLearning/IAPRConfiguration/tests/IAPRConfiguration.spec.ts index 123fb4a53..f9bf1c85f 100644 --- a/src/resources/MachineLearning/IAPRConfiguration/tests/IAPRConfiguration.spec.ts +++ b/src/resources/MachineLearning/IAPRConfiguration/tests/IAPRConfiguration.spec.ts @@ -1,15 +1,13 @@ -import API from '../../../../APICore'; -import IAPRConfiguration from '../IAPRConfiguration'; -import {IAPRConfigurationModel} from '../IAPRConfigurationInterfaces'; +import API from '../../../../APICore.js'; +import IAPRConfiguration from '../IAPRConfiguration.js'; +import {IAPRConfigurationModel} from '../IAPRConfigurationInterfaces.js'; jest.mock('../../../../APICore'); -const APIMock: jest.Mock = API as any; - describe('IAPRConfiguration', () => { let iaprConfig: IAPRConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,13 +15,13 @@ describe('IAPRConfiguration', () => { }); describe('createPQSModel', () => { - it('should make a POST call to the specific IAPRConfiguration url', () => { + it('should make a POST call to the specific IAPRConfiguration url', async () => { const model: IAPRConfigurationModel = { modelDisplayName: 'kiki soudane', catalogId: 'catalog_mock', trackingIds: ['sport'], }; - iaprConfig.create(model); + await iaprConfig.create(model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${IAPRConfiguration.baseUrl}/model`, model); }); diff --git a/src/resources/MachineLearning/MachineLearningInterfaces.ts b/src/resources/MachineLearning/MachineLearningInterfaces.ts index d67c9e87f..502e752ce 100644 --- a/src/resources/MachineLearning/MachineLearningInterfaces.ts +++ b/src/resources/MachineLearning/MachineLearningInterfaces.ts @@ -20,6 +20,7 @@ export interface PageViewFiltered { export interface CommerceSupport { enabled: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } @@ -29,6 +30,7 @@ export interface DocumentContentSource { } export interface ExtraConfig { + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } diff --git a/src/resources/MachineLearning/ModelInformation/ModelInformationInterfaces.ts b/src/resources/MachineLearning/ModelInformation/ModelInformationInterfaces.ts index bb2d94ec8..a3bb9a69a 100644 --- a/src/resources/MachineLearning/ModelInformation/ModelInformationInterfaces.ts +++ b/src/resources/MachineLearning/ModelInformation/ModelInformationInterfaces.ts @@ -34,13 +34,16 @@ export interface ModelInformationART { candidateExamples: Record; languages: { [languageKey: string]: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any contextKeysToDocuments: any; queries: number; documents: number; + // eslint-disable-next-line @typescript-eslint/no-explicit-any filters: any; words: number; stopwords: number; docPerFilters: Record; + // eslint-disable-next-line @typescript-eslint/no-explicit-any [otherKeys: string]: any; }; }; @@ -59,6 +62,7 @@ export interface ModelInformationART { clicksDecayParams: Record; }; featureSelectLog: FeatureSelectLog; + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } @@ -111,8 +115,11 @@ export interface ModelInformationER { primaryEventType: string; params: { languages: string[]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any eventConfigs: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any eventsToCombineMapping: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any normalizeUrl: any; querySplit: { maxNgram: number; @@ -124,7 +131,9 @@ export interface ModelInformationER { }; contentIDKeys: string[]; primaryEventGroupName: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any eventGroupValuesExamplesInHistory: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any indicatorsMap: any; metaInfo: MetaInfo; modelBuildingStats: { @@ -141,20 +150,29 @@ export interface ModelInformationER { primaryEventName: string; 'Recommendations per language: ': Record; featureSelectLog: FeatureSelectLog; + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } export interface ModelInformationPR { metaInfo: MetaInfo; + // eslint-disable-next-line @typescript-eslint/no-explicit-any itemBasedNamesAndNumOfRecordedItems: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any itemBasedNamesWithCandidateItems: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any numOfEventsPerEventType: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any userBasedCandidates: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any userBasedNumOfItems: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any userBasedNumOfUsers: any; contentIDKeys: string[]; parentIDKeys: []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any modelBuildingStats?: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any languages?: any; } @@ -194,6 +212,7 @@ export interface ModelInformationQS { topCooccurrencesExamples: Record; stopwords: Record; featureSelectLog: FeatureSelectLog; + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } diff --git a/src/resources/MachineLearning/ModelListing/ModelListingInterfaces.ts b/src/resources/MachineLearning/ModelListing/ModelListingInterfaces.ts index 887ef4402..faa7614bc 100644 --- a/src/resources/MachineLearning/ModelListing/ModelListingInterfaces.ts +++ b/src/resources/MachineLearning/ModelListing/ModelListingInterfaces.ts @@ -1,43 +1,36 @@ export interface MLListingModel { /** * The model display name in the Coveo Administration console. - * * @Example `MyModelDisplayName` */ modelDisplayName: string; /** * The unique identifier of the target machine learning model. - * * @Example `My_Model_ID` */ modelId: string; /** * The id of the engine. - * * @Example `topclicks` */ engineId: string; /** * The date and time the model was last updated. - * * @Example `1691762520000` - **/ + */ estimatedPreviousModelUpdateTime: number; /** * The date and time the model is scheduled to start its next update. - * * @Example `1691762520000` */ nextModelUpdateTime: number; /** * Version of the platform. - * * @Example `2` */ platformVersion: 1 | 2; /** * The model size statistic. Depending on the model type, this value represents the number of items or queries on which the model was built. - * * @Example `5` */ modelSizeStatistic: number; @@ -56,7 +49,6 @@ export interface MLListingModel { export interface MLModelStatusInfo { /** * The status of the model. - * * @Example `ACTIVE` */ modelStatus: @@ -71,7 +63,6 @@ export interface MLModelStatusInfo { | 'INACTIVE'; /** * The remaining days until the model is archived. - * * @Example `4` */ daysUntilArchival?: number; @@ -80,25 +71,21 @@ export interface MLModelStatusInfo { export interface MLModelAssociation { /** * The unique identifier of the query pipeline to which the model is associated. - * * @Example `38b08160-d7d4-4626-8e03-53587c23415d` */ parentId: string; /** * The unique identifier of the model association. - * * @Example `917af358-13fd-4c8e-94af-7cf649bddc48` */ id: string; /** * The name of the query pipeline or case assist configuration the model is associated with. - * * @Example `association name` */ name: string; /** * The type of the association. - * * @Example `QUERY_PIPELINE` */ associationType: 'QUERY_PIPELINE' | 'CASE_ASSIST'; diff --git a/src/resources/MachineLearning/ModelListing/tests/ModelListing.spec.ts b/src/resources/MachineLearning/ModelListing/tests/ModelListing.spec.ts index cf501ca42..4fdccb479 100644 --- a/src/resources/MachineLearning/ModelListing/tests/ModelListing.spec.ts +++ b/src/resources/MachineLearning/ModelListing/tests/ModelListing.spec.ts @@ -3,12 +3,10 @@ import ModelListing from '../ModelListing.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('ModelListing', () => { let modelListing: ModelListing; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,24 +14,24 @@ describe('ModelListing', () => { }); describe('list', () => { - it('should make a GET call to the ModelListing base url', () => { - modelListing.list(); + it('should make a GET call to the ModelListing base url', async () => { + await modelListing.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ModelListing.baseUrl); }); - it('should make a GET call to the ModelListing base url if empty array is passed', () => { - modelListing.list([]); + it('should make a GET call to the ModelListing base url if empty array is passed', async () => { + await modelListing.list([]); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ModelListing.baseUrl); }); - it('should make a GET call to the ModelListing base url with provided list of engineIds', () => { + it('should make a GET call to the ModelListing base url with provided list of engineIds', async () => { const engines = ['first', 'second']; const expectedUrl = `${ModelListing.baseUrl}?engineIds=${engines[0]}&engineIds=${engines[1]}`; - modelListing.list(engines); + await modelListing.list(engines); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(expectedUrl); diff --git a/src/resources/MachineLearning/Models/tests/Models.spec.ts b/src/resources/MachineLearning/Models/tests/Models.spec.ts index e5b97f1af..8070f8bb8 100644 --- a/src/resources/MachineLearning/Models/tests/Models.spec.ts +++ b/src/resources/MachineLearning/Models/tests/Models.spec.ts @@ -5,12 +5,10 @@ import Models from '../Models.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Models', () => { let models: Models; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,67 +16,67 @@ describe('Models', () => { }); describe('list', () => { - it('should make a GET call to the Models base url', () => { - models.list(); + it('should make a GET call to the Models base url', async () => { + await models.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Models.baseUrl); }); - it('should make a GET call to the Models base url if empty array is passed', () => { - models.list([]); + it('should make a GET call to the Models base url if empty array is passed', async () => { + await models.list([]); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Models.baseUrl); }); - it('should make a GET call to the Models base url with provided engineIds', () => { + it('should make a GET call to the Models base url with provided engineIds', async () => { const engines = ['first', 'second']; const expectedUrl = `${Models.baseUrl}?engines=${engines[0]}&engines=${engines[1]}`; - models.list(engines); + await models.list(engines); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(expectedUrl); }); }); describe('listDetails', () => { - it('should make a GET call to the specific Models url', () => { - models.listDetails(); + it('should make a GET call to the specific Models url', async () => { + await models.listDetails(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Models.baseUrl}/details`); }); }); describe('get', () => { - it('should make a GET call to the specific Model', () => { + it('should make a GET call to the specific Model', async () => { const modelId = 'O. O'; - models.get(modelId); + await models.get(modelId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Models.baseUrl}/${modelId}`); }); }); describe('getDetails', () => { - it("should make a GET call to the specific Model's Details", () => { + it("should make a GET call to the specific Model's Details", async () => { const modelId = 'O. O'; - models.getDetails(modelId); + await models.getDetails(modelId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Models.baseUrl}/${modelId}/details`); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Models url', () => { + it('should make a DELETE call to the specific Models url', async () => { const modelId = 'O .O'; - models.delete(modelId); + await models.delete(modelId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Models.baseUrl}/${modelId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific Models url', () => { + it('should make a PUT call to the specific Models url', async () => { const modelId = 'O .O'; const registrationUpdate: RegistrationModel = { engineId: 'OvO', @@ -88,7 +86,7 @@ describe('Models', () => { intervalUnit: IntervalUnit.DAY, }; - models.update(modelId, registrationUpdate); + await models.update(modelId, registrationUpdate); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Models.baseUrl}/${modelId}`, registrationUpdate); }); diff --git a/src/resources/MachineLearning/PQSConfiguration/PQSConfigurationInterfaces.ts b/src/resources/MachineLearning/PQSConfiguration/PQSConfigurationInterfaces.ts index bb9821ac8..e63f0b35d 100644 --- a/src/resources/MachineLearning/PQSConfiguration/PQSConfigurationInterfaces.ts +++ b/src/resources/MachineLearning/PQSConfiguration/PQSConfigurationInterfaces.ts @@ -40,7 +40,6 @@ export interface PQSConfigurationModel { searchEventFilter?: string; /** * The trackingIds that usage analytics events must contain for the model to use those events in its learning process. The model will use an event if it contains at least one of the specified IDs - * * @Example: [ "sport" ] */ trackingIds: string[]; diff --git a/src/resources/MachineLearning/PQSConfiguration/tests/PQSConfiguration.spec.ts b/src/resources/MachineLearning/PQSConfiguration/tests/PQSConfiguration.spec.ts index c28613313..35ca09e42 100644 --- a/src/resources/MachineLearning/PQSConfiguration/tests/PQSConfiguration.spec.ts +++ b/src/resources/MachineLearning/PQSConfiguration/tests/PQSConfiguration.spec.ts @@ -4,12 +4,10 @@ import {PQSConfigurationModel} from '../PQSConfigurationInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('PQSConfiguration', () => { let pqsConfig: PQSConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,13 +15,13 @@ describe('PQSConfiguration', () => { }); describe('createPQSModel', () => { - it('should make a POST call to the specific PQSConfiguration url', () => { + it('should make a POST call to the specific PQSConfiguration url', async () => { const model: PQSConfigurationModel = { modelDisplayName: 'kiki soudane', catalogId: 'sekia', trackingIds: ['sport'], }; - pqsConfig.createPQSModel(model); + await pqsConfig.createPQSModel(model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${PQSConfiguration.baseUrl}/model`, model); }); diff --git a/src/resources/MachineLearning/RGAConfiguration/RelevanceGenerativeAnsweringConfigurationInterface.ts b/src/resources/MachineLearning/RGAConfiguration/RelevanceGenerativeAnsweringConfigurationInterface.ts index f28d45a91..175d1ff4e 100644 --- a/src/resources/MachineLearning/RGAConfiguration/RelevanceGenerativeAnsweringConfigurationInterface.ts +++ b/src/resources/MachineLearning/RGAConfiguration/RelevanceGenerativeAnsweringConfigurationInterface.ts @@ -3,7 +3,6 @@ import {DocumentRequirementStatus} from '../DocumentInterfaces.js'; export interface RelevanceGenerativeAnsweringDocumentGroupPreview { /** * The query that was used to fetch document information. - * * @Example @source==("Salesforce Notifier") */ query: string; @@ -29,7 +28,6 @@ export interface RelevanceGenerativeAnsweringDocumentGroupPreview { documentLimit: number; /** * Status for the number of required documents to build the model. - * * @Example OK */ documentRequirementStatus: DocumentRequirementStatus; diff --git a/src/resources/MachineLearning/RGAConfiguration/tests/RGAConfiguration.spec.ts b/src/resources/MachineLearning/RGAConfiguration/tests/RGAConfiguration.spec.ts index ae3622980..0d0612881 100644 --- a/src/resources/MachineLearning/RGAConfiguration/tests/RGAConfiguration.spec.ts +++ b/src/resources/MachineLearning/RGAConfiguration/tests/RGAConfiguration.spec.ts @@ -4,12 +4,10 @@ import RelevanceGenerativeAnsweringConfiguration from '../RelevanceGenerativeAns jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('RGAConfiguration', () => { let rgaConfig: RelevanceGenerativeAnsweringConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,22 +15,22 @@ describe('RGAConfiguration', () => { }); describe('preview', () => { - it('should make a POST call with sources to retrieve RGA preview', () => { + it('should make a POST call with sources to retrieve RGA preview', async () => { const params: DocumentGroupPreviewParams = { sources: ['source1', 'source2'], filterConditions: [], }; - rgaConfig.preview(params); + await rgaConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(RelevanceGenerativeAnsweringConfiguration.previewUrl, params); }); - it('should make a POST call with advanced query to retrieve RGA preview', () => { + it('should make a POST call with advanced query to retrieve RGA preview', async () => { const params: DocumentGroupPreviewParams = { advancedQuery: 'some advanced query @ test', }; - rgaConfig.preview(params); + await rgaConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(RelevanceGenerativeAnsweringConfiguration.previewUrl, params); diff --git a/src/resources/MachineLearning/SemanticEncoderConfiguration/SemanticEncoderConfigurationInterfaces.ts b/src/resources/MachineLearning/SemanticEncoderConfiguration/SemanticEncoderConfigurationInterfaces.ts index be1e89471..8090c5a8a 100644 --- a/src/resources/MachineLearning/SemanticEncoderConfiguration/SemanticEncoderConfigurationInterfaces.ts +++ b/src/resources/MachineLearning/SemanticEncoderConfiguration/SemanticEncoderConfigurationInterfaces.ts @@ -3,7 +3,6 @@ import {DocumentRequirementStatus} from '../DocumentInterfaces.js'; export interface SemanticEncoderDocumentGroupPreview { /** * The query that was used to fetch document information. - * * @Example @source==("Salesforce Notifier") */ query: string; @@ -29,7 +28,6 @@ export interface SemanticEncoderDocumentGroupPreview { documentLimit: number; /** * Status for the number of required documents to build the model. - * * @Example OK */ documentRequirementStatus: DocumentRequirementStatus; diff --git a/src/resources/MachineLearning/SemanticEncoderConfiguration/tests/SemanticEncoderConfiguration.spec.ts b/src/resources/MachineLearning/SemanticEncoderConfiguration/tests/SemanticEncoderConfiguration.spec.ts index e0ccefbb7..c7d7ea689 100644 --- a/src/resources/MachineLearning/SemanticEncoderConfiguration/tests/SemanticEncoderConfiguration.spec.ts +++ b/src/resources/MachineLearning/SemanticEncoderConfiguration/tests/SemanticEncoderConfiguration.spec.ts @@ -4,12 +4,10 @@ import SemanticEncoderConfiguration from '../SemanticEncoderConfiguration.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SemanticEncoderConfiguration', () => { let semConfig: SemanticEncoderConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,22 +15,22 @@ describe('SemanticEncoderConfiguration', () => { }); describe('preview', () => { - it('should make a POST call with sources to retrieve SE preview', () => { + it('should make a POST call with sources to retrieve SE preview', async () => { const params: DocumentGroupPreviewParams = { sources: ['source1', 'source2'], filterConditions: [], }; - semConfig.preview(params); + await semConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SemanticEncoderConfiguration.previewUrl, params); }); - it('should make a POST call with advanced query to retrieve SE preview', () => { + it('should make a POST call with advanced query to retrieve SE preview', async () => { const params: DocumentGroupPreviewParams = { advancedQuery: 'some advanced query @ test', }; - semConfig.preview(params); + await semConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SemanticEncoderConfiguration.previewUrl, params); diff --git a/src/resources/MachineLearning/SmartSnippetsConfiguration/SmartSnippetsConfigurationInterfaces.ts b/src/resources/MachineLearning/SmartSnippetsConfiguration/SmartSnippetsConfigurationInterfaces.ts index d4980d8ca..865d81c57 100644 --- a/src/resources/MachineLearning/SmartSnippetsConfiguration/SmartSnippetsConfigurationInterfaces.ts +++ b/src/resources/MachineLearning/SmartSnippetsConfiguration/SmartSnippetsConfigurationInterfaces.ts @@ -15,7 +15,6 @@ export interface DocumentType { export interface SmartSnippetsDocumentGroupPreview { /** * The query that was used to fetch document information. - * * @Example @source==("Salesforce Notifier") */ query: string; @@ -49,7 +48,6 @@ export interface SmartSnippetsDocumentGroupPreview { numberOfDocumentsInSourcesMatchingFiltersWithPermanentId: number; /** * Status for the number of required documents to build the model. - * * @Example OK */ documentRequirementStatus: DocumentRequirementStatus; diff --git a/src/resources/MachineLearning/SmartSnippetsConfiguration/tests/SmartSnippetsConfiguration.spec.ts b/src/resources/MachineLearning/SmartSnippetsConfiguration/tests/SmartSnippetsConfiguration.spec.ts index 0d5fa49ed..2dd3833fe 100644 --- a/src/resources/MachineLearning/SmartSnippetsConfiguration/tests/SmartSnippetsConfiguration.spec.ts +++ b/src/resources/MachineLearning/SmartSnippetsConfiguration/tests/SmartSnippetsConfiguration.spec.ts @@ -5,12 +5,10 @@ import {SmartSnippetsContentFieldsParams} from '../SmartSnippetsConfigurationInt jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SmartSnippetsConfiguration', () => { let smartSnippetsConfig: SmartSnippetsConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,14 +16,14 @@ describe('SmartSnippetsConfiguration', () => { }); describe('contentFields', () => { - it('should make a POST call to retrieve valid content fields from the Smart Snippets Configuration contentfields url', () => { + it('should make a POST call to retrieve valid content fields from the Smart Snippets Configuration contentfields url', async () => { const params: SmartSnippetsContentFieldsParams = { documentType: 'test-type', sources: ['source1', 'source2'], filterConditions: [], advancedQuery: '', }; - smartSnippetsConfig.contentFields(params); + await smartSnippetsConfig.contentFields(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SmartSnippetsConfiguration.contentFieldsUrl, params); @@ -33,14 +31,14 @@ describe('SmartSnippetsConfiguration', () => { }); describe('documentTypes', () => { - it('should make a POST call to retrieve valid document types from the Smart Snippets Configuration documenttypes url', () => { + it('should make a POST call to retrieve valid document types from the Smart Snippets Configuration documenttypes url', async () => { const params: SmartSnippetsContentFieldsParams = { documentType: 'test-type', sources: ['source1', 'source2'], filterConditions: [], advancedQuery: '', }; - smartSnippetsConfig.documentTypes(params); + await smartSnippetsConfig.documentTypes(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SmartSnippetsConfiguration.documentTypesUrl, params); @@ -48,22 +46,22 @@ describe('SmartSnippetsConfiguration', () => { }); describe('preview', () => { - it('should make a POST call with sources to retrieve Smart Snippets Configuration preview', () => { + it('should make a POST call with sources to retrieve Smart Snippets Configuration preview', async () => { const params: DocumentGroupPreviewParams = { sources: ['source1', 'source2'], filterConditions: [], }; - smartSnippetsConfig.preview(params); + await smartSnippetsConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SmartSnippetsConfiguration.previewUrl, params); }); - it('should make a POST call with advanced query to retrieve Smart Snippets Configuration preview', () => { + it('should make a POST call with advanced query to retrieve Smart Snippets Configuration preview', async () => { const params: DocumentGroupPreviewParams = { advancedQuery: 'some advanced query @ test', }; - smartSnippetsConfig.preview(params); + await smartSnippetsConfig.preview(params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SmartSnippetsConfiguration.previewUrl, params); diff --git a/src/resources/MachineLearning/UserActionHistoryConfiguration/tests/UserActionHistoryConfiguration.spec.ts b/src/resources/MachineLearning/UserActionHistoryConfiguration/tests/UserActionHistoryConfiguration.spec.ts index bff043ee9..4330d972e 100644 --- a/src/resources/MachineLearning/UserActionHistoryConfiguration/tests/UserActionHistoryConfiguration.spec.ts +++ b/src/resources/MachineLearning/UserActionHistoryConfiguration/tests/UserActionHistoryConfiguration.spec.ts @@ -3,12 +3,10 @@ import UserActionHistoryConfiguration from '../UserActionHistoryConfiguration.js jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('UserActionHistoryConfiguration', () => { let userActionHistoryConfiguration: UserActionHistoryConfiguration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,24 +14,24 @@ describe('UserActionHistoryConfiguration', () => { }); describe('create', () => { - it('should make a POST call to the User Action History Configuration base url to enable', () => { - userActionHistoryConfiguration.create(); + it('should make a POST call to the User Action History Configuration base url to enable', async () => { + await userActionHistoryConfiguration.create(); expect(api.post).toHaveBeenCalledTimes(1); }); }); describe('delete', () => { - it('should make a DELETE call to the User Action History Configuration base url', () => { - userActionHistoryConfiguration.delete(); + it('should make a DELETE call to the User Action History Configuration base url', async () => { + await userActionHistoryConfiguration.delete(); expect(api.delete).toHaveBeenCalledTimes(1); }); }); describe('get', () => { - it('should make a GET call to the User Action History Configuration base url', () => { - userActionHistoryConfiguration.get(); + it('should make a GET call to the User Action History Configuration base url', async () => { + await userActionHistoryConfiguration.get(); expect(api.get).toHaveBeenCalledTimes(1); }); diff --git a/src/resources/MachineLearning/tests/MachineLearning.spec.ts b/src/resources/MachineLearning/tests/MachineLearning.spec.ts index b00a2cad3..ef1fb10e6 100644 --- a/src/resources/MachineLearning/tests/MachineLearning.spec.ts +++ b/src/resources/MachineLearning/tests/MachineLearning.spec.ts @@ -11,12 +11,10 @@ import UserActionHistoryConfiguration from '../UserActionHistoryConfiguration/Us jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('MachineLearning', () => { let ml: MachineLearning; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -24,7 +22,7 @@ describe('MachineLearning', () => { }); describe('register', () => { - it('should make a POST call to the specific MachineLearning url', () => { + it('should make a POST call to the specific MachineLearning url', async () => { const registration: RegistrationModel = { engineId: 'OvO', modelName: 'super model', @@ -33,7 +31,7 @@ describe('MachineLearning', () => { intervalUnit: IntervalUnit.DAY, }; - ml.register(registration); + await ml.register(registration); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${MachineLearning.baseUrl}/model`, registration); }); diff --git a/src/resources/ModifierTemplates/tests/ModifierTemplates.spec.ts b/src/resources/ModifierTemplates/tests/ModifierTemplates.spec.ts index 80e0a327c..31a560941 100644 --- a/src/resources/ModifierTemplates/tests/ModifierTemplates.spec.ts +++ b/src/resources/ModifierTemplates/tests/ModifierTemplates.spec.ts @@ -4,12 +4,10 @@ import {} from '../ModifierTemplateInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('OrganizationDefinitions', () => { let modifierTemplates: ModifierTemplates; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,8 +15,8 @@ describe('OrganizationDefinitions', () => { }); describe('list', () => { - it('should make a GET call to the Modifier Templates url listing all existing templates', () => { - modifierTemplates.list(); + it('should make a GET call to the Modifier Templates url listing all existing templates', async () => { + await modifierTemplates.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ModifierTemplates.baseUrl); @@ -26,8 +24,8 @@ describe('OrganizationDefinitions', () => { }); describe('listAvailableStatements', () => { - it('should make a GET call to the Modifier Templates url listing all possible statements', () => { - modifierTemplates.listPossibleStatements(); + it('should make a GET call to the Modifier Templates url listing all possible statements', async () => { + await modifierTemplates.listPossibleStatements(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ModifierTemplates.baseUrl}/statementdetails`); diff --git a/src/resources/NextGenSearchPages/tests/NextGenSearchPages.spec.ts b/src/resources/NextGenSearchPages/tests/NextGenSearchPages.spec.ts index 3199fd428..9fdc2c94b 100644 --- a/src/resources/NextGenSearchPages/tests/NextGenSearchPages.spec.ts +++ b/src/resources/NextGenSearchPages/tests/NextGenSearchPages.spec.ts @@ -9,13 +9,11 @@ import NextGenSearchPages from '../NextGenSearchPages.js'; import {SearchPageInterfaceConfiguration, SearchPageLayout} from '../NextGenSearchPages.model.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('NextGenSearchPages', () => { let nextGenSearchPages: NextGenSearchPages; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const config: ExistingHostedInterface = { name: 'some search page name', facets: [ @@ -111,8 +109,8 @@ describe('NextGenSearchPages', () => { }); describe('list', () => { - it('should make a GET call with all parameters', () => { - nextGenSearchPages.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); + it('should make a GET call with all parameters', async () => { + await nextGenSearchPages.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -120,29 +118,29 @@ describe('NextGenSearchPages', () => { ); }); - it('should make a GET call with page', () => { - nextGenSearchPages.list({page: 2}); + it('should make a GET call with page', async () => { + await nextGenSearchPages.list({page: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}?page=2`); }); - it('should make a GET call with perPage', () => { - nextGenSearchPages.list({perPage: 10}); + it('should make a GET call with perPage', async () => { + await nextGenSearchPages.list({perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}?perPage=10`); }); - it('should make a GET call with filter', () => { - nextGenSearchPages.list({filter: 'Accounting'}); + it('should make a GET call with filter', async () => { + await nextGenSearchPages.list({filter: 'Accounting'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}?filter=Accounting`); }); - it('should make a GET call with order', () => { - nextGenSearchPages.list({order: 'asc'}); + it('should make a GET call with order', async () => { + await nextGenSearchPages.list({order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}?order=asc`); @@ -150,8 +148,8 @@ describe('NextGenSearchPages', () => { }); describe('create', () => { - it('should make a POST call to the NextGenSearchPages base url', () => { - nextGenSearchPages.create(config); + it('should make a POST call to the NextGenSearchPages base url', async () => { + await nextGenSearchPages.create(config); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(NextGenSearchPages.baseUrl, config); @@ -159,10 +157,10 @@ describe('NextGenSearchPages', () => { }); describe('delete', () => { - it('should make a DELETE call to the NextGenSearchPages base url', () => { + it('should make a DELETE call to the NextGenSearchPages base url', async () => { const id = 'NextGenSearchPages-id-to-delete'; - nextGenSearchPages.delete(id); + await nextGenSearchPages.delete(id); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}`); @@ -170,10 +168,10 @@ describe('NextGenSearchPages', () => { }); describe('get', () => { - it('should make a GET call to the NextGenSearchPages base url', () => { + it('should make a GET call to the NextGenSearchPages base url', async () => { const id = 'NextGenSearchPages-id-to-get'; - nextGenSearchPages.get(id); + await nextGenSearchPages.get(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}`); @@ -181,10 +179,10 @@ describe('NextGenSearchPages', () => { }); describe('update', () => { - it('should make a PUT call to the NextGenSearchPages base url', () => { + it('should make a PUT call to the NextGenSearchPages base url', async () => { const id = 'NextGenSearchPages-id-to-update'; - nextGenSearchPages.update(id, config); + await nextGenSearchPages.update(id, config); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}`, config); @@ -192,10 +190,10 @@ describe('NextGenSearchPages', () => { }); describe('generatePreview', () => { - it('should make a POST call to the NextGenSearchPages base url appended with /preview', () => { + it('should make a POST call to the NextGenSearchPages base url appended with /preview', async () => { const id = 'NextGenSearchPages-id-to-preview'; - nextGenSearchPages.generatePreview(id, config); + await nextGenSearchPages.generatePreview(id, config); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/preview`, config); @@ -203,10 +201,10 @@ describe('NextGenSearchPages', () => { }); describe('getView', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /preview', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /preview', async () => { const id = 'NextGenSearchPages-id-to-get'; - nextGenSearchPages.getView(id); + await nextGenSearchPages.getView(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/preview`); @@ -214,10 +212,10 @@ describe('NextGenSearchPages', () => { }); describe('getToken', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /token', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /token', async () => { const id = 'NextGenSearchPages-id-to-get'; - nextGenSearchPages.getToken(id); + await nextGenSearchPages.getToken(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/token`); @@ -225,10 +223,10 @@ describe('NextGenSearchPages', () => { }); describe('getEditInterface', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /edit', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /edit', async () => { const id = 'NextGenSearchPages-id-to-edit'; - nextGenSearchPages.getEditInterface(id); + await nextGenSearchPages.getEditInterface(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/edit`); @@ -236,10 +234,10 @@ describe('NextGenSearchPages', () => { }); describe('getLoader', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /loader', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /loader', async () => { const id = 'NextGenSearchPages-id-to-get'; - nextGenSearchPages.getLoader(id); + await nextGenSearchPages.getLoader(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/loader`); @@ -247,10 +245,10 @@ describe('NextGenSearchPages', () => { }); describe('getLoginPage', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /login', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /login', async () => { const id = 'NextGenSearchPages-id-to-login'; - nextGenSearchPages.getLoginPage(id); + await nextGenSearchPages.getLoginPage(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/login`); @@ -258,10 +256,10 @@ describe('NextGenSearchPages', () => { }); describe('getAccesses', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /accesses', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /accesses', async () => { const id = 'NextGenSearchPages-id-to-get'; - nextGenSearchPages.getAccesses(id); + await nextGenSearchPages.getAccesses(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/accesses`); @@ -269,10 +267,10 @@ describe('NextGenSearchPages', () => { }); describe('updateAccesses', () => { - it('should make a PUT call to the NextGenSearchPages base url appended with /accesses', () => { + it('should make a PUT call to the NextGenSearchPages base url appended with /accesses', async () => { const id = 'NextGenSearchPages-id-to-update'; - nextGenSearchPages.updateAccesses(id, config.accesses); + await nextGenSearchPages.updateAccesses(id, config.accesses); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/accesses`, config.accesses); @@ -280,10 +278,10 @@ describe('NextGenSearchPages', () => { }); describe('getAccessesUsers', () => { - it('should make a GET call to the NextGenSearchPages base url appended with /accesses/users', () => { + it('should make a GET call to the NextGenSearchPages base url appended with /accesses/users', async () => { const id = 'NextGenSearchPages-id-to-get'; - nextGenSearchPages.getAccessesUsers(id); + await nextGenSearchPages.getAccessesUsers(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/accesses/users`); @@ -291,10 +289,10 @@ describe('NextGenSearchPages', () => { }); describe('updateAccessesUsers', () => { - it('should make a PUT call to the NextGenSearchPages base url appended with /accesses/users', () => { + it('should make a PUT call to the NextGenSearchPages base url appended with /accesses/users', async () => { const id = 'NextGenSearchPages-id-to-update'; - nextGenSearchPages.updateAccessesUsers(id, config.accesses.users); + await nextGenSearchPages.updateAccessesUsers(id, config.accesses.users); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -305,10 +303,10 @@ describe('NextGenSearchPages', () => { }); describe('addAccessesUsers', () => { - it('should make a POST call to the NextGenSearchPages base url appended with /accesses/users', () => { + it('should make a POST call to the NextGenSearchPages base url appended with /accesses/users', async () => { const id = 'NextGenSearchPages-id-to-add'; - nextGenSearchPages.addAccessesUsers(id, config.accesses.users); + await nextGenSearchPages.addAccessesUsers(id, config.accesses.users); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/accesses/users`, { @@ -318,10 +316,10 @@ describe('NextGenSearchPages', () => { }); describe('requestAccess', () => { - it('should make a POST call to the NextGenSearchPages base url appended with /accesses/request', () => { + it('should make a POST call to the NextGenSearchPages base url appended with /accesses/request', async () => { const id = 'NextGenSearchPages-id-to-request'; - nextGenSearchPages.requestAccess(id); + await nextGenSearchPages.requestAccess(id); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/accesses/request`); @@ -329,19 +327,19 @@ describe('NextGenSearchPages', () => { }); describe('manifest', () => { - it('makes a POST call (without a body) to the searchInterfaces accesses manifest url based on the interfaceId', () => { + it('makes a POST call (without a body) to the searchInterfaces accesses manifest url based on the interfaceId', async () => { const id = 'search-interface-id'; - nextGenSearchPages.manifest(id); + await nextGenSearchPages.manifest(id); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/manifest`, undefined); }); - it('makes a POST call (with a body) to the searchInterfaces accesses manifest url based on the interfaceId', () => { + it('makes a POST call (with a body) to the searchInterfaces accesses manifest url based on the interfaceId', async () => { const id = 'search-interface-id'; const options: IManifestParameters = {pagePlaceholders: {results: 'myresults'}}; - nextGenSearchPages.manifest(id, options); + await nextGenSearchPages.manifest(id, options); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${NextGenSearchPages.baseUrl}/${id}/manifest`, options); diff --git a/src/resources/Notification/Subscription/tests/subscription.spec.ts b/src/resources/Notification/Subscription/tests/subscription.spec.ts index d2c1accb8..9c3230f2f 100644 --- a/src/resources/Notification/Subscription/tests/subscription.spec.ts +++ b/src/resources/Notification/Subscription/tests/subscription.spec.ts @@ -5,8 +5,6 @@ import {EditSubscriptionModel} from '../SubscriptionInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - const subscriptionModelMock: EditSubscriptionModel = { description: '🍇 => 😠 => 💩', enabled: true, @@ -24,8 +22,8 @@ const subscriptionModelMock: EditSubscriptionModel = { describe('Subscriptions', () => { let subscription: Subscription; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -33,40 +31,40 @@ describe('Subscriptions', () => { }); describe('list', () => { - it('should make a get call to the specific subscription url', () => { - subscription.list(); + it('should make a get call to the specific subscription url', async () => { + await subscription.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Subscription.getBaseUrl(api.organizationId)); }); }); describe('listCurrent', () => { - it('should make a get call to the specific subscription url', () => { - subscription.listCurrent(); + it('should make a get call to the specific subscription url', async () => { + await subscription.listCurrent(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Subscription.getBaseUrl(api.organizationId)}/me`); }); }); describe('show', () => { - it('should make a get call to the specific subscription url', () => { + it('should make a get call to the specific subscription url', async () => { const subscriptionId = '🦀'; - subscription.show(subscriptionId); + await subscription.show(subscriptionId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Subscription.getBaseUrl(api.organizationId)}/${subscriptionId}`); }); }); describe('showCurrent', () => { - it('should make a get call to the specific subscription url', () => { + it('should make a get call to the specific subscription url', async () => { const subscriptionId = '🍞'; - subscription.showCurrent(subscriptionId); + await subscription.showCurrent(subscriptionId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Subscription.getBaseUrl(api.organizationId)}/me/${subscriptionId}`); }); }); describe('create', () => { - it('should make a POST call to the specific subscription url', () => { - subscription.create(subscriptionModelMock); + it('should make a POST call to the specific subscription url', async () => { + await subscription.create(subscriptionModelMock); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}`, @@ -75,8 +73,8 @@ describe('Subscriptions', () => { }); }); describe('createCurrent', () => { - it('should make a POST call to the specific subscription url', () => { - subscription.createCurrent(subscriptionModelMock); + it('should make a POST call to the specific subscription url', async () => { + await subscription.createCurrent(subscriptionModelMock); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/me`, @@ -85,9 +83,9 @@ describe('Subscriptions', () => { }); }); describe('edit', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = '🥔'; - subscription.edit(subscriptionId, subscriptionModelMock); + await subscription.edit(subscriptionId, subscriptionModelMock); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/${subscriptionId}`, @@ -96,9 +94,9 @@ describe('Subscriptions', () => { }); }); describe('editCurrent', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = '🍔'; - subscription.editCurrent(subscriptionId, subscriptionModelMock); + await subscription.editCurrent(subscriptionId, subscriptionModelMock); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/me/${subscriptionId}`, @@ -107,17 +105,17 @@ describe('Subscriptions', () => { }); }); describe('delete', () => { - it('should make a DELETE call to the specific subscription url', () => { + it('should make a DELETE call to the specific subscription url', async () => { const subscriptionId = '🍟'; - subscription.delete(subscriptionId); + await subscription.delete(subscriptionId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Subscription.getBaseUrl(api.organizationId)}/${subscriptionId}`); }); }); describe('deleteCurrent', () => { - it('should make a DELETE call to the specific subscription url', () => { + it('should make a DELETE call to the specific subscription url', async () => { const subscriptionId = '🍟'; - subscription.deleteCurrent(subscriptionId); + await subscription.deleteCurrent(subscriptionId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/me/${subscriptionId}`, @@ -125,9 +123,9 @@ describe('Subscriptions', () => { }); }); describe('enable', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = ''; - subscription.enable(subscriptionId); + await subscription.enable(subscriptionId); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/${subscriptionId}/enable`, @@ -135,9 +133,9 @@ describe('Subscriptions', () => { }); }); describe('enableCurrent', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = ''; - subscription.enableCurrent(subscriptionId); + await subscription.enableCurrent(subscriptionId); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/me/${subscriptionId}/enable`, @@ -145,9 +143,9 @@ describe('Subscriptions', () => { }); }); describe('disable', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = ''; - subscription.disable(subscriptionId); + await subscription.disable(subscriptionId); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/${subscriptionId}/disable`, @@ -155,9 +153,9 @@ describe('Subscriptions', () => { }); }); describe('disableCurrent', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = ''; - subscription.disableCurrent(subscriptionId); + await subscription.disableCurrent(subscriptionId); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/me/${subscriptionId}/disable`, @@ -165,9 +163,9 @@ describe('Subscriptions', () => { }); }); describe('test', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = ''; - subscription.test(subscriptionId); + await subscription.test(subscriptionId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/${subscriptionId}/test`, @@ -175,9 +173,9 @@ describe('Subscriptions', () => { }); }); describe('testCurrent', () => { - it('should make a PUT call to the specific subscription url', () => { + it('should make a PUT call to the specific subscription url', async () => { const subscriptionId = ''; - subscription.testCurrent(subscriptionId); + await subscription.testCurrent(subscriptionId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Subscription.getBaseUrl(api.organizationId)}/me/${subscriptionId}/test`, diff --git a/src/resources/Notification/tests/notifications.spec.ts b/src/resources/Notification/tests/notifications.spec.ts index 57cad87ad..70cc7e56c 100644 --- a/src/resources/Notification/tests/notifications.spec.ts +++ b/src/resources/Notification/tests/notifications.spec.ts @@ -3,12 +3,10 @@ import Notification from '../notification.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('nested ressources', () => { let notifications: Notification; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); diff --git a/src/resources/OrganizationAccess/tests/OrganizationAccess.spec.ts b/src/resources/OrganizationAccess/tests/OrganizationAccess.spec.ts index 225996339..87be7f9e0 100644 --- a/src/resources/OrganizationAccess/tests/OrganizationAccess.spec.ts +++ b/src/resources/OrganizationAccess/tests/OrganizationAccess.spec.ts @@ -5,12 +5,10 @@ import {AccessParams} from '../AccessInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('OrganizationAccess', () => { let organizationAccess: Access; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -24,16 +22,16 @@ describe('OrganizationAccess', () => { privilegeTargetDomain: 'SOURCE', }; - it('should make a GET call to the specific organization access url for API keys', () => { - organizationAccess.getApiKeys(params); + it('should make a GET call to the specific organization access url for API keys', async () => { + await organizationAccess.getApiKeys(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Access.baseUrl}/apikeys?accessLevel=CUSTOM&privilegeOwner=PLATFORM&privilegeTargetDomain=SOURCE`, ); }); - it('should make a GET call to the specific organization access url for groups data', () => { - organizationAccess.getGroups(params); + it('should make a GET call to the specific organization access url for groups data', async () => { + await organizationAccess.getGroups(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Access.baseUrl}/groups?accessLevel=CUSTOM&privilegeOwner=PLATFORM&privilegeTargetDomain=SOURCE`, diff --git a/src/resources/Organizations/Members/Members.ts b/src/resources/Organizations/Members/Members.ts index 0e1976b6b..e084d4a52 100644 --- a/src/resources/Organizations/Members/Members.ts +++ b/src/resources/Organizations/Members/Members.ts @@ -16,7 +16,6 @@ export default class Members extends Resource { /** * deletes the member from all groups of an organization. * Note: Deleted users can still be included by domain. - * * @param username The username of the member to delete. */ delete(username: string) { @@ -24,7 +23,6 @@ export default class Members extends Resource { } /** * Shows a member of an organization. - * * @param username The username of the member to show. */ get(username: string) { @@ -38,23 +36,23 @@ export default class Members extends Resource { } /** * Updates the members of an organization. - * * @param sendEmailToInvitedUsers Whether to send an invitation email alongside the invite(s). Default to true. + * @param model + * @param options */ updateOrganizationMembers(model: OrganizationMemberModel[], options?: UpdateGroupOptions) { return this.api.put(this.buildPath(Members.baseUrl, options), model); } /** * Updates a member of an organization. - * * @param username The username of the member to update. + * @param model */ updateMember(username: string, model: OrganizationMemberModel) { return this.api.put(`${Members.baseUrl}/${username}`, model); } /** * Lists the groups to which an organization member belongs. - * * @param username The username of the user for which to list groups. */ getGroups(username: string) { diff --git a/src/resources/Organizations/Members/tests/Members.spec.ts b/src/resources/Organizations/Members/tests/Members.spec.ts index 215c5ae44..965925c30 100644 --- a/src/resources/Organizations/Members/tests/Members.spec.ts +++ b/src/resources/Organizations/Members/tests/Members.spec.ts @@ -4,12 +4,10 @@ import Members from '../Members.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Members', () => { let members: Members; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,8 +15,8 @@ describe('Members', () => { }); describe('getAll', () => { - it('makes a GET call to the specific members url', () => { - members.getAll(); + it('makes a GET call to the specific members url', async () => { + await members.getAll(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Members.baseUrl); @@ -26,8 +24,8 @@ describe('Members', () => { }); describe('delete', () => { - it('make a DELETE call to the specific member url', () => { - members.delete('Gael'); + it('make a DELETE call to the specific member url', async () => { + await members.delete('Gael'); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Members.baseUrl}/Gael`); @@ -35,8 +33,8 @@ describe('Members', () => { }); describe('get', () => { - it('make a GET call to check a specific member in an Organization', () => { - members.get('Gael'); + it('make a GET call to check a specific member in an Organization', async () => { + await members.get('Gael'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Members.baseUrl}/Gael`); @@ -44,8 +42,8 @@ describe('Members', () => { }); describe('getPrivileges', () => { - it('makes a GET call to check the privileges the user has in the organization', () => { - members.getPrivileges(); + it('makes a GET call to check the privileges the user has in the organization', async () => { + await members.getPrivileges(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Members.baseUrl}/privileges`); @@ -53,8 +51,8 @@ describe('Members', () => { }); describe('updateOrganizationMembers', () => { - it('makes a PUT call to update members of an organization', () => { - members.updateOrganizationMembers([ + it('makes a PUT call to update members of an organization', async () => { + await members.updateOrganizationMembers([ { displayName: 'test', email: 'test@gmail.com', @@ -80,8 +78,8 @@ describe('Members', () => { }); describe('updateMember', () => { - it('makes a PUT call to update a member of an organization', () => { - members.updateMember('gael', { + it('makes a PUT call to update a member of an organization', async () => { + await members.updateMember('gael', { displayName: 'test', email: 'test@gmail.com', groups: [], @@ -103,8 +101,8 @@ describe('Members', () => { }); describe('getGroups', () => { - it('makes a GET call to lists the groups to which an organization member belongs', () => { - members.getGroups('gael'); + it('makes a GET call to lists the groups to which an organization member belongs', async () => { + await members.getGroups('gael'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Members.baseUrl}/gael/groups`); diff --git a/src/resources/Organizations/Organization.ts b/src/resources/Organizations/Organization.ts index 80bc3d94b..e8fb49499 100644 --- a/src/resources/Organizations/Organization.ts +++ b/src/resources/Organizations/Organization.ts @@ -12,7 +12,6 @@ import { } from './OrganizationInterfaces.js'; import {AuthProvider} from '../Enums.js'; -// eslint-disable-next-line @typescript-eslint/ban-types export type NoPagination = undefined | null; export default class Organization extends Resource { @@ -63,6 +62,7 @@ export default class Organization extends Resource { /** * Pauses an [organization](https://docs.coveo.com/en/222/). * Required privilege: Organization - Edit + * @param organizationId */ pause(organizationId: string = API.orgPlaceholder) { return this.api.post(`${Organization.baseUrl}/${organizationId}/pause`); @@ -71,6 +71,7 @@ export default class Organization extends Resource { /** * Resumes a paused [organization](https://docs.coveo.com/en/222/). * Required privilege: Organization - Edit + * @param organizationId */ resume(organizationId: string = API.orgPlaceholder) { return this.api.post(`${Organization.baseUrl}/${organizationId}/resume`); @@ -84,7 +85,7 @@ export default class Organization extends Resource { } getAdditionalInformation(organizationId: string = API.orgPlaceholder) { - return this.api.get(`${Organization.baseUrl}/${organizationId}/additionalinformation`); + return this.api.get>(`${Organization.baseUrl}/${organizationId}/additionalinformation`); } updateExperimentalStatus(allowed: boolean = true) { diff --git a/src/resources/Organizations/OrganizationInterfaces.ts b/src/resources/Organizations/OrganizationInterfaces.ts index 3ab7ce959..726fc1ab8 100644 --- a/src/resources/Organizations/OrganizationInterfaces.ts +++ b/src/resources/Organizations/OrganizationInterfaces.ts @@ -22,7 +22,6 @@ export interface OrganizationsStatusModel { * - `ACTIVE`: The organization is healthy and fully functional. * - `PAUSED`: The organization is currently inactive. * - `DELETING`: The organization is currently in the process of being deleted. - * * @example `PAUSED` */ lifeCycleState: string; @@ -37,7 +36,6 @@ export interface OrganizationsStatusModel { * - `RESUMING`: The organization is transitioning to `ACTIVE`. * - `PAUSING_FAILED`: The organization threw an error while transitioning to `PAUSED`. * - `RESUMING_FAILED`: The organization threw an error while transitioning to `ACTIVE`. - * * @example `PAUSED` */ pauseState: string; @@ -51,7 +49,6 @@ export interface OrganizationsStatusModel { provisioningStatus: { /** * The progress, in percentage, of the ongoing provisioning. - * * @example `100` */ currentProvisioningProgress: number; @@ -61,7 +58,6 @@ export interface OrganizationsStatusModel { initialProvisioningDone: boolean; /** * The last time provisioning was successfully completed in number of milliseconds since UNIX epoch. - * * @example `1556722921779` */ lastProvisioningCompletedDate: number; @@ -82,7 +78,6 @@ export interface OrganizationsStatusModel { * Whether the organization enforces all of its resources (e.g., query pipelines, sources, etc.) to be read-only. * * **Note:** This parameter is typically only updated when an organization is inactive. - * * @default `false` */ readOnly: boolean; @@ -92,7 +87,6 @@ export interface OrganizationsStatusModel { * **Allowed values:** * - `HEALTHY`: The organization is healthy and fully functional. * - `ERROR`: The organization has thrown an error and is currently inactive. - * * @example `ERROR` */ status: string; @@ -120,7 +114,7 @@ export interface OrganizationModel { }; } -export type AdditionalOrganizationField = 'status' | 'license' | string; +export type AdditionalOrganizationField = 'status' | 'license' | (string & {}); export interface GetOrganizationOptions { additionalFields?: AdditionalOrganizationField | AdditionalOrganizationField[]; diff --git a/src/resources/Organizations/tests/Organizations.spec.ts b/src/resources/Organizations/tests/Organizations.spec.ts index e807a54e0..c62d012e9 100644 --- a/src/resources/Organizations/tests/Organizations.spec.ts +++ b/src/resources/Organizations/tests/Organizations.spec.ts @@ -5,12 +5,10 @@ import {DefinitionModel, OrganizationCreationOrigin} from '../OrganizationInterf jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Organization', () => { let organization: Organization; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,20 +16,20 @@ describe('Organization', () => { }); describe('updateSupportActivated', () => { - it('should make a PUT call to the proper URL to activate support', () => { + it('should make a PUT call to the proper URL to activate support', async () => { const organizationToBeUpdated = 'Organization-to-be-updated'; const supportActivated = true; - organization.updateSupportActivated(organizationToBeUpdated, supportActivated); + await organization.updateSupportActivated(organizationToBeUpdated, supportActivated); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Organization.baseUrl}/${organizationToBeUpdated}/support?activate=${supportActivated}`, ); }); - it('should make a PUT call to the proper URL to disable support', () => { + it('should make a PUT call to the proper URL to disable support', async () => { const organizationToBeUpdated = 'Organization-to-be-updated'; const supportActivated = false; - organization.updateSupportActivated(organizationToBeUpdated, supportActivated); + await organization.updateSupportActivated(organizationToBeUpdated, supportActivated); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Organization.baseUrl}/${organizationToBeUpdated}/support?activate=${supportActivated}`, @@ -40,25 +38,25 @@ describe('Organization', () => { }); describe('list', () => { - it('should make a GET call to the Organization base url', () => { - organization.list(); + it('should make a GET call to the Organization base url', async () => { + await organization.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Organization.baseUrl); }); - it('should make a paginated call when pagination parameters are passed', () => { - organization.list({page: 0, filter: 'foo'}); + it('should make a paginated call when pagination parameters are passed', async () => { + await organization.list({page: 0, filter: 'foo'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Organization.baseUrl}?page=0&filter=foo`); }); }); describe('create', () => { - it('should make a POST call to the Organization base url with the parameters', () => { + it('should make a POST call to the Organization base url with the parameters', async () => { const name = 'OrgName'; const creationOrigin = OrganizationCreationOrigin.TEST; - organization.create({name, creationOrigin}); + await organization.create({name, creationOrigin}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Organization.baseUrl}?name=${name}&creationOrigin=${creationOrigin}`, @@ -67,25 +65,25 @@ describe('Organization', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific Organization url', () => { + it('should make a DELETE call to the specific Organization url', async () => { const organizationToDeleteId = 'Organization-to-be-deleted'; - organization.delete(organizationToDeleteId); + await organization.delete(organizationToDeleteId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Organization.baseUrl}/${organizationToDeleteId}`); }); }); describe('get', () => { - it('should make a GET call to the specific Organization url', () => { + it('should make a GET call to the specific Organization url', async () => { const organizationToGetId = 'Organization-to-be-fetched'; - organization.get(organizationToGetId); + await organization.get(organizationToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Organization.baseUrl}/${organizationToGetId}`); }); - it('should make a GET call with the specified options', () => { + it('should make a GET call with the specified options', async () => { const organizationToGetId = 'Organization-to-be-fetched'; - organization.get(organizationToGetId, { + await organization.get(organizationToGetId, { additionalFields: 'status', }); expect(api.get).toHaveBeenCalledTimes(1); @@ -94,9 +92,9 @@ describe('Organization', () => { ); }); - it('should make a GET call with the multiple additional fields', () => { + it('should make a GET call with the multiple additional fields', async () => { const organizationToGetId = 'Organization-to-be-fetched'; - organization.get(organizationToGetId, { + await organization.get(organizationToGetId, { additionalFields: ['status', 'license'], }); expect(api.get).toHaveBeenCalledTimes(1); @@ -107,36 +105,36 @@ describe('Organization', () => { }); describe('update', () => { - it('should make a PUT call to the specific Organization url', () => { + it('should make a PUT call to the specific Organization url', async () => { const organizationModel = { id: 'organization-to-update-id', displayName: 'new name', }; - organization.update(organizationModel); + await organization.update(organizationModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Organization.baseUrl}/${organizationModel.id}`, organizationModel); }); }); describe('status', () => { - it('should make a GET call to the specific Organization status url', () => { + it('should make a GET call to the specific Organization status url', async () => { const organizationToGetId = 'Organization-to-be-fetched'; - organization.status(organizationToGetId); + await organization.status(organizationToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Organization.baseUrl}/${organizationToGetId}/status`); }); - it('should make a GET call to /rest/organizations/{organizationName}/status if the orgId is not specified', () => { - organization.status(); + it('should make a GET call to /rest/organizations/{organizationName}/status if the orgId is not specified', async () => { + await organization.status(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/status`); }); }); describe('pause', () => { - it('should make a POST call to the specific Organization url', () => { - organization.pause(); + it('should make a POST call to the specific Organization url', async () => { + await organization.pause(); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Organization.baseUrl}/${API.orgPlaceholder}/pause`); @@ -144,8 +142,8 @@ describe('Organization', () => { }); describe('resume', () => { - it('should make a POST call to the specific Organization url', () => { - organization.resume(); + it('should make a POST call to the specific Organization url', async () => { + await organization.resume(); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Organization.baseUrl}/${API.orgPlaceholder}/resume`); @@ -153,24 +151,24 @@ describe('Organization', () => { }); describe('listPrivileges', () => { - it('should make a GET call /rest/organizations/{organizationName}/privileges', () => { - organization.listPrivileges(); + it('should make a GET call /rest/organizations/{organizationName}/privileges', async () => { + await organization.listPrivileges(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/privileges'); }); }); describe('listMyPrivileges', () => { - it('should make a GET call /rest/organizations/{organizationName}/privileges/me', () => { - organization.listMyPrivileges(); + it('should make a GET call /rest/organizations/{organizationName}/privileges/me', async () => { + await organization.listMyPrivileges(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/privileges/me'); }); }); describe('listApiKeysPrivileges', () => { - it('should make a GET call /rest/organizations/{organizationName}/privileges/apikeys', () => { - organization.listApiKeysPrivileges(); + it('should make a GET call /rest/organizations/{organizationName}/privileges/apikeys', async () => { + await organization.listApiKeysPrivileges(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/privileges/apikeys'); }); @@ -178,8 +176,8 @@ describe('Organization', () => { describe('Definitions', () => { describe('get', () => { - it('should make a GET call to the specific Organization Definition url', () => { - organization.getDefinition(); + it('should make a GET call to the specific Organization Definition url', async () => { + await organization.getDefinition(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/definition`); @@ -187,14 +185,14 @@ describe('Organization', () => { }); describe('update', () => { - it('should make a PUT call to the specific Organization Definition url', () => { + it('should make a PUT call to the specific Organization Definition url', async () => { const definitionModel: DefinitionModel = { organizationId: 'organizationId', baseLicenseTemplateId: 'baseLicenseTemplateId', modifiers: [], overrides: [], }; - organization.updateDefinition(definitionModel); + await organization.updateDefinition(definitionModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -206,15 +204,15 @@ describe('Organization', () => { }); describe('authentication providers', () => { - it('should make a GET call to the specific Organization url', () => { + it('should make a GET call to the specific Organization url', async () => { const organizationId = 'Organization-to-be-fetched'; - organization.getAllowedAuthenticationProviders(organizationId); + await organization.getAllowedAuthenticationProviders(organizationId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Organization.baseUrl}/${organizationId}/authproviders/allowed`); }); - it('should make a GET call /rest/organizations/{organizationName}/authproviders/allowed', () => { - organization.getAllowedAuthenticationProviders(); + it('should make a GET call /rest/organizations/{organizationName}/authproviders/allowed', async () => { + await organization.getAllowedAuthenticationProviders(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Organization.baseUrl}/${API.orgPlaceholder}/authproviders/allowed`); }); @@ -226,21 +224,21 @@ describe('Organization', () => { }); describe('additional information', () => { - it('should make a GET call with additional information', () => { + it('should make a GET call with additional information', async () => { const organizationToGetId = 'Organization-to-be-fetched'; - organization.getAdditionalInformation(organizationToGetId); + await organization.getAdditionalInformation(organizationToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Organization.baseUrl}/${organizationToGetId}/additionalinformation`, ); }); - it('should make a PUT call to put data in additional information', () => { + it('should make a PUT call to put data in additional information', async () => { const additionalInformationObj = { trialProgress: { completedSource: true, }, }; - organization.updateAdditionalInformation(additionalInformationObj); + await organization.updateAdditionalInformation(additionalInformationObj); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -251,8 +249,8 @@ describe('Organization', () => { }); describe('experimental status', () => { - it('should make a PUT call to update experimental status with default true', () => { - organization.updateExperimentalStatus(); + it('should make a PUT call to update experimental status with default true', async () => { + await organization.updateExperimentalStatus(); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -260,9 +258,9 @@ describe('Organization', () => { ); }); - it('should make a PUT call to update experimental status with passed value', () => { + it('should make a PUT call to update experimental status with passed value', async () => { const isAllowed = false; - organization.updateExperimentalStatus(isAllowed); + await organization.updateExperimentalStatus(isAllowed); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( diff --git a/src/resources/Pipelines/Conditions/Condition.ts b/src/resources/Pipelines/Conditions/Condition.ts index d2acf6627..d6e699f32 100644 --- a/src/resources/Pipelines/Conditions/Condition.ts +++ b/src/resources/Pipelines/Conditions/Condition.ts @@ -7,8 +7,7 @@ export default class Condition extends Resource { /** * Returns a paginated list of condition models. - * - * @param {ListConditionsOptions} options + * @param options */ list(options: ListConditionsOptions = {}) { return this.api.get>( @@ -18,8 +17,7 @@ export default class Condition extends Resource { /** * Creates and returns a new condition model. - * - * @param {NewConditionModel} conditionModel + * @param conditionModel */ create(conditionModel: NewConditionModel) { return this.api.post( @@ -30,8 +28,7 @@ export default class Condition extends Resource { /** * Delete a condition model. - * - * @param {string} conditionId The unique identifier of the condition to be deleted. + * @param conditionId The unique identifier of the condition to be deleted. */ delete(conditionId: string) { return this.api.delete( @@ -41,8 +38,7 @@ export default class Condition extends Resource { /** * Returns a condition model. - * - * @param {string} conditionId The unique identifier of the condition to be fetched. + * @param conditionId The unique identifier of the condition to be fetched. */ get(conditionId: string) { return this.api.get( @@ -52,9 +48,8 @@ export default class Condition extends Resource { /** * Update a condition model with the model sent and returns the updated condition model. - * - * @param {string} conditionId The unique identifier of the condition to be updated. - * @param {ConditionModel | NewConditionModel} conditionModel + * @param conditionId The unique identifier of the condition to be updated. + * @param conditionModel */ update(conditionId: string, conditionModel: ConditionModel | NewConditionModel) { return this.api.put( @@ -65,7 +60,6 @@ export default class Condition extends Resource { /** * Bulk get a list of conditions corresponding of the ids sent. - * * @param {string[]} conditionIds The list of condition's ids to be fetched. Limit of 1000 incoming ids. * @param {ListConditionsOptions} params */ diff --git a/src/resources/Pipelines/Conditions/ConditionInterfaces.ts b/src/resources/Pipelines/Conditions/ConditionInterfaces.ts index 26251698e..47fd1cad3 100644 --- a/src/resources/Pipelines/Conditions/ConditionInterfaces.ts +++ b/src/resources/Pipelines/Conditions/ConditionInterfaces.ts @@ -20,6 +20,7 @@ export interface ConditionModel { /** * The structured object of the query pipeline language expression of this statement. */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any detailed: any; /** @@ -79,7 +80,6 @@ export interface NewConditionModel { export interface ListConditionsOptions extends Paginated { /** * Whether to sort the results in ascending order. - * * @default true */ isOrderAscending?: boolean; @@ -93,7 +93,6 @@ export interface ListConditionsOptions extends Paginated { /** * The sort criteria to apply on the results. - * * @default ListStatementSortBy.Position */ sortBy?: ListStatementSortBy; diff --git a/src/resources/Pipelines/Conditions/tests/Condition.spec.ts b/src/resources/Pipelines/Conditions/tests/Condition.spec.ts index b0530b2f2..be34edd4d 100644 --- a/src/resources/Pipelines/Conditions/tests/Condition.spec.ts +++ b/src/resources/Pipelines/Conditions/tests/Condition.spec.ts @@ -5,12 +5,10 @@ import {NewConditionModel} from '../ConditionInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Condition', () => { let conditions: Condition; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,14 +16,14 @@ describe('Condition', () => { }); describe('list', () => { - it('should make a GET call to the specific Condition url', () => { - conditions.list(); + it('should make a GET call to the specific Condition url', async () => { + await conditions.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements?feature=when'); }); - it('should use the passed options in the query parameters', () => { - conditions.list({filter: 'cat', page: 2}); + it('should use the passed options in the query parameters', async () => { + await conditions.list({filter: 'cat', page: 2}); expect(api.get).toHaveBeenCalledWith( '/rest/search/v1/admin/pipelines/statements?feature=when&filter=cat&page=2', ); @@ -33,19 +31,19 @@ describe('Condition', () => { }); describe('create', () => { - it('should make a POST call to the specific Condition url', () => { + it('should make a POST call to the specific Condition url', async () => { const model: NewConditionModel = { definition: 'when $browser is "chrome"', }; - conditions.create(model); + await conditions.create(model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements', model); }); }); describe('update', () => { - it('should make a PUT call to the specific Statement url', () => { + it('should make a PUT call to the specific Statement url', async () => { const conditionId = '🎯'; const model: NewConditionModel = { @@ -53,43 +51,43 @@ describe('Condition', () => { definition: 'when $browser is "chrome"', }; - conditions.update(conditionId, model); + await conditions.update(conditionId, model); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements/🎯', model); }); }); describe('get', () => { - it('should make a GET call to the specific Statement url', () => { + it('should make a GET call to the specific Statement url', async () => { const conditionId = '🏒'; - conditions.get(conditionId); + await conditions.get(conditionId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements/🏒'); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Statement url', () => { + it('should make a DELETE call to the specific Statement url', async () => { const conditionId = '🎽'; - conditions.delete(conditionId); + await conditions.delete(conditionId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements/🎽'); }); }); describe('bulkGet', () => { - it('should make a POST call to the conditions bulkGet url', () => { - conditions.bulkGet([]); + it('should make a POST call to the conditions bulkGet url', async () => { + await conditions.bulkGet([]); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements/bulkGet', { ids: [], }); }); - it('should include the params on the url if passed', () => { - conditions.bulkGet([], {perPage: 3, sortBy: ListStatementSortBy.Definition}); + it('should include the params on the url if passed', async () => { + await conditions.bulkGet([], {perPage: 3, sortBy: ListStatementSortBy.Definition}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( '/rest/search/v1/admin/pipelines/statements/bulkGet?perPage=3&sortBy=definition', @@ -99,8 +97,8 @@ describe('Condition', () => { ); }); - it('should include the conditionIds on the request body', () => { - conditions.bulkGet(['hello', 'bonjour']); + it('should include the conditionIds on the request body', async () => { + await conditions.bulkGet(['hello', 'bonjour']); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/statements/bulkGet', { ids: ['hello', 'bonjour'], diff --git a/src/resources/Pipelines/FacetStateRules/tests/FacetStateRules.spec.ts b/src/resources/Pipelines/FacetStateRules/tests/FacetStateRules.spec.ts index 4ea9e91e2..4594de92c 100644 --- a/src/resources/Pipelines/FacetStateRules/tests/FacetStateRules.spec.ts +++ b/src/resources/Pipelines/FacetStateRules/tests/FacetStateRules.spec.ts @@ -5,8 +5,6 @@ import {FacetStateRule} from '../FacetStateRulesInterface.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - const facetStateRuleMock: FacetStateRule = { condition: {reference: ''}, defaultMatchOperator: {kind: PredicateMatchOperator.Contain}, @@ -27,8 +25,8 @@ const facetStateRuleMock: FacetStateRule = { describe('FacetStateRule', () => { let facetStateRules: FacetStateRules; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -36,40 +34,40 @@ describe('FacetStateRule', () => { }); describe('list', () => { - it('should make a get call to the list Facet State Rule', () => { + it('should make a get call to the list Facet State Rule', async () => { const pipelineId = '🍅'; - facetStateRules.list(pipelineId); + await facetStateRules.list(pipelineId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(FacetStateRules.getBaseUrl(pipelineId)); }); }); describe('get', () => { - it('Should make a get call to the get Facet State Rule', () => { + it('Should make a get call to the get Facet State Rule', async () => { const pipelineId = '🍔'; const facetStateRuleId = '🍟'; - facetStateRules.get(pipelineId, facetStateRuleId); + await facetStateRules.get(pipelineId, facetStateRuleId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${FacetStateRules.getBaseUrl(pipelineId)}/${facetStateRuleId}`); }); }); describe('create', () => { - it('Should make a post call to create a new facet state rule', () => { + it('Should make a post call to create a new facet state rule', async () => { const pipelineId = '🥔'; - facetStateRules.create(pipelineId, facetStateRuleMock); + await facetStateRules.create(pipelineId, facetStateRuleMock); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(FacetStateRules.getBaseUrl(pipelineId), facetStateRuleMock); }); }); describe('update', () => { - it('Should make a put call to update a facet state rule', () => { + it('Should make a put call to update a facet state rule', async () => { const pipelineId = '🦀'; const facetStateRuleId = '🍞'; - facetStateRules.update(pipelineId, facetStateRuleId, facetStateRuleMock); + await facetStateRules.update(pipelineId, facetStateRuleId, facetStateRuleMock); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${FacetStateRules.getBaseUrl(pipelineId)}/${facetStateRuleId}`, @@ -79,20 +77,20 @@ describe('FacetStateRule', () => { }); describe('delete', () => { - it('Should make a delete call to delete a facet state rule', () => { + it('Should make a delete call to delete a facet state rule', async () => { const pipelineId = '🎺'; const facetRuleId = '🎷'; - facetStateRules.delete(pipelineId, facetRuleId); + await facetStateRules.delete(pipelineId, facetRuleId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${FacetStateRules.getBaseUrl(pipelineId)}/${facetRuleId}`); }); }); describe('move', () => { - it('should make a pul call to position a facet state rule', () => { + it('should make a pul call to position a facet state rule', async () => { const pipelineId = '👾'; const facetRuleId = '🚀'; - facetStateRules.move(pipelineId, facetRuleId, 3); + await facetStateRules.move(pipelineId, facetRuleId, 3); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${FacetStateRules.getBaseUrl(pipelineId)}/${facetRuleId}/position`, { position: 3, diff --git a/src/resources/Pipelines/MLAssociations/MLAssociationsInterfaces.ts b/src/resources/Pipelines/MLAssociations/MLAssociationsInterfaces.ts index 2043000dc..8021750cd 100644 --- a/src/resources/Pipelines/MLAssociations/MLAssociationsInterfaces.ts +++ b/src/resources/Pipelines/MLAssociations/MLAssociationsInterfaces.ts @@ -19,6 +19,7 @@ export interface MLAssociationModel { modelEngine?: ModelTypes; condition?: string; conditionDefinition?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any customQueryParameters?: any; enableWordCompletion?: boolean; exclusive?: boolean; @@ -31,7 +32,7 @@ export interface MLAssociationModel { useAdvancedConfiguration?: boolean; } -export interface ListAssociationsParams extends Paginated {} +export type ListAssociationsParams = Paginated; export interface BulkGetAssociationsParams extends Paginated { /* @@ -47,6 +48,7 @@ export interface CreateAssociation extends EditAssociation { export interface EditAssociation { cacheMaximumAge?: string; condition?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any customQueryParameters?: any; description?: string; enableWordCompletion?: boolean; diff --git a/src/resources/Pipelines/MLAssociations/tests/MLAssociations.spec.ts b/src/resources/Pipelines/MLAssociations/tests/MLAssociations.spec.ts index 9513cf99d..5ba74ba20 100644 --- a/src/resources/Pipelines/MLAssociations/tests/MLAssociations.spec.ts +++ b/src/resources/Pipelines/MLAssociations/tests/MLAssociations.spec.ts @@ -3,12 +3,10 @@ import MLAssociations from '../MLAssociations.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('MLAssociations', () => { let associations: MLAssociations; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,67 +14,67 @@ describe('MLAssociations', () => { }); describe('list', () => { - it('should make a GET call to the specific MLAssociations url', () => { + it('should make a GET call to the specific MLAssociations url', async () => { const pipelineId = 'diEnilEpip'; - associations.list(pipelineId); + await associations.list(pipelineId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(MLAssociations.getBaseUrl(pipelineId)); }); }); describe('associate', () => { - it('should make a POST call to the specific MLAssociations url', () => { + it('should make a POST call to the specific MLAssociations url', async () => { const pipelineId = '-_-'; const options = {modelId: '0_0'}; - associations.associate(pipelineId, options); + await associations.associate(pipelineId, options); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${MLAssociations.getBaseUrl(pipelineId)}`, options); }); }); describe('getAssociation', () => { - it('should make a GET call to the specific MLAssociations url', () => { + it('should make a GET call to the specific MLAssociations url', async () => { const pipelineId = '-W-'; const associationId = 'OWO'; - associations.getAssociation(pipelineId, associationId); + await associations.getAssociation(pipelineId, associationId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${MLAssociations.getBaseUrl(pipelineId)}/${associationId}`); }); }); describe('disassociate', () => { - it('should make a DELETE call to the specific MLAssociations url', () => { + it('should make a DELETE call to the specific MLAssociations url', async () => { const pipelineId = '123'; const associationId = '000'; - associations.disassociate(pipelineId, associationId); + await associations.disassociate(pipelineId, associationId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${MLAssociations.getBaseUrl(pipelineId)}/${associationId}`); }); }); describe('updateAssociation', () => { - it('should make a PUT call to the specific MLAssociations url', () => { + it('should make a PUT call to the specific MLAssociations url', async () => { const pipelineId = '999'; const associationId = '111'; const options = {exclusive: true}; - associations.updateAssociation(pipelineId, associationId, options); + await associations.updateAssociation(pipelineId, associationId, options); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${MLAssociations.getBaseUrl(pipelineId)}/${associationId}`, options); }); }); describe('updatePosition', () => { - it('should make a PUT call to the specific MLAssociations url', () => { + it('should make a PUT call to the specific MLAssociations url', async () => { const pipelineId = '222'; const associationId = '888'; const position = 6; - associations.updatePosition(pipelineId, associationId, position); + await associations.updatePosition(pipelineId, associationId, position); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${MLAssociations.getBaseUrl(pipelineId)}/${associationId}/position?position=${position}`, @@ -86,21 +84,21 @@ describe('MLAssociations', () => { }); describe('getAssociatedPipelines', () => { - it('should make a GET call to the specific MLAssociations url', () => { - associations.getAssociatedPipelines(); + it('should make a GET call to the specific MLAssociations url', async () => { + await associations.getAssociatedPipelines(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/search/v2/admin/pipelines/ml/model/associations'); }); }); describe('bulkGet', () => { - it('should make a POST call to the specific Associations url', () => { + it('should make a POST call to the specific Associations url', async () => { const pipelineId = '🏐'; const ids = ['one', 'two', 'three']; const page = 3; const perPage = 10; - associations.bulkGet(pipelineId, {ids, page, perPage}); + await associations.bulkGet(pipelineId, {ids, page, perPage}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${MLAssociations.getBaseUrl(pipelineId)}/bulkGet?page=${page}&perPage=${perPage}`, diff --git a/src/resources/Pipelines/PipelinesInterfaces.ts b/src/resources/Pipelines/PipelinesInterfaces.ts index f835a203e..29c8f88e0 100644 --- a/src/resources/Pipelines/PipelinesInterfaces.ts +++ b/src/resources/Pipelines/PipelinesInterfaces.ts @@ -5,7 +5,6 @@ interface PipelineInterfaceUrl { * Url of the pages affected by this query pipeline. * * string - * * @example: 'www.acme.com' */ url: string; @@ -32,17 +31,14 @@ interface PipelineShared { * The name of this query pipeline. * * string - * * @example: 'Community' */ name: string; /** * The intended purpose of this query pipeline. - * - * string * + * string * @example: 'Provide contextually relevant query recommendations/results to Community site users.' - */ description?: string; /** @@ -54,7 +50,6 @@ interface PipelineShared { * (assuming, of course, that this query pipeline is not the current default query pipeline). * * boolean - * * @example: false */ isDefault?: boolean; @@ -76,7 +71,6 @@ interface PipelineShared { * See also the `splitTestTarget`, `splitTestRatio`, and `splitTestEnabled` properties. * * string - * * @example: 'Community VS default' */ splitTestName?: string; @@ -89,7 +83,6 @@ interface PipelineShared { * double * maximum: 1 * minimum: 0 - * * @example: 0.5 */ splitTestRatio?: number; @@ -99,7 +92,6 @@ interface PipelineShared { * See also the `splitTestName`, `splitTestRatio`, and `splitTestEnabled` properties. * * string - * * @example: '22a3860e-fa6f-4e64-a9f1-ef738af0786e' */ splitTestTarget?: string; @@ -113,7 +105,6 @@ interface PipelineShared { * otherwise you risk filling up the cache with useless data. * * string - * * @example: '@source==CommunityForum OR @source==CommunityDocumentation' */ filter?: string; @@ -123,7 +114,6 @@ interface PipelineShared { * to provide better support and improve the tools we provide. * * string - * * @example: 'Service & Support' */ useCase?: string; @@ -136,7 +126,6 @@ export interface PipelineModel extends PipelineShared { * The unique identifier of this query pipeline. * * string - * * @example: '120deecf-7822-4d7b-885f-53f184a3a76c' */ id: string; @@ -145,7 +134,6 @@ export interface PipelineModel extends PipelineShared { * in this Coveo Cloud organization. * * integer - * * @example: 3 */ position?: number; @@ -153,7 +141,6 @@ export interface PipelineModel extends PipelineShared { * The identifier of the Coveo Cloud platform user who originally created this query pipeline. * * string - * * @example: 'asmith@coveo.com' */ created_by?: string; @@ -161,7 +148,6 @@ export interface PipelineModel extends PipelineShared { * The identifier of the Coveo Cloud platform user who last modified this query pipeline. * * string - * * @example: 'bjones@coveo.com' */ last_modified_by?: string; @@ -176,7 +162,6 @@ export interface PipelineDetailedModel extends PipelineModel { * The unique identifier of query pipeline A in the A/B test. * * See also the splitTestName, splitTestRatio, and splitTestEnabled properties - * * @example: '22a3860e-fa6f-4e64-a9f1-ef738af0786e' */ splitTestOriginalPipeline?: string; diff --git a/src/resources/Pipelines/ResultRankings/ResultRankings.ts b/src/resources/Pipelines/ResultRankings/ResultRankings.ts index 7a2223d52..45790779a 100644 --- a/src/resources/Pipelines/ResultRankings/ResultRankings.ts +++ b/src/resources/Pipelines/ResultRankings/ResultRankings.ts @@ -109,7 +109,6 @@ export default class ResultRankings extends Resource { /** * Delete multiple result rankings rules in batch for a specific pipeline. - * * @param pipelineId The unique identifier of the target query pipeline. * @param ids A list of result ranking rule identifiers to delete. A maximum of 100 can be sent. */ diff --git a/src/resources/Pipelines/ResultRankings/ResultRankingsInterfaces.ts b/src/resources/Pipelines/ResultRankings/ResultRankingsInterfaces.ts index a4b886aa4..476d8d2a4 100644 --- a/src/resources/Pipelines/ResultRankings/ResultRankingsInterfaces.ts +++ b/src/resources/Pipelines/ResultRankings/ResultRankingsInterfaces.ts @@ -268,7 +268,6 @@ export interface ListResultRankingParams extends CoreGetResultRankingParams { /** * Similar to `kind`, the _ruleTypes_ parameter allows to filter by result ranking rule type. * This new parameter should be preferred over `kind` as it may eventually support other rule types. - * * @see kind */ ruleTypes?: ResultRankingsRuleTypes[]; diff --git a/src/resources/Pipelines/ResultRankings/tests/ResultRankings.spec.ts b/src/resources/Pipelines/ResultRankings/tests/ResultRankings.spec.ts index 63f95c81d..049cf49b3 100644 --- a/src/resources/Pipelines/ResultRankings/tests/ResultRankings.spec.ts +++ b/src/resources/Pipelines/ResultRankings/tests/ResultRankings.spec.ts @@ -11,12 +11,10 @@ import {CopyResultRankingRequest, ResultRanking} from '../ResultRankingsInterfac jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Result Rankings', () => { let resultRankings: ResultRankings; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const resultRanking: ResultRanking = { id: 'id', @@ -60,33 +58,33 @@ describe('Result Rankings', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific Result Rankings url', () => { + it('should make a DELETE call to the specific Result Rankings url', async () => { const pipelineId = 'id'; const resultRankingId = '12341234'; - resultRankings.delete(pipelineId, resultRankingId); + await resultRankings.delete(pipelineId, resultRankingId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(ResultRankings.getResultRankingsUrl(pipelineId, resultRankingId)); }); }); describe('get', () => { - it('should make a GET call to the specific Result Rankings url', () => { + it('should make a GET call to the specific Result Rankings url', async () => { const pipelineId = '️a'; const resultRankingId = 'b'; - resultRankings.get(pipelineId, resultRankingId); + await resultRankings.get(pipelineId, resultRankingId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ResultRankings.getResultRankingsUrl(pipelineId, resultRankingId)); }); }); describe('update', () => { - it('should make a PUT call to the specific Result Rankings url', () => { + it('should make a PUT call to the specific Result Rankings url', async () => { const pipelineId = '️a'; const resultRankingId = 'b'; - resultRankings.update(pipelineId, resultRankingId, resultRanking.resultRanking); + await resultRankings.update(pipelineId, resultRankingId, resultRanking.resultRanking); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( ResultRankings.getResultRankingsUrl(pipelineId, resultRankingId), @@ -96,12 +94,12 @@ describe('Result Rankings', () => { }); describe('updateJSON', () => { - it('should make a PUTJSON call to the specific Result Rankings url', () => { + it('should make a PUTJSON call to the specific Result Rankings url', async () => { const pipelineId = '️a'; const resultRankingId = 'b'; const json = JSON.stringify(resultRanking.resultRanking); - resultRankings.updateJSON(pipelineId, resultRankingId, json); + await resultRankings.updateJSON(pipelineId, resultRankingId, json); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( ResultRankings.getResultRankingsUrl(pipelineId, resultRankingId), @@ -112,14 +110,14 @@ describe('Result Rankings', () => { }); describe('list', () => { - it('should make a GET call to the specific Result Rankings url', () => { + it('should make a GET call to the specific Result Rankings url', async () => { const pipelineId = '️a'; - resultRankings.list(pipelineId); + await resultRankings.list(pipelineId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ResultRankings.getBaseUrl(pipelineId)); }); - it('should convert associated groups empty array to a JSON string', () => { + it('should convert associated groups empty array to a JSON string', async () => { const pipelineId = '️a'; const associatedGroups = []; const expectedUri = @@ -127,11 +125,11 @@ describe('Result Rankings', () => { '?associatedGroups=' + encodeURIComponent(JSON.stringify(associatedGroups)); - resultRankings.list(pipelineId, {associatedGroups}); + await resultRankings.list(pipelineId, {associatedGroups}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(expectedUri); }); - it('should convert required fields to a JSON string', () => { + it('should convert required fields to a JSON string', async () => { const pipelineId = '️a'; const associatedGroups = [null, 'g1', 'g2']; const ruleStatuses = [ResultRankingsStatuses.active, ResultRankingsStatuses.inactive]; @@ -146,28 +144,28 @@ describe('Result Rankings', () => { encodeURIComponent(JSON.stringify(ruleTypes)), ].join(''); - resultRankings.list(pipelineId, {associatedGroups, ruleStatuses, ruleTypes}); + await resultRankings.list(pipelineId, {associatedGroups, ruleStatuses, ruleTypes}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(expectedUri); }); }); describe('create', () => { - it('should make a POST call to the specific Result Rankings url', () => { + it('should make a POST call to the specific Result Rankings url', async () => { const pipelineId = '️a'; - resultRankings.create(pipelineId, resultRanking.resultRanking); + await resultRankings.create(pipelineId, resultRanking.resultRanking); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(ResultRankings.getBaseUrl(pipelineId), resultRanking.resultRanking); }); }); describe('createJSON', () => { - it('should make a POSTJSON call to the specific Result Rankings url', () => { + it('should make a POSTJSON call to the specific Result Rankings url', async () => { const pipelineId = '️a'; const json = JSON.stringify(resultRanking.resultRanking); - resultRankings.createJSON(pipelineId, json); + await resultRankings.createJSON(pipelineId, json); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(ResultRankings.getBaseUrl(pipelineId), undefined, { body: json, @@ -177,10 +175,10 @@ describe('Result Rankings', () => { }); describe('duplicate', () => { - it('should make a POST call to the specific Result Rankings duplicate url', () => { + it('should make a POST call to the specific Result Rankings duplicate url', async () => { const pipelineId = '️a'; - resultRankings.duplicate(pipelineId, resultRanking.id); + await resultRankings.duplicate(pipelineId, resultRanking.id); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${ResultRankings.getBaseUrl(pipelineId)}/duplicate/${resultRanking.id}`, @@ -189,14 +187,14 @@ describe('Result Rankings', () => { }); describe('copy', () => { - it('should make a POST call to the specific Result Rankings copy url', () => { + it('should make a POST call to the specific Result Rankings copy url', async () => { const pipelineId = '️a'; const params: CopyResultRankingRequest = { destinationPipelineId: 'target', resultRankingIds: ['rule1', 'rule2'], }; - resultRankings.copyTo(pipelineId, params); + await resultRankings.copyTo(pipelineId, params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${ResultRankings.getBaseUrl(pipelineId)}/copy`, { destinationPipelineId: 'target', @@ -206,19 +204,19 @@ describe('Result Rankings', () => { }); describe('bulkGet', () => { - it('should make a GET call to the specific Result Rankings url', () => { + it('should make a GET call to the specific Result Rankings url', async () => { const pipelineId = '️a'; const ids = ['one', 'two', 'three']; - resultRankings.bulkGet(pipelineId, {ids}); + await resultRankings.bulkGet(pipelineId, {ids}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${ResultRankings.getBaseUrl(pipelineId)}/bulkGet`, {ids}); }); }); describe('bulkDelete', () => { - it('sends a POST call to /bulkDelete with the provided ids', () => { - resultRankings.bulkDelete('🆔', ['rule-one', 'rule-two']); + it('sends a POST call to /bulkDelete with the provided ids', async () => { + await resultRankings.bulkDelete('🆔', ['rule-one', 'rule-two']); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v2/admin/pipelines/🆔/resultRankings/bulkDelete', { ids: ['rule-one', 'rule-two'], diff --git a/src/resources/Pipelines/StatementGroups/StatementGroupsInterfaces.ts b/src/resources/Pipelines/StatementGroups/StatementGroupsInterfaces.ts index 03279a2c7..379bfbe5e 100644 --- a/src/resources/Pipelines/StatementGroups/StatementGroupsInterfaces.ts +++ b/src/resources/Pipelines/StatementGroups/StatementGroupsInterfaces.ts @@ -48,7 +48,6 @@ interface StatementGroupModelBase { /** * Date of creation * Format: ISO-8601 - * * @example 2021-09-09T19:00:45.603-04:00 */ createdAt: string; @@ -61,7 +60,6 @@ interface StatementGroupModelBase { /** * Last date of modification * Format: ISO-8601 - * * @example 2021-09-09T19:00:45.603-04:00 */ modifiedAt?: string; @@ -95,7 +93,6 @@ export interface CampaignStatementGroup extends StatementGroupModelBase { /** * The start date of the campaign. * Format: ISO-8601 - * * @example 2020-09-09T19:00:45.603-04:00 */ campaignStart: string; @@ -103,7 +100,6 @@ export interface CampaignStatementGroup extends StatementGroupModelBase { /** * The end date of the campaign. * Format: ISO-8601 - * * @example 2021-09-09T19:00:45.603-04:00 */ campaignEnd: string; @@ -190,14 +186,12 @@ export interface ListStatementGroupsOptions extends Paginated { /** * The sort criteria to apply on the results. - * * @default position */ sortBy?: 'position' | 'description' | 'definition' | 'name' | 'status'; /** * Whether to sort by ascending order. - * * @default true */ isOrderAscending?: boolean; @@ -239,7 +233,6 @@ export interface CreateCampaignStatementGroupModel extends CreateStatementGroupM /** * The start date of the campaign. * Format: ISO-8601 - * * @example 2020-09-09T19:00:45.603-04:00 */ campaignStart: string; @@ -247,16 +240,14 @@ export interface CreateCampaignStatementGroupModel extends CreateStatementGroupM /** * The end date of the campaign. * Format: ISO-8601 - * * @example 2021-09-09T19:00:45.603-04:00 */ campaignEnd: string; } export type UpdateStatementGroupModel = UpdatePermanentStatementGroupModel | UpdateCampaignStatementGroupsModel; - -export interface UpdatePermanentStatementGroupModel extends CreatePermanentStatementGroupModel {} -export interface UpdateCampaignStatementGroupsModel extends CreateCampaignStatementGroupModel {} +export type UpdatePermanentStatementGroupModel = CreatePermanentStatementGroupModel; +export type UpdateCampaignStatementGroupsModel = CreateCampaignStatementGroupModel; export interface UpdateStatementGroupRuleAssociationsRequest { /** diff --git a/src/resources/Pipelines/StatementGroups/tests/StatementGroups.spec.ts b/src/resources/Pipelines/StatementGroups/tests/StatementGroups.spec.ts index 000f1add4..69122f199 100644 --- a/src/resources/Pipelines/StatementGroups/tests/StatementGroups.spec.ts +++ b/src/resources/Pipelines/StatementGroups/tests/StatementGroups.spec.ts @@ -9,12 +9,10 @@ import { jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('StatementGroups', () => { let groups: StatementGroups; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -22,25 +20,25 @@ describe('StatementGroups', () => { }); describe('list', () => { - it('should make a GET call to the StatementGroups base url', () => { + it('should make a GET call to the StatementGroups base url', async () => { const pipelineId = '🍰'; - groups.list(pipelineId); + await groups.list(pipelineId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(StatementGroups.getBaseUrl(pipelineId)); }); - it('should make a GET call with a filter', () => { + it('should make a GET call with a filter', async () => { const pipelineId = '️🍰'; const filter = 'nameOfCondition'; - groups.list(pipelineId, {filter}); + await groups.list(pipelineId, {filter}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( '/rest/search/v2/admin/pipelines/️🍰/statementGroups?filter=nameOfCondition', ); }); - it('should make a GET call with a status filter', () => { + it('should make a GET call with a status filter', async () => { const pipelineId = '️🍰'; const status = [ ListStatementGroupStatusType.Active, @@ -48,7 +46,7 @@ describe('StatementGroups', () => { ListStatementGroupStatusType.Inactive, ListStatementGroupStatusType.NotStarted, ]; - groups.list(pipelineId, {status}); + await groups.list(pipelineId, {status}); const expectedUri = [ '/rest/search/v2/admin/pipelines/️🍰/statementGroups?status=', @@ -58,10 +56,10 @@ describe('StatementGroups', () => { expect(api.get).toHaveBeenCalledWith(expectedUri); }); - it('should make a GET call with a status type filter', () => { + it('should make a GET call with a status type filter', async () => { const pipelineId = '️🍰'; const types = [StatementGroupType.campaign, StatementGroupType.permanent]; - groups.list(pipelineId, {types}); + await groups.list(pipelineId, {types}); const expectedUri = [ '/rest/search/v2/admin/pipelines/️🍰/statementGroups?types=', @@ -71,16 +69,16 @@ describe('StatementGroups', () => { expect(api.get).toHaveBeenCalledWith(expectedUri); }); - it('should make a GET call with a sort', () => { + it('should make a GET call with a sort', async () => { const pipelineId = '️🍰'; - groups.list(pipelineId, {sortBy: 'name', isOrderAscending: false}); + await groups.list(pipelineId, {sortBy: 'name', isOrderAscending: false}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( '/rest/search/v2/admin/pipelines/️🍰/statementGroups?sortBy=name&isOrderAscending=false', ); - groups.list(pipelineId, {sortBy: 'status', isOrderAscending: true}); + await groups.list(pipelineId, {sortBy: 'status', isOrderAscending: true}); expect(api.get).toHaveBeenCalledTimes(2); expect(api.get).toHaveBeenCalledWith( '/rest/search/v2/admin/pipelines/️🍰/statementGroups?sortBy=status&isOrderAscending=true', @@ -89,7 +87,7 @@ describe('StatementGroups', () => { }); describe('create', () => { - it('should make a POST call to the StatementGroups base url', () => { + it('should make a POST call to the StatementGroups base url', async () => { const pipelineId = '🍸'; const model: CreateStatementGroupModel = { name: '🥂', @@ -97,18 +95,18 @@ describe('StatementGroups', () => { isActive: true, }; - groups.create(pipelineId, model); + await groups.create(pipelineId, model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(StatementGroups.getBaseUrl(pipelineId), model); }); }); describe('get', () => { - it('should make a GET call to the specific StatementGroups url', () => { + it('should make a GET call to the specific StatementGroups url', async () => { const pipelineId = '️a'; const groupId = 'b'; - groups.get(pipelineId, groupId); + await groups.get(pipelineId, groupId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(StatementGroups.getStatementGroupUrl(pipelineId, groupId)); }); @@ -120,34 +118,34 @@ describe('StatementGroups', () => { type: StatementGroupType.permanent, }; - it('should make a PUT call to the specific StatementGroups url', () => { + it('should make a PUT call to the specific StatementGroups url', async () => { const pipelineId = '️a'; const groupId = 'b'; - groups.update(pipelineId, groupId, group); + await groups.update(pipelineId, groupId, group); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(StatementGroups.getStatementGroupUrl(pipelineId, groupId), group); }); }); describe('delete', () => { - it('should make a DELETE call to the specific StatementGroups url', () => { + it('should make a DELETE call to the specific StatementGroups url', async () => { const pipelineId = '🍄'; const groupId = '🌿'; - groups.delete(pipelineId, groupId); + await groups.delete(pipelineId, groupId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(StatementGroups.getStatementGroupUrl(pipelineId, groupId)); }); }); describe('toggleActive', () => { - it('should make a PATCH call to the specific StatementGroups url', () => { + it('should make a PATCH call to the specific StatementGroups url', async () => { const pipelineId = '️=)'; const groupId = '(='; const isActive = true; - groups.toggleActive(pipelineId, groupId, isActive); + await groups.toggleActive(pipelineId, groupId, isActive); expect(api.patch).toHaveBeenCalledTimes(1); expect(api.patch).toHaveBeenCalledWith(StatementGroups.getStatementGroupUrl(pipelineId, groupId), { isActive, @@ -156,11 +154,11 @@ describe('StatementGroups', () => { }); describe('bulkUpdateRuleAssociations', () => { - it('should make a PUT call to the specific statements group url', () => { + it('should make a PUT call to the specific statements group url', async () => { const pipelineId = 'pipeline1'; const groupId = 'group1'; - groups.bulkUpdateRuleAssociations(pipelineId, groupId, { + await groups.bulkUpdateRuleAssociations(pipelineId, groupId, { toAdd: [ { ruleId: 'rule1', diff --git a/src/resources/Pipelines/Statements/Statements.ts b/src/resources/Pipelines/Statements/Statements.ts index 5fddf9b55..8032d71ef 100644 --- a/src/resources/Pipelines/Statements/Statements.ts +++ b/src/resources/Pipelines/Statements/Statements.ts @@ -17,10 +17,9 @@ export default class Statements extends Resource { /** * Gets a sorted page of query pipeline statements matching certain criteria from a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {ListStatementParams} options Listing options. - * @returns {Promise>} The matching statements in the current page of results + * @param pipelineId The unique identifier of the target query pipeline. + * @param options Listing options. + * @returns The matching statements in the current page of results */ list(pipelineId: string, options?: ListStatementParams): Promise> { return this.api.get>( @@ -30,10 +29,9 @@ export default class Statements extends Resource { /** * Exports the definition, condition, and description of statements from a specific query pipeline to a CSV file. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {ExportStatementParams} options Export options - * @returns {Promise} The file containing the exported data. + * @param pipelineId The unique identifier of the target query pipeline. + * @param options Export options + * @returns The file containing the exported data. */ exportCSV(pipelineId: string, options?: ExportStatementParams): Promise { return this.api.get( @@ -47,10 +45,9 @@ export default class Statements extends Resource { /** * Import the definition, condition, and description of statements from a CSV file to a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {File | string} csvFile The file containing the statements to import. - * @param {ExportStatementParams} options Import options + * @param pipelineId The unique identifier of the target query pipeline. + * @param csvFile The file containing the statements to import. + * @param options Import options */ importCSV(pipelineId: string, csvFile: File | string, options?: ExportStatementParams) { const formData = new FormData(); @@ -72,10 +69,9 @@ export default class Statements extends Resource { /** * Creates a new query pipeline statement in a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {CreateStatementModel} model The query pipeline statement information. - * @returns {Promise} The created statement. + * @param pipelineId The unique identifier of the target query pipeline. + * @param model The query pipeline statement information. + * @returns The created statement. */ create(pipelineId: string, model: CreateStatementModel): Promise { return this.api.post( @@ -86,11 +82,10 @@ export default class Statements extends Resource { /** * Updates a single query pipeline statement in a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {string} statementId The unique identifier of the target statement. - * @param {CreateStatementModel} model The updated query pipeline statement information. - * @returns {Promise} The updated statement. + * @param pipelineId The unique identifier of the target query pipeline. + * @param statementId The unique identifier of the target statement. + * @param model The updated query pipeline statement information. + * @returns The updated statement. */ update(pipelineId: string, statementId: string, model: CreateStatementModel): Promise { return this.api.put( @@ -103,10 +98,9 @@ export default class Statements extends Resource { /** * Copies specific statements from an origin to a target query pipeline. Using the same pipeline as origin and target will duplicate the specified statements in that pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {CopyStatementModel} model The copy operation to perform. - * @returns {Promise>} The matching statements in the current page of results. + * @param pipelineId The unique identifier of the target query pipeline. + * @param model The copy operation to perform. + * @returns The matching statements in the current page of results. */ copy(pipelineId: string, model: CopyStatementModel) { return this.api.post>( @@ -117,10 +111,9 @@ export default class Statements extends Resource { /** * Gets a single query pipeline statement from a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {string} statementId The unique identifier of the target statement. - * @returns {Promise} The statement + * @param pipelineId The unique identifier of the target query pipeline. + * @param statementId The unique identifier of the target statement. + * @returns The statement */ get(pipelineId: string, statementId: string): Promise { return this.api.get( @@ -132,11 +125,10 @@ export default class Statements extends Resource { /** * Sets the position of a query pipeline statement in a specific query pipeline and updates other statement positions as appropriate. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {string} statementId The unique identifier of the target statement. - * @param {MoveStatementModel} model The move operation to perform. - * @returns {Promise>} The matching statements in the current page of results. + * @param pipelineId The unique identifier of the target query pipeline. + * @param statementId The unique identifier of the target statement. + * @param model The move operation to perform. + * @returns The matching statements in the current page of results. */ move( pipelineId: string, @@ -153,9 +145,8 @@ export default class Statements extends Resource { /** * Deletes a single query pipeline statement from a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {string} statementId The unique identifier of the target statement. + * @param pipelineId The unique identifier of the target query pipeline. + * @param statementId The unique identifier of the target statement. */ delete(pipelineId: string, statementId: string) { return this.api.delete( @@ -167,10 +158,10 @@ export default class Statements extends Resource { /** * Gets a sorted page of query pipeline statements matching certain criteria from a specific query pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {BulkGetStatementsParams} params A set of parameters to customize the results. - * @returns {Promise>} The matching statements in the current page of results. + * @param pipelineId The unique identifier of the target query pipeline. + * @param params A set of parameters to customize the results. + * @param params.ids + * @returns The matching statements in the current page of results. */ bulkGet( pipelineId: string, @@ -187,9 +178,8 @@ export default class Statements extends Resource { /** * Delete multiple statements at once for a specific pipeline. - * - * @param {string} pipelineId The unique identifier of the target query pipeline. - * @param {string[]} ids A list of resource identifiers to delete. A maximum of 100 can be sent. + * @param pipelineId The unique identifier of the target query pipeline. + * @param ids A list of resource identifiers to delete. A maximum of 100 can be sent. */ bulkDelete(pipelineId: string, ids: string[]) { return this.api.post( diff --git a/src/resources/Pipelines/Statements/StatementsInterfaces.ts b/src/resources/Pipelines/Statements/StatementsInterfaces.ts index cd41afea9..ad264494b 100644 --- a/src/resources/Pipelines/Statements/StatementsInterfaces.ts +++ b/src/resources/Pipelines/Statements/StatementsInterfaces.ts @@ -19,6 +19,7 @@ export interface StatementModel { * Whether the underlying Coveo Machine Learning model is ready. This property only has a meaning with recommendation, topClicks, and querySuggest statements. */ ready: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any detailed: any; /** * @deprecated this property is exposed for backward compatibility reasons. diff --git a/src/resources/Pipelines/Statements/tests/Statements.spec.ts b/src/resources/Pipelines/Statements/tests/Statements.spec.ts index 6c1ff5903..00bb3b9f5 100644 --- a/src/resources/Pipelines/Statements/tests/Statements.spec.ts +++ b/src/resources/Pipelines/Statements/tests/Statements.spec.ts @@ -10,12 +10,10 @@ import { jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Statements', () => { let statements: Statements; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -23,23 +21,23 @@ describe('Statements', () => { }); describe('list', () => { - it('should make a GET call to the specific Statements url', () => { + it('should make a GET call to the specific Statements url', async () => { const pipelineId = '⚽️'; - statements.list(pipelineId); + await statements.list(pipelineId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Statements.getBaseUrl(pipelineId)); }); }); describe('exportCSV', () => { - it('should make a GET call to the specific Statements url', () => { + it('should make a GET call to the specific Statements url', async () => { const pipelineId = '🎱'; const options: ExportStatementParams = { feature: StatementsFeature.Ranking, }; - statements.exportCSV(pipelineId, options); + await statements.exportCSV(pipelineId, options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statements.getBaseUrl(pipelineId)}/export?feature=${options.feature}`, @@ -49,7 +47,7 @@ describe('Statements', () => { }); describe('create', () => { - it('should make a POST call to the specific Statements url', () => { + it('should make a POST call to the specific Statements url', async () => { const pipelineId = '🏀'; const model: CreateStatementModel = { feature: StatementsFeature.Thesaurus, @@ -57,14 +55,14 @@ describe('Statements', () => { position: 1, }; - statements.create(pipelineId, model); + await statements.create(pipelineId, model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Statements.getBaseUrl(pipelineId), model); }); }); describe('update', () => { - it('should make a PUT call to the specific Statement url', () => { + it('should make a PUT call to the specific Statement url', async () => { const pipelineId = '🏹'; const statementId = '🎯'; @@ -74,39 +72,39 @@ describe('Statements', () => { position: 2, }; - statements.update(pipelineId, statementId, model); + await statements.update(pipelineId, statementId, model); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Statements.getStatementUrl(pipelineId, statementId)}`, model); }); }); describe('copy', () => { - it('should make a POST call to the specific Statements url', () => { + it('should make a POST call to the specific Statements url', async () => { const pipelineId = '🏀'; const model: CopyStatementModel = { destinationPipelineId: '🏉', statementIds: ['🏓'], }; - statements.copy(pipelineId, model); + await statements.copy(pipelineId, model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Statements.getBaseUrl(pipelineId)}/copy`, model); }); }); describe('get', () => { - it('should make a GET call to the specific Statement url', () => { + it('should make a GET call to the specific Statement url', async () => { const pipelineId = '⛳️'; const statementId = '🏒'; - statements.get(pipelineId, statementId); + await statements.get(pipelineId, statementId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Statements.getStatementUrl(pipelineId, statementId)); }); }); describe('move', () => { - it('should make a PUT call to the specific Statement url', () => { + it('should make a PUT call to the specific Statement url', async () => { const pipelineId = '🎿'; const statementId = '⛷'; @@ -114,18 +112,18 @@ describe('Statements', () => { after: '🏂', }; - statements.move(pipelineId, statementId, model); + await statements.move(pipelineId, statementId, model); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Statements.getStatementUrl(pipelineId, statementId)}/move`, model); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Statement url', () => { + it('should make a DELETE call to the specific Statement url', async () => { const pipelineId = '🏐'; const statementId = '🎽'; - statements.delete(pipelineId, statementId); + await statements.delete(pipelineId, statementId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(Statements.getStatementUrl(pipelineId, statementId)); }); @@ -137,14 +135,16 @@ describe('Statements', () => { }; beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (global as any).FormData = jest.fn(() => mockedFormData); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (global as any).File = jest.fn(() => ({})); }); it('should post the file content inside a form multi part data', async () => { const myCSVFile = new File(['egg'], 'egg.txt', {type: 'text/csv'}); - statements.importCSV('🥚', myCSVFile, {feature: StatementsFeature.Stop}); + await statements.importCSV('🥚', myCSVFile, {feature: StatementsFeature.Stop}); expect(api.postForm).toHaveBeenCalledTimes(1); expect(api.postForm).toHaveBeenCalledWith( @@ -158,7 +158,7 @@ describe('Statements', () => { it('should post the string content inside a form multi part data', async () => { const content = `definition,condition,description,feature\n"alias ""CPU"", ""processor""",,Tech thesaurus,thesaurus\n"alias ""Television"", ""Televisions"", ""TV"", ""TVs""",,Basic thesaurus,thesaurus`; - statements.importCSV('🥚', content, {feature: StatementsFeature.Thesaurus}); + await statements.importCSV('🥚', content, {feature: StatementsFeature.Thesaurus}); expect(api.postForm).toHaveBeenCalledTimes(1); expect(api.postForm).toHaveBeenCalledWith( @@ -171,19 +171,19 @@ describe('Statements', () => { }); describe('bulkGet', () => { - it('should make a POST call to the specific Statement url', () => { + it('should make a POST call to the specific Statement url', async () => { const pipelineId = '🏐'; const ids = ['one', 'two', 'three']; - statements.bulkGet(pipelineId, {ids}); + await statements.bulkGet(pipelineId, {ids}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Statements.getBaseUrl(pipelineId)}/bulkGet`, {ids}); }); }); describe('bulkDelete', () => { - it('sends a POST call to /bulkDelete with the provided ids', () => { - statements.bulkDelete('🆔', ['rule-one', 'rule-two']); + it('sends a POST call to /bulkDelete with the provided ids', async () => { + await statements.bulkDelete('🆔', ['rule-one', 'rule-two']); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v2/admin/pipelines/🆔/statements/bulkDelete', { ids: ['rule-one', 'rule-two'], diff --git a/src/resources/Pipelines/tests/Pipelines.spec.ts b/src/resources/Pipelines/tests/Pipelines.spec.ts index 8f0fe29c0..dbe4f6ae8 100644 --- a/src/resources/Pipelines/tests/Pipelines.spec.ts +++ b/src/resources/Pipelines/tests/Pipelines.spec.ts @@ -4,12 +4,10 @@ import {NewPipelineModel, UpdatePipelineModel} from '../PipelinesInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Pipelines', () => { let pipelines: Pipelines; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,13 +15,13 @@ describe('Pipelines', () => { }); describe('list', () => { - it('makes a GET call to the Pipelines v1 url', () => { - pipelines.list(); + it('makes a GET call to the Pipelines v1 url', async () => { + await pipelines.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Pipelines.searchUrlVersion1); }); - it('passes the query parameters with the request', () => { - pipelines.list({ + it('passes the query parameters with the request', async () => { + await pipelines.list({ filter: 'filter', page: 0, perPage: 25, @@ -40,8 +38,8 @@ describe('Pipelines', () => { }); describe('get', () => { - it('makes a GET call to /rest/search/v1/admin/pipelines/:id', () => { - pipelines.get('🔥'); + it('makes a GET call to /rest/search/v1/admin/pipelines/:id', async () => { + await pipelines.get('🔥'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/🔥'); @@ -49,8 +47,8 @@ describe('Pipelines', () => { }); describe('delete', () => { - it('makes a DELETE call to /rest/search/v1/admin/pipelines/:id', () => { - pipelines.delete('🔥'); + it('makes a DELETE call to /rest/search/v1/admin/pipelines/:id', async () => { + await pipelines.delete('🔥'); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/🔥'); @@ -58,12 +56,12 @@ describe('Pipelines', () => { }); describe('update', () => { - it('makes a PUT call to /rest/search/v1/admin/pipelines/:id', () => { + it('makes a PUT call to /rest/search/v1/admin/pipelines/:id', async () => { const pipelineToUpdate: UpdatePipelineModel = { id: '🔥', name: 'fire', }; - pipelines.update(pipelineToUpdate); + await pipelines.update(pipelineToUpdate); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/🔥', pipelineToUpdate); @@ -71,19 +69,19 @@ describe('Pipelines', () => { }); describe('duplicate', () => { - it('makes a POST call to /rest/search/v1/admin/pipelines/:id/duplicate', () => { - pipelines.duplicate('🔥'); + it('makes a POST call to /rest/search/v1/admin/pipelines/:id/duplicate', async () => { + await pipelines.duplicate('🔥'); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/🔥/duplicate', undefined); }); - it('includes the granular resource if set on the POST call request body', () => { + it('includes the granular resource if set on the POST call request body', async () => { const granularResource = { groupsThatCanEdit: [{id: 'hello'}, {id: 'bonjour'}], apiKeysThatCanEdit: [{id: 'bonne'}, {id: 'nuit'}], }; - pipelines.duplicate('yeah', granularResource); + await pipelines.duplicate('yeah', granularResource); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines/yeah/duplicate', granularResource); @@ -91,12 +89,12 @@ describe('Pipelines', () => { }); describe('create', () => { - it('makes a POST call to /rest/search/v1/admin/pipelines', () => { + it('makes a POST call to /rest/search/v1/admin/pipelines', async () => { const newPipeline: NewPipelineModel = { name: 'fire', description: 'this-is-lit', }; - pipelines.create(newPipeline); + await pipelines.create(newPipeline); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/search/v1/admin/pipelines', newPipeline); diff --git a/src/resources/PrivilegeEvaluator/PrivilegeEvaluator.ts b/src/resources/PrivilegeEvaluator/PrivilegeEvaluator.ts index d132debc1..f7a8ca1fe 100644 --- a/src/resources/PrivilegeEvaluator/PrivilegeEvaluator.ts +++ b/src/resources/PrivilegeEvaluator/PrivilegeEvaluator.ts @@ -6,8 +6,7 @@ export default class PrivilegeEvaluator extends Ressource { /** * Evaluates a specific privilege request - * - * @param {RestTokenParams} privilegeEvaluatorParams The privilege request to evaluate + * @param privilegeEvaluatorParams The privilege request to evaluate */ evaluate(privilegeEvaluatorParams: PrivilegeEvaluatorModel) { privilegeEvaluatorParams = { diff --git a/src/resources/PrivilegeEvaluator/test/PrivilegeEvaluator.spec.ts b/src/resources/PrivilegeEvaluator/test/PrivilegeEvaluator.spec.ts index d7c8a537a..dac371104 100644 --- a/src/resources/PrivilegeEvaluator/test/PrivilegeEvaluator.spec.ts +++ b/src/resources/PrivilegeEvaluator/test/PrivilegeEvaluator.spec.ts @@ -3,12 +3,10 @@ import PrivilegeEvaluator from '../PrivilegeEvaluator.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('PrivilegeEvaluator', () => { let privilegeEvaluator: PrivilegeEvaluator; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -25,8 +23,8 @@ describe('PrivilegeEvaluator', () => { }, }; - it('should make a post call to the Privilege Evaluator correct url with its params to evaluate a privilege', () => { - privilegeEvaluator.evaluate(privilegeEvaluatorParams); + it('should make a post call to the Privilege Evaluator correct url with its params to evaluate a privilege', async () => { + await privilegeEvaluator.evaluate(privilegeEvaluatorParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${PrivilegeEvaluator.baseUrl}`, privilegeEvaluatorParams); }); diff --git a/src/resources/Products/Product.ts b/src/resources/Products/Product.ts index 1adb4fbeb..99a9b9800 100644 --- a/src/resources/Products/Product.ts +++ b/src/resources/Products/Product.ts @@ -7,6 +7,8 @@ export default class Products extends Resource { static baseUrl = `/rest/organizations/${API.orgPlaceholder}/commerce/v1/products`; /** + * @param productsRequest + * @param refreshCache * @deprecated */ get(productsRequest: New, refreshCache = false) { diff --git a/src/resources/Products/ProductInterfaces.ts b/src/resources/Products/ProductInterfaces.ts index e36a0e1b5..c8f6941e6 100644 --- a/src/resources/Products/ProductInterfaces.ts +++ b/src/resources/Products/ProductInterfaces.ts @@ -42,6 +42,7 @@ export interface FacetRequestItem { /** * The values displayed by the facet in the search interface at the moment of the request. */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any currentValues?: any[]; /** * A custom sort order for the facet values. @@ -178,6 +179,7 @@ export interface FacetResultModel { indexScore: number; mlScore: number; moreValuesAvailable: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any values: any[]; } @@ -219,6 +221,7 @@ export interface ProductListingIdentityModel { * @deprecated */ export interface ProductModel { + // eslint-disable-next-line @typescript-eslint/no-explicit-any additionalFields: Map; childResults: ProductModel[]; clickUri: string; @@ -246,6 +249,7 @@ export interface ProductsResultModel { /** * The execution report. */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any executionReport: Map; /** * The list of facet results. diff --git a/src/resources/Products/tests/Product.spec.ts b/src/resources/Products/tests/Product.spec.ts index acd492811..e4081fe76 100644 --- a/src/resources/Products/tests/Product.spec.ts +++ b/src/resources/Products/tests/Product.spec.ts @@ -6,12 +6,10 @@ import {ProductsRequestModel} from '../ProductInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Product', () => { let products: Products; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -19,7 +17,7 @@ describe('Product', () => { }); describe('getProducts', () => { - it('should make a POST call to to retrieve filtered products', () => { + it('should make a POST call to to retrieve filtered products', async () => { const query: New = { additionalFields: ['brand', 'store'], advancedFiltersModel: { @@ -64,18 +62,18 @@ describe('Product', () => { }, url: 'https://fashion.coveodemo.com/browse/men/hats', }; - products.get(query); + await products.get(query); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Products.baseUrl}/listing?refreshCache=false`, query); }); }); describe('getProducts while force refreshing the product listings cache', () => { - it('should make a POST call to to retrieve filtered products', () => { + it('should make a POST call to to retrieve filtered products', async () => { const query: New = { url: 'https://fashion.coveodemo.com/browse/men/hats', }; - products.get(query, true); + await products.get(query, true); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Products.baseUrl}/listing?refreshCache=true`, query); }); diff --git a/src/resources/Projects/Project.ts b/src/resources/Projects/Project.ts index 277720bb4..e3f612f73 100644 --- a/src/resources/Projects/Project.ts +++ b/src/resources/Projects/Project.ts @@ -15,9 +15,8 @@ export default class Project extends Resource { /** * Returns a paginated list of projects. - * - * @param {ListProjectParams} params - * @returns {Promise>} A paginated list of projects + * @param params + * @returns A paginated list of projects */ list(params?: ListProjectParams): Promise> { return this.api.get>(this.buildPath(Project.baseUrl, params)); @@ -25,9 +24,8 @@ export default class Project extends Resource { /** * Creates and returns a new project. - * - * @param {ProjectModel} project - * @returns {Promise} The newly created project + * @param project + * @returns The newly created project */ create(project: BaseProjectModel): Promise { return this.api.post(this.buildPath(Project.baseUrl), project); @@ -35,10 +33,9 @@ export default class Project extends Resource { /** * Updates a project with the model sent and returns the updated project. - * - * @param {string} projectId - * @param {ProjectModel} updateProjectModel - * @returns {Promise} The updated project + * @param projectId + * @param updateProjectModel + * @returns The updated project */ update(projectId: string, updateProjectModel: ProjectModel): Promise { return this.api.put(this.buildPath(`${Project.baseUrl}/${projectId}`), updateProjectModel); @@ -46,9 +43,8 @@ export default class Project extends Resource { /** * Returns a project. - * - * @param {string} projectId - * @returns {Promise} The project specified by the provided id + * @param projectId + * @returns The project specified by the provided id */ get(projectId: string): Promise { return this.api.get(this.buildPath(`${Project.baseUrl}/${projectId}`)); @@ -56,8 +52,7 @@ export default class Project extends Resource { /** * Deletes a project. - * - * @param {string} projectId + * @param projectId */ delete(projectId: string): Promise { return this.api.delete(this.buildPath(`${Project.baseUrl}/${projectId}`)); @@ -65,9 +60,8 @@ export default class Project extends Resource { /** * Returns resource IDs grouped by resource status, for a given project. - * - * @param {string} projectId - * @returns {Promise>>} A series of resource IDs grouped by their status and resource type. + * @param projectId + * @returns A series of resource IDs grouped by their status and resource type. */ listResourcesByStatus(projectId: string): Promise>> { return this.api.get>>( @@ -77,11 +71,10 @@ export default class Project extends Resource { /** * Returns a paginated list of resources associated to a project. - * - * @param {string} projectId - * @param {ProjectResourceType} resourceType - * @param {ResourceParams} params - * @returns {Promise>} A paginated list of resources associated to a project. + * @param projectId + * @param resourceType + * @param params + * @returns A paginated list of resources associated to a project. */ listResources( projectId: string, @@ -95,10 +88,9 @@ export default class Project extends Resource { /** * Returns a list of project IDs associated to the provided resource IDs. - * - * @param {ProjectResourceType} resourceType - * @param {string[]} resourceIds - * @returns {Promise} List of project IDs associated to the provided resource IDs. + * @param resourceType + * @param resourceIds + * @returns List of project IDs associated to the provided resource IDs. */ listAssociatedProjects( resourceType: ProjectResourceType, diff --git a/src/resources/Projects/ProjectInterfaces.ts b/src/resources/Projects/ProjectInterfaces.ts index 5a11a98d5..f9dcf9c45 100644 --- a/src/resources/Projects/ProjectInterfaces.ts +++ b/src/resources/Projects/ProjectInterfaces.ts @@ -30,8 +30,6 @@ export type ProjectResourceType = (typeof projectResourceTypes)[number]; /** * Enum representing the possible project types. - * - * @enum {string} */ export enum ProjectType { CaseDeflection = 'CASE_DEFLECTION', @@ -62,13 +60,11 @@ export interface BaseProjectModel { type: ProjectType; /** * The list of usernames that will be points of contact for the project. - * * @example: ['johndoe@email.com-google', 'janedoe@email.com-office265'] */ pointsOfContact?: string[]; /** * The resources associated to the project. - * * @example: {'SOURCE': ['sourceId1', 'sourceId2']} */ resources?: Record; @@ -81,27 +77,23 @@ export interface ProjectModel extends BaseProjectModel { id: string; /** * The email of the user that created the project. - * * @example: 'jdoe@email.com' */ createdBy: string; /** * The date of the project's creation. * Note: ISO-8601 format - * * @example: '2023-06-21T14:59:26.850Z' */ createdDate: string; /** * The email of the user that last updated the project. - * * @example: 'jdoe@email.com' */ updatedBy: string; /** * The date of the project's last update. * Note: ISO-8601 format - * * @example: '2023-06-21T14:59:26.850Z' */ updatedDate: string; @@ -122,7 +114,6 @@ export interface ListProjectParams extends Paginated { sortBy?: ProjectSortBy; /** * The sorting order to apply on the results. - * * @example: 'ASC' */ order?: SortingOrder; diff --git a/src/resources/Projects/tests/Project.spec.ts b/src/resources/Projects/tests/Project.spec.ts index 741e0802d..d0c8f5aa9 100644 --- a/src/resources/Projects/tests/Project.spec.ts +++ b/src/resources/Projects/tests/Project.spec.ts @@ -4,12 +4,10 @@ import {BaseProjectModel, ProjectModel, ProjectType} from '../ProjectInterfaces. jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Project', () => { let project: Project; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const mockProjectId = 'randomProjectId'; const mockRandomResourceType = 'CATALOG'; @@ -37,22 +35,22 @@ describe('Project', () => { }); describe('list', () => { - it('should make a GET call to the correct Project url', () => { - project.list(); + it('should make a GET call to the correct Project url', async () => { + await project.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Project.baseUrl); }); - it('should use the passed parameters as its query paramaters', () => { - project.list({page: 1, perPage: 50}); + it('should use the passed parameters as its query paramaters', async () => { + await project.list({page: 1, perPage: 50}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Project.baseUrl}?page=1&perPage=50`); }); }); describe('create', () => { - it('should make a POST call to the correct Project url', () => { - project.create(mockNewProject); + it('should make a POST call to the correct Project url', async () => { + await project.create(mockNewProject); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Project.baseUrl, { name: 'Pokemon Project', @@ -63,8 +61,8 @@ describe('Project', () => { }); describe('update', () => { - it('should make a PUT call to the correct Project url', () => { - project.update(mockProjectId, mockProject); + it('should make a PUT call to the correct Project url', async () => { + await project.update(mockProjectId, mockProject); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Project.baseUrl}/randomProjectId`, { id: mockProjectId, @@ -80,40 +78,40 @@ describe('Project', () => { }); describe('get', () => { - it('should make a GET call to the correct Project URL', () => { - project.get(mockProjectId); + it('should make a GET call to the correct Project URL', async () => { + await project.get(mockProjectId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Project.baseUrl}/randomProjectId`); }); }); describe('delete', () => { - it('should make a DELETE call to the correct Project URL', () => { - project.delete(mockProjectId); + it('should make a DELETE call to the correct Project URL', async () => { + await project.delete(mockProjectId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Project.baseUrl}/randomProjectId`); }); }); describe('listResourcesByType', () => { - it('should make a GET call to the correct Project URL', () => { - project.listResourcesByStatus(mockProjectId); + it('should make a GET call to the correct Project URL', async () => { + await project.listResourcesByStatus(mockProjectId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Project.baseUrl}/${mockProjectId}/resources`); }); }); describe('listResources', () => { - it('should make a GET call to the correct Project URL', () => { - project.listResources(mockProjectId, mockRandomResourceType); + it('should make a GET call to the correct Project URL', async () => { + await project.listResources(mockProjectId, mockRandomResourceType); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Project.baseUrl}/${mockProjectId}/resources/${mockRandomResourceType}`, ); }); - it('should use the passed parameters as its query paramaters', () => { - project.listResources(mockProjectId, mockRandomResourceType, {page: 1, perPage: 50}); + it('should use the passed parameters as its query paramaters', async () => { + await project.listResources(mockProjectId, mockRandomResourceType, {page: 1, perPage: 50}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Project.baseUrl}/${mockProjectId}/resources/${mockRandomResourceType}?page=1&perPage=50`, @@ -122,9 +120,9 @@ describe('Project', () => { }); describe('listAssociatedProjects', () => { - it('should make a POST call to the correct Project URL', () => { + it('should make a POST call to the correct Project URL', async () => { const randomSourceId = 'random-id'; - project.listAssociatedProjects('SOURCE', [randomSourceId]); + await project.listAssociatedProjects('SOURCE', [randomSourceId]); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Project.baseUrl}/resources/ids?resourceType=SOURCE`, [ randomSourceId, diff --git a/src/resources/PushApi/tests/PushApi.spec.ts b/src/resources/PushApi/tests/PushApi.spec.ts index 8a5965165..2d6bb9190 100644 --- a/src/resources/PushApi/tests/PushApi.spec.ts +++ b/src/resources/PushApi/tests/PushApi.spec.ts @@ -5,12 +5,10 @@ import {FileContainer, SecurityIdentityAliasModel, SecurityIdentityOptions} from jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('PushAPI', () => { let pushApi: PushApi; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const securityProviderId = 'testId'; const securityProviderOptions: SecurityIdentityOptions = {orderingId: 1506700606240}; const securityProviderAlias: SecurityIdentityAliasModel = { @@ -41,8 +39,8 @@ describe('PushAPI', () => { ], ['/push/v1/organizations/{organizationName}/files', {useVirtualHostedStyleUrl: undefined}], ])('should make a POST call to %s when called with %o', async (url, options) => { - serverlessApi.post.mockImplementation( - async (): Promise => ({ + (serverlessApi as jest.Mocked).post.mockImplementation(() => + Promise.resolve({ fileId: 'somefileid', requiredHeaders: {a: 'b', c: 'd'}, uploadUri: 'https://something', @@ -68,8 +66,8 @@ describe('PushAPI', () => { `/push/v1/organizations/{organizationName}/providers/${securityProviderId}/mappings?orderingId=1506700606240`, securityProviderOptions, ], - ])('should make a PUT call to "%s"', (url, options) => { - pushApi.createOrUpdateSecurityIdentityAlias(securityProviderId, securityProviderAlias, options); + ])('should make a PUT call to "%s"', async (url, options) => { + await pushApi.createOrUpdateSecurityIdentityAlias(securityProviderId, securityProviderAlias, options); expect(serverlessApi.put).toHaveBeenCalledTimes(1); expect(serverlessApi.put).toHaveBeenCalledWith(url, { mappings: {additionalInfo: {}, name: 'MyAlias', provider: 'Provider', type: 'GROUP'}, @@ -84,8 +82,8 @@ describe('PushAPI', () => { `/push/v1/organizations/{organizationName}/providers/${securityProviderId}/permissions?orderingId=1506700606240`, securityProviderOptions, ], - ])('should make a DELETE call to "%s"', (url, options) => { - pushApi.deleteSecurityIdentity( + ])('should make a DELETE call to "%s"', async (url, options) => { + await pushApi.deleteSecurityIdentity( securityProviderId, { identity: { @@ -112,8 +110,8 @@ describe('PushAPI', () => { `/push/v1/organizations/{organizationName}/providers/${securityProviderId}/permissions?orderingId=1506700606240`, securityProviderOptions, ], - ])('should make a PUT call to "%s"', (url, options) => { - pushApi.createOrUpdateSecurityIdentity( + ])('should make a PUT call to "%s"', async (url, options) => { + await pushApi.createOrUpdateSecurityIdentity( securityProviderId, { identity: { @@ -133,8 +131,8 @@ describe('PushAPI', () => { }); describe('manageSecurityIdentities', () => { - it('should make a PUT call to "/push/v1/organizations/{organizationName}/providers/{securityProviderId}/permissions/batch', () => { - pushApi.manageSecurityIdentities(securityProviderId, {fileId: 'testId'}); + it('should make a PUT call to "/push/v1/organizations/{organizationName}/providers/{securityProviderId}/permissions/batch', async () => { + await pushApi.manageSecurityIdentities(securityProviderId, {fileId: 'testId'}); expect(serverlessApi.put).toHaveBeenCalledTimes(1); expect(serverlessApi.put).toHaveBeenCalledWith( `/push/v1/organizations/{organizationName}/providers/${securityProviderId}/permissions/batch?fileId=testId`, @@ -143,8 +141,8 @@ describe('PushAPI', () => { }); describe('deleteOldSecurityIdentities', () => { - it('should make a DELETE call to "/push/v1/organizations/{organizationName}/providers/{securityProviderId}/permissions/olderthan', () => { - pushApi.deleteOldSecurityIdentities(securityProviderId, {orderingId: 123456789}); + it('should make a DELETE call to "/push/v1/organizations/{organizationName}/providers/{securityProviderId}/permissions/olderthan', async () => { + await pushApi.deleteOldSecurityIdentities(securityProviderId, {orderingId: 123456789}); expect(serverlessApi.delete).toHaveBeenCalledTimes(1); expect(serverlessApi.delete).toHaveBeenCalledWith( `/push/v1/organizations/{organizationName}/providers/${securityProviderId}/permissions/olderthan?orderingId=123456789`, diff --git a/src/resources/Resource.ts b/src/resources/Resource.ts index 4f62aba4a..c6e695713 100644 --- a/src/resources/Resource.ts +++ b/src/resources/Resource.ts @@ -13,11 +13,11 @@ class Resource { protected serverlessApi: API, ) {} - protected buildPath(route: string, parameters?: any, options?: queryString.StringifyOptions): string { - return route + this.convertObjectToQueryString(parameters, options); + protected buildPath(route: string, parameters?: object, options?: queryString.StringifyOptions): string { + return parameters ? route + this.convertObjectToQueryString(parameters, options) : route; } - private convertObjectToQueryString(parameters: any, userOptions?: queryString.StringifyOptions): string { + private convertObjectToQueryString(parameters: object, userOptions?: queryString.StringifyOptions): string { if (!parameters) { return ''; } else { diff --git a/src/resources/ResourceSnapshots/ResourceSnapshots.ts b/src/resources/ResourceSnapshots/ResourceSnapshots.ts index d85387f0e..47fee8867 100644 --- a/src/resources/ResourceSnapshots/ResourceSnapshots.ts +++ b/src/resources/ResourceSnapshots/ResourceSnapshots.ts @@ -46,6 +46,8 @@ export default class ResourceSnapshots extends Resource { /** * Shows whether the authenticated user has the specified access level (i.e., read or write) to the content of the target snapshot. + * @param snapshotId + * @param options */ validateAccess(snapshotId: string, options: ValidateAccessOptions) { return this.api.get( @@ -55,10 +57,9 @@ export default class ResourceSnapshots extends Resource { /** * Retrieves a ZIP file holding the content of the target snapshot, in the target format. - * - * @param {string} snapshotId The unique identifier of the target snapshot. - * @param {ExportSnapshotContentOptions} [options] - * @returns {Promise} A newly created Blob object which contains the zipped snapshot + * @param snapshotId The unique identifier of the target snapshot. + * @param [options] + * @returns A newly created Blob object which contains the zipped snapshot */ export(snapshotId: string, options?: ExportSnapshotContentOptions): Promise { return this.api.get(this.buildPath(`${ResourceSnapshots.baseUrl}/${snapshotId}/content`, options), { @@ -74,9 +75,8 @@ export default class ResourceSnapshots extends Resource { /** * Creates a snapshot from a file containing the configuration. - * - * @param {File} file The file containing the configuration. - * @param {CreateFromFileOptions} options + * @param file The file containing the configuration. + * @param options */ createFromFile(file: File, options?: CreateFromFileOptions) { const computedOptions = { @@ -185,10 +185,9 @@ export default class ResourceSnapshots extends Resource { /** * @description Shows the diff report for the target snapshot and dry-run report * @experimental - * - * @param {string} snapshotId - The unique identifier of the target snapshot. - * @param {string} relativeReportId - The unique identifier of the dry-run operation report associated with the target diff report. - * @param {(number|undefined)} [numberOfLinesMax=undefined] - Maximum number of lines before the diff is downloaded to a file. + * @param snapshotId - The unique identifier of the target snapshot. + * @param relativeReportId - The unique identifier of the dry-run operation report associated with the target diff report. + * @param [numberOfLinesMax] - Maximum number of lines before the diff is downloaded to a file. */ diff(snapshotId: string, relativeReportId: string, numberOfLinesMax?: number) { return this.api.get( diff --git a/src/resources/ResourceSnapshots/ResourceSnapshotsInterfaces.ts b/src/resources/ResourceSnapshots/ResourceSnapshotsInterfaces.ts index e3b623b9d..72e8afdc2 100644 --- a/src/resources/ResourceSnapshots/ResourceSnapshotsInterfaces.ts +++ b/src/resources/ResourceSnapshots/ResourceSnapshotsInterfaces.ts @@ -310,7 +310,6 @@ export interface CreateFromFileOptions { export interface GetSnapshotOptions { /** * Whether to include reports with the snapshot. - * * @default false */ includeReports?: boolean; @@ -321,7 +320,6 @@ export interface ExportSnapshotContentOptions { * The format of the snapshot content. * - FLAT: Content unified into a single file * - SPLIT_PER_TYPE: Content split into one file per resource type - * * @default SnapshotExportContentFormat.Flat */ contentFormat?: SnapshotExportContentFormat; @@ -349,16 +347,13 @@ export enum ApplyOptionsDeletionScope { export interface ApplyOptions { /** * Whether to delete organization resources not present in the snapshot. - * * @default false */ deleteMissingResources?: boolean; /** * The scope of the resources on which to calculate deletions. * **Note:** only applies when `deleteMissingResources` is set to `true`. - * * @default ApplyOptionsDeletionScope.AllManagedResources - * */ deletionScope?: ApplyOptionsDeletionScope; } diff --git a/src/resources/ResourceSnapshots/tests/ResourceSnapshots.spec.ts b/src/resources/ResourceSnapshots/tests/ResourceSnapshots.spec.ts index 3b4432fa7..ddc41da10 100644 --- a/src/resources/ResourceSnapshots/tests/ResourceSnapshots.spec.ts +++ b/src/resources/ResourceSnapshots/tests/ResourceSnapshots.spec.ts @@ -1,4 +1,4 @@ -import fetchMock from 'jest-fetch-mock'; +import fetchMock, {enableFetchMocks, FetchMock} from 'jest-fetch-mock'; import API from '../../../APICore.js'; import {SnapshotSortingType, SortingOrder} from '../../Enums.js'; import ResourceSnapshots from '../ResourceSnapshots.js'; @@ -24,12 +24,10 @@ import { jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('ResourceSnapshots', () => { let resourceSnapshots: ResourceSnapshots; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -37,18 +35,18 @@ describe('ResourceSnapshots', () => { }); describe('list', () => { - it('should make a GET call to the specific Resource Snapshots url', () => { - resourceSnapshots.list(); + it('should make a GET call to the specific Resource Snapshots url', async () => { + await resourceSnapshots.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(ResourceSnapshots.baseUrl); }); - it('should make a GET call to the specific Resource Snapshots url with parameters', () => { + it('should make a GET call to the specific Resource Snapshots url with parameters', async () => { const filter = 'filter'; const sortingOrder = SortingOrder.ASC; const sortingType = SnapshotSortingType.CREATED_DATE; - resourceSnapshots.list({filter, sortingOrder, sortingType}); + await resourceSnapshots.list({filter, sortingOrder, sortingType}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -58,19 +56,19 @@ describe('ResourceSnapshots', () => { }); describe('get', () => { - it('should make a GET call to the specific Resource Snapshots url', () => { + it('should make a GET call to the specific Resource Snapshots url', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; - resourceSnapshots.get(snapshotToGetId); + await resourceSnapshots.get(snapshotToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/${snapshotToGetId}`); }); - it('should make a GET call to the specific Resource Snapshots url with the includeReports query param', () => { + it('should make a GET call to the specific Resource Snapshots url with the includeReports query param', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; - resourceSnapshots.get(snapshotToGetId, {includeReports: true}); + await resourceSnapshots.get(snapshotToGetId, {includeReports: true}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/${snapshotToGetId}?includeReports=true`); @@ -78,20 +76,20 @@ describe('ResourceSnapshots', () => { }); describe('listResourceAccess', () => { - it('should make a GET call to the specific Resource Snapshots url', () => { - resourceSnapshots.listResourceAccess(); + it('should make a GET call to the specific Resource Snapshots url', async () => { + await resourceSnapshots.listResourceAccess(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/access/resource`); }); - it('should make a GET call to the specific Resource Snapshots url and proper access type when WRITE', () => { + it('should make a GET call to the specific Resource Snapshots url and proper access type when WRITE', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; const options: ValidateAccessOptions = { snapshotAccessType: SnapshotAccessType.Write, }; - resourceSnapshots.validateAccess(snapshotToGetId, options); + await resourceSnapshots.validateAccess(snapshotToGetId, options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -101,13 +99,13 @@ describe('ResourceSnapshots', () => { }); describe('validateAccess', () => { - it('should make a GET call to the specific Resource Snapshots url and proper access type when READ', () => { + it('should make a GET call to the specific Resource Snapshots url and proper access type when READ', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; const options: ValidateAccessOptions = { snapshotAccessType: SnapshotAccessType.Read, }; - resourceSnapshots.validateAccess(snapshotToGetId, options); + await resourceSnapshots.validateAccess(snapshotToGetId, options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -115,13 +113,13 @@ describe('ResourceSnapshots', () => { ); }); - it('should make a GET call to the specific Resource Snapshots url and proper access type when WRITE', () => { + it('should make a GET call to the specific Resource Snapshots url and proper access type when WRITE', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; const options: ValidateAccessOptions = { snapshotAccessType: SnapshotAccessType.Write, }; - resourceSnapshots.validateAccess(snapshotToGetId, options); + await resourceSnapshots.validateAccess(snapshotToGetId, options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -131,10 +129,10 @@ describe('ResourceSnapshots', () => { }); describe('export', () => { - it('should make a post call to the specific Resource Snapshots url and get snapshot content with default content format', () => { + it('should make a post call to the specific Resource Snapshots url and get snapshot content with default content format', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; - resourceSnapshots.export(snapshotToGetId); + await resourceSnapshots.export(snapshotToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/${snapshotToGetId}/content`, { @@ -143,13 +141,13 @@ describe('ResourceSnapshots', () => { }); }); - it('should make a post call to the specific Resource Snapshots url and get snapshot content with specific content format', () => { + it('should make a post call to the specific Resource Snapshots url and get snapshot content with specific content format', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; const exportSnapshotContentOptions: ExportSnapshotContentOptions = { contentFormat: SnapshotExportContentFormat.SplitPerType, }; - resourceSnapshots.export(snapshotToGetId, exportSnapshotContentOptions); + await resourceSnapshots.export(snapshotToGetId, exportSnapshotContentOptions); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -161,6 +159,7 @@ describe('ResourceSnapshots', () => { describe('getContent', () => { it('should make a GET call to the specific Resource Snapshots url and then make a get call to the url', async () => { + enableFetchMocks(); const snapshotToGetId = 'snapshot-to-be-fetched'; const urlReturned: ResourceSnapshotUrlModel = { url: 'https://google.com', @@ -168,7 +167,7 @@ describe('ResourceSnapshots', () => { }; jest.spyOn(resourceSnapshots, 'generateUrl').mockResolvedValue(urlReturned); - fetchMock.mockResponseOnce(JSON.stringify({test: 'hello'})); + (fetchMock as unknown as FetchMock).mockResponseOnce(JSON.stringify({test: 'hello'})); await resourceSnapshots.getContent(snapshotToGetId, {contentType: ResourceSnapshotContentType.PRIMARY}); @@ -183,22 +182,24 @@ describe('ResourceSnapshots', () => { append: mockedAppendToFormData, }; beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (global as any).FormData = jest.fn(() => mockedFormData); }); it.each(['application/zip', 'application/x-zip-compressed'])( 'should make a post call to the specific Resource Snapshots url if zip file', - (fileType: string) => { + async (fileType: string) => { const mockedFileZIP = { type: fileType, } as unknown as File; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (global as any).File = jest.fn(() => mockedFileZIP); const createFromFileOptions: CreateFromFileOptions = { developerNotes: 'Cut my life into pieces! 🎵🎵🎵', }; const file = new File([''], 'mock.zip', {type: fileType}); - resourceSnapshots.createFromFile(file, createFromFileOptions); + await resourceSnapshots.createFromFile(file, createFromFileOptions); expect(api.postForm).toHaveBeenCalledTimes(1); expect(api.postForm).toHaveBeenCalledWith( @@ -208,16 +209,17 @@ describe('ResourceSnapshots', () => { }, ); - it('should make a post call to the specific Resource Snapshots url if json file', () => { + it('should make a post call to the specific Resource Snapshots url if json file', async () => { const mockedFileJSON = { type: 'application/json', }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (global as any).File = jest.fn(() => mockedFileJSON); const createFromFileOptions: CreateFromFileOptions = {developerNotes: 'Cut my life into pieces! 🎵🎵🎵'}; const file = new File([''], 'mock.zip', {type: 'application/zip'}); - resourceSnapshots.createFromFile(file, createFromFileOptions); + await resourceSnapshots.createFromFile(file, createFromFileOptions); expect(api.postForm).toHaveBeenCalledTimes(1); expect(api.postForm).toHaveBeenCalledWith( @@ -230,6 +232,7 @@ describe('ResourceSnapshots', () => { const unsupportedMockedFile = { type: 'image/png', }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (global as any).File = jest.fn(() => unsupportedMockedFile); const createFromFileOptions: CreateFromFileOptions = {developerNotes: 'Cut my life into pieces! 🎵🎵🎵'}; @@ -240,7 +243,7 @@ describe('ResourceSnapshots', () => { }); describe('createFromOrganization', () => { - it('should make a POST call to the specific Resource Snapshots url', () => { + it('should make a POST call to the specific Resource Snapshots url', async () => { const exportConfigurationModel: ResourceSnapshotExportConfigurationModel = { resourcesToExport: {FIELD: ['*'], EXTENSION: ['🤖']}, }; @@ -249,7 +252,7 @@ describe('ResourceSnapshots', () => { includeChildrenResources: false, }; - resourceSnapshots.createFromOrganization(exportConfigurationModel, createFromOrganizationOptions); + await resourceSnapshots.createFromOrganization(exportConfigurationModel, createFromOrganizationOptions); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -260,10 +263,10 @@ describe('ResourceSnapshots', () => { }); describe('generateUrl', () => { - it('should make a GET call to the specific Resource Snapshots url', () => { + it('should make a GET call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; - resourceSnapshots.generateUrl(snapshotId, {contentType: ResourceSnapshotContentType.PRIMARY}); + await resourceSnapshots.generateUrl(snapshotId, {contentType: ResourceSnapshotContentType.PRIMARY}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/${snapshotId}/url?contentType=PRIMARY`); @@ -271,11 +274,11 @@ describe('ResourceSnapshots', () => { }); describe('push', () => { - it('should make a PUT call to the specific Resource Snapshots url', () => { + it('should make a PUT call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const pushSnapshotOptions: PushSnapshotOptions = {targetOrganizationId: '🎯', developerNotes: '🧘'}; - resourceSnapshots.push(snapshotId, pushSnapshotOptions); + await resourceSnapshots.push(snapshotId, pushSnapshotOptions); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -285,11 +288,11 @@ describe('ResourceSnapshots', () => { }); describe('dryrun', () => { - it('should make a PUT call to the specific Resource Snapshots url', () => { + it('should make a PUT call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const dryRunOptions: DryRunOptions = {deleteMissingResources: true}; - resourceSnapshots.dryRun(snapshotId, dryRunOptions); + await resourceSnapshots.dryRun(snapshotId, dryRunOptions); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -299,14 +302,14 @@ describe('ResourceSnapshots', () => { }); describe('apply', () => { - it('should make a PUT call to the specific Resource Snapshots url', () => { + it('should make a PUT call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const applyOptions: ApplyOptions = { deleteMissingResources: true, deletionScope: ApplyOptionsDeletionScope.OnlyTypesFromSnapshot, }; - resourceSnapshots.apply(snapshotId, applyOptions); + await resourceSnapshots.apply(snapshotId, applyOptions); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -316,10 +319,10 @@ describe('ResourceSnapshots', () => { }); describe('delete a snapshot', () => { - it('should make a DELETE call to the specific Resource Snapshots url', () => { + it('should make a DELETE call to the specific Resource Snapshots url', async () => { const snapshotId = 'BossHoss'; - resourceSnapshots.delete(snapshotId); + await resourceSnapshots.delete(snapshotId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/${snapshotId}`); @@ -327,11 +330,11 @@ describe('ResourceSnapshots', () => { }); describe('get synchronization plan', () => { - it('should make a GET call to the specific Resource Snapshots url', () => { + it('should make a GET call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const synchronizationPlanId = '🥱'; - resourceSnapshots.getSynchronizationPlan(snapshotId, synchronizationPlanId); + await resourceSnapshots.getSynchronizationPlan(snapshotId, synchronizationPlanId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -341,10 +344,10 @@ describe('ResourceSnapshots', () => { }); describe('create synchronization plan', () => { - it('should make a POST call to the specific Resource Snapshots url', () => { + it('should make a POST call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; - resourceSnapshots.createSynchronizationPlan(snapshotId); + await resourceSnapshots.createSynchronizationPlan(snapshotId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${ResourceSnapshots.baseUrl}/${snapshotId}/synchronization`); @@ -352,7 +355,7 @@ describe('ResourceSnapshots', () => { }); describe('update synchronization plan', () => { - it('should make a PUT call to the specific Resource Snapshots url', () => { + it('should make a PUT call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const synchronizationPlanId = '🥱'; @@ -362,7 +365,7 @@ describe('ResourceSnapshots', () => { status: ResourceSnapshotsSynchronizationPlanStatus.Created, }; - resourceSnapshots.updateSynchronizationPlan(snapshotId, synchronizationPlanId, synchronizationPlan); + await resourceSnapshots.updateSynchronizationPlan(snapshotId, synchronizationPlanId, synchronizationPlan); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -373,11 +376,11 @@ describe('ResourceSnapshots', () => { }); describe('apply synchronization plan', () => { - it('should make a PUT call to the specific Resource Snapshots url', () => { + it('should make a PUT call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const synchronizationPlanId = '🥱'; - resourceSnapshots.applySynchronizationPlan(snapshotId, synchronizationPlanId); + await resourceSnapshots.applySynchronizationPlan(snapshotId, synchronizationPlanId); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -387,7 +390,7 @@ describe('ResourceSnapshots', () => { }); describe('update synchronization plan children', () => { - it('should make a PUT call to the specific Resource Snapshots url', () => { + it('should make a PUT call to the specific Resource Snapshots url', async () => { const snapshotId = '🤖'; const synchronizationPlanId = '🥱'; const updateChildrenOptions: UpdateChildrenOptions = { @@ -396,7 +399,7 @@ describe('ResourceSnapshots', () => { parentResourceType: ResourceSnapshotType.featuredResult, }; - resourceSnapshots.updateSynchronizationPlanForChildren( + await resourceSnapshots.updateSynchronizationPlanForChildren( snapshotId, synchronizationPlanId, updateChildrenOptions, @@ -410,11 +413,11 @@ describe('ResourceSnapshots', () => { }); describe('diff', () => { - it('should make a GET call to the specific Resource Snapshots url', () => { + it('should make a GET call to the specific Resource Snapshots url', async () => { const snapshotId = 'my-snapshot-id'; const reportId = 'my-report-id'; - resourceSnapshots.diff(snapshotId, reportId); + await resourceSnapshots.diff(snapshotId, reportId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -422,12 +425,12 @@ describe('ResourceSnapshots', () => { ); }); - it('should make a GET call to the specific Resource Snapshots url with "numberOfLinesMax" parameter', () => { + it('should make a GET call to the specific Resource Snapshots url with "numberOfLinesMax" parameter', async () => { const snapshotId = 'my-snapshot-id'; const reportId = 'my-report-id'; const numberOfLinesMax = 10000; - resourceSnapshots.diff(snapshotId, reportId, numberOfLinesMax); + await resourceSnapshots.diff(snapshotId, reportId, numberOfLinesMax); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( diff --git a/src/resources/Resources/Resources.ts b/src/resources/Resources/Resources.ts index f1ca880ac..e1007b07b 100644 --- a/src/resources/Resources/Resources.ts +++ b/src/resources/Resources/Resources.ts @@ -9,10 +9,9 @@ export default class Resources extends Resource { /** * Returns a paginated list of resources. - * * @param resourceType - * @param {ListProjectParams} params - * @returns {Promise>} A paginated list of resources. + * @param params + * @returns A paginated list of resources. */ list(resourceType: ProjectResourceType, params?: ResourceParams): Promise> { return this.api.get>(this.buildPath(`${Resources.baseUrl}/${resourceType}`, params)); diff --git a/src/resources/Resources/tests/Resources.spec.ts b/src/resources/Resources/tests/Resources.spec.ts index 27f2e42c3..84f39ea71 100644 --- a/src/resources/Resources/tests/Resources.spec.ts +++ b/src/resources/Resources/tests/Resources.spec.ts @@ -3,12 +3,10 @@ import Resources from '../Resources.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Resources', () => { let resource: Resources; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const randomResourceType = 'SOURCE'; @@ -19,14 +17,14 @@ describe('Resources', () => { }); describe('list', () => { - it('should make a GET call to the correct Project url with the right resource type', () => { - resource.list(randomResourceType); + it('should make a GET call to the correct Project url with the right resource type', async () => { + await resource.list(randomResourceType); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Resources.baseUrl}/SOURCE`); }); - it('should use the passed parameters as its query parameters', () => { - resource.list(randomResourceType, {page: 1, perPage: 50}); + it('should use the passed parameters as its query parameters', async () => { + await resource.list(randomResourceType, {page: 1, perPage: 50}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Resources.baseUrl}/SOURCE?page=1&perPage=50`); }); diff --git a/src/resources/Saml/tests/Saml.spec.ts b/src/resources/Saml/tests/Saml.spec.ts index cf0e1ffb3..f7bd89654 100644 --- a/src/resources/Saml/tests/Saml.spec.ts +++ b/src/resources/Saml/tests/Saml.spec.ts @@ -5,12 +5,10 @@ import {SamlIdentityProviderModel} from '../SamlInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Saml', () => { let saml: Saml; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,47 +16,47 @@ describe('Saml', () => { }); describe('isEnabled', () => { - it('should make a GET call to "/saml/enabled"', () => { - saml.isEnabled(); + it('should make a GET call to "/saml/enabled"', async () => { + await saml.isEnabled(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/saml/enabled'); }); }); describe('listAvailableProviders', () => { - it('should make a GET call to "/saml/availables"', () => { - saml.listAvailableProviders(); + it('should make a GET call to "/saml/availables"', async () => { + await saml.listAvailableProviders(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/saml/availables'); }); }); describe('getProvider', () => { - it('should make a GET call to "/saml/identityprovider"', () => { - saml.getProvider(); + it('should make a GET call to "/saml/identityprovider"', async () => { + await saml.getProvider(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/saml/identityprovider'); }); }); describe('listRealms', () => { - it('should make a GET call to "/saml/identityprovider/realms"', () => { - saml.listRealms(); + it('should make a GET call to "/saml/identityprovider/realms"', async () => { + await saml.listRealms(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/saml/identityprovider/realms'); }); }); describe('deleteProvdier', () => { - it('should make a DELETE call to "/saml/identityprovider"', () => { - saml.deleteProvider(); + it('should make a DELETE call to "/saml/identityprovider"', async () => { + await saml.deleteProvider(); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith('/rest/organizations/{organizationName}/saml/identityprovider'); }); }); describe('create', () => { - it('should make a POST call to "/saml/identityprovider"', () => { + it('should make a POST call to "/saml/identityprovider"', async () => { const provider: New = { displayName: 'My SAML SSO', entityId: 'whatever', @@ -67,7 +65,7 @@ describe('Saml', () => { x509Certificate: 'my-certificate', }; - saml.create(provider); + await saml.create(provider); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( '/rest/organizations/{organizationName}/saml/identityprovider', @@ -77,7 +75,7 @@ describe('Saml', () => { }); describe('update', () => { - it('should make a PUT call to "/saml/identityprovider"', () => { + it('should make a PUT call to "/saml/identityprovider"', async () => { const provider: SamlIdentityProviderModel = { id: '123-abc', displayName: 'My SAML SSO', @@ -87,7 +85,7 @@ describe('Saml', () => { x509Certificate: 'my-certificate', }; - saml.update(provider); + await saml.update(provider); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( '/rest/organizations/{organizationName}/saml/identityprovider', diff --git a/src/resources/SchemaService/SchemaService.ts b/src/resources/SchemaService/SchemaService.ts index affad73d4..260cc0265 100644 --- a/src/resources/SchemaService/SchemaService.ts +++ b/src/resources/SchemaService/SchemaService.ts @@ -1,20 +1,20 @@ import API from '../../APICore.js'; -import Ressource from '../Resource.js'; import {New} from '../BaseInterfaces.js'; +import {SourceType} from '../Enums.js'; +import Ressource from '../Resource.js'; import { - SchemaEntities, - SchemaServiceQueryParams, - SchemaServiceSource, CreateSchemaSourceModel, CreateSchemaSourceOptions, + GetEntitiesQueryParams, + GetEntityQueryParams, ObjectsToGet, + SchemaEntities, SchemaEntityFields, + SchemaServiceQueryParams, + SchemaServiceSource, SimpleSchemaEntity, - GetEntitiesQueryParams, - GetEntityQueryParams, SlackTokenValidationResult, } from './SchemaServiceInterfaces.js'; -import {SourceType} from '../Enums.js'; export default class SchemaService extends Ressource { static baseUrl = `/rest/organizations/${API.orgPlaceholder}/schema/sources`; @@ -29,11 +29,9 @@ export default class SchemaService extends Ressource { /** * Retrieve entities from the targeted instance * (can be matches of a given query) - * - * @param {SourceType} sourceType - * @param {GetEntitiesQueryParams} [parameters] - * @return {SchemaEntities} schemaEntities - * @memberof SchemaService + * @param sourceType + * @param [parameters] + * @returns schemaEntities */ getEntities(sourceType: SourceType, parameters?: GetEntitiesQueryParams) { return this.api.get( @@ -43,12 +41,10 @@ export default class SchemaService extends Ressource { /** * Retrieve the entity of matching ID from the targeted instance - * - * @param {SourceType} sourceType - * @param {string} entityId - * @param {GetEntityQueryParams} [parameters] - * @return {SimpleSchemaEntity} simpleSchemaEntity - * @memberof SchemaService + * @param sourceType + * @param entityId + * @param [parameters] + * @returns simpleSchemaEntity */ getEntity(sourceType: SourceType, entityId: string, parameters?: GetEntityQueryParams) { return this.api.get( @@ -58,12 +54,10 @@ export default class SchemaService extends Ressource { /** * Retrieve the fields of the given entity from the targeted instance - * - * @param {SourceType} sourceType - * @param {string} entityId - * @param {SchemaServiceQueryParams} [parameters] - * @return {SchemaEntityFields} schemaEntityFields - * @memberof SchemaService + * @param sourceType + * @param entityId + * @param [parameters] + * @returns schemaEntityFields */ getFields(sourceType: SourceType, entityId: string, parameters?: SchemaServiceQueryParams) { return this.api.get( @@ -88,6 +82,7 @@ export default class SchemaService extends Ressource { } translateToSpecificObjectsToGet(sourceType: SourceType, genericObjectsToGet: ObjectsToGet) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return this.api.post(`${SchemaService.baseUrl}/${sourceType}/translate/specific`, genericObjectsToGet); } @@ -96,13 +91,14 @@ export default class SchemaService extends Ressource { genericObjectsToGet: ObjectsToGet, parameters?: SchemaServiceQueryParams, ) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return this.api.post( this.buildPath(`${SchemaService.baseUrl}/${sourceType}/translate/specificWithFields`, parameters), genericObjectsToGet, ); } - translateToGenericObjectsToGet(sourceType: SourceType, specificObjectsToGet: any) { + translateToGenericObjectsToGet(sourceType: SourceType, specificObjectsToGet: Record) { return this.api.post( `${SchemaService.baseUrl}/${sourceType}/translate/generic`, specificObjectsToGet, @@ -111,10 +107,8 @@ export default class SchemaService extends Ressource { /** * Retrieve the default objectsToGet of the given sourceType - * - * @param {string} sourceType - * @return {ObjectsToGet} ObjectsToGet - * @memberof SchemaService + * @param sourceType + * @returns ObjectsToGet */ getDefaultObjectsToGet(sourceType: string) { return this.api.get(`${SchemaService.baseUrl}/${sourceType}/defaultObjectsToGet`); diff --git a/src/resources/SchemaService/SchemaServiceInterfaces.ts b/src/resources/SchemaService/SchemaServiceInterfaces.ts index c6c370774..b3a94a062 100644 --- a/src/resources/SchemaService/SchemaServiceInterfaces.ts +++ b/src/resources/SchemaService/SchemaServiceInterfaces.ts @@ -166,7 +166,7 @@ export interface CreateSchemaSourceModel extends CreateSourceModel { objectsToGetConfiguration?: string; } -export interface CreateSchemaSourceOptions extends CreateSourceOptions {} +export type CreateSchemaSourceOptions = CreateSourceOptions; /** * Wraps whether or not a Slack token can validly be used with a Slack source diff --git a/src/resources/SchemaService/test/SchemaService.spec.ts b/src/resources/SchemaService/test/SchemaService.spec.ts index c312aa0e4..c621ff9c8 100644 --- a/src/resources/SchemaService/test/SchemaService.spec.ts +++ b/src/resources/SchemaService/test/SchemaService.spec.ts @@ -6,12 +6,10 @@ import {SourceType} from '../../Enums.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SchemaService', () => { let schemaService: SchemaService; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const sourceType: SourceType = SourceType.SERVICENOW; const params: SchemaServiceQueryParams = { clientId: 'ici', @@ -33,8 +31,8 @@ describe('SchemaService', () => { }); describe('getEntities', () => { - it('should make a GET call to the specific SchemaService url with the correct params', () => { - schemaService.getEntities(sourceType, { + it('should make a GET call to the specific SchemaService url with the correct params', async () => { + await schemaService.getEntities(sourceType, { ...params, offset: 100, limit: 100, @@ -49,9 +47,9 @@ describe('SchemaService', () => { }); describe('getEntity', () => { - it('should make a GET call to the specific SchemaService url with the correct params', () => { + it('should make a GET call to the specific SchemaService url with the correct params', async () => { const entityId = '🆔'; - schemaService.getEntity(sourceType, entityId, {...params, filter: 'filter'}); + await schemaService.getEntity(sourceType, entityId, {...params, filter: 'filter'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `/rest/organizations/${API.orgPlaceholder}/schema/sources/${sourceType}/entities/${entityId}?clientId=${params.clientId}&instanceUrl=${params.instanceUrl}&clientSecretGuid=${params.clientSecretGuid}&oauthRefreshTokenGuid=${params.oauthRefreshTokenGuid}&filter=filter`, @@ -60,9 +58,9 @@ describe('SchemaService', () => { }); describe('getFields', () => { - it('should make a GET call to the specific SchemaService url with the correct params', () => { + it('should make a GET call to the specific SchemaService url with the correct params', async () => { const entityId = 'miaowouioui'; - schemaService.getFields(sourceType, entityId, params); + await schemaService.getFields(sourceType, entityId, params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `/rest/organizations/${API.orgPlaceholder}/schema/sources/${sourceType}/entities/${entityId}/fields?clientId=${params.clientId}&instanceUrl=${params.instanceUrl}&clientSecretGuid=${params.clientSecretGuid}&oauthRefreshTokenGuid=${params.oauthRefreshTokenGuid}`, @@ -71,49 +69,49 @@ describe('SchemaService', () => { }); describe('create', () => { - it('should make a POST call to the SchemaSources base url', () => { + it('should make a POST call to the SchemaSources base url', async () => { const sourceModel: New = {}; - schemaService.create(sourceModel); + await schemaService.create(sourceModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SchemaService.baseUrl, sourceModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific SchemaSources url', () => { + it('should make a DELETE call to the specific SchemaSources url', async () => { const sourceId = '🐱'; - schemaService.delete(sourceId); + await schemaService.delete(sourceId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${SchemaService.baseUrl}/${sourceId}`); }); }); describe('get', () => { - it('should make a GET call to the specific SchemaSources url', () => { + it('should make a GET call to the specific SchemaSources url', async () => { const sourceId = '😽'; - schemaService.get(sourceId); + await schemaService.get(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SchemaService.baseUrl}/${sourceId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific SchemaSources url', () => { + it('should make a PUT call to the specific SchemaSources url', async () => { const sourceId = '🙀'; const sourceModel: CreateSchemaSourceModel = {}; - schemaService.update(sourceId, sourceModel); + await schemaService.update(sourceId, sourceModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${SchemaService.baseUrl}/${sourceId}`, sourceModel); }); }); describe('translateToSpecificObjectsToGet', () => { - it('should make a POST call to the specific SchemaSources url', () => { - schemaService.translateToSpecificObjectsToGet(sourceType, genericObjectsToGet); + it('should make a POST call to the specific SchemaSources url', async () => { + await schemaService.translateToSpecificObjectsToGet(sourceType, genericObjectsToGet); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SchemaService.baseUrl}/${sourceType}/translate/specific`, @@ -123,8 +121,8 @@ describe('SchemaService', () => { }); describe('translateToSpecificObjectsToGetWithFields', () => { - it('should make a POST call to the specific SchemaSources url', () => { - schemaService.translateToSpecificObjectsToGetWithFields(sourceType, genericObjectsToGet, params); + it('should make a POST call to the specific SchemaSources url', async () => { + await schemaService.translateToSpecificObjectsToGetWithFields(sourceType, genericObjectsToGet, params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SchemaService.baseUrl}/${sourceType}/translate/specificWithFields?clientId=${params.clientId}&instanceUrl=${params.instanceUrl}&clientSecretGuid=${params.clientSecretGuid}&oauthRefreshTokenGuid=${params.oauthRefreshTokenGuid}`, @@ -134,8 +132,8 @@ describe('SchemaService', () => { }); describe('translateToGenericObjectsToGet', () => { - it('should make a POST call to the specific SchemaSources url', () => { - schemaService.translateToGenericObjectsToGet(sourceType, {toTheMoon: '🚀'}); + it('should make a POST call to the specific SchemaSources url', async () => { + await schemaService.translateToGenericObjectsToGet(sourceType, {toTheMoon: '🚀'}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SchemaService.baseUrl}/${sourceType}/translate/generic`, { toTheMoon: '🚀', @@ -144,17 +142,17 @@ describe('SchemaService', () => { }); describe('getDefaultObjectsToGet', () => { - it('should make a GET call to the specific SchemaSources url', () => { - schemaService.getDefaultObjectsToGet(sourceType); + it('should make a GET call to the specific SchemaSources url', async () => { + await schemaService.getDefaultObjectsToGet(sourceType); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SchemaService.baseUrl}/${sourceType}/defaultObjectsToGet`); }); }); describe('validateSlackToken', () => { - it('should make a POST call to the specific SchemaSources url', () => { + it('should make a POST call to the specific SchemaSources url', async () => { const someSlackToken = '🎄'; - schemaService.validateSlackToken(someSlackToken); + await schemaService.validateSlackToken(someSlackToken); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SchemaService.baseUrl}/SLACK/validateToken?accessToken=${someSlackToken}`, diff --git a/src/resources/Search/Search.ts b/src/resources/Search/Search.ts index f4f8feefd..6b11a0398 100644 --- a/src/resources/Search/Search.ts +++ b/src/resources/Search/Search.ts @@ -63,7 +63,6 @@ export default class Search extends Resource { /** * Exports search results to a Microsoft Excel™ spreadsheet - * * @param restQueryParameters Parameters of the query * @returns A .xlsx file containing the search results of the specified query */ @@ -81,6 +80,7 @@ export default class Search extends Resource { } querySuggestPost(restQuerySuggestParameters: PostSearchQuerySuggestBodyParams) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return this.api.post( this.buildPath(`${Search.baseUrl}/querySuggest`, { organizationId: this.api.organizationId, @@ -91,6 +91,15 @@ export default class Search extends Resource { /** * Get an item's preview in HTML format + * @param root0 + * @param root0.enableNavigation + * @param root0.findNext + * @param root0.findPrevious + * @param root0.organizationId + * @param root0.page + * @param root0.requestedOutputSize + * @param root0.uniqueId + * @param root0.viewAllContent */ previewHTML({ enableNavigation, @@ -121,6 +130,7 @@ export default class Search extends Resource { /** * Get item in JSON format + * @param params */ getDocument(params: SingleItemParameters) { return this.api.get( @@ -137,6 +147,7 @@ export default class Search extends Resource { /** * Executes a facet search request. + * @param params */ searchFacet(params: RestFacetSearchParameters) { const {viewAllContent, organizationId, ...bodyParameters} = params; diff --git a/src/resources/Search/SearchInterfaces.ts b/src/resources/Search/SearchInterfaces.ts index 9d0483518..fee45cd50 100644 --- a/src/resources/Search/SearchInterfaces.ts +++ b/src/resources/Search/SearchInterfaces.ts @@ -24,7 +24,6 @@ interface SharedSearchParams { * - For reporting purposes, when logging a **Search** usage analytics event for a query, the `queryPipeline` field of that event should be set to the `pipeline` value of the query (or to the `"default"` string, if no `pipeline` value was specified in the query). * * See also [Managing Query Pipelines](https://docs.coveo.com/en/1450/). - * * @example `CustomerQueryPipeline` */ pipeline?: string; @@ -39,7 +38,6 @@ interface SharedSearchParams { * - When logging a **Search** usage analytics event for a query, the `originLevel1` field of that event should be set to the value of the `searchHub` search request parameter. * * See also the `tab` parameter. - * * @example `CustomerPortal` */ searchHub?: string; @@ -50,7 +48,6 @@ interface SharedSearchParams { * If not specified, the default time zone of the server hosting the index is used. * * **Note:** While no Coveo Machine Learning model uses this information, it can nevertheless affect the ranking scores (and thus, potentially the order) of result items, as ranking expressions may be based on time constants. - * * @example `America/New_York` */ timezone?: string; @@ -61,7 +58,6 @@ interface SharedSearchParams { * **Notes:** * - Debug information can only appear in responses in the JSON format (see the `format` parameter). * - Avoid setting this parameter to `true` in production, as it has a negative impact on query performance. - * * @default `false` */ debug?: boolean; @@ -72,7 +68,6 @@ interface SharedSearchParams { * If you do not specify an `index` (or `indexToken`) value, any index mirror could be used. * * **Note:** Passing an `index` (or `indexToken`) value has no effect when the results of a specific request can be returned from cache (see the `maximumAge` parameter). - * * @example `myorg-nvoqun-Indexer1-pbi2nbuw` */ index?: string; @@ -87,7 +82,6 @@ export interface SharedFieldsParams extends SharedSearchParams { * **Note:** When logging a **Search** usage analytics event for a query, the `originLevel2` field of that event should be set to the `tab` value of the query (or to the `"default"` string, if no `tab` value was specified in the query). * * See also the `searchHub` parameter. - * * @example `ForumTab` */ tab?: string; @@ -100,7 +94,6 @@ export interface SharedFieldsParams extends SharedSearchParams { * **Note:** When logging a **Search** usage analytics event for a query, the `originLevel3` field of that event should be set to the `referrer` value of the query, if specified. * * See also the `context` parameter. - * * @example `http://www.example.com` */ referrer?: string; @@ -114,7 +107,6 @@ export interface SharedFieldsParams extends SharedSearchParams { * When logging a **Search** usage analytics event for a query, the `customData` field of that event should include the same data as the `context` parameter of the query. However, each `context` key included in `customData` must be prefixed by `context_` (e.g., the `userRoles` key in `context` becomes `context_userRoles` in `customData`). * * See also the `referrer` parameter. - * * @example * ```json * { @@ -131,7 +123,6 @@ export interface SharedFieldsParams extends SharedSearchParams { * Coveo Machine Learning models use this information to provide contextually relevant output. Moreover, this information can be referred to in query expressions and QPL statements by using the `$locale` object. * * **Note:** When logging a **Search** usage analytics event, the language field of that event should match the language part of the `locale` value of the query (e.g., `en-US` in `locale` becomes `en` in `language`). - * * @example `en-US` */ locale?: string; @@ -142,7 +133,6 @@ export interface SharedFieldsParams extends SharedSearchParams { * If you do not specify an `indexToken` (or `index`) value, any index mirror could be used. * * **Note:** Passing an `indexToken` (or `index`) value has no effect when the results of a specific request can be returned from cache (see the `maximumAge` parameter). - * * @example `ZXhhbXBsZWluZGV4bWlycm9yLS4uLg==` */ indexToken?: string; @@ -151,13 +141,12 @@ export interface SharedFieldsParams extends SharedSearchParams { * The identifier for a logical group of indexes that have been configured to include documents form the same sources. * * If you do not specify a `logicalIndex` value, the `default` grouping will be used, typically including all indexes. - * * @example `webcontentonly` */ logicalIndex?: string; } -export interface SearchListFieldsParams extends SharedFieldsParams {} +export type SearchListFieldsParams = SharedFieldsParams; export interface SearchListFieldsResponse { fields: Array<{ @@ -198,6 +187,7 @@ export interface RestUserId { name: string; provider: string; type?: RestUserIdType; + // eslint-disable-next-line @typescript-eslint/no-explicit-any infos?: any; authCookie?: string; password?: string; // Deprecated: This property is exposed for backward compatibility reasons only. @@ -215,7 +205,7 @@ export interface TokenModel { export type RestQueryParams = PostSearchBodyQueryParams; -export interface PostSearchQueryStringParams extends Pick {} +export type PostSearchQueryStringParams = Pick; /** * Defines the body parameters of the list field values request. @@ -234,14 +224,12 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * Use: * - occurrences: to sort by number of occurrences, with field values having the highest number of occurrences appearing first. * - nosort: to avoid sorting the results of the Group By operation. The field values will appear in an unspecified order. - * * @default `occurrences` */ sortCriteria?: string; /** * The maximum number of values to return. - * * @default `10` */ maximumNumberOfValues?: number; @@ -250,7 +238,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * The query expression that should override the basic query expression on which the Group By operation is being performed (see the `q` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `Coveo Cloud V2 Platform` */ queryOverride?: string; @@ -259,7 +246,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * The query expression that should override the constant query expression on which the Group By operation is being performed (see the `cq` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `@filetype==forumpost` */ constantQueryOverride?: string; @@ -268,7 +254,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * The query expression that should override the disjunction query expression on which the Group By operation is being performed (see the `dq` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `@date=2016-12-01..2016-12-31` */ disjunctionQueryOverride?: string; @@ -288,7 +273,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * - regularexpression: to parse the specified pattern as a regular expression. * - editdistance: to apply the Edit Distance algorithm to match values that are close to the specified pattern. * - phonetic to apply a phonetic algorithm to match values that are phonetically similar to the specified pattern. - * * @default `wildcard` */ patternType?: string; @@ -300,7 +284,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { /** * A key-value store where each pair corresponds to the name of a dictionary field to query, along with the key to target within that field. - * * @example * Suppose that in your index, the `@price` dictionary field contains different values for its `storeA` and `storeB` keys. Including `"dictionaryFieldContext": { "price": "storeA" }` in the query means that any part of the query expression that targets the `@price` field will in fact only query the `storeA` values of that field. */ @@ -312,7 +295,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * If the results of a specific request are available in the cache, and if those results are no older than the `maximumAge` value, the service returns those results rather than forwarding a new query to the index. * * **Note:** This parameter is automatically overridden when `staticQuery` is set to `true`. - * * @default `-1` (which corresponds to the internal default value (15 minutes)) */ maximumAge?: number; @@ -321,8 +303,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * The query and page view actions previously made by the current user. * * Coveo Machine Learning content recommendations models use this information to provide contextually relevant output. - * - * @type {RestActionHistory[]} */ actionsHistory?: RestActionHistory[]; @@ -330,7 +310,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * The identifier of the recommendation interface from which the request originates. * * Coveo Machine Learning content recommendations models may use this information to provide contextually relevant output. - * * @example `RecommendedProducts` */ recommendation?: string; @@ -343,7 +322,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * - Use `xlsx` to generate an Excel file containing the results (binary). * * **Note:** Debug information (see the `debug` parameter) can only appear in a response in the JSON format. - * * @default `json` */ format?: RestFormat; @@ -352,7 +330,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * A GUID representing the current user, who can be authenticated or anonymous. This GUID is normally generated by the usage analytics service and stored in a non-expiring browser cookie. * * Coveo Machine Learning models may use this information to provide contextually relevant output. - * * @example `5cb98953-9c13-42ff-8176-e6fcba6a50bf` */ visitorId?: string; @@ -363,7 +340,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * Coveo Machine Learning models may use this information to provide contextually relevant output. * * **Note:** When logging a **Search** usage analytics event for a query, the anonymous field of that event should be set to the `isGuestUser` value of the query. - * * @default `false` */ isGuestUser?: boolean; @@ -383,7 +359,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * - `categoryFilter` (string): The name of a category of products to get recommendations for. * - `brandFilter` (string): The name of a brand of products to get recommendations for. * - `filters` (map of strings): The dimensions along with the values to be used at query time by the model as filters for potential suggestions. Only applies to Automatic relevance Tuning, Query Suggestions, or Dynamic Navigation Experience models that don’t use the default `filterFields` advanced parameter values. **Example:** `"filters": { "originContext": "", "originLevel2": "" }`. - * * @example * ```json * { @@ -393,17 +368,16 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * "considerUserContext": false * } * ``` - * * @example * ```json * {"wordSelection": "wordsKept:4"} * ``` */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any mlParameters?: Record; /** * The type of index against which to execute the query. Must correspond to an index that has been configured for the target Coveo Cloud organization. - * * @default `coveo` */ indexType?: string; @@ -411,7 +385,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { /** * The maximum number of milliseconds to allow the request to last before timing out. Maximum: 16000 * Coveo determines the most appropriate timeout to use. - * * @default: `0` */ maximumTimeoutMs?: string; @@ -432,7 +405,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * - `clientRequestId` (string): A GUID generated by the client representing the current request. This information is used to identify operations across different apis related to the same request. * - `clientTimestamp` (string): Client ISO 8601 timestamp with milliseconds. * - `userAgent` (string): The user agent of the request. If not present, the user agent is obtained from the [User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) header. This information is required when endpoints are behind a proxy. - * * @example * ```json * { @@ -441,7 +413,6 @@ export interface ListFieldValuesBodyQueryParams extends SharedFieldsParams { * "deviceId": "Chrome" * } * ``` - * * @example * ```json * { @@ -471,7 +442,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * The advanced query expression, typically generated by code (e.g., when toggling facet values). * * **Note:** When logging a **Search** usage analytics event for a query, the `advancedQuery` field of that event should be set to the `aq` value of the corresponding query (for reporting purposes). - * * @example * `@year==2017` */ @@ -493,7 +463,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * * - In the index, the values of the `childField` must only contain alphanumerical characters. Using a `childField` whose values contain non-indexable characters (such as underscores) will make folding fail. * - The values of the `childField` must contain 60 characters or less (60 being the default maximum of characters for a word in the index). - * * @example `@foldingparent` */ childField?: string; @@ -511,14 +480,12 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Notes:** * - Other parts of the query expression can also benefit from the index cache (see the `maximumAge` parameter). However, using the constant query expression allows you to explicitly cache specific result sets. * - Temporal keywords (`now`, `today`, `yesterday`) in the constant query expression are only re-evaluated once per 3-4 minutes; therefore, you should avoid basing `cq` expressions on temporal keywords if you require split second accuracy. - * * @example `@filetype==forumpost` */ cq?: string; /** * A key-value store where each pair corresponds to the name of a dictionary field to query, along with the key to target within that field. - * * @example * Suppose that in your index, the `@price` dictionary field contains different values for its `storeA` and `storeB` keys. Including `"dictionaryFieldContext": { "price": "storeA" }` in the query means that any part of the query expression that targets the `@price` field will in fact only query the `storeA` values of that field. */ @@ -526,7 +493,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { /** * The disjunction query expression, typically populated by Coveo ML automatic relevance tuning models to ensure that relevant items are included in the query results. The disjunction query expression is merged with the other parts of the query expression using an `OR` operator. The resulting query expression is `(((q aq) OR (dq)) cq)`. - * * @example `@permanentid=aadd702687c62910d6da8347304ec2cedfd0b06d5b4d2794a555ce5688bd` */ dq?: string; @@ -539,7 +505,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * - The Did You Mean feature only processes the basic query expression (see the `q` parameter). * - When both `enableDidYouMean` and `enableMLDidYouMean` parameter are set to `true`, the output of both features will appear in the `queryCorrections` array. * - The Did You Mean feature will return no corrections when the query is processed by an automatic relevance tuning (ART) model whose Intelligent Term Detection (ITD) feature is enabled. - * * @default `false` */ enableDidYouMean?: boolean; @@ -551,7 +516,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * - Two items must be at least 85% similar to one another to be considered duplicates. * - When a pair of duplicates is found, only the higher-ranked item of the two is kept in the result set. * - Enabling this feature can make the total result count less precise, since only results up to those being retrieved (see the `firstResult` and `numberOfResults` parameters) are submitted to duplicate filtering. - * * @default `false` */ enableDuplicateFiltering?: boolean; @@ -564,14 +528,12 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Notes:** * - The Coveo ML query suggestions Did You Mean feature only processes the basic query expression (see the `q` parameter). * - When both `enableDidYouMean` and `enableMLDidYouMean` parameter are set to true, the output of both features will appear in the `queryCorrections` array. - * * @default `false` */ enableMLDidYouMean?: boolean; /** * Whether to interpret advanced Coveo Cloud query syntax as such in the basic query expression (see the `q` parameter). See also the `lowercaseOperators` parameter. - * * @default `true` */ enableQuerySyntax?: boolean; @@ -584,7 +546,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Notes:** * - The maximum length you set using this parameter also applies to retrieved first sentences, if those are included in the results (see the `retrieveFirstSentences` parameter). * - On an Elasticsearch index, actual excerpts may be slightly longer than the requested excerpt length. - * * @default `200` */ excerptLength?: number; @@ -605,7 +566,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Note:** If you specify both an array of fields to include (see the `fieldsToInclude` parameter) and an array of fields to exclude, the `fieldsToExclude` parameter has no effect at all. * * If you do not explicitly specify an array of values for this parameter (or for the `fieldsToInclude` parameter), each query result item will include all of its available fields. - * * @example * ```json * ["documenttype","size","source"] @@ -619,7 +579,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Note:** If you specify both an array of fields to include and an array of fields to exclude (see the `fieldsToExclude` parameter), the `fieldsToExclude` parameter has no effect at all. * * If you do not explicitly specify an array of values for this parameter (or for the `fieldsToExclude` parameter), each query result item will include all of its available fields. - * * @example * ```json * ["clickableuri","author","date","filetype","language","coversationid","messageid","childid","adjustednumberoflikes"] @@ -635,7 +594,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * See also the `parentField`, `childField`, and `filterFieldRange` parameters. * * **Note:** In an Elasticsearch index, the corresponding field must be configured as a *Facet* and/or *Sortable* field (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)). This limitation does not apply to a Coveo index. - * * @example `@foldingcollection` */ filterField?: string; @@ -644,7 +602,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * The maximum number of items to include in the `childResults` array of a folded query result (see [Result Folding](https://docs.coveo.com/en/1466/)). * * See also the `filterField`, `parentField`, and `childField`. - * * @default `5` */ filterFieldRange?: number; @@ -653,7 +610,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * The 0-based position of the first result to return in the non-paginated result set. * * Along with the `numberOfResults` parameter, this allows you to retrieve a specific page of result items. - * * @default `0` */ firstResult?: number; @@ -667,17 +623,14 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * Whether to treat the `AND`, `NEAR`, `NOT`, and `OR` keywords in the basic query expression (see the `q` parameter) as Coveo Cloud query syntax operators even if those keywords are in lowercase. * * **Note:** Setting this parameter to `true` has no effect unless you also set the `enableQuerySyntax` parameter to `true`. - * * @example * If you set this parameter, and the `enableQuerySyntax` parameter to `true`, the index interprets the `near` keyword in the basic query expression service center near me as the `NEAR` Coveo Cloud query syntax operator. - * * @default `false` */ lowercaseOperators?: boolean; /** * The large query expression, typically populated with a case description, long textual query, or any other form of text that can help refine a query. The Coveo ML Intelligent Term Detection (ITD) feature can extract relevant keywords from the large query expression and inject those keywords in the basic query expression (see the `q` parameter). - * * @example `I am looking for an enterprise-class native cloud SaaS/PaaS solution that ...` */ lq?: string; @@ -688,7 +641,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Note:** This parameter applies as a fallback setting when no Coveo ML automatic relevance tuning model is available in the query pipeline to process a query that contains a non-null large query expression (`lq`). * * See also the `lqPartialMatchThreshold` parameter. - * * @default `5` */ lqPartialMatchKeywords?: string; @@ -701,7 +653,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * Setting this parameter to a high value can negatively impact the performance of queries, while setting it too low can produce less relevant results. * * See also the `lqPartialMatchThreshold` parameter. - * * @default `100` */ lqPartialMatchMaxKeywords?: number; @@ -720,32 +671,27 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Note:** This parameter applies when no Coveo ML automatic relevance tuning model is available in the query pipeline to process a query that contains a non-null large query expression (`lq`). * * See also the `lqPartialMatchKeywords` parameter. - * * @example `3` * @example `75%` * @example `all` - * * @default `50%` */ lqPartialMatchThreshold?: RestThreshold; /** * The maximum number of Coveo ML Did You Mean candidates to request from the query suggestions model. - * * @default `3` */ mlDidYouMeanMaxCandidates?: number; /** * The minimum score a query suggestion may have to be allowed as a candidate for the Coveo ML query suggestions Did You Mean feature. For best results, value should typically be in range `[0.8, 2]`. - * * @default `1.0` */ mlDidYouMeanMinScore?: number; /** * Whether to use facet counts for the Coveo ML Did You Mean feature. Can improve results, but requires more processing. - * * @default `false` */ mlDidYouMeanUseFacetCount?: boolean; @@ -758,7 +704,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * This parameter also defines the maximum number of results which can be returned by the Coveo ML Recommendations feature. * * **Note:** The maximum `numberOfResults` value depends on the index settings of your Coveo Cloud V2 organization. By default, a Coveo Cloud V2 index can return a maximum of 1000 items per query. - * * @default `10` */ numberOfResults?: number; @@ -773,7 +718,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Notes:** * - In the index, the values of the `parentField` must only contain alphanumerical characters. Using a `childField` whose values contain non-indexable characters (such as underscores) will make folding fail. * - The values of the `parentField` must contain 60 characters or less (60 being the default maximum of characters for a word in the index). - * * @example `@foldingchild` */ parentField?: string; @@ -786,7 +730,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Notes:** * - This feature only applies to the basic expression (`q`) of a query, and to the basic `queryOverride` of its Group By operations. * - When the `enableQuerySyntax` parameter is set to `true`, this feature has no effect on a basic expression containing advanced Coveo Cloud query syntax (field expressions, operators, etc.). - * * @default `false` */ partialMatch?: boolean; @@ -801,7 +744,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * - Stemming expansions **do not** count towards the `partialMatchKeywords` count. * * See also the `partialMatchThreshold` parameter. - * * @default `5` */ partialMatchKeywords?: string; @@ -822,11 +764,9 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * - A keyword and its stemming expansions count as a single keyword when evaluating whether an item meets the `partialMatchThreshold`. * * See also the `partialMatchKeywords` parameter. - * * @example `3` * @example `75%` * @example `all` - * * @default `50%` */ partialMatchThreshold?: RestThreshold; @@ -844,7 +784,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * **Note:** Setting this parameter to true has no effect unless you also set the `wildcards` parameter to `true`. * * See [Using Wildcards in Queries](https://docs.coveo.com/en/1580/). - * * @default `false` */ questionMark?: boolean; @@ -856,6 +795,7 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { */ rankingFunctions?: RestRankingFunctionRequest[]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any resultRankings?: any[]; /** @@ -864,14 +804,12 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * First sentences are typically useful when rendering result items such as emails, since the first few sentences of these kinds of items are often more relevant than a contextually generated excerpt (see the `excerptLength` parameter). * * **Note:** The maximum length of the retrieved sentences (in number of characters) is determined by the value of the `excerptLength` parameter. - * * @default `false` */ retrieveFirstSentences?: boolean; /** * Whether the `q` value contains the URI hash of a specific item that should be returned. - * * @default `false` */ searchById?: boolean; @@ -889,11 +827,9 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * You can specify a list of comma-separated sort criteria. However, this only works when combining: * - two or more field criteria (e.g., `@views descending,@likes descending`). * - a single date criteria with one or more field criteria (e.g., `date ascending,@views descending`). - * * @example `date ascending` * @example `@author ascending` * @example `date descending,@views descending,@likes descending` - * * @default `relevancy` */ sortCriteria?: string; @@ -902,7 +838,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * Whether to execute this query in a way that does not count against the allowed number of queries per month of a Coveo Cloud organization (QPM), but may produce cached/outdated query results (see [Rendering Static Content Using Persistent Queries](https://docs.coveo.com/en/1009/)). * * **Note:** Setting this parameter to `true` overwrites the `maximumAge` parameter value for this query. - * * @default `false` */ staticQuery?: boolean; @@ -911,7 +846,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * The length of the automatically generated item summary. * * The index generates a result item *summary* independently from the query, as opposed to a result item *excerpt*, which is generated based on query keywords. - * * @default `0` */ summaryLength?: number; @@ -934,7 +868,6 @@ export interface PostSearchBodyQueryParams extends PostSearchBodyCommonParams { * Whether to enable the wildcards feature of the index in order to expand basic expression keywords (see the `q` parameter) containing wildcard characters (`*`) to the possible matching keywords. See also the `questionMark` parameter. * * See [Using Wildcards in Queries](https://docs.coveo.com/en/1580/). - * * @default `false` */ wildcards?: boolean; @@ -945,8 +878,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * The query and page view actions previously made by the current user. * * Coveo Machine Learning content recommendations models use this information to provide contextually relevant output. - * - * @type {RestActionHistory[]} */ actionsHistory?: RestActionHistory[]; @@ -966,7 +897,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * - `clientRequestId` (string): A GUID generated by the client representing the current request. This information is used to identify operations across different apis related to the same request. * - `clientTimestamp` (string): Client ISO 8601 timestamp with milliseconds. * - `userAgent` (string): The user agent of the request. If not present, the user agent is obtained from the [User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) header. This information is required when endpoints are behind a proxy. - * * @example * ```json * { @@ -975,7 +905,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * "deviceId": "Chrome" * } * ``` - * * @example * ```json * { @@ -995,7 +924,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * When logging a **Search** usage analytics event for a query, the `customData` field of that event should include the same data as the `context` parameter of the query. However, each `context` key included in `customData` must be prefixed by `context_` (e.g., the `userRoles` key in `context` becomes `context_userRoles` in `customData`). * * See also the `referrer` parameter. - * * @example * ```json * { @@ -1014,7 +942,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * - Use `xlsx` to generate an Excel file containing the results (binary). * * **Note:** Debug information (see the `debug` parameter) can only appear in a response in the JSON format. - * * @default `json` */ format?: RestFormat; @@ -1025,14 +952,12 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * If you do not specify an `indexToken` (or `index`) value, any index mirror could be used. * * **Note:** Passing an `indexToken` (or `index`) value has no effect when the results of a specific request can be returned from cache (see the `maximumAge` parameter). - * * @example `ZXhhbXBsZWluZGV4bWlycm9yLS4uLg==` */ indexToken?: string; /** * The type of index against which to execute the query. Must correspond to an index that has been configured for the target Coveo Cloud organization. - * * @default `coveo` */ indexType?: string; @@ -1043,7 +968,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * Coveo Machine Learning models may use this information to provide contextually relevant output. * * **Note:** When logging a **Search** usage analytics event for a query, the anonymous field of that event should be set to the `isGuestUser` value of the query. - * * @default `false` */ isGuestUser?: boolean; @@ -1054,7 +978,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * Coveo Machine Learning models use this information to provide contextually relevant output. Moreover, this information can be referred to in query expressions and QPL statements by using the `$locale` object. * * **Note:** When logging a **Search** usage analytics event, the language field of that event should match the language part of the `locale` value of the query (e.g., `en-US` in `locale` becomes `en` in `language`). - * * @example `en-US` */ locale?: string; @@ -1063,7 +986,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * The identifier for a logical group of indexes that have been configured to include documents form the same sources. * * If you do not specify a `logicalIndex` value, the `default` grouping will be used, typically including all indexes. - * * @example `webcontentonly` */ logicalIndex?: string; @@ -1074,7 +996,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * If the results of a specific request are available in the cache, and if those results are no older than the `maximumAge` value, the service returns those results rather than forwarding a new query to the index. * * **Note:** This parameter is automatically overridden when `staticQuery` is set to `true`. - * * @default `-1` (which corresponds to the internal default value (15 minutes)) */ maximumAge?: number; @@ -1094,7 +1015,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * - `categoryFilter` (string): The name of a category of products to get recommendations for. * - `brandFilter` (string): The name of a brand of products to get recommendations for. * - `filters` (map of strings): The dimensions along with the values to be used at query time by the model as filters for potential suggestions. Only applies to Automatic relevance Tuning, Query Suggestions, or Dynamic Navigation Experience models that don't use the default `filterFields` advanced parameter values. **Example:** `"filters": { "originContext": "", "originLevel2": "" }`. - * * @example * ```json * { @@ -1104,19 +1024,18 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * "considerUserContext": false * } * ``` - * * @example * ```json * {"wordSelection": "wordsKept:4"} * ``` */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any mlParameters?: Record; /** * The basic query expression, typically the keywords entered by the end user in a query box. * * **Note:** When logging a **Search** usage analytics event for a query, the `queryText` field of that event should be set to the `q` value of the corresponding query. - * * @example `Coveo "Cloud V2" platform` */ q?: string; @@ -1125,7 +1044,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * The identifier of the recommendation interface from which the request originates. * * Coveo Machine Learning content recommendations models may use this information to provide contextually relevant output. - * * @example `RecommendedProducts` */ recommendation?: string; @@ -1138,7 +1056,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * **Note:** When logging a **Search** usage analytics event for a query, the `originLevel3` field of that event should be set to the `referrer` value of the query, if specified. * * See also the `context` parameter. - * * @example `http://www.example.com` */ referrer?: string; @@ -1156,11 +1073,9 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * You can specify a list of comma-separated sort criteria. However, this only works when combining: * - two or more field criteria (e.g., `@views descending,@likes descending`). * - a single date criteria with one or more field criteria (e.g., `date ascending,@views descending`). - * * @example `date ascending` * @example `@author ascending` * @example `date descending,@views descending,@likes descending` - * * @default `relevancy` */ @@ -1172,7 +1087,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * **Note:** When logging a **Search** usage analytics event for a query, the `originLevel2` field of that event should be set to the `tab` value of the query (or to the `"default"` string, if no `tab` value was specified in the query). * * See also the `searchHub` parameter. - * * @example `ForumTab` */ tab?: string; @@ -1181,7 +1095,6 @@ interface PostSearchBodyCommonParams extends SharedSearchParams { * A GUID representing the current user, who can be authenticated or anonymous. This GUID is normally generated by the usage analytics service and stored in a non-expiring browser cookie. * * Coveo Machine Learning models may use this information to provide contextually relevant output. - * * @example `5cb98953-9c13-42ff-8176-e6fcba6a50bf` */ visitorId?: string; @@ -1242,7 +1155,6 @@ export type RestRangeAlgorithm = 'equiprobable' | 'even'; export interface RestActionHistory { /** * The action history event name. - * * @example `PageView` * * Allowed values are: @@ -1253,14 +1165,12 @@ export interface RestActionHistory { /** * The time when the action history event was sent from the client. - * * @example `2017-08-15T17:34:08.398Z` */ time?: string; /** * The action history value, which is either a query expression or a page URI, depending on the action history event `name`. - * * @example `http://www.example.com/` */ value?: string; @@ -1274,7 +1184,6 @@ export interface RestAnalyticsRequest { * A GUID representing the client id. * * **Note:** The `clientId` and `deviceId` replaces the deprecated `visitorId`. - * * @example `6d148f06-5f15-4639-81b4-792a9b94eb5f` */ clientId?: string; @@ -1283,14 +1192,12 @@ export interface RestAnalyticsRequest { * A GUID generated by the client representing the current request. * * This information is used to identify operations across different apis related to the same request. - * * @example `6c59a3aa-cb66-492e-9c08-9f1937467b60` */ clientRequestId?: string; /** * Client ISO 8601 timestamp with milliseconds. - * * @example `2020-09-09T19:00:45.603-04:00` */ clientTimestamp?: string; @@ -1299,7 +1206,6 @@ export interface RestAnalyticsRequest { * The name of the device that the end user is using. It has to be explicitly passed from native mobile apps. * * **Note:** The `clientId` and `deviceId` replaces the deprecated `visitorId`. - * * @example `Chrome` */ deviceId?: string; @@ -1310,7 +1216,6 @@ export interface RestAnalyticsRequest { * If not present, the referrer is obtained from the [Referer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) header. * * **Note:** This information can be obtained from `coveo.analytics.js`. - * * @example `http://www.example.com/` */ documentLocation?: string; @@ -1321,7 +1226,6 @@ export interface RestAnalyticsRequest { * Coveo Machine Learning models may use this information to provide contextually relevant output. * * **Note:** This information can be obtained from `coveo.analytics.js`. - * * @example `http://www.example.com/` */ documentReferrer?: string; @@ -1330,7 +1234,6 @@ export interface RestAnalyticsRequest { * A GUID representing the page ID. * * **Note:** This information can be obtained from `coveo.analytics.js`. - * * @example `c4e3aa42-5afa-4b01-8bfd-79b7b49668f7` */ pageId?: string; @@ -1339,14 +1242,12 @@ export interface RestAnalyticsRequest { * The user agent of the request. If not present, the user agent is obtained from the [User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) header. * * **Note:** This information is required when endpoints are behind a proxy. - * * @example `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36` */ userAgent?: string; /** * The ID of the logged user. If not present, the id is obtained from the authentication token. - * * @example `user@email.com` */ userId?: string; @@ -1355,7 +1256,6 @@ export interface RestAnalyticsRequest { * The user IP. If not present, the IP is obtained from the [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For) and [Forwarded](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded) headers. * * **Note:** This information is required when endpoints are behind a proxy. - * * @example `127.0.0.1` */ userIp?: string; @@ -1367,12 +1267,10 @@ export interface RestAnalyticsRequest { export interface RestCategoryFacetRequest { /** * The character to use to split field values into a hierarchical sequence. - * * @example * For a multi-value `field` containing the following values: * `c; c>folder2; c>folder2>folder3;` * The delimiting character is `>`. - * * @default `|` */ delimitingCharacter?: string; @@ -1381,14 +1279,12 @@ export interface RestCategoryFacetRequest { * The name of the field in which to look for hierarchical values. * * **Note:** You must ensure that the **Multi-value facet** option is enabled for this field in your index (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)). - * * @example `@categories` */ field: string; /** * Whether to exclude folded result parents when estimating the result count for each facet value. - * * @default `true` */ filterFacetCount?: boolean; @@ -1397,14 +1293,12 @@ export interface RestCategoryFacetRequest { * The maximum number of query result items to scan. * * **Note:** Specifying a high `injectionDepth` value can negatively impact query performance. - * * @default `1000` */ injectionDepth?: number; /** * The maximum number of values to return. - * * @default `10` */ maximumNumberOfValues?: number; @@ -1420,7 +1314,6 @@ export interface RestComputedField { * The name of the numeric field on which to perform the aggregate operation. * * **Tip:** You should ensure that the **Use cache for computed fields** option is enabled for that field in your index in order to speed up evaluation (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)). - * * @example `@wordcount` */ field: string; @@ -1450,7 +1343,6 @@ export interface RestFacetOptions { * Whether to take the scores generated by the index into account when reordering facets. * * **Note:** Setting this to `false` implies that only the scores generated by a Coveo ML DNE model will be taken into account when automatically reordering facets. To disable automatic facet reordering entirely, set `freezeFacetOrder` to `true` instead. - * * @default `true` */ enableIndexFacetOrdering?: boolean; @@ -1459,7 +1351,6 @@ export interface RestFacetOptions { * Whether facets should be returned in the same order they were requested. * * **Note:** Setting this to `true` entirely prevents automatic score-based facet reordering. To allow automatic facet reordering, but only take into account the scores generated by a Coveo ML DNE model, set `enableIndexFacetOrdering` to `false` instead. - * * @default `false` */ freezeFacetOrder?: boolean; @@ -1468,7 +1359,6 @@ export interface RestFacetOptions { export interface RestSpecificFacetRequest { /** * The values displayed by the facet in the search interface at the moment of the request. - * * @default `[]` */ currentValues?: RestFacetValue[]; @@ -1482,14 +1372,12 @@ export interface RestSpecificFacetRequest { * The name of the field on which to base the facet request. * * **Note:** Must reference a field whose **Facet** option is enabled (see [Add or Edit Fields](https://docs.coveo.com/en/1982)). - * * @example `author` */ field: string; /** * Whether to exclude folded result parents when estimating the result count for each facet value. - * * @default `true` */ filterFacetCount?: boolean; @@ -1498,7 +1386,6 @@ export interface RestSpecificFacetRequest { * Whether to include the facet request’s `currentValues` in corresponding facet response’s `values` array. * * **Note:** Setting this to `true` is useful to ensure that the facet does not move around while the end-user is interacting with it in the search interface. - * * @default `false` */ freezeCurrentValues?: boolean; @@ -1507,14 +1394,12 @@ export interface RestSpecificFacetRequest { * The maximum number of items to scan for facet values. * * **Note:** A high `injectionDepth` may negatively impact the facet request performance. - * * @default `100` */ injectionDepth?: number; /** * Whether the facet is expanded in the search interface at the moment of the request. - * * @default `false` */ isFieldExpanded?: boolean; @@ -1526,14 +1411,12 @@ export interface RestSpecificFacetRequest { * **Notes:** * - If `freezeCurrentValues` is `true` or if requesting range facet values, `numberOfValues` is automatically set to the `currentValues` array length. * - When requesting hierarchical facet values, `numberOfValues` is only taken account when the `currentValues` array is empty (i.e., when retrieving the first level of values). - * * @default `8` */ numberOfValues?: number; /** * Whether to prevent Coveo ML from automatically selecting values. - * * @default `false` */ preventAutoSelect?: boolean; @@ -1564,7 +1447,6 @@ export interface RestSpecificFacetRequest { export interface RestDateRangeFacetRequest { /** * The values displayed by the facet in the search interface at the moment of the request. - * * @default `[]` */ currentValues?: RestFacetValue[]; @@ -1578,14 +1460,12 @@ export interface RestDateRangeFacetRequest { * The name of the field on which to base the facet request. * * **Note:** Must reference a field whose **Facet** option is enabled (see [Add or Edit Fields](https://docs.coveo.com/en/1982)). - * * @example `author` */ field: string; /** * Whether to exclude folded result parents when estimating the result count for each facet value. - * * @default `true` */ filterFacetCount?: boolean; @@ -1594,7 +1474,6 @@ export interface RestDateRangeFacetRequest { * Whether to include the facet request’s `currentValues` in corresponding facet response’s `values` array. * * **Note:** Setting this to `true` is useful to ensure that the facet does not move around while the end-user is interacting with it in the search interface. - * * @default `false` */ freezeCurrentValues?: boolean; @@ -1608,7 +1487,6 @@ export interface RestDateRangeFacetRequest { * - Setting `generateAutomaticRanges` to `true` only makes sense when the Facet `field` references a numeric or date field in the index. * - The index cannot automatically generate range values of a field generated by a query function. In such cases, you must rather use the `rangeValues` Facet parameter. * - Automatic range generation will fail if the referenced `field` is dynamically generated by a query function. - * * @default `false` */ generateAutomaticRanges?: boolean; @@ -1617,14 +1495,12 @@ export interface RestDateRangeFacetRequest { * The maximum number of items to scan for facet values. * * **Note:** A high `injectionDepth` may negatively impact the facet request performance. - * * @default `100` */ injectionDepth?: number; /** * Whether the facet is expanded in the search interface at the moment of the request. - * * @default `false` */ isFieldExpanded?: boolean; @@ -1636,14 +1512,12 @@ export interface RestDateRangeFacetRequest { * **Notes:** * - If `freezeCurrentValues` is `true` or if requesting range facet values, `numberOfValues` is automatically set to the `currentValues` array length. * - When requesting hierarchical facet values, `numberOfValues` is only taken account when the `currentValues` array is empty (i.e., when retrieving the first level of values). - * * @default `8` */ numberOfValues?: number; /** * Whether to prevent Coveo ML from automatically selecting values. - * * @default `false` */ preventAutoSelect?: boolean; @@ -1674,7 +1548,6 @@ export interface RestDateRangeFacetRequest { * |0 |500 |299 | * |500 |1000 |0 | * |1000 |1500 |1 | - * * @default `equiprobable` */ rangeAlgorithm?: RestRangeAlgorithm; @@ -1690,7 +1563,6 @@ export interface RestDateRangeFacetRequest { * * **Notes:** * - The Coveo ML DNE feature only works with the `score` sort criterion. - * * @default `ascending` */ sortCriteria?: RestRangeFacetSortCriteria; @@ -1704,7 +1576,6 @@ export interface RestDateRangeFacetRequest { export interface RestNumericalRangeFacetRequest { /** * The values displayed by the facet in the search interface at the moment of the request. - * * @default `[]` */ currentValues?: RestFacetValue[]; @@ -1718,14 +1589,12 @@ export interface RestNumericalRangeFacetRequest { * The name of the field on which to base the facet request. * * **Note:** Must reference a field whose **Facet** option is enabled (see [Add or Edit Fields](https://docs.coveo.com/en/1982)). - * * @example `author` */ field: string; /** * Whether to exclude folded result parents when estimating the result count for each facet value. - * * @default `true` */ filterFacetCount?: boolean; @@ -1734,7 +1603,6 @@ export interface RestNumericalRangeFacetRequest { * Whether to include the facet request’s `currentValues` in corresponding facet response’s `values` array. * * **Note:** Setting this to `true` is useful to ensure that the facet does not move around while the end-user is interacting with it in the search interface. - * * @default `false` */ freezeCurrentValues?: boolean; @@ -1748,7 +1616,6 @@ export interface RestNumericalRangeFacetRequest { * - Setting `generateAutomaticRanges` to `true` only makes sense when the Facet `field` references a numeric or date field in the index. * - The index cannot automatically generate range values of a field generated by a query function. In such cases, you must rather use the `rangeValues` Facet parameter. * - Automatic range generation will fail if the referenced `field` is dynamically generated by a query function. - * * @default `false` */ generateAutomaticRanges?: boolean; @@ -1757,14 +1624,12 @@ export interface RestNumericalRangeFacetRequest { * The maximum number of items to scan for facet values. * * **Note:** A high `injectionDepth` may negatively impact the facet request performance. - * * @default `100` */ injectionDepth?: number; /** * Whether the facet is expanded in the search interface at the moment of the request. - * * @default `false` */ isFieldExpanded?: boolean; @@ -1776,14 +1641,12 @@ export interface RestNumericalRangeFacetRequest { * **Notes:** * - If `freezeCurrentValues` is `true` or if requesting range facet values, `numberOfValues` is automatically set to the `currentValues` array length. * - When requesting hierarchical facet values, `numberOfValues` is only taken account when the `currentValues` array is empty (i.e., when retrieving the first level of values). - * * @default `8` */ numberOfValues?: number; /** * Whether to prevent Coveo ML from automatically selecting values. - * * @default `false` */ preventAutoSelect?: boolean; @@ -1814,7 +1677,6 @@ export interface RestNumericalRangeFacetRequest { * |0 |500 |299 | * |500 |1000 |0 | * |1000 |1500 |1 | - * * @default `equiprobable` */ rangeAlgorithm?: RestRangeAlgorithm; @@ -1830,7 +1692,6 @@ export interface RestNumericalRangeFacetRequest { * * **Notes:** * - The Coveo ML DNE feature only works with the `score` sort criterion. - * * @default `ascending` */ sortCriteria?: RestRangeFacetSortCriteria; @@ -1849,14 +1710,12 @@ export interface RestHierarchicalFacetRequest { /** * The values displayed by the facet in the search interface at the moment of the request. - * * @default `[]` */ currentValues?: RestFacetValue[]; /** * The character to use to split field values into a hierarchical sequence. - * * @example * For a multi-value field containing the following values: * @@ -1867,7 +1726,6 @@ export interface RestHierarchicalFacetRequest { * For a hierarchical field containing the following values: `c;folder2;folder3;` * * The delimiting character is `;`. - * * @default `;` */ delimitingCharacter?: string; @@ -1881,21 +1739,18 @@ export interface RestHierarchicalFacetRequest { * The name of the field on which to base the facet request. * * **Note:** Must reference a field whose **Facet** option is enabled (see [Add or Edit Fields](https://docs.coveo.com/en/1982)). - * * @example `author` */ field: string; /** * Whether to use `basePath` as a filter for the results. - * * @default `true` */ filterByBasePath?: boolean; /** * Whether to exclude folded result parents when estimating the result count for each facet value. - * * @default `true` */ filterFacetCount?: boolean; @@ -1904,14 +1759,12 @@ export interface RestHierarchicalFacetRequest { * The maximum number of items to scan for facet values. * * **Note:** A high `injectionDepth` may negatively impact the facet request performance. - * * @default `100` */ injectionDepth?: number; /** * Whether the facet is expanded in the search interface at the moment of the request. - * * @default `false` */ isFieldExpanded?: boolean; @@ -1923,14 +1776,12 @@ export interface RestHierarchicalFacetRequest { * **Notes:** * - If `freezeCurrentValues` is `true` or if requesting range facet values, `numberOfValues` is automatically set to the `currentValues` array length. * - When requesting hierarchical facet values, `numberOfValues` is only taken account when the `currentValues` array is empty (i.e., when retrieving the first level of values). - * * @default `8` */ numberOfValues?: number; /** * Whether to prevent Coveo ML from automatically selecting values. - * * @default `false` */ preventAutoSelect?: boolean; @@ -1945,7 +1796,6 @@ export interface RestHierarchicalFacetRequest { * * **Notes:** * - The Coveo ML DNE feature only works with the `score` sort criterion. - * * @default `occurrences` */ sortCriteria?: RestHierarchicalFacetSortCriteria; @@ -1971,7 +1821,6 @@ export interface RestFacetValue { * The value to end the range at. Must be greater (or later) than the `start` value. * * **Note:** Timezone of date ranges are determined by the timezone parameter of the search request. - * * @example `100` * @example `2019/12/31@23:59:59` */ @@ -1981,14 +1830,12 @@ export interface RestFacetValue { * Whether to include the `end` value in the range. * * **Note:** In an Elasticsearch index, this parameter cannot be set to `true`. - * * @default `false` */ endInclusive?: boolean; /** * Whether to prevent Coveo ML from automatically selecting the facet value. - * * @default `false` */ preventAutoSelect?: boolean; @@ -2007,7 +1854,6 @@ export interface RestFacetValue { * The value to start the range at. * * **Note:** Timezone of date ranges are determined by the timezone parameter of the search request. - * * @example `0` * @example `2019/01/01@00:00:00` */ @@ -2015,7 +1861,6 @@ export interface RestFacetValue { /** * The current facet value state in the search interface. - * * @default `idle` */ state?: string; @@ -2024,7 +1869,6 @@ export interface RestFacetValue { * The facet value name. * * **Note:** In the case of a hierarchical facet value, this represents a single path segment. - * * @example `Alice Smith` */ value: string; @@ -2038,7 +1882,6 @@ export interface RestGroupByRangeValue { * The value to end the range at. Must be greater (or later) than the `start` value. * * **Note:** Timezone of date ranges are determined by the timezone parameter of the search request. - * * @example `100` * @example `2019/12/31@23:59:59` */ @@ -2048,7 +1891,6 @@ export interface RestGroupByRangeValue { * Whether to include the `end` value in the range. * * **Note:** In an Elasticsearch index, this parameter cannot be set to `true`. - * * @default `false` */ endInclusive?: boolean; @@ -2057,7 +1899,6 @@ export interface RestGroupByRangeValue { * The label to associate with the range. * * **Note:** Not currently leveraged. - * * @example `0 - 100` * @example `In 2019` */ @@ -2067,7 +1908,6 @@ export interface RestGroupByRangeValue { * The value to start the range at. * * **Note:** Timezone of date ranges are determined by the timezone parameter of the search request. - * * @example `0` * @example `2019/01/01@00:00:00` */ @@ -2079,7 +1919,6 @@ export interface RestGroupByRequest { * The query expression that should override the advanced query expression on which the Group By operation is being performed (see the `aq` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `@year==2017` */ advancedQueryOverride?: string; @@ -2090,7 +1929,6 @@ export interface RestGroupByRequest { * See also the `completeFacetWithStandardValues` Group By operation parameter. * * If you do not explicitly specify an array of `allowedValues`, or if you specify an empty array, all field values are allowed. - * * @example * ```json * [ @@ -2109,7 +1947,6 @@ export interface RestGroupByRequest { * See also the `allowedValues` Group By operation parameter. * * If you do not explicitly specify a pattern type, the legacy pattern is used by default, which only support trailing wildcards. - * * @example `regex` */ allowedValuesPatternType?: string; @@ -2118,7 +1955,6 @@ export interface RestGroupByRequest { * Whether to complete the Group By operation result set with standard values. * * If you set this parameter to `true` and the number of specified `allowedValues` is lower than the `maximumNumberOfValues`, the Group By operation also attempts to returns standard values until the result set contains the `maximumNumberOfValues`. - * * @default `false` */ completeFacetWithStandardValues?: boolean; @@ -2134,7 +1970,6 @@ export interface RestGroupByRequest { * The query expression that should override the constant query expression on which the Group By operation is being performed (see the `cq` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `@filetype==forumpost` */ constantQueryOverride?: string; @@ -2143,7 +1978,6 @@ export interface RestGroupByRequest { * The query expression that should override the disjunction query expression on which the Group By operation is being performed (see the `dq` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `@date=2016-12-01..2016-12-31` */ disjunctionQueryOverride?: string; @@ -2152,14 +1986,12 @@ export interface RestGroupByRequest { * The name of the field on which to perform the Group By operation. The operation returns a Group By value for each distinct value of this field found in the query result items. * * **Note:** You must ensure that the **Facet** option is enabled for this field in your index (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)). - * * @example `@author` */ field: string; /** * Whether to exclude folded result parents when estimating the result count for each facet value. - * * @default `true` */ filterFacetCount?: boolean; @@ -2173,7 +2005,6 @@ export interface RestGroupByRequest { * - Setting `generateAutomaticRanges` to `true` only makes sense when the Group By `field` references a numeric or date field in the index. * - The index cannot automatically generate range values of a field generated by a query function. In such cases, you must rather use the `rangeValues` Group By parameter. * - Automatic range generation will fail if the referenced `field` is dynamically generated by a query function. - * * @default `false` */ generateAutomaticRanges?: boolean; @@ -2182,14 +2013,12 @@ export interface RestGroupByRequest { * The maximum number of query result items to scan for Group By values. * * **Note:** Specifying a high `injectionDepth` value can negatively impact query performance. - * * @default `1000` */ injectionDepth?: number; /** * The maximum number of values the Group By operation should return. - * * @default `10` */ maximumNumberOfValues?: number; @@ -2198,7 +2027,6 @@ export interface RestGroupByRequest { * The query expression that should override the basic query expression on which the Group By operation is being performed (see the `q` query parameter). * * **Note:** If *any* query override parameter (e.g., `queryOverride`, `advancedQueryOverride`, etc.) is set in a Group By operation, **all** original parts of the query expression (i.e., `q`, `aq`, `cq`, and `dq`) will be ignored. - * * @example `Coveo Cloud V2 Platform` */ queryOverride?: string; @@ -2222,7 +2050,6 @@ export interface RestGroupByRequest { * - `computedfieldascending`/`computedfielddescending`: sort on the value of the first computed field for each Group By operation result (see the `ComputedFields` Group By parameter). * - `chisquare`: sort based on the relative frequency of field values in the query result set compared to their frequency in the entire index. This means that a field value that does not appear often in the index, but does appear often in the query result set will tend to appear higher. * - `nosort`: do not sort the results of the Group By operation. The field values will be appear in a random order. - * * @default `score` */ sortCriteria?: RestGroupBySortCriteria; @@ -2241,7 +2068,6 @@ export interface RestHierarchicalFacetValue { /** * Whether to prevent Coveo ML from automatically selecting the facet value. - * * @default `false` */ preventAutoSelect?: boolean; @@ -2258,7 +2084,6 @@ export interface RestHierarchicalFacetValue { /** * The current facet value state in the search interface. - * * @default `idle` */ state?: string; @@ -2267,7 +2092,6 @@ export interface RestHierarchicalFacetValue { * The facet value name. * * **Note:** In the case of a hierarchical facet value, this represents a single path segment. - * * @example `Alice Smith` */ value?: string; @@ -2278,7 +2102,6 @@ export interface RestQueryFunctionRequest { * The name of the dynamic, temporary field in which to store the query function expression output. * * **Note:** The `fieldName` value must not correspond to an existing field in the index. - * * @example `numberoflikesplusone` */ fieldName: string; @@ -2289,7 +2112,6 @@ export interface RestQueryFunctionRequest { * **Notes:** * - The `function` expression can be defined using the ExprTk library syntax, but control and loop structures (e.g., if-then-else, while loop, etc.) are **not** supported. * - If the `function` expression references a numeric field, enable the **Use cache for computed fields** option on that field to speed up evaluation (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)). - * * @example `@numberoflikes+1` */ function: string; @@ -2313,7 +2135,6 @@ export interface RestRankingFunctionRequest { * - `DAY`: A value corresponding to the duration of a day. * * **Tip:** If your query ranking function expression references certain numeric fields, you should ensure that the **Use cache for computed fields** option is enabled for each of those fields in order to speed up evaluation (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)). - * * @example `-sqrt(dist(@longitude, @latitude, 46.8167, -71.2167))` */ expression: string; @@ -2322,7 +2143,6 @@ export interface RestRankingFunctionRequest { * The maximum boost this query ranking function can add to the ranking score of any given query result. * * This property only has a meaning if `normalizeWeight` is set to `true`. - * * @default `600` */ modifier?: number; @@ -2331,7 +2151,6 @@ export interface RestRankingFunctionRequest { * Whether to normalize the ranking score boosts resulting from the evaluation of this query ranking function using the standard index scale. * * Unless you want to completely override the index ranking and use the results of this query ranking function directly to boost the ranking scores of query results, you should set this to `true`. - * * @default `false` */ normalizeWeight?: boolean; @@ -2343,7 +2162,6 @@ export interface RestRankingFunctionRequest { export interface RestUserActionsParameters { /** * The user ID or visitor ID to retrieve user actions for. - * * @example `asmith@example.com` * @example `c7ab60e2-e6b8-41e8-be6a-ad5c8edc662e` */ @@ -2361,7 +2179,6 @@ export interface ItemPreviewHtmlParameters extends RestQueryParams { page?: number; /** * The approximate number of bytes to request in the HTML response. - * * @default 0 // meaning that the entire HTML document is requested */ requestedOutputSize?: number; @@ -2388,7 +2205,6 @@ export interface RestHierarchicalFacetResponseValue { path: string[]; /** * The current facet value state in the search interface. - * * @default 'idle' */ state: 'idle' | 'selected' | 'excluded'; @@ -2425,7 +2241,6 @@ export interface RestFacetResultValue extends RestHierarchicalFacetResponseValue end?: string | number; /** * Whether to include the `end` value in the range. - * * @default false */ endInclusive?: boolean; @@ -2439,7 +2254,6 @@ export interface RestFacetResultValue extends RestHierarchicalFacetResponseValue export interface RestFacetResult { /** * The name of the field on which the facet is based. - * * @example 'author' */ field: string; @@ -2631,6 +2445,7 @@ export interface RestQueryResult { /** * The values of the fields which were retrieved for this item (see the fieldsToInclude and fieldsToExclude query parameters). */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any raw: Record; /** * The total ranking score computed for the item (see the `sortCriteria` and `rankingFunctions` query parameters). @@ -2679,7 +2494,6 @@ export interface RestQueryResult { export interface RestSuggestedFacetValue { /** * A DNE facet value suggestion. - * * @example 'Alice Smith' */ value: string; @@ -2694,7 +2508,6 @@ export interface RestSuggestedFacetValue { export interface RestSuggestedFacet { /** * The name of the field on which the DNE facet suggestion is based. - * * @example 'author' */ field: string; @@ -2726,6 +2539,7 @@ export interface RestQuestionAnswer extends RestQuestion { answerFound: boolean; answerId: string; relatedQuestions: RestQuestion[]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any raw: Record; } diff --git a/src/resources/Search/test/Search.spec.ts b/src/resources/Search/test/Search.spec.ts index a6677efc5..ff486cfbc 100644 --- a/src/resources/Search/test/Search.spec.ts +++ b/src/resources/Search/test/Search.spec.ts @@ -5,12 +5,10 @@ import {RestFacetSearchParameters} from '../SearchInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Search', () => { let search: Search; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -51,8 +49,8 @@ describe('Search', () => { scope: 0, }; - it('should make a post call to the searchAPI correct url with its params to create a token', () => { - search.createToken(tokenParams); + it('should make a post call to the searchAPI correct url with its params to create a token', async () => { + await search.createToken(tokenParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Search.baseUrl}/token?organizationId=${API.orgPlaceholder}`, @@ -62,28 +60,28 @@ describe('Search', () => { }); describe('listFields', () => { - it('makes a get call to v2 search with its params to fetch the list of fields', () => { - search.listFields({viewAllContent: true, organizationId: 'my-org', pipeline: 'pipeline'}); + it('makes a get call to v2 search with its params to fetch the list of fields', async () => { + await search.listFields({viewAllContent: true, organizationId: 'my-org', pipeline: 'pipeline'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Search.baseUrl}/fields?viewAllContent=true&organizationId=my-org&pipeline=pipeline`, ); }); - it('makes a get call to v2 search with its params to fetch the list of fields with an empty pipeline', () => { - search.listFields({viewAllContent: true, organizationId: 'my-org', pipeline: ''}); + it('makes a get call to v2 search with its params to fetch the list of fields with an empty pipeline', async () => { + await search.listFields({viewAllContent: true, organizationId: 'my-org', pipeline: ''}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Search.baseUrl}/fields?viewAllContent=true&organizationId=my-org&pipeline=`, ); }); - it('adds the organizationId query param from the config if missing in the arguments', () => { + it('adds the organizationId query param from the config if missing in the arguments', async () => { const tempOrganizationId = api.organizationId; // change the value of organizationId on the mock Object.defineProperty(api, 'organizationId', {value: 'my-org', writable: true}); - search.listFields({}); + await search.listFields({}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Search.baseUrl}/fields?organizationId=my-org`); @@ -94,14 +92,14 @@ describe('Search', () => { }); describe('getFieldValue', () => { - it('should make a get call to searchAPI correct url with its params to fetch the values of a field', () => { + it('should make a get call to searchAPI correct url with its params to fetch the values of a field', async () => { const params = { ignoreAccents: false, commerce: {catalogId: 'test-id', filter: 'test-filter', operation: 'test-operation'}, organizationId: 'test-org-id', }; const fieldName = 'author'; - search.getFieldValues(fieldName, params); + await search.getFieldValues(fieldName, params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Search.baseUrl}/values?field=author&ignoreAccents=false&commerce=%7B%22catalogId%22%3A%22test-id%22%2C%22filter%22%3A%22test-filter%22%2C%22operation%22%3A%22test-operation%22%7D&organizationId=test-org-id`, @@ -110,53 +108,53 @@ describe('Search', () => { }); describe('Make a query on the search', () => { - it('should make a post call to query the search for result', () => { + it('should make a post call to query the search for result', async () => { const queryParams = {q: ''}; - search.query(queryParams); + await search.query(queryParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Search.baseUrl, queryParams); }); - it('should not add #viewAllContent query string parameter when not specified', () => { + it('should not add #viewAllContent query string parameter when not specified', async () => { const queryParams = {q: ''}; - search.query(queryParams); + await search.query(queryParams); expect(api.post).toHaveBeenCalledWith(Search.baseUrl, {q: ''}); }); - it('should add #viewAllContent=1 to the query string when set to true', () => { + it('should add #viewAllContent=1 to the query string when set to true', async () => { const queryParams = {q: '', viewAllContent: true}; - search.query(queryParams); + await search.query(queryParams); expect(api.post).toHaveBeenCalledWith(`${Search.baseUrl}?viewAllContent=1`, {q: ''}); }); - it('should add #viewAllContent=1 to the query string when set to 1', () => { + it('should add #viewAllContent=1 to the query string when set to 1', async () => { const queryParams = {q: '', viewAllContent: 1}; - search.query(queryParams); + await search.query(queryParams); expect(api.post).toHaveBeenCalledWith(`${Search.baseUrl}?viewAllContent=1`, {q: ''}); }); - it('should not add #viewAllContent query string parameter when set to false', () => { + it('should not add #viewAllContent query string parameter when set to false', async () => { const queryParams = {q: '', viewAllContent: false}; - search.query(queryParams); + await search.query(queryParams); expect(api.post).toHaveBeenCalledWith(Search.baseUrl, {q: ''}); }); - it('should not add #viewAllContent query string parameter when set to 0', () => { + it('should not add #viewAllContent query string parameter when set to 0', async () => { const queryParams = {q: '', viewAllContent: 0}; - search.query(queryParams); + await search.query(queryParams); expect(api.post).toHaveBeenCalledWith(Search.baseUrl, {q: ''}); }); }); describe('exportQuery', () => { - it('makes a post call to the query endpoint with xlsx format', () => { + it('makes a post call to the query endpoint with xlsx format', async () => { const queryParams = {q: ''}; - search.exportQuery(queryParams); + await search.exportQuery(queryParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( Search.baseUrl, @@ -167,17 +165,17 @@ describe('Search', () => { }); describe('querySuggestPost', () => { - it('should make a post call to the querySuggest endpoint', () => { + it('should make a post call to the querySuggest endpoint', async () => { const queryParams = {q: ''}; - search.querySuggestPost(queryParams); + await search.querySuggestPost(queryParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Search.baseUrl}/querySuggest`, queryParams); }); }); describe('previewHTML', () => { - it('makes a GET call to the /html endpoint', () => { - search.previewHTML({uniqueId: 'document-id', pipeline: ''}); + it('makes a GET call to the /html endpoint', async () => { + await search.previewHTML({uniqueId: 'document-id', pipeline: ''}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `/rest/search/v2/html?uniqueId=document-id`, @@ -190,14 +188,14 @@ describe('Search', () => { }); describe('getDocument', () => { - it('makes a GET call to the /document endpoint', () => { - search.getDocument({uniqueId: 'document-id'}); + it('makes a GET call to the /document endpoint', async () => { + await search.getDocument({uniqueId: 'document-id'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/search/v2/document?uniqueId=document-id`); }); - it('allows specifying the empty pipeline', () => { - search.getDocument({uniqueId: 'document-id', pipeline: ''}); + it('allows specifying the empty pipeline', async () => { + await search.getDocument({uniqueId: 'document-id', pipeline: ''}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/search/v2/document?uniqueId=document-id&pipeline=`); }); @@ -217,20 +215,20 @@ describe('Search', () => { delimitingCharacter: ';', basePath: ['base_path'], }; - it('makes a post call to the search facet endpoint', () => { - search.searchFacet({...searchFacetRequest, organizationId: 'specific-org-id', viewAllContent: true}); + it('makes a post call to the search facet endpoint', async () => { + await search.searchFacet({...searchFacetRequest, organizationId: 'specific-org-id', viewAllContent: true}); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenLastCalledWith( `/rest/search/v2/facet?organizationId=specific-org-id&viewAllContent=true`, searchFacetRequest, ); }); - it('adds the organizationId query param from the config if missing in the arguments', () => { + it('adds the organizationId query param from the config if missing in the arguments', async () => { const tempOrganizationId = api.organizationId; // change the value of organizationId on the mock Object.defineProperty(api, 'organizationId', {value: 'my-org', writable: true}); - search.searchFacet(searchFacetRequest); + await search.searchFacet(searchFacetRequest); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenLastCalledWith( diff --git a/src/resources/SearchAnalysis/SearchAnalysis.ts b/src/resources/SearchAnalysis/SearchAnalysis.ts index 436aaa19d..e8d41a05c 100644 --- a/src/resources/SearchAnalysis/SearchAnalysis.ts +++ b/src/resources/SearchAnalysis/SearchAnalysis.ts @@ -7,7 +7,6 @@ export default class SearchAnalysis extends Resource { /** * Replay a query that was already done and get inspection details. - * * @param id The SearchUID of the request to replay. * @param from The inclusive date at which to start looking for the request. Example: 2019-08-24T14:15:22Z * @param to The inclusive date at which to stop looking for the SearchUID. When omitted searches up until the most recent requests. Example:2019-08-24T14:15:22Z diff --git a/src/resources/SearchAnalysis/test/SearchAnalysis.spec.ts b/src/resources/SearchAnalysis/test/SearchAnalysis.spec.ts index 37d4c3f1c..7797e66a4 100644 --- a/src/resources/SearchAnalysis/test/SearchAnalysis.spec.ts +++ b/src/resources/SearchAnalysis/test/SearchAnalysis.spec.ts @@ -3,12 +3,10 @@ import SearchAnalysis from '../SearchAnalysis.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SearchAnalysis', () => { let searchAnalysis: SearchAnalysis; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,8 +14,8 @@ describe('SearchAnalysis', () => { }); describe('replay', () => { - it('should make a replay call to the searchAPI with a partially defined date range', () => { - searchAnalysis.replay('some-search-id', '2023-01-01'); + it('should make a replay call to the searchAPI with a partially defined date range', async () => { + await searchAnalysis.replay('some-search-id', '2023-01-01'); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SearchAnalysis.baseUrl}/inspect/replay?organizationId=${API.orgPlaceholder}`, @@ -25,8 +23,8 @@ describe('SearchAnalysis', () => { ); }); - it('should make a replay call to the searchAPI with a complete defined date range', () => { - searchAnalysis.replay('some-search-id', '2023-01-01', '2023-02-01'); + it('should make a replay call to the searchAPI with a complete defined date range', async () => { + await searchAnalysis.replay('some-search-id', '2023-01-01', '2023-02-01'); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SearchAnalysis.baseUrl}/inspect/replay?organizationId=${API.orgPlaceholder}`, diff --git a/src/resources/SearchInterfaces/tests/SearchInterfaces.spec.ts b/src/resources/SearchInterfaces/tests/SearchInterfaces.spec.ts index 861e26a63..773e8b224 100644 --- a/src/resources/SearchInterfaces/tests/SearchInterfaces.spec.ts +++ b/src/resources/SearchInterfaces/tests/SearchInterfaces.spec.ts @@ -7,13 +7,11 @@ import {ISearchInterfaceConfiguration} from '../SearchInterfaces.model.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SearchInterfaces', () => { let searchInterfaces: SearchInterfaces; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const config: New = { name: 'some search page name', title: 'some search page title', @@ -56,8 +54,8 @@ describe('SearchInterfaces', () => { }); describe('list', () => { - it('should make a GET call with all parameters', () => { - searchInterfaces.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); + it('should make a GET call with all parameters', async () => { + await searchInterfaces.list({page: 2, perPage: 10, filter: 'Accounting', order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -65,29 +63,29 @@ describe('SearchInterfaces', () => { ); }); - it('should make a GET call with page', () => { - searchInterfaces.list({page: 2}); + it('should make a GET call with page', async () => { + await searchInterfaces.list({page: 2}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}?page=2`); }); - it('should make a GET call with perPage', () => { - searchInterfaces.list({perPage: 10}); + it('should make a GET call with perPage', async () => { + await searchInterfaces.list({perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}?perPage=10`); }); - it('should make a GET call with filter', () => { - searchInterfaces.list({filter: 'Accounting'}); + it('should make a GET call with filter', async () => { + await searchInterfaces.list({filter: 'Accounting'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}?filter=Accounting`); }); - it('should make a GET call with order', () => { - searchInterfaces.list({order: 'asc'}); + it('should make a GET call with order', async () => { + await searchInterfaces.list({order: 'asc'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}?order=asc`); @@ -95,8 +93,8 @@ describe('SearchInterfaces', () => { }); describe('create', () => { - it('should make a POST call to the SearchInterfaces base url', () => { - searchInterfaces.create(config); + it('should make a POST call to the SearchInterfaces base url', async () => { + await searchInterfaces.create(config); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SearchInterfaces.baseUrl, config); @@ -104,10 +102,10 @@ describe('SearchInterfaces', () => { }); describe('get', () => { - it('should make a GET call to the SearchInterfaces base url', () => { + it('should make a GET call to the SearchInterfaces base url', async () => { const id = 'SearchInterface-id-to-get'; - searchInterfaces.get(id); + await searchInterfaces.get(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}`); @@ -115,10 +113,10 @@ describe('SearchInterfaces', () => { }); describe('update', () => { - it('should make a UPDATE call to the SearchInterfaces base url', () => { + it('should make a UPDATE call to the SearchInterfaces base url', async () => { const id = 'SearchInterface-id-to-update'; - searchInterfaces.update({...config, id}); + await searchInterfaces.update({...config, id}); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}`, {...config, id}); @@ -126,10 +124,10 @@ describe('SearchInterfaces', () => { }); describe('delete', () => { - it('should make a DELETE call to the SearchInterfaces base url', () => { + it('should make a DELETE call to the SearchInterfaces base url', async () => { const id = 'SearchInterface-id-to-delete'; - searchInterfaces.delete(id); + await searchInterfaces.delete(id); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}`); @@ -137,10 +135,10 @@ describe('SearchInterfaces', () => { }); describe('getAccesses', () => { - it('makes a GET call to the searchInterfaces accesses url based on the interfaceId', () => { + it('makes a GET call to the searchInterfaces accesses url based on the interfaceId', async () => { const id = 'search-interface-id'; - searchInterfaces.getAccesses(id); + await searchInterfaces.getAccesses(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses`); @@ -148,7 +146,7 @@ describe('SearchInterfaces', () => { }); describe('updateAccesses', () => { - it('makes a PUT call to the SearchInterfaces accesses url', () => { + it('makes a PUT call to the SearchInterfaces accesses url', async () => { const someAccesses: IAccesses = { users: [], domains: [], @@ -157,7 +155,7 @@ describe('SearchInterfaces', () => { }; const id = 'SearchInterface-id-to-update-accesses'; - searchInterfaces.updateAccesses(id, someAccesses); + await searchInterfaces.updateAccesses(id, someAccesses); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses`, someAccesses); @@ -165,10 +163,10 @@ describe('SearchInterfaces', () => { }); describe('getAccessesUsers', () => { - it('makes a GET call to the searchInterfaces accesses users url based on the interfaceId', () => { + it('makes a GET call to the searchInterfaces accesses users url based on the interfaceId', async () => { const id = 'search-interface-id'; - searchInterfaces.getAccessesUsers(id); + await searchInterfaces.getAccessesUsers(id); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses/users`); @@ -176,11 +174,11 @@ describe('SearchInterfaces', () => { }); describe('updateAccessesUsers', () => { - it('makes a PUT call to the searchInterfaces accesses users url based on the interfaceId', () => { + it('makes a PUT call to the searchInterfaces accesses users url based on the interfaceId', async () => { const id = 'search-interface-id'; const someUsers = ['Tinky Winky', 'Dipsy', 'Laa-Laa', 'Po']; - searchInterfaces.updateAccessesUsers(id, someUsers); + await searchInterfaces.updateAccessesUsers(id, someUsers); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses/users`, someUsers); @@ -188,11 +186,11 @@ describe('SearchInterfaces', () => { }); describe('addAccessesUsers', () => { - it('makes a POST call to the searchInterfaces accesses users url based on the interfaceId', () => { + it('makes a POST call to the searchInterfaces accesses users url based on the interfaceId', async () => { const id = 'search-interface-id'; const someUsers = ['Tinky Winky', 'Dipsy', 'Laa-Laa', 'Po']; - searchInterfaces.addAccessesUsers(id, someUsers); + await searchInterfaces.addAccessesUsers(id, someUsers); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses/users`, { @@ -200,11 +198,11 @@ describe('SearchInterfaces', () => { }); }); - it('makes a POST with a notify query param when notify is true', () => { + it('makes a POST with a notify query param when notify is true', async () => { const id = 'search-interface-id'; const someUsers = ['Tinky Winky', 'Dipsy', 'Laa-Laa', 'Po']; - searchInterfaces.addAccessesUsers(id, someUsers, true); + await searchInterfaces.addAccessesUsers(id, someUsers, true); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses/users?notify=1`, { @@ -212,13 +210,13 @@ describe('SearchInterfaces', () => { }); }); - it('makes a POST with a message body param when notify is true and a message is provided', () => { + it('makes a POST with a message body param when notify is true and a message is provided', async () => { const id = 'search-interface-id'; const someUsers = ['Tinky Winky', 'Dipsy', 'Laa-Laa', 'Po']; const message = 'The oldest and strongest emotion of mankind is fear, and the oldest and strongest kind of fear is fear of the unknown.'; - searchInterfaces.addAccessesUsers(id, someUsers, true, message); + await searchInterfaces.addAccessesUsers(id, someUsers, true, message); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/accesses/users?notify=1`, { @@ -229,19 +227,19 @@ describe('SearchInterfaces', () => { }); describe('manifest', () => { - it('makes a POST call (without a body) to the searchInterfaces accesses manifest url based on the interfaceId', () => { + it('makes a POST call (without a body) to the searchInterfaces accesses manifest url based on the interfaceId', async () => { const id = 'search-interface-id'; - searchInterfaces.manifest(id); + await searchInterfaces.manifest(id); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/manifest/v1`, undefined); }); - it('makes a POST call (with a body) to the searchInterfaces accesses manifest url based on the interfaceId', () => { + it('makes a POST call (with a body) to the searchInterfaces accesses manifest url based on the interfaceId', async () => { const id = 'search-interface-id'; const options: IManifestParameters = {pagePlaceholders: {results: 'myresults'}}; - searchInterfaces.manifest(id, options); + await searchInterfaces.manifest(id, options); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SearchInterfaces.baseUrl}/${id}/manifest/v1`, options); diff --git a/src/resources/SearchPages/SearchPagesInterfaces.ts b/src/resources/SearchPages/SearchPagesInterfaces.ts index b491fd4c7..73f7079c9 100644 --- a/src/resources/SearchPages/SearchPagesInterfaces.ts +++ b/src/resources/SearchPages/SearchPagesInterfaces.ts @@ -11,9 +11,9 @@ export interface SearchPageModel extends GranularResource { lastModified?: string; } -export interface CreateSearchPageModel extends Pick {} +export type CreateSearchPageModel = Pick; -export interface UpdateSearchPageModel extends Pick {} +export type UpdateSearchPageModel = Pick; export type JavaScriptResourceModel = SearchPageResourceModel; diff --git a/src/resources/SearchPages/tests/SearchPages.spec.ts b/src/resources/SearchPages/tests/SearchPages.spec.ts index 10fe48de4..7872c9aea 100644 --- a/src/resources/SearchPages/tests/SearchPages.spec.ts +++ b/src/resources/SearchPages/tests/SearchPages.spec.ts @@ -11,12 +11,10 @@ import { jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SearchPages', () => { let searchPageService: SearchPages; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -24,70 +22,70 @@ describe('SearchPages', () => { }); describe('list', () => { - it('should make a GET call to the specific Search Pages url', () => { - searchPageService.list(); + it('should make a GET call to the specific Search Pages url', async () => { + await searchPageService.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchPages.baseUrl}`); }); }); describe('create', () => { - it('should make a POST call to the Search Pages base url', () => { + it('should make a POST call to the Search Pages base url', async () => { const searchPageModel: CreateSearchPageModel = {name: 'test-name', title: 'test-title'}; - searchPageService.create(searchPageModel); + await searchPageService.create(searchPageModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(SearchPages.baseUrl, searchPageModel); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Search Pages url', () => { + it('should make a DELETE call to the specific Search Pages url', async () => { const searchPageId = '🐱'; - searchPageService.delete(searchPageId); + await searchPageService.delete(searchPageId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${SearchPages.baseUrl}/${searchPageId}`); }); }); describe('get', () => { - it('should make a GET call to the specific Search Pages url', () => { + it('should make a GET call to the specific Search Pages url', async () => { const searchPageId = '😽'; - searchPageService.get(searchPageId); + await searchPageService.get(searchPageId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchPages.baseUrl}/${searchPageId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific Search Pages url', () => { + it('should make a PUT call to the specific Search Pages url', async () => { const searchPageId = '🙀'; const searchPageModel: UpdateSearchPageModel = {name: 'test-name', title: 'test-title'}; - searchPageService.update(searchPageId, searchPageModel); + await searchPageService.update(searchPageId, searchPageModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${SearchPages.baseUrl}/${searchPageId}`, searchPageModel); }); }); describe('getVersion', () => { - it('should make a GET call to the specific Search UI url', () => { + it('should make a GET call to the specific Search UI url', async () => { const searchPageId = '😽'; - searchPageService.getVersion(searchPageId); + await searchPageService.getVersion(searchPageId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchPages.baseUrl}/${searchPageId}/searchui`); }); }); describe('updateVersion', () => { - it('should make a PUT call to the specific Search UI url', () => { + it('should make a PUT call to the specific Search UI url', async () => { const searchPageId = '🙀'; const versionOptions: MajorMinorVersion = {major: 'bleep', minor: 'bloop'}; - searchPageService.updateVersion(searchPageId, versionOptions); + await searchPageService.updateVersion(searchPageId, versionOptions); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/searchui?major=${versionOptions.major}&minor=${versionOptions.minor}`, @@ -99,21 +97,21 @@ describe('SearchPages', () => { const searchPageId = '00000000-0000-0000-0000-000000000000'; describe('all', () => { describe('get', () => { - it('should make a GET call to the specific Search Pages headers url', () => { - searchPageService.getHeaders(searchPageId); + it('should make a GET call to the specific Search Pages headers url', async () => { + await searchPageService.getHeaders(searchPageId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchPages.baseUrl}/${searchPageId}/header`); }); }); describe('reorder', () => { - it('should make a PUT call to the specific Search Pages headers url', () => { + it('should make a PUT call to the specific Search Pages headers url', async () => { const reorderHeaderModel: ReorderSearchPageHeadersModel = { css: ['👾', '🧟', '🤡'], javascript: ['👻', '💀', '👽'], }; - searchPageService.reorderHeaders(searchPageId, reorderHeaderModel); + await searchPageService.reorderHeaders(searchPageId, reorderHeaderModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header`, @@ -124,14 +122,14 @@ describe('SearchPages', () => { }); describe('css', () => { describe('create', () => { - it('should make a POST call to the Search Pages CSS resource url', () => { + it('should make a POST call to the Search Pages CSS resource url', async () => { const cssResourceModel: CSSResourceModel = { inlineContent: 'body { color: #e0e0e0; background-color: #2a2aa2; }', name: '👹', url: 'https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css', }; - searchPageService.createCssResource(searchPageId, cssResourceModel); + await searchPageService.createCssResource(searchPageId, cssResourceModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header/css`, @@ -141,9 +139,9 @@ describe('SearchPages', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific Search Pages CSS resource url', () => { + it('should make a DELETE call to the specific Search Pages CSS resource url', async () => { const resourceName = '👹'; - searchPageService.deleteCssResource(searchPageId, resourceName); + await searchPageService.deleteCssResource(searchPageId, resourceName); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header/css/${resourceName}`, @@ -152,7 +150,7 @@ describe('SearchPages', () => { }); describe('update', () => { - it('should make a PUT call to the specific Search Pages CSS resource url', () => { + it('should make a PUT call to the specific Search Pages CSS resource url', async () => { const resourceName = '👹'; const cssResourceModel: CSSResourceModel = { inlineContent: 'body { color: #e0e0e0; background-color: #2a2aa2; }', @@ -160,7 +158,7 @@ describe('SearchPages', () => { url: 'https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css', }; - searchPageService.updateCssResource(searchPageId, resourceName, cssResourceModel); + await searchPageService.updateCssResource(searchPageId, resourceName, cssResourceModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header/css/${resourceName}`, @@ -171,14 +169,14 @@ describe('SearchPages', () => { }); describe('javascript', () => { describe('create', () => { - it('should make a POST call to the Search Pages JS resource url', () => { + it('should make a POST call to the Search Pages JS resource url', async () => { const jsResourceModel: JavaScriptResourceModel = { inlineContent: "window.location = 'about:blank';", name: '👺', url: 'https://code.jquery.com/jquery-3.4.1.min.js', }; - searchPageService.createJsResource(searchPageId, jsResourceModel); + await searchPageService.createJsResource(searchPageId, jsResourceModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header/javascript`, @@ -188,9 +186,9 @@ describe('SearchPages', () => { }); describe('delete', () => { - it('should make a DELETE call to the specific Search Pages JS resource url', () => { + it('should make a DELETE call to the specific Search Pages JS resource url', async () => { const resourceName = '👺'; - searchPageService.deleteJsResource(searchPageId, resourceName); + await searchPageService.deleteJsResource(searchPageId, resourceName); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header/javascript/${resourceName}`, @@ -199,7 +197,7 @@ describe('SearchPages', () => { }); describe('update', () => { - it('should make a PUT call to the specific Search Pages JS resource url', () => { + it('should make a PUT call to the specific Search Pages JS resource url', async () => { const resourceName = '👺'; const jsResourceModel: JavaScriptResourceModel = { inlineContent: "window.location = 'about:blank';", @@ -207,7 +205,7 @@ describe('SearchPages', () => { url: 'https://code.jquery.com/jquery-3.4.1.min.js', }; - searchPageService.updateJsResource(searchPageId, resourceName, jsResourceModel); + await searchPageService.updateJsResource(searchPageId, resourceName, jsResourceModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${SearchPages.baseUrl}/${searchPageId}/header/javascript/${resourceName}`, diff --git a/src/resources/SearchUsageMetrics/LicenseMetrics/tests/LicenseMetrics.spec.ts b/src/resources/SearchUsageMetrics/LicenseMetrics/tests/LicenseMetrics.spec.ts index 7404a1b75..661bc80c4 100644 --- a/src/resources/SearchUsageMetrics/LicenseMetrics/tests/LicenseMetrics.spec.ts +++ b/src/resources/SearchUsageMetrics/LicenseMetrics/tests/LicenseMetrics.spec.ts @@ -4,12 +4,10 @@ import {ListLicenseMonthlyParams} from '../LicenseMetricsInterface.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('LicenseMetrics', () => { let LicenseMetricsService: LicenseMetrics; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,25 +15,25 @@ describe('LicenseMetrics', () => { }); describe('list', () => { - it('should make a GET call to the assignable metrics for an organization', () => { - LicenseMetricsService.listAssignable(); + it('should make a GET call to the assignable metrics for an organization', async () => { + await LicenseMetricsService.listAssignable(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${LicenseMetrics.baseUrl}/assignable`); }); - it('should make a GET call to the in-use metrics for an organization', () => { - LicenseMetricsService.listInUse(); + it('should make a GET call to the in-use metrics for an organization', async () => { + await LicenseMetricsService.listInUse(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${LicenseMetrics.baseUrl}/inUse`); }); - it('should make a GET call to per-day values for a specific license metric', () => { + it('should make a GET call to per-day values for a specific license metric', async () => { const metric: string = 'HEEEYYYOOOOO'; const listMonthlyParams: ListLicenseMonthlyParams = { to: 'Coulili', from: 'Zazou', }; - LicenseMetricsService.listMonthly(metric, listMonthlyParams); + await LicenseMetricsService.listMonthly(metric, listMonthlyParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${LicenseMetrics.baseUrl}/monthly/HEEEYYYOOOOO?to=Coulili&from=Zazou`, diff --git a/src/resources/SearchUsageMetrics/RawMetrics/tests/RawMetrics.spec.ts b/src/resources/SearchUsageMetrics/RawMetrics/tests/RawMetrics.spec.ts index eeebf9f13..ba266a5cc 100644 --- a/src/resources/SearchUsageMetrics/RawMetrics/tests/RawMetrics.spec.ts +++ b/src/resources/SearchUsageMetrics/RawMetrics/tests/RawMetrics.spec.ts @@ -4,12 +4,10 @@ import RawMetrics from '../RawMetrics.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('RawMetrics', () => { let RawMetricsService: RawMetrics; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,8 +15,8 @@ describe('RawMetrics', () => { }); describe('list', () => { - it('makes a GET call to fetch all the available metrics for assignment', () => { - RawMetricsService.list(); + it('makes a GET call to fetch all the available metrics for assignment', async () => { + await RawMetricsService.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${RawMetrics.baseUrl}all`); }); @@ -28,18 +26,18 @@ describe('RawMetrics', () => { const month = {year: 2021, month: 4}; const minimumQueries = 12; - it('makes a GET call to fetch a list raw metric value for a specific month', () => { + it('makes a GET call to fetch a list raw metric value for a specific month', async () => { const expectedMonthFormat = '2021-04'; - RawMetricsService.listMonthly({month}); + await RawMetricsService.listMonthly({month}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${RawMetrics.baseUrl}monthly?month=${expectedMonthFormat}`); }); - it('makes a GET call to fetch a list raw metric value with a number of queries equal or above for a specific month if the minimumQueries parameter is set', () => { + it('makes a GET call to fetch a list raw metric value with a number of queries equal or above for a specific month if the minimumQueries parameter is set', async () => { const expectedMonthFormat = '2021-04'; - RawMetricsService.listMonthly({month, minimumQueries}); + await RawMetricsService.listMonthly({month, minimumQueries}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${RawMetrics.baseUrl}monthly?month=${expectedMonthFormat}&minimumQueries=${minimumQueries}`, @@ -53,11 +51,11 @@ describe('RawMetrics', () => { const to = {year: 2021, month: 2, day: 12}; const from = {year: 2020, month: 3, day: 26}; - it('makes a GET call to fetch all daily raw values from a metric and search hub that are included in the range specified', () => { + it('makes a GET call to fetch all daily raw values from a metric and search hub that are included in the range specified', async () => { const expectedFromDate = '2020-03-26'; const expectedToDate = '2021-02-12'; - RawMetricsService.getDaily({metric, searchHub, to, from}); + await RawMetricsService.getDaily({metric, searchHub, to, from}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${RawMetrics.baseUrl}searchhubs/${searchHub}/daily/${metric}?to=${expectedToDate}&from=${expectedFromDate}`, @@ -71,11 +69,11 @@ describe('RawMetrics', () => { const to = {year: 2021, month: 2}; const from = {year: 2020, month: 3}; - it('makes a GET call to fetch all monthly raw values from a metric and search hub that are included in the range specified', () => { + it('makes a GET call to fetch all monthly raw values from a metric and search hub that are included in the range specified', async () => { const expectedFromDate = '2020-03'; const expectedToDate = '2021-02'; - RawMetricsService.getMonthly({metric, searchHub, to, from}); + await RawMetricsService.getMonthly({metric, searchHub, to, from}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${RawMetrics.baseUrl}searchhubs/${searchHub}/monthly/${metric}?to=${expectedToDate}&from=${expectedFromDate}`, diff --git a/src/resources/SearchUsageMetrics/SearchHubs/SearchHubsInterface.ts b/src/resources/SearchUsageMetrics/SearchHubs/SearchHubsInterface.ts index 0380185c6..712d46306 100644 --- a/src/resources/SearchUsageMetrics/SearchHubs/SearchHubsInterface.ts +++ b/src/resources/SearchUsageMetrics/SearchHubs/SearchHubsInterface.ts @@ -36,21 +36,18 @@ export interface ListSearchHubsParams extends Paginated { /** * The maximum number of search hubs to list per page - * * @default `100` */ perPage?: number; /** * The 0-based index number of page to list - * * @default `0` */ page?: number; /** * The minimum queries a search hub must have to be listed - * * @default '1' */ minimumQueries?: string; diff --git a/src/resources/SearchUsageMetrics/SearchHubs/tests/SearchHubs.spec.ts b/src/resources/SearchUsageMetrics/SearchHubs/tests/SearchHubs.spec.ts index 8cc457dfa..8194bb3e3 100644 --- a/src/resources/SearchUsageMetrics/SearchHubs/tests/SearchHubs.spec.ts +++ b/src/resources/SearchUsageMetrics/SearchHubs/tests/SearchHubs.spec.ts @@ -4,12 +4,10 @@ import {ListSearchHubsParams} from '../SearchHubsInterface.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SearchHubs', () => { let searchHubs: SearchHubs; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,30 +15,30 @@ describe('SearchHubs', () => { }); describe('list', () => { - it('makes a GET call to the SearchHub base url', () => { - searchHubs.list(); + it('makes a GET call to the SearchHub base url', async () => { + await searchHubs.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(SearchHubs.baseUrl); }); - it('makes the call with parameters if it is set', () => { + it('makes the call with parameters if it is set', async () => { const params: ListSearchHubsParams = { filter: 'patate', perPage: 25, page: 1, }; - searchHubs.list(params); + await searchHubs.list(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchHubs.baseUrl}?filter=patate&pageSize=25&page=1`); }); - it('makes the call with parameters if it is partially set', () => { + it('makes the call with parameters if it is partially set', async () => { const partialParams: ListSearchHubsParams = { filter: 'patate', }; - searchHubs.list(partialParams); + await searchHubs.list(partialParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchHubs.baseUrl}?filter=patate`); @@ -48,9 +46,9 @@ describe('SearchHubs', () => { }); describe('create', () => { - it('makes a POST call to the SearchHub base url with the set hub', () => { + it('makes a POST call to the SearchHub base url with the set hub', async () => { const newSearchHub = {name: 'hello', bucket: 'bonjour', description: 'hola'}; - searchHubs.create(newSearchHub); + await searchHubs.create(newSearchHub); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SearchHubs.baseUrl}`, newSearchHub); @@ -58,9 +56,9 @@ describe('SearchHubs', () => { }); describe('get', () => { - it('makes a GET call to the specific SearchHub url', () => { + it('makes a GET call to the specific SearchHub url', async () => { const getSearchHub = {hubName: 'hello'}; - searchHubs.get(getSearchHub); + await searchHubs.get(getSearchHub); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SearchHubs.baseUrl}${getSearchHub.hubName}`); @@ -68,9 +66,9 @@ describe('SearchHubs', () => { }); describe('delete', () => { - it('makes a DELETE call to the specific SearchHub url', () => { + it('makes a DELETE call to the specific SearchHub url', async () => { const deleteSearchHub = {hubName: 'hello'}; - searchHubs.delete(deleteSearchHub); + await searchHubs.delete(deleteSearchHub); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${SearchHubs.baseUrl}${deleteSearchHub.hubName}`); @@ -78,10 +76,10 @@ describe('SearchHubs', () => { }); describe('update', () => { - it('makes a PUT call to the specific SearchHub url', () => { + it('makes a PUT call to the specific SearchHub url', async () => { const updateSearchHubParams = {name: 'hello', bucket: 'bonjour', description: 'hola'}; const updateSearchHub = {hubName: 'hello', hub: updateSearchHubParams}; - searchHubs.update(updateSearchHub); + await searchHubs.update(updateSearchHub); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -92,9 +90,9 @@ describe('SearchHubs', () => { }); describe('updateBucket', () => { - it('makes a PUT call to the bucket SearchHub url', () => { + it('makes a PUT call to the bucket SearchHub url', async () => { const updateBucketSearchHub = {hubName: 'hello', bucket: 'bonjour'}; - searchHubs.updateBucket(updateBucketSearchHub); + await searchHubs.updateBucket(updateBucketSearchHub); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( diff --git a/src/resources/SearchUsageMetrics/tests/SearchUsageMetrics.spec.ts b/src/resources/SearchUsageMetrics/tests/SearchUsageMetrics.spec.ts index 623767fb0..35b3e824a 100644 --- a/src/resources/SearchUsageMetrics/tests/SearchUsageMetrics.spec.ts +++ b/src/resources/SearchUsageMetrics/tests/SearchUsageMetrics.spec.ts @@ -6,12 +6,10 @@ import SearchUsageMetrics from '../SearchUsageMetrics.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SearchUsageMetrics', () => { let searchUsageMetrics: SearchUsageMetrics; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); diff --git a/src/resources/SecurityCache/tests/SecurityCache.spec.ts b/src/resources/SecurityCache/tests/SecurityCache.spec.ts index a02fe4b30..7d11949b4 100644 --- a/src/resources/SecurityCache/tests/SecurityCache.spec.ts +++ b/src/resources/SecurityCache/tests/SecurityCache.spec.ts @@ -10,12 +10,10 @@ import SecurityCache from '../SecurityCache.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('securityCache', () => { let securityCache: SecurityCache; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -25,28 +23,28 @@ describe('securityCache', () => { describe('list', () => { const providerId = 'PROVIDER_ID'; - it('should make a GET call to the securityCache correct url with listMembers', () => { - securityCache.listMembers(providerId); + it('should make a GET call to the securityCache correct url with listMembers', async () => { + await securityCache.listMembers(providerId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${SecurityCache.cacheUrl}/entities/${providerId}/members?usePageModel=true`, ); }); - it('should make a GET call to the securityCache correct url with listEntities', () => { - securityCache.listEntities(providerId); + it('should make a GET call to the securityCache correct url with listEntities', async () => { + await securityCache.listEntities(providerId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/entities/${providerId}`); }); - it('should make a GET call to the securityCache correct url with isListingSecurityIdentitiesSupported', () => { - securityCache.isListingSecurityIdentitiesSupported(); + it('should make a GET call to the securityCache correct url with isListingSecurityIdentitiesSupported', async () => { + await securityCache.isListingSecurityIdentitiesSupported(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/entities/list/is_supported`); }); - it('should make a POST call to the securityCache correct url with listSecurityIdentities without filters', () => { - securityCache.listSecurityProviderIdentities(providerId); + it('should make a POST call to the securityCache correct url with listSecurityIdentities without filters', async () => { + await securityCache.listSecurityProviderIdentities(providerId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/securitycache/entities/list`, @@ -54,8 +52,8 @@ describe('securityCache', () => { ); }); - it('should make a POST call to the securityCache correct url with listSecurityIdentities with filters', () => { - securityCache.listSecurityProviderIdentities(providerId, { + it('should make a POST call to the securityCache correct url with listSecurityIdentities with filters', async () => { + await securityCache.listSecurityProviderIdentities(providerId, { filteringMode: SecurityCacheFilteringMode.PREFIX, filterTerm: 'test', identityTypes: [PermissionIdentityType.User], @@ -72,22 +70,22 @@ describe('securityCache', () => { ); }); - it('should make a GET call to the securityProvider url with listProvider', () => { - securityCache.listProviders(); + it('should make a GET call to the securityProvider url with listProvider', async () => { + await securityCache.listProviders(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(SecurityCache.providersUrl); }); }); describe('listChildren', () => { - it('makes a POST call to the security cache member children endpoint', () => { + it('makes a POST call to the security cache member children endpoint', async () => { const memberModel: SecurityCacheMemberModel = { name: '🚣🏻‍♀️', type: PermissionIdentityType.User, provider: '🎲', infos: [], }; - securityCache.listChildren('🌶', memberModel); + await securityCache.listChildren('🌶', memberModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -96,8 +94,12 @@ describe('securityCache', () => { ); }); - it('specifies the right query parameters in the url if any', () => { - securityCache.listChildren('🌶', {} as SecurityCacheMemberModel, {page: 1, perPage: 20, recursive: true}); + it('specifies the right query parameters in the url if any', async () => { + await securityCache.listChildren('🌶', {} as SecurityCacheMemberModel, { + page: 1, + perPage: 20, + recursive: true, + }); expect(api.post).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/securitycache/entities/🌶/members/children?page=1&perPage=20&recursive=true`, @@ -107,14 +109,14 @@ describe('securityCache', () => { }); describe('listParents', () => { - it('makes a POST call to the security cache member parents endpoint', () => { + it('makes a POST call to the security cache member parents endpoint', async () => { const memberModel: SecurityCacheMemberModel = { name: '🚣🏻‍♀️', type: PermissionIdentityType.User, provider: '🎲', infos: [], }; - securityCache.listParents('🌶', memberModel); + await securityCache.listParents('🌶', memberModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( @@ -123,8 +125,12 @@ describe('securityCache', () => { ); }); - it('specifies the right query parameters in the url if any', () => { - securityCache.listParents('🌶', {} as SecurityCacheMemberModel, {page: 1, perPage: 20, recursive: true}); + it('specifies the right query parameters in the url if any', async () => { + await securityCache.listParents('🌶', {} as SecurityCacheMemberModel, { + page: 1, + perPage: 20, + recursive: true, + }); expect(api.post).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/securitycache/entities/🌶/members/parents?page=1&perPage=20&recursive=true`, @@ -135,22 +141,22 @@ describe('securityCache', () => { describe('schedules', () => { const securityProviderId = 'SECURITY_ID'; - it('should make a GET call to the specific securityCache url to fetch the schedules', () => { - securityCache.listSchedules(); + it('should make a GET call to the specific securityCache url to fetch the schedules', async () => { + await securityCache.listSchedules(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/schedules`); }); - it('should make a GET call to the specific securityProvider url to fetch the schedules', () => { - securityCache.getSchedules(securityProviderId); + it('should make a GET call to the specific securityProvider url to fetch the schedules', async () => { + await securityCache.getSchedules(securityProviderId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SecurityCache.providersUrl}/${securityProviderId}/schedules`); }); - it('should make a PUT call to the specific securityProvider url to update a schedule', () => { + it('should make a PUT call to the specific securityProvider url to update a schedule', async () => { const scheduleId = 'SCHEDULE_ID'; const scheduleConfig: ScheduleModel = {id: scheduleId, enabled: true}; - securityCache.updateSchedule(securityProviderId, scheduleConfig); + await securityCache.updateSchedule(securityProviderId, scheduleConfig); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${SecurityCache.providersUrl}/${securityProviderId}/schedules/${scheduleId}`, @@ -161,40 +167,40 @@ describe('securityCache', () => { describe('providers', () => { const providerId = 'PROVIDER_ID'; - it('should make a GET call to the specific securityCache url to fetch a provider', () => { - securityCache.getProvider(providerId); + it('should make a GET call to the specific securityCache url to fetch a provider', async () => { + await securityCache.getProvider(providerId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SecurityCache.providersUrl}/${providerId}`); }); - it('should make a PUT call to the specific securityCache url to create or update a provider', () => { + it('should make a PUT call to the specific securityCache url to create or update a provider', async () => { const providerUpdate: SecurityProviderModel = {id: providerId, name: 'Test Security Provider'}; - securityCache.createOrUpdateProvider(providerUpdate); + await securityCache.createOrUpdateProvider(providerUpdate); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${SecurityCache.providersUrl}/${providerId}`, providerUpdate); }); - it('should make a DELETE call to the specific securityCache url to delete a provider', () => { - securityCache.deleteProvider(providerId); + it('should make a DELETE call to the specific securityCache url to delete a provider', async () => { + await securityCache.deleteProvider(providerId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${SecurityCache.providersUrl}/${providerId}`); }); }); describe('refresh', () => { - it('should make a POST call to the securityCache refreshCache url', () => { - securityCache.refreshCache(); + it('should make a POST call to the securityCache refreshCache url', async () => { + await securityCache.refreshCache(); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/refresh`); }); - it('should make a POST call to the security Provider refresh url', () => { - securityCache.refreshProvider('PROVIDER_ID'); + it('should make a POST call to the security Provider refresh url', async () => { + await securityCache.refreshProvider('PROVIDER_ID'); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/PROVIDER_ID/refresh`); }); - it('should make a POST call to the security Identity refresh url', () => { + it('should make a POST call to the security Identity refresh url', async () => { const identityModel: SecurityCacheMemberModel = { infos: [ { @@ -206,29 +212,29 @@ describe('securityCache', () => { provider: '📥', type: PermissionIdentityType.Group, }; - securityCache.refreshIdentity(identityModel); + await securityCache.refreshIdentity(identityModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/refresh/entity`, identityModel); }); - it('should make a POST when canceling a refresh operation', () => { + it('should make a POST when canceling a refresh operation', async () => { const PROVIDER_ID = 'OhnoOhNoNONo'; - securityCache.cancelRefresh(PROVIDER_ID); + await securityCache.cancelRefresh(PROVIDER_ID); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SecurityCache.providersUrl}/${PROVIDER_ID}/refresh/cancel`); }); }); describe('status', () => { - it('should make a get call to the specific securityCache url to fetch the global status', () => { - securityCache.getStatus(); + it('should make a get call to the specific securityCache url to fetch the global status', async () => { + await securityCache.getStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/status`); }); }); describe('getProviderEntity', () => { - it('should make a POST call to the specified security provider member', () => { + it('should make a POST call to the specified security provider member', async () => { const member: SecurityCacheMemberModel = { infos: [ { @@ -241,7 +247,7 @@ describe('securityCache', () => { type: PermissionIdentityType.Group, }; - securityCache.getProviderEntity('🏀', member); + await securityCache.getProviderEntity('🏀', member); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${SecurityCache.cacheUrl}/entities/🏀/entity`, member); diff --git a/src/resources/Sources/Sources.ts b/src/resources/Sources/Sources.ts index 9f078f666..8a3098e2e 100644 --- a/src/resources/Sources/Sources.ts +++ b/src/resources/Sources/Sources.ts @@ -49,6 +49,7 @@ export default class Sources extends Resource { } /** + * @param params * @description New API resource for the list of sources * @experimental */ diff --git a/src/resources/Sources/SourcesDatasets/tests/SourcesDatasets.spec.ts b/src/resources/Sources/SourcesDatasets/tests/SourcesDatasets.spec.ts index 87ea13a0f..e9fa10fb0 100644 --- a/src/resources/Sources/SourcesDatasets/tests/SourcesDatasets.spec.ts +++ b/src/resources/Sources/SourcesDatasets/tests/SourcesDatasets.spec.ts @@ -4,12 +4,10 @@ import SourcesDatasets from '../SourcesDatasets.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SourcesDatasets', () => { let dataset: SourcesDatasets; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,16 +15,16 @@ describe('SourcesDatasets', () => { }); describe('list', () => { - it('makes a GET call to the specific Dataset url', () => { - dataset.list(); + it('makes a GET call to the specific Dataset url', async () => { + await dataset.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/sources/datasets'); }); }); describe('import', () => { - it('makes a PUT call to the specific SourcesDatasets endpoint', () => { - dataset.import(DatasetType.web); + it('makes a PUT call to the specific SourcesDatasets endpoint', async () => { + await dataset.import(DatasetType.web); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -37,8 +35,8 @@ describe('SourcesDatasets', () => { }); describe('progress', () => { - it('makes a GET call to the specific SourcesDatasets endpoint', () => { - dataset.progress('randomId'); + it('makes a GET call to the specific SourcesDatasets endpoint', async () => { + await dataset.progress('randomId'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( diff --git a/src/resources/Sources/SourcesFeedback/tests/SourcesFeedback.spec.ts b/src/resources/Sources/SourcesFeedback/tests/SourcesFeedback.spec.ts index 303eba30c..9eb0c9e80 100644 --- a/src/resources/Sources/SourcesFeedback/tests/SourcesFeedback.spec.ts +++ b/src/resources/Sources/SourcesFeedback/tests/SourcesFeedback.spec.ts @@ -5,12 +5,10 @@ import {FeedbackPayload} from '../SourcesFeedbackInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SourcesFeedback', () => { let sourceFeedback: SourcesFeedback; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,9 +16,9 @@ describe('SourcesFeedback', () => { }); describe('sendFeedback', () => { - it('should make a POST call to the specific feedback url', () => { + it('should make a POST call to the specific feedback url', async () => { const feedback = {message: 'allo!'} as FeedbackPayload; - sourceFeedback.sendFeedback(FeedbackConsumerType.SOURCE_MANAGEMENT_IMPROVEMENTS, feedback); + await sourceFeedback.sendFeedback(FeedbackConsumerType.SOURCE_MANAGEMENT_IMPROVEMENTS, feedback); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${SourcesFeedback.baseUrl}?feedbackConsumerType=SOURCE_MANAGEMENT_IMPROVEMENTS`, diff --git a/src/resources/Sources/SourcesFields/tests/SourcesFields.spec.ts b/src/resources/Sources/SourcesFields/tests/SourcesFields.spec.ts index a9d31f2cd..78132e8a5 100644 --- a/src/resources/Sources/SourcesFields/tests/SourcesFields.spec.ts +++ b/src/resources/Sources/SourcesFields/tests/SourcesFields.spec.ts @@ -4,12 +4,10 @@ import {ListSourcesFieldsParams, SourceFieldModel} from '../SourcesFieldsInterfa jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SourcesFields', () => { let field: SourcesFields; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,20 +15,20 @@ describe('SourcesFields', () => { }); describe('list', () => { - it('should make a GET call to the specific SourceField url', () => { + it('should make a GET call to the specific SourceField url', async () => { const params: ListSourcesFieldsParams = {}; - field.list(params); + await field.list(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/organizations/{organizationName}/sources/page/fields'); }); }); describe('get', () => { - it('should make a GET call to the specific SourceField url', () => { + it('should make a GET call to the specific SourceField url', async () => { const fieldId = '🍓'; - field.get(fieldId); + await field.get(fieldId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/sources/fields/${fieldId}?includeMappings=true`, @@ -39,21 +37,21 @@ describe('SourcesFields', () => { }); describe('create', () => { - it('should make a POST call to the specific SourceField url', () => { + it('should make a POST call to the specific SourceField url', async () => { const fieldModel: SourceFieldModel = {}; - field.create(fieldModel); + await field.create(fieldModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith('/rest/organizations/{organizationName}/sources/fields', fieldModel); }); }); describe('update', () => { - it('should make a PUT call to the specific SourceField url', () => { + it('should make a PUT call to the specific SourceField url', async () => { const fieldId = '🍰'; const fieldModel: SourceFieldModel = {}; - field.update(fieldId, fieldModel); + await field.update(fieldId, fieldModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/sources/fields/${fieldId}`, diff --git a/src/resources/Sources/SourcesInterfaces.ts b/src/resources/Sources/SourcesInterfaces.ts index cb7f582d1..2ac241081 100644 --- a/src/resources/Sources/SourcesInterfaces.ts +++ b/src/resources/Sources/SourcesInterfaces.ts @@ -58,6 +58,7 @@ export interface ExtendedConfig { export interface RawSourceConfig extends GranularResource { additionalComments?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any additionalInfos?: any; configuration?: ExtendedConfig; crawlerInstanceType?: string; @@ -131,6 +132,7 @@ export interface CreateSourceModel extends SourceModel, SourcesSubInterface.Sour passwordInputValue?: string; usernameInputName?: string; usernameInputValue?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } diff --git a/src/resources/Sources/SourcesMappings/tests/SourcesMappings.spec.ts b/src/resources/Sources/SourcesMappings/tests/SourcesMappings.spec.ts index 1e4ceaa66..6fa422dd2 100644 --- a/src/resources/Sources/SourcesMappings/tests/SourcesMappings.spec.ts +++ b/src/resources/Sources/SourcesMappings/tests/SourcesMappings.spec.ts @@ -4,12 +4,10 @@ import {MappingsConfiguration} from '../SourcesMappingsInterfaces.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SourcesMappings', () => { let mapping: SourcesMappings; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,17 +15,17 @@ describe('SourcesMappings', () => { }); describe('get', () => { - it('should make a GET call to the specific SourceMapping url', () => { + it('should make a GET call to the specific SourceMapping url', async () => { const sourceId = '🍓'; - mapping.get(sourceId); + await mapping.get(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/sources/${sourceId}/mappings`); }); }); describe('update', () => { - it('should make a PUT call to the specific SourceMapping url', () => { + it('should make a PUT call to the specific SourceMapping url', async () => { const sourceId = '🍰'; const mappingsConfiguration: MappingsConfiguration = { common: { @@ -36,7 +34,7 @@ describe('SourcesMappings', () => { types: [], }; - mapping.update(sourceId, mappingsConfiguration); + await mapping.update(sourceId, mappingsConfiguration); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/sources/${sourceId}/mappings?rebuild=false`, @@ -44,7 +42,7 @@ describe('SourcesMappings', () => { ); }); - it('should make a PUT call to the specific SourceMapping url and rebuild', () => { + it('should make a PUT call to the specific SourceMapping url and rebuild', async () => { const sourceId = '🍰'; const mappingsConfiguration: MappingsConfiguration = { common: { @@ -53,7 +51,7 @@ describe('SourcesMappings', () => { types: [], }; - mapping.update(sourceId, mappingsConfiguration, true); + await mapping.update(sourceId, mappingsConfiguration, true); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/sources/${sourceId}/mappings?rebuild=true`, diff --git a/src/resources/Sources/SourcesMetadata/SourcesMetadataInterfaces.ts b/src/resources/Sources/SourcesMetadata/SourcesMetadataInterfaces.ts index 59cadd43e..713bfafe5 100644 --- a/src/resources/Sources/SourcesMetadata/SourcesMetadataInterfaces.ts +++ b/src/resources/Sources/SourcesMetadata/SourcesMetadataInterfaces.ts @@ -19,6 +19,7 @@ export interface MetadataValue { /** * The metadata value */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any metadataValue: any; /** * The number of times the value has been seen on documents diff --git a/src/resources/Sources/SourcesMetadata/tests/SourcesMetadata.spec.ts b/src/resources/Sources/SourcesMetadata/tests/SourcesMetadata.spec.ts index f2da70568..ad8a8e1b9 100644 --- a/src/resources/Sources/SourcesMetadata/tests/SourcesMetadata.spec.ts +++ b/src/resources/Sources/SourcesMetadata/tests/SourcesMetadata.spec.ts @@ -3,12 +3,10 @@ import SourcesMetadata from '../SourcesMetadata.js'; jest.mock('../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('SourcesMetadata', () => { let metadata: SourcesMetadata; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -16,20 +14,20 @@ describe('SourcesMetadata', () => { }); describe('getReport', () => { - it('should make a GET call to the specific SourceMetadata url', () => { + it('should make a GET call to the specific SourceMetadata url', async () => { const sourceId = 'ben&flo'; - metadata.getReport(sourceId); + await metadata.getReport(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`/rest/organizations/{organizationName}/sources/${sourceId}/metadata`); }); }); describe('generateRepost', () => { - it('should make a POST call to the specific SourceMetadata url', () => { + it('should make a POST call to the specific SourceMetadata url', async () => { const sourceId = 'ben&flo'; - metadata.generateReport(sourceId); + await metadata.generateReport(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/sources/${sourceId}/metadata`, @@ -38,10 +36,10 @@ describe('SourcesMetadata', () => { }); describe('getReportStatus', () => { - it('should make a GET call to the specific SourceMetadataStatus url', () => { + it('should make a GET call to the specific SourceMetadataStatus url', async () => { const sourceId = 'ben&flo'; - metadata.getReportStatus(sourceId); + await metadata.getReportStatus(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `/rest/organizations/{organizationName}/sources/${sourceId}/metadata/status`, diff --git a/src/resources/Sources/SourcesSubInterfaces/Authentification.ts b/src/resources/Sources/SourcesSubInterfaces/Authentification.ts index 602dd83b3..51695faff 100644 --- a/src/resources/Sources/SourcesSubInterfaces/Authentification.ts +++ b/src/resources/Sources/SourcesSubInterfaces/Authentification.ts @@ -28,6 +28,7 @@ export interface FormAuthenticationConfig { formUrl?: string; inputs?: FormInput[]; javaScriptLoadingDelayInMilliseconds?: number; + // eslint-disable-next-line @typescript-eslint/no-explicit-any customLoginSequence?: any; } diff --git a/src/resources/Sources/SourcesSubInterfaces/Document.ts b/src/resources/Sources/SourcesSubInterfaces/Document.ts index e58b2bcf0..b343de576 100644 --- a/src/resources/Sources/SourcesSubInterfaces/Document.ts +++ b/src/resources/Sources/SourcesSubInterfaces/Document.ts @@ -16,8 +16,10 @@ export interface CharsetDetectionHint { } export interface DocumentProcessorParameters { + // eslint-disable-next-line @typescript-eslint/no-explicit-any condition?: any; deleteOnError?: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any values?: any; } @@ -115,6 +117,7 @@ export interface DocumentProcessorConfig { export interface DocumentConfig { documentProcessorConfig?: DocumentProcessorConfig; indexUri?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any parameters?: any; postConversions?: DocumentProcessor[]; preConversions?: DocumentProcessor[]; diff --git a/src/resources/Sources/SourcesSubInterfaces/ExtendedDataFile.ts b/src/resources/Sources/SourcesSubInterfaces/ExtendedDataFile.ts index d55de7ae7..7b658627a 100644 --- a/src/resources/Sources/SourcesSubInterfaces/ExtendedDataFile.ts +++ b/src/resources/Sources/SourcesSubInterfaces/ExtendedDataFile.ts @@ -1,5 +1,6 @@ export interface ExtendedDataFile { data?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any extendedData?: any; sensitive?: boolean; } diff --git a/src/resources/Sources/SourcesSubInterfaces/Permission.ts b/src/resources/Sources/SourcesSubInterfaces/Permission.ts index b645ba2a4..68b008256 100644 --- a/src/resources/Sources/SourcesSubInterfaces/Permission.ts +++ b/src/resources/Sources/SourcesSubInterfaces/Permission.ts @@ -8,6 +8,7 @@ import { } from '../../Enums.js'; export interface SinglePermissionModel { + // eslint-disable-next-line @typescript-eslint/no-explicit-any additionalInfo?: any; allowed?: boolean; identity?: string; @@ -41,6 +42,7 @@ export interface DocumentPermissionModel { } export interface Permission { + // eslint-disable-next-line @typescript-eslint/no-explicit-any additionalInfo?: any; identity?: string; identityType?: PermissionIdentityType; diff --git a/src/resources/Sources/tests/Sources.spec.ts b/src/resources/Sources/tests/Sources.spec.ts index 16ecdc627..55bdf7e2b 100644 --- a/src/resources/Sources/tests/Sources.spec.ts +++ b/src/resources/Sources/tests/Sources.spec.ts @@ -12,12 +12,10 @@ import SourcesMetadata from '../SourcesMetadata/SourcesMetadata.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Sources', () => { let source: Sources; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -25,198 +23,198 @@ describe('Sources', () => { }); describe('create', () => { - it('should make a POST call to the Sources base url', () => { + it('should make a POST call to the Sources base url', async () => { const sourceModel: New = {}; - source.create(sourceModel); + await source.create(sourceModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Sources.baseUrl, sourceModel); }); }); describe('list', () => { - it('should make a GET call to the specific Sources url', () => { - source.list(); + it('should make a GET call to the specific Sources url', async () => { + await source.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/pages`); }); }); describe('listOperationalStatus', () => { - it('should make a GET call to the specific Sources url', () => { - source.listOperationalStatus(); + it('should make a GET call to the specific Sources url', async () => { + await source.listOperationalStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/sourceoperationalstatus`); }); - it('should make a GET call with the correct stringFilterType', () => { + it('should make a GET call with the correct stringFilterType', async () => { const params = { stringFilterType: 'EXACTMATCH', } as ListSourcesParams; - source.list(params); + await source.list(params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/pages?stringFilterType=EXACTMATCH`); }); }); describe('createFromRaw', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const rawSource: RawSourceConfig = {}; - source.createFromRaw(rawSource); + await source.createFromRaw(rawSource); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/raw`, rawSource); }); }); describe('delete', () => { - it('should make a DELETE call to the specific Sources url', () => { + it('should make a DELETE call to the specific Sources url', async () => { const sourceId = '🐱'; - source.delete(sourceId); + await source.delete(sourceId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}`); }); }); describe('get', () => { - it('should make a GET call to the specific Sources url', () => { + it('should make a GET call to the specific Sources url', async () => { const sourceId = '😽'; - source.get(sourceId); + await source.get(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}`); }); }); describe('update', () => { - it('should make a PUT call to the specific Sources url', () => { + it('should make a PUT call to the specific Sources url', async () => { const sourceId = '🙀'; const sourceModel: CreateSourceModel = {}; - source.update(sourceId, sourceModel); + await source.update(sourceId, sourceModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}`, sourceModel); }); }); describe('applyChanges', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '😾'; - source.applyChanges(sourceId); + await source.applyChanges(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/applyChanges`); }); }); describe('isDedicated', () => { - it('should make a GET call to the specific Sources url', () => { + it('should make a GET call to the specific Sources url', async () => { const sourceId = '😼'; - source.isDedicated(sourceId); + await source.isDedicated(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/dedicated`); }); }); describe('setDedicated', () => { - it('should make a PUT call to the specific Sources url', () => { + it('should make a PUT call to the specific Sources url', async () => { const sourceId = '😹'; - source.setDedicated(sourceId); + await source.setDedicated(sourceId); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/dedicated`, {}); }); }); describe('dumpRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '😿'; - source.dumpRefresh(sourceId); + await source.dumpRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/dump`); }); }); describe('duplicate', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐾'; const newSourceName = 'half-new'; - source.duplicate(sourceId, newSourceName); + await source.duplicate(sourceId, newSourceName); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/duplicate?newSourceName=half-new`); }); }); describe('evictCachedCrawlerConfig', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '😸'; - source.evictCachedCrawlerConfig(sourceId); + await source.evictCachedCrawlerConfig(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/evictCachedCrawlerConfig`); }); }); describe('fullRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '😺'; - source.fullRefresh(sourceId); + await source.fullRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/fullRefresh`); }); }); describe('incrementalRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '😻'; - source.incrementalRefresh(sourceId); + await source.incrementalRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/incrementalRefresh`); }); }); describe('listSourceItemTypes', () => { - it('should make a GET call to the specific Sources url', () => { + it('should make a GET call to the specific Sources url', async () => { const sourceId = '🦊'; - source.listSourceItemTypes(sourceId); + await source.listSourceItemTypes(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/itemTypes`); }); }); describe('getLightSource', () => { - it('should make a GET call to the specific Sources url', () => { + it('should make a GET call to the specific Sources url', async () => { const sourceId = 'not-enough-cats'; - source.getLightSource(sourceId); + await source.getLightSource(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/light`); }); }); describe('pauseRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐺'; - source.pauseRefresh(sourceId); + await source.pauseRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/pauseRefresh`); }); }); describe('setPushRefreshStatus', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐶'; const activityOperation = ActivityOperation.REBUILD; - source.setPushRefreshStatus(sourceId, activityOperation); + await source.setPushRefreshStatus(sourceId, activityOperation); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Sources.baseUrl}/${sourceId}/pushRefresh?activityOperation=REBUILD`, @@ -225,95 +223,95 @@ describe('Sources', () => { }); describe('getRawSource', () => { - it('should make a GET call to the specific Sources url', () => { + it('should make a GET call to the specific Sources url', async () => { const sourceId = '🐕'; - source.getRawSource(sourceId); + await source.getRawSource(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/raw`); }); }); describe('updateRawSource', () => { - it('should make a PUT call to the specific Sources url', () => { + it('should make a PUT call to the specific Sources url', async () => { const sourceId = '🦮'; const config = {} as RawSourceConfig; - source.updateRawSource(sourceId, config); + await source.updateRawSource(sourceId, config); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/raw`, config); }); }); describe('rebuild', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐕‍🦺'; - source.rebuild(sourceId); + await source.rebuild(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/rebuild`); }); }); describe('resumeRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐩'; - source.resumeRefresh(sourceId); + await source.resumeRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/resumeRefresh`); }); }); describe('retryCreation', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🌭'; - source.retryCreation(sourceId); + await source.retryCreation(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/retryCreation`); }); }); describe('listSchedules', () => { - it('should make a GET call to the specific Sources url', () => { + it('should make a GET call to the specific Sources url', async () => { const sourceId = 'not-enough-dogs'; - source.listSchedules(sourceId); + await source.listSchedules(sourceId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/schedules`); }); }); describe('createSchedule', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = 'some-other-animals'; const schedule = {} as ScheduleModel; - source.createSchedule(sourceId, schedule); + await source.createSchedule(sourceId, schedule); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/schedules`, schedule); }); }); describe('deleteSchedule', () => { - it('should make a DELETE call to the specific Sources url', () => { + it('should make a DELETE call to the specific Sources url', async () => { const sourceId = '🐉'; const scheduleId = '🐲'; - source.deleteSchedule(sourceId, scheduleId); + await source.deleteSchedule(sourceId, scheduleId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/schedules/${scheduleId}`); }); }); describe('updateSchedule', () => { - it('should make a PUT call to the specific Sources url', () => { + it('should make a PUT call to the specific Sources url', async () => { const sourceId = '🐍'; const scheduleId = '🐇'; const sourceSchedule = {} as ScheduleModel; - source.updateSchedule(sourceId, scheduleId, sourceSchedule); + await source.updateSchedule(sourceId, scheduleId, sourceSchedule); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( `${Sources.baseUrl}/${sourceId}/schedules/${scheduleId}`, @@ -323,31 +321,31 @@ describe('Sources', () => { }); describe('startRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐰'; - source.startRefresh(sourceId); + await source.startRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/startRefresh`); }); }); describe('stopRefresh', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐨'; - source.stopRefresh(sourceId); + await source.stopRefresh(sourceId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Sources.baseUrl}/${sourceId}/stopRefresh`); }); }); describe('abortTaskForActivity', () => { - it('should make a POST call to the specific Sources url', () => { + it('should make a POST call to the specific Sources url', async () => { const sourceId = '🐼'; const activityId = 'not-enough-emoji'; - source.abortTaskForActivity(sourceId, activityId); + await source.abortTaskForActivity(sourceId, activityId); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith( `${Sources.baseUrl}/${sourceId}/tasks/abort?activityId=not-enough-emoji`, diff --git a/src/resources/UsageAnalytics/Read/Administration/Administration.ts b/src/resources/UsageAnalytics/Read/Administration/Administration.ts index ebdcb08e3..b6874de2a 100644 --- a/src/resources/UsageAnalytics/Read/Administration/Administration.ts +++ b/src/resources/UsageAnalytics/Read/Administration/Administration.ts @@ -18,7 +18,6 @@ export default class Administration extends ReadServiceResource { /** * Edit an account. - * * @param model The account information. */ updateAccount(model: AccountInfoModelV15) { @@ -27,6 +26,7 @@ export default class Administration extends ReadServiceResource { /** * Get example values that would be rejected by strict validation for the specified dimension. + * @param params */ getStrictValidationTest(params: StrictValidationTestParams) { return this.api.get( diff --git a/src/resources/UsageAnalytics/Read/Administration/tests/Administration.spec.ts b/src/resources/UsageAnalytics/Read/Administration/tests/Administration.spec.ts index f6e7ed884..2fb9bc11d 100644 --- a/src/resources/UsageAnalytics/Read/Administration/tests/Administration.spec.ts +++ b/src/resources/UsageAnalytics/Read/Administration/tests/Administration.spec.ts @@ -5,12 +5,10 @@ import {AccountInfoModelV15} from '../AdministrationInterfaces.js'; jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Administation', () => { let administation: Administration; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,8 +16,8 @@ describe('Administation', () => { }); describe('getAccount', () => { - it('should make a get call to the Administration base url + /account', () => { - administation.getAccount(); + it('should make a get call to the Administration base url + /account', async () => { + await administation.getAccount(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Administration.baseUrl}/account`); @@ -27,8 +25,8 @@ describe('Administation', () => { }); describe('getStrictValidationTest', () => { - it('should make a get call to the Administration base url + /strictValidationTest', () => { - administation.getStrictValidationTest({from: 'yyyy-mm-dd', to: 'yyyy-mm-dd', d: 'allo'}); + it('should make a get call to the Administration base url + /strictValidationTest', async () => { + await administation.getStrictValidationTest({from: 'yyyy-mm-dd', to: 'yyyy-mm-dd', d: 'allo'}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( @@ -38,13 +36,13 @@ describe('Administation', () => { }); describe('updateAccount', () => { - it('should make a put call to the Administration base url + /account', () => { + it('should make a put call to the Administration base url + /account', async () => { const model: AccountInfoModelV15 = { internalEventIps: ['🍇', '👌', '🍷', '😵'], useStrictFieldValidation: true, }; - administation.updateAccount(model); + await administation.updateAccount(model); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Administration.baseUrl}/account`, model); diff --git a/src/resources/UsageAnalytics/Read/DataHealth/DataHealth.ts b/src/resources/UsageAnalytics/Read/DataHealth/DataHealth.ts index 50325a637..fb52d268b 100644 --- a/src/resources/UsageAnalytics/Read/DataHealth/DataHealth.ts +++ b/src/resources/UsageAnalytics/Read/DataHealth/DataHealth.ts @@ -25,6 +25,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get health information about events. + * @param params */ listEvents(params: DataHealthListEventsParameters) { return this.api.get( @@ -34,6 +35,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get original event payload. + * @param params */ getEventPayload(params: DataHealthGetEventPayloadParams) { return this.api.get( @@ -43,6 +45,7 @@ export default class DataHealth extends ReadServiceResource { /** * List applicable facet values in the specified time range. + * @param params */ listFacetValues(params: DataHealthListFacetValueParams) { return this.api.get( @@ -52,6 +55,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get general data health information. + * @param params */ getOverview(params: DataHealthGetOverviewParams) { return this.api.get( @@ -61,6 +65,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get health information about groups of validation rules. + * @param params */ getGroupListing(params: DataHealthGetGroupListingParams) { return this.api.get( @@ -70,6 +75,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get health information about validation rules of a specific group. + * @param params */ getGroupDetail(params: DataHealthGetGroupDetailParams) { return this.api.get( @@ -79,6 +85,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get a list of unique tracking ids. + * @param params */ getTrackingIds(params: DataHealthGetTrackingIdsParams) { return this.api.get( @@ -88,6 +95,7 @@ export default class DataHealth extends ReadServiceResource { /** * Get problems about events. + * @param params */ getEventsProblems(params: DataHealthGetEventProblemsParams) { return this.api.get( @@ -97,7 +105,6 @@ export default class DataHealth extends ReadServiceResource { /** * Get failed instances for a data health criterion - * * @param params Parameters to fetch data health failed instances. */ getFailedInstances(params: DataHealthGetFailedInstancesParams) { @@ -108,13 +115,12 @@ export default class DataHealth extends ReadServiceResource { /** * Build the request path, handling the optional `org` query parameter. - * * @param route The path part of the request. * @param queryParams Optional query parameters object. * If this object contains an `org` property, it will override the value from the configuration. * @returns The request path including formatted query parameters. */ - protected buildPathWithOrg(route: string, queryParams?: any): string { + protected buildPathWithOrg(route: string, queryParams?: object): string { return super.buildPath(route, {org: this.api.organizationId, ...queryParams}); } } diff --git a/src/resources/UsageAnalytics/Read/DataHealth/tests/DataHealth.spec.ts b/src/resources/UsageAnalytics/Read/DataHealth/tests/DataHealth.spec.ts index 0a8773fcc..f3c8b2229 100644 --- a/src/resources/UsageAnalytics/Read/DataHealth/tests/DataHealth.spec.ts +++ b/src/resources/UsageAnalytics/Read/DataHealth/tests/DataHealth.spec.ts @@ -29,11 +29,11 @@ describe('DataHealth', () => { }); describe('listEvents', () => { - it('should make a GET call to the data health list events url', () => { + it('should make a GET call to the data health list events url', async () => { const dataHealthListEventsParams: DataHealthListEventsParameters = { ...baseParams, }; - dataHealth.listEvents(dataHealthListEventsParams); + await dataHealth.listEvents(dataHealthListEventsParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/events?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z`, @@ -42,12 +42,12 @@ describe('DataHealth', () => { }); describe('getEventPayload', () => { - it('should make a GET call to the data health get event payload url', () => { + it('should make a GET call to the data health get event payload url', async () => { const dataHealthGetEventPayloadParams: DataHealthGetEventPayloadParams = { eventId: 'somePotato', timestamp: baseParams.from, }; - dataHealth.getEventPayload(dataHealthGetEventPayloadParams); + await dataHealth.getEventPayload(dataHealthGetEventPayloadParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/events/payload?org=someOrgId&eventId=somePotato×tamp=1986-04-26T01%3A23%3A58.000Z`, @@ -56,12 +56,12 @@ describe('DataHealth', () => { }); describe('listFacetValues', () => { - it('should make a GET call to the data health list facets url', () => { + it('should make a GET call to the data health list facets url', async () => { const dataHealthListFacetValuesParams: DataHealthListFacetValueParams = { ...baseParams, facet: 'potate', }; - dataHealth.listFacetValues(dataHealthListFacetValuesParams); + await dataHealth.listFacetValues(dataHealthListFacetValuesParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/facets?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z&facet=potate`, @@ -70,13 +70,13 @@ describe('DataHealth', () => { }); describe('getOverview', () => { - it('should make a GET call to the data health get overview url', () => { + it('should make a GET call to the data health get overview url', async () => { const dataHealthGetOverviewParams: DataHealthGetOverviewParams = { ...baseParams, category: 'unicorns', trackingId: ['PetShop'], }; - dataHealth.getOverview(dataHealthGetOverviewParams); + await dataHealth.getOverview(dataHealthGetOverviewParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/overview?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z&category=unicorns&trackingId=PetShop`, @@ -85,13 +85,13 @@ describe('DataHealth', () => { }); describe('getGroupListing', () => { - it('should make a GET call to the data health get group listing url', () => { + it('should make a GET call to the data health get group listing url', async () => { const dataHealthGetGroupListingParams: DataHealthGetGroupListingParams = { ...baseParams, category: 'unicorns', trackingId: ['PetShop'], }; - dataHealth.getGroupListing(dataHealthGetGroupListingParams); + await dataHealth.getGroupListing(dataHealthGetGroupListingParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/groups?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z&category=unicorns&trackingId=PetShop`, @@ -100,14 +100,14 @@ describe('DataHealth', () => { }); describe('getGroupDetail', () => { - it('should make a GET call to the data health get group detail url', () => { + it('should make a GET call to the data health get group detail url', async () => { const dataHealthGetGroupDetailParams: DataHealthGetGroupDetailParams = { ...baseParams, category: 'unicorns', group: 'horned', trackingId: ['PetShop'], }; - dataHealth.getGroupDetail(dataHealthGetGroupDetailParams); + await dataHealth.getGroupDetail(dataHealthGetGroupDetailParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/groups/detail?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z&category=unicorns&group=horned&trackingId=PetShop`, @@ -116,11 +116,11 @@ describe('DataHealth', () => { }); describe('getTrackingIds', () => { - it('should make a GET call to the data health get tracking id url', () => { + it('should make a GET call to the data health get tracking id url', async () => { const dataHealthGetTrackingIdsParams: DataHealthGetTrackingIdsParams = { ...baseParams, }; - dataHealth.getTrackingIds(dataHealthGetTrackingIdsParams); + await dataHealth.getTrackingIds(dataHealthGetTrackingIdsParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/facets?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z&facet=TRACKING_ID`, @@ -129,11 +129,11 @@ describe('DataHealth', () => { }); describe('getEventsProblems', () => { - it('should make a GET call to the data health get events problems url', () => { + it('should make a GET call to the data health get events problems url', async () => { const datahealthGetEventsProblemsParams: DataHealthGetEventProblemsParams = { ...baseParams, }; - dataHealth.getEventsProblems(datahealthGetEventsProblemsParams); + await dataHealth.getEventsProblems(datahealthGetEventsProblemsParams); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${DataHealth.baseUrl}/events/problems?org=someOrgId&from=1986-04-26T01%3A23%3A58.000Z&to=1986-04-27T02%3A32%3A15.000Z`, diff --git a/src/resources/UsageAnalytics/Read/DataShare/DataShare.ts b/src/resources/UsageAnalytics/Read/DataShare/DataShare.ts index fb80a917b..109faf6d0 100644 --- a/src/resources/UsageAnalytics/Read/DataShare/DataShare.ts +++ b/src/resources/UsageAnalytics/Read/DataShare/DataShare.ts @@ -19,6 +19,7 @@ export default class DataShare extends ReadServiceResource { /** * Add a Snowflake account to Secure Data Sharing. + * @param params */ addSnowflakeAccount(params: SnowflakeAccountDataSharingParams) { return this.api.post(this.buildPathWithOrg(`${DataShare.baseUrl}/accounts`), params); @@ -26,6 +27,7 @@ export default class DataShare extends ReadServiceResource { /** * Removes a Snowflake account from Secure Data Sharing. + * @param params */ deleteSnowflakeAccount(params: SnowflakeAccountDataSharingParams) { return this.api.delete(this.buildPathWithOrg(`${DataShare.baseUrl}/accounts`, params)); diff --git a/src/resources/UsageAnalytics/Read/DataShare/tests/DataShare.spec.ts b/src/resources/UsageAnalytics/Read/DataShare/tests/DataShare.spec.ts index 18ce20d18..7d9762a3e 100644 --- a/src/resources/UsageAnalytics/Read/DataShare/tests/DataShare.spec.ts +++ b/src/resources/UsageAnalytics/Read/DataShare/tests/DataShare.spec.ts @@ -18,24 +18,24 @@ describe('DataShare', () => { }); describe('listSnowflakeAccount', () => { - it('should make a GET call to the snowflake data share accounts url', () => { - dataShare.listSnowflakeAccount(); + it('should make a GET call to the snowflake data share accounts url', async () => { + await dataShare.listSnowflakeAccount(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${DataShare.baseUrl}/accounts?org=someOrgId`); }); }); describe('addSnowflakeAccount', () => { - it('should make a POST call to the snowflake data share accounts url', () => { - dataShare.addSnowflakeAccount(dataShareParams); + it('should make a POST call to the snowflake data share accounts url', async () => { + await dataShare.addSnowflakeAccount(dataShareParams); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${DataShare.baseUrl}/accounts?org=someOrgId`, dataShareParams); }); }); describe('deleteSnowflakeAccount', () => { - it('should make a DELETE call to the snowflake data share accounts url', () => { - dataShare.deleteSnowflakeAccount(dataShareParams); + it('should make a DELETE call to the snowflake data share accounts url', async () => { + await dataShare.deleteSnowflakeAccount(dataShareParams); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith( `${DataShare.baseUrl}/accounts?org=someOrgId&accountLocator=Soubane&snowflakeRegion=LOUBAME`, @@ -44,8 +44,8 @@ describe('DataShare', () => { }); describe('listAllowedSnowflakeRegions', () => { - it('should make a GET call to the snowflake data share regions url', () => { - dataShare.listAllowedSnowflakeRegions(); + it('should make a GET call to the snowflake data share regions url', async () => { + await dataShare.listAllowedSnowflakeRegions(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${DataShare.baseUrl}/regions?org=someOrgId`); }); diff --git a/src/resources/UsageAnalytics/Read/Dimensions/Dimensions.ts b/src/resources/UsageAnalytics/Read/Dimensions/Dimensions.ts index 81ea37eef..0bb38c3f1 100644 --- a/src/resources/UsageAnalytics/Read/Dimensions/Dimensions.ts +++ b/src/resources/UsageAnalytics/Read/Dimensions/Dimensions.ts @@ -17,6 +17,7 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get all the dimensions. + * @param params */ list(params?: ListDimensionsParams) { return this.api.get(this.buildPathWithOrg(Dimensions.baseUrl, params)); @@ -24,6 +25,7 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get all the exportable dimensions. + * @param params */ listExportableDimensions(params?: ListDimensionsParams) { return this.api.get(this.buildPathWithOrg(`${Dimensions.baseUrl}/exportables`, params)); @@ -31,7 +33,6 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get a dimension. - * * @param apiName Format must be `EVENT.DIMENSION` where EVENT is the event type and DIMENSION is the name of the dimension. */ get(apiName: string) { @@ -40,8 +41,8 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get the values for a dimension. - * * @param dimension The dimension to fetch. + * @param params */ getValues(dimension: string, params?: GetDimensionValuesParams) { return this.api.get( @@ -51,7 +52,6 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get all the custom dimensions. - * * @param includeOnlyParents This will filter out dimensions which are covered by others. * Only parent/master dimensions will be output. */ @@ -63,6 +63,8 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Create a custom dimension. + * @param model + * @param params */ createCustomDimension(model: CustomDimensionModel, params: CreateCustomDimensionParams) { return this.api.post(this.buildPathWithOrg(`${Dimensions.baseUrl}/custom`, params), model); @@ -70,7 +72,6 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get a custom dimension. - * * @param apiName Format must be `EVENT.DIMENSION` where EVENT is the event type and DIMENSION is the name of the dimension. */ getCustomDimension(apiName: string) { @@ -81,8 +82,8 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get the values for a custom dimension. - * * @param dimension The dimension to fetch. + * @param params */ getCustomDimensionValues(dimension: string, params?: GetDimensionValuesParams) { return this.api.get( @@ -92,8 +93,8 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Create or edit a custom dimension. - * * @param apiName Format must be `EVENT.DIMENSION` where EVENT is the event type and DIMENSION is the name of the dimension. + * @param model * @param updatePastEvents Whether to update the custom dimension in past events (deprecated). */ updateCustomDimension(apiName: string, model: CustomDimensionModel, updatePastEvents = false) { @@ -105,7 +106,6 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Delete a custom dimension. - * * @param apiName Format must be `EVENT.DIMENSION` where EVENT is the event type and DIMENSION is the name of the dimension. */ deleteCustomDimension(apiName: string) { @@ -128,8 +128,8 @@ export default class Dimensions extends ReadServiceResource implements ReadServi /** * Get a list of dimensions that have data but are not created yet. - * * @param event The type of event for which to look for suggestions. + * @param params */ listUncreatedDimensions(event: DimensionEventTypes, params?: ListUncreatedDimensionsParams) { return this.api.get( diff --git a/src/resources/UsageAnalytics/Read/Dimensions/DimensionsInterfaces.ts b/src/resources/UsageAnalytics/Read/Dimensions/DimensionsInterfaces.ts index 393159478..d38af8677 100644 --- a/src/resources/UsageAnalytics/Read/Dimensions/DimensionsInterfaces.ts +++ b/src/resources/UsageAnalytics/Read/Dimensions/DimensionsInterfaces.ts @@ -117,7 +117,6 @@ export interface CreateCustomDimensionParams extends OrganizationParamParts { event?: string[]; /** * Whether to update the custom dimension in past events. - * * @deprecated */ updatePastEvents?: boolean; diff --git a/src/resources/UsageAnalytics/Read/Dimensions/tests/Dimensions.spec.ts b/src/resources/UsageAnalytics/Read/Dimensions/tests/Dimensions.spec.ts index d242ff90a..ca8a985bf 100644 --- a/src/resources/UsageAnalytics/Read/Dimensions/tests/Dimensions.spec.ts +++ b/src/resources/UsageAnalytics/Read/Dimensions/tests/Dimensions.spec.ts @@ -5,12 +5,10 @@ import {CreateCustomDimensionParams, CustomDimensionModel} from '../DimensionsIn jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Dimensions', () => { let dimensions: Dimensions; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,8 +16,8 @@ describe('Dimensions', () => { }); describe('list', () => { - it('should make a GET call to the Dimensions base url', () => { - dimensions.list(); + it('should make a GET call to the Dimensions base url', async () => { + await dimensions.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Dimensions.baseUrl); @@ -27,8 +25,8 @@ describe('Dimensions', () => { }); describe('listExportableDimensions', () => { - it('should make a GET call to the specific Dimensions url', () => { - dimensions.listExportableDimensions(); + it('should make a GET call to the specific Dimensions url', async () => { + await dimensions.listExportableDimensions(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/exportables`); @@ -36,9 +34,9 @@ describe('Dimensions', () => { }); describe('get', () => { - it('should make a GET call to the specific Dimensions url', () => { + it('should make a GET call to the specific Dimensions url', async () => { const apiName = '🌞'; - dimensions.get(apiName); + await dimensions.get(apiName); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/${apiName}`); @@ -46,9 +44,9 @@ describe('Dimensions', () => { }); describe('getValues', () => { - it('should make a GET call to the specific Dimensions url', () => { + it('should make a GET call to the specific Dimensions url', async () => { const dimension = '😎'; - dimensions.getValues(dimension); + await dimensions.getValues(dimension); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/${dimension}/values`); @@ -56,8 +54,8 @@ describe('Dimensions', () => { }); describe('listCustomDimensions', () => { - it('should make a GET call to the specific Dimensions url', () => { - dimensions.listCustomDimensions(true); + it('should make a GET call to the specific Dimensions url', async () => { + await dimensions.listCustomDimensions(true); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom?includeOnlyParents=true`); @@ -65,7 +63,7 @@ describe('Dimensions', () => { }); describe('createCustomDimension', () => { - it('should make a POST call to the specific Dimensions url', () => { + it('should make a POST call to the specific Dimensions url', async () => { const model: CustomDimensionModel = { displayName: '🆒', type: DimensionType.TEXT, @@ -75,7 +73,7 @@ describe('Dimensions', () => { name: 'new-dimension', }; - dimensions.createCustomDimension(model, params); + await dimensions.createCustomDimension(model, params); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom?name=${params.name}`, model); @@ -83,9 +81,9 @@ describe('Dimensions', () => { }); describe('getCustomDimension', () => { - it('should make a GET call to the specific Dimensions url', () => { + it('should make a GET call to the specific Dimensions url', async () => { const apiName = '🥵'; - dimensions.getCustomDimension(apiName); + await dimensions.getCustomDimension(apiName); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom/${apiName}`); @@ -93,9 +91,9 @@ describe('Dimensions', () => { }); describe('getCustomDimensionValues', () => { - it('should make a GET call to the specific Dimensions url', () => { + it('should make a GET call to the specific Dimensions url', async () => { const dimension = '🕶️'; - dimensions.getCustomDimensionValues(dimension); + await dimensions.getCustomDimensionValues(dimension); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom/${dimension}/values`); @@ -103,13 +101,13 @@ describe('Dimensions', () => { }); describe('updateCustomDimension', () => { - it('should make a PUT call to the specific Dimensions url', () => { + it('should make a PUT call to the specific Dimensions url', async () => { const apiName = '🏖️'; const model: CustomDimensionModel = { displayName: '🦈', type: DimensionType.TEXT, }; - dimensions.updateCustomDimension(apiName, model); + await dimensions.updateCustomDimension(apiName, model); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -120,9 +118,9 @@ describe('Dimensions', () => { }); describe('deleteCustomDimension', () => { - it('should make a DELETE call to the specific Dimensions url', () => { + it('should make a DELETE call to the specific Dimensions url', async () => { const apiName = '🌊'; - dimensions.deleteCustomDimension(apiName); + await dimensions.deleteCustomDimension(apiName); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom/${apiName}`); @@ -130,8 +128,8 @@ describe('Dimensions', () => { }); describe('getCustomDimensionStatus', () => { - it('should make a GET call to the specific Dimensions url', () => { - dimensions.getCustomDimensionStatus(); + it('should make a GET call to the specific Dimensions url', async () => { + await dimensions.getCustomDimensionStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom/status`); @@ -139,8 +137,8 @@ describe('Dimensions', () => { }); describe('checkCustomDimensionHealth', () => { - it('should make a GET call to the specific Dimensions url', () => { - dimensions.checkCustomDimensionHealth(); + it('should make a GET call to the specific Dimensions url', async () => { + await dimensions.checkCustomDimensionHealth(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom/monitoring/health`); @@ -148,9 +146,9 @@ describe('Dimensions', () => { }); describe('listUncreatedDimensions', () => { - it('should make a GET call to the specific Dimensions url', () => { + it('should make a GET call to the specific Dimensions url', async () => { const event: DimensionEventTypes = DimensionEventTypes.searches; - dimensions.listUncreatedDimensions(event); + await dimensions.listUncreatedDimensions(event); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/custom/${event}/suggestions`); @@ -158,8 +156,8 @@ describe('Dimensions', () => { }); describe('checkHealth', () => { - it('should make a GET call to the specific Dimensions url', () => { - dimensions.checkHealth(); + it('should make a GET call to the specific Dimensions url', async () => { + await dimensions.checkHealth(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/monitoring/health`); @@ -167,8 +165,8 @@ describe('Dimensions', () => { }); describe('checkStatus', () => { - it('should make a GET call to the specific Dimensions url', () => { - dimensions.checkStatus(); + it('should make a GET call to the specific Dimensions url', async () => { + await dimensions.checkStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Dimensions.baseUrl}/status`); diff --git a/src/resources/UsageAnalytics/Read/Exports/Exports.ts b/src/resources/UsageAnalytics/Read/Exports/Exports.ts index 55f71831d..b9d55621e 100644 --- a/src/resources/UsageAnalytics/Read/Exports/Exports.ts +++ b/src/resources/UsageAnalytics/Read/Exports/Exports.ts @@ -27,7 +27,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Generate an export. - * * @param params The parameters to generate the export with. */ generate(params: GenerateExportParams) { @@ -36,8 +35,8 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Generate an export with the parameters in the request body. - * * @param params The parameters to generate the export with, passed in the request body. + * @param args */ generateExportWithBody(params: GenerateExportWithBodyParams, args?: RequestInit) { return this.api.post(this.buildPathWithOrg(`${Exports.baseUrl}/create`), params, args); @@ -45,7 +44,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Get information on an export. - * * @param exportId The export's unique identifier. * @param redirect Whether to return a HTTP redirect to the actual file. */ @@ -55,7 +53,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Get the download link of an export. - * * @param exportId The export's unique identifier. */ getExportDownloadLink(exportId: string) { @@ -64,7 +61,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Delete an export. - * * @param exportId The export's unique identifier. */ delete(exportId: string) { @@ -73,7 +69,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Estimate the number of rows in an export. - * * @param params The date range and other parameters for the export. */ estimateRowsCount(params: EstimateExportParams) { @@ -82,7 +77,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Generate a visit export. - * * @param params The parameters to generate the visit export with. */ generateVisitExport(params: GenerateVisitExportParams) { @@ -91,8 +85,8 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Generate a visit export with the parameters in the request body. - * * @param params The parameters to generate the visit export with, passed in the request body. + * @param args */ generateVisitExportWithBody(params: GenerateVisitExportWithBodyParams, args?: RequestInit) { return this.api.post(this.buildPathWithOrg(`${Exports.baseUrl}/visits/create`), params, args); @@ -100,7 +94,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Estimate the number of rows in a visit export. - * * @param params The parameters of the visit export to estimate. */ estimateVisitExportRowsCount(params: EstimateVisitExportParams) { @@ -116,7 +109,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Create an export schedule. - * * @param model The export schedule to create. */ createSchedule(model: CreateExportScheduleModel) { @@ -125,7 +117,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Get information on an export schedule. - * * @param exportScheduleId The export schedule's unique identifier. */ getSchedule(exportScheduleId: string) { @@ -136,8 +127,8 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Update an existing export schedule. - * * @param exportScheduleId The export schedule's unique identifier. + * @param model */ updateSchedule(exportScheduleId: string, model: CreateExportScheduleModel) { return this.api.put( @@ -148,7 +139,6 @@ export default class Exports extends ReadServiceResource implements ReadServiceH /** * Delete an export schedule. - * * @param exportScheduleId The export schedule's unique identifier. */ deleteSchedule(exportScheduleId: string) { diff --git a/src/resources/UsageAnalytics/Read/Exports/tests/Exports.spec.ts b/src/resources/UsageAnalytics/Read/Exports/tests/Exports.spec.ts index 4954f050d..b10520d6e 100644 --- a/src/resources/UsageAnalytics/Read/Exports/tests/Exports.spec.ts +++ b/src/resources/UsageAnalytics/Read/Exports/tests/Exports.spec.ts @@ -13,12 +13,10 @@ import { jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Exports', () => { let exports: Exports; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); diff --git a/src/resources/UsageAnalytics/Read/Filters/Filters.ts b/src/resources/UsageAnalytics/Read/Filters/Filters.ts index 6557ae916..8080bba05 100644 --- a/src/resources/UsageAnalytics/Read/Filters/Filters.ts +++ b/src/resources/UsageAnalytics/Read/Filters/Filters.ts @@ -30,7 +30,6 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Get a reporting filter. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. */ getReportFilter(filterId: string) { @@ -39,6 +38,7 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Create a reporting filter. + * @param filter */ createReportFilter(filter: CreateReportingFilterModel) { return this.api.post(this.buildPathWithOrg(Filters.reportingBaseUrl), filter); @@ -46,8 +46,8 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Update a reporting filter - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. + * @param filter */ updateReportFilter(filterId: string, filter: UpdateReportingFilterModel) { return this.api.put( @@ -58,7 +58,6 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Delete a reporting filter - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. */ deleteReportFilter(filterId: string) { @@ -74,6 +73,7 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Get a permission filter. + * @param filterId */ getPermissionFilter(filterId: string) { return this.api.get(this.buildPathWithOrg(`${Filters.permissionsBaseUrl}/${filterId}`)); @@ -81,6 +81,7 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Create a permission filter. + * @param filter */ createPermissionFilter(filter: CreatePermissionsFilterModel) { return this.api.post( @@ -91,8 +92,8 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Update a permission filter. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. + * @param filter */ updatePermissionFilter(filterId: string, filter: UpdatePermissionsFilterModel) { return this.api.put( @@ -103,7 +104,6 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Delete a permission filter. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. */ deletePermissionFilter(filterId: string) { @@ -112,7 +112,6 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Get the users of a permission filters. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. */ getPermissionFilterUsers(filterId: string) { @@ -121,8 +120,8 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Set the users of a permission filter. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. + * @param users */ updatePermissionFilterUsers(filterId: string, users: string[]) { return this.api.put(this.buildPathWithOrg(`${Filters.permissionsBaseUrl}/${filterId}/users`), users); @@ -130,7 +129,6 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Get the targets of a permission filters. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. */ getPermissionFilterTargets(filterId: string) { @@ -139,8 +137,8 @@ export default class Filters extends ReadServiceResource implements ReadServiceH /** * Set the targets of a permission filter. - * * @param filterId The unique identifier of a filter. This id is generated by the server when creating a filter. + * @param targets */ updatePermissionFilterTargets(filterId: string, targets: FilterTargetsModel) { return this.api.put(this.buildPathWithOrg(`${Filters.permissionsBaseUrl}/${filterId}/targets`), targets); diff --git a/src/resources/UsageAnalytics/Read/Filters/tests/Filters.spec.ts b/src/resources/UsageAnalytics/Read/Filters/tests/Filters.spec.ts index 67860b8e1..85115e5f1 100644 --- a/src/resources/UsageAnalytics/Read/Filters/tests/Filters.spec.ts +++ b/src/resources/UsageAnalytics/Read/Filters/tests/Filters.spec.ts @@ -10,12 +10,10 @@ import { jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Filters', () => { let filters: Filters; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const testFilterId = 'reporting-filter-id'; beforeEach(() => { @@ -25,8 +23,8 @@ describe('Filters', () => { describe('Reporting filters', () => { describe('list', () => { - it('should make a GET call to the reporting filters base url', () => { - filters.listReportFilters(); + it('should make a GET call to the reporting filters base url', async () => { + await filters.listReportFilters(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Filters.reportingBaseUrl); @@ -34,8 +32,8 @@ describe('Filters', () => { }); describe('get', () => { - it('should make a GET call to the reporting filters base url for the specific ID', () => { - filters.getReportFilter(testFilterId); + it('should make a GET call to the reporting filters base url for the specific ID', async () => { + await filters.getReportFilter(testFilterId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Filters.reportingBaseUrl}/${testFilterId}`); @@ -43,10 +41,10 @@ describe('Filters', () => { }); describe('create', () => { - it('should make a POST call to the reporting filters base url for the specific ID', () => { + it('should make a POST call to the reporting filters base url for the specific ID', async () => { const filter: CreateReportingFilterModel = {displayName: 'test', value: 'filter'}; - filters.createReportFilter(filter); + await filters.createReportFilter(filter); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Filters.reportingBaseUrl}`, filter); @@ -54,10 +52,10 @@ describe('Filters', () => { }); describe('update', () => { - it('should make a PUT call to the reporting filters base url for the specific ID', () => { + it('should make a PUT call to the reporting filters base url for the specific ID', async () => { const filter: UpdateReportingFilterModel = {displayName: 'test', value: 'filter'}; - filters.updateReportFilter(testFilterId, filter); + await filters.updateReportFilter(testFilterId, filter); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Filters.reportingBaseUrl}/${testFilterId}`, filter); @@ -65,8 +63,8 @@ describe('Filters', () => { }); describe('delete', () => { - it('should make a DELETE call to the reporting filters base url for the specific ID', () => { - filters.deleteReportFilter(testFilterId); + it('should make a DELETE call to the reporting filters base url for the specific ID', async () => { + await filters.deleteReportFilter(testFilterId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Filters.reportingBaseUrl}/${testFilterId}`); @@ -76,8 +74,8 @@ describe('Filters', () => { describe('Permission filters', () => { describe('list', () => { - it('should make a GET call to the permission filter base url', () => { - filters.listPermissionFilters(); + it('should make a GET call to the permission filter base url', async () => { + await filters.listPermissionFilters(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Filters.permissionsBaseUrl); @@ -85,8 +83,8 @@ describe('Filters', () => { }); describe('get', () => { - it('should make a GET call to the permission filter base url for the specific ID', () => { - filters.getPermissionFilter(testFilterId); + it('should make a GET call to the permission filter base url for the specific ID', async () => { + await filters.getPermissionFilter(testFilterId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}/${testFilterId}`); @@ -94,10 +92,10 @@ describe('Filters', () => { }); describe('create', () => { - it('should make a POST call to the permission filter base url for the specific ID', () => { + it('should make a POST call to the permission filter base url for the specific ID', async () => { const filter: CreatePermissionsFilterModel = {displayName: 'test', value: 'filter'}; - filters.createPermissionFilter(filter); + await filters.createPermissionFilter(filter); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}`, filter); @@ -105,10 +103,10 @@ describe('Filters', () => { }); describe('update', () => { - it('should make a PUT call to the permission filter base url for the specific ID', () => { + it('should make a PUT call to the permission filter base url for the specific ID', async () => { const filter: UpdatePermissionsFilterModel = {displayName: 'test', value: 'filter'}; - filters.updatePermissionFilter(testFilterId, filter); + await filters.updatePermissionFilter(testFilterId, filter); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}/${testFilterId}`, filter); @@ -116,8 +114,8 @@ describe('Filters', () => { }); describe('delete', () => { - it('should make a DELETE call to the permission filter base url for the specific ID', () => { - filters.deletePermissionFilter(testFilterId); + it('should make a DELETE call to the permission filter base url for the specific ID', async () => { + await filters.deletePermissionFilter(testFilterId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}/${testFilterId}`); @@ -126,8 +124,8 @@ describe('Filters', () => { describe('Filter users', () => { describe('get', () => { - it('should make a GET call to the permission filter users url for the specific ID', () => { - filters.getPermissionFilterUsers(testFilterId); + it('should make a GET call to the permission filter users url for the specific ID', async () => { + await filters.getPermissionFilterUsers(testFilterId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}/${testFilterId}/users`); @@ -135,10 +133,10 @@ describe('Filters', () => { }); describe('update', () => { - it('should make a PUT call to the permission filter users url for the specific ID', () => { + it('should make a PUT call to the permission filter users url for the specific ID', async () => { const users = ['user.one@example.com', 'user.two@example.com']; - filters.updatePermissionFilterUsers(testFilterId, users); + await filters.updatePermissionFilterUsers(testFilterId, users); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}/${testFilterId}/users`, users); @@ -148,8 +146,8 @@ describe('Filters', () => { describe('Filter targets', () => { describe('get', () => { - it('should make a GET call to the permission filter targets url for the specific ID', () => { - filters.getPermissionFilterTargets(testFilterId); + it('should make a GET call to the permission filter targets url for the specific ID', async () => { + await filters.getPermissionFilterTargets(testFilterId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Filters.permissionsBaseUrl}/${testFilterId}/targets`); @@ -157,13 +155,13 @@ describe('Filters', () => { }); describe('update', () => { - it('should make a PUT call to the permission filter targets url for the specific ID', () => { + it('should make a PUT call to the permission filter targets url for the specific ID', async () => { const filterTargets: FilterTargetsModel = { targetedUsers: [], targetedGroups: [], }; - filters.updatePermissionFilterTargets(testFilterId, filterTargets); + await filters.updatePermissionFilterTargets(testFilterId, filterTargets); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -176,8 +174,8 @@ describe('Filters', () => { }); describe('checkHealth', () => { - it('should make a GET call to the service healthcheck url', () => { - filters.checkHealth(); + it('should make a GET call to the service healthcheck url', async () => { + await filters.checkHealth(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Filters.baseUrl}/monitoring/health`); @@ -185,8 +183,8 @@ describe('Filters', () => { }); describe('checkStatus', () => { - it('should make a GET call to the service status url', () => { - filters.checkStatus(); + it('should make a GET call to the service status url', async () => { + await filters.checkStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Filters.baseUrl}/status`); diff --git a/src/resources/UsageAnalytics/Read/ReadServiceResource.ts b/src/resources/UsageAnalytics/Read/ReadServiceResource.ts index 46734ede1..f32c11e07 100644 --- a/src/resources/UsageAnalytics/Read/ReadServiceResource.ts +++ b/src/resources/UsageAnalytics/Read/ReadServiceResource.ts @@ -7,13 +7,12 @@ import Resource from '../../Resource.js'; export default class ReadServiceResource extends Resource { /** * Build the request path, handling the optional `org` query parameter. - * * @param route The path part of the request. * @param queryParams Optional query parameters object. * If this object contains an `org` property, it will override the value from the configuration. * @returns The request path including formatted query parameters. */ - protected buildPathWithOrg(route: string, queryParams?: any): string { + protected buildPathWithOrg(route: string, queryParams?: object): string { return super.buildPath(route, {org: this.api.organizationId, ...queryParams}); } } diff --git a/src/resources/UsageAnalytics/Read/Reports/Reports.ts b/src/resources/UsageAnalytics/Read/Reports/Reports.ts index 22ea44812..b16a56d28 100644 --- a/src/resources/UsageAnalytics/Read/Reports/Reports.ts +++ b/src/resources/UsageAnalytics/Read/Reports/Reports.ts @@ -22,6 +22,7 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Get the persisted reports of one or all types. + * @param options */ list(options?: ListReportsOptions) { return this.api.get(this.buildPathWithOrg(Reports.baseUrl, options)); @@ -29,8 +30,8 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Get a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. + * @param options */ get(reportId: string, options?: GetReportOptions) { return this.api.get(this.buildPathWithOrg(`${Reports.baseUrl}/${reportId}`, options)); @@ -38,6 +39,7 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Create a report. + * @param report */ create(report: CreateReportModel) { return this.api.post(this.buildPathWithOrg(Reports.baseUrl), report); @@ -45,8 +47,8 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Update a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. + * @param report */ update(reportId: string, report: UpdateReportModel) { return this.api.put(this.buildPathWithOrg(`${Reports.baseUrl}/${reportId}`), report); @@ -54,7 +56,6 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Delete a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. */ delete(reportId: string) { @@ -63,7 +64,6 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Get the users and groups who can view a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. */ getAccess(reportId: string) { @@ -72,8 +72,8 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Set the users and groups who are allowed to view a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. + * @param reportAccess */ setAccess(reportId: string, reportAccess: ReportAccessRequest) { return this.api.put(this.buildPathWithOrg(`${Reports.baseUrl}/${reportId}/access`), reportAccess); @@ -81,7 +81,6 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Get the users who can view a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. */ getUsers(reportId: string) { @@ -90,8 +89,8 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Set the users who are allowed to view a report. - * * @param reportId The unique identifier of a report. This id is generated by the server when creating a report. + * @param userIds */ setUsers(reportId: string, userIds: string[]) { return this.api.put(this.buildPathWithOrg(`${Reports.baseUrl}/${reportId}/users`), userIds); @@ -99,8 +98,8 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Get a report template. - * * @param templateId The unique identifier of a template. + * @param options */ getReportTemplate(templateId: string, options?: GetReportTemplateOptions) { return this.api.get( @@ -110,8 +109,8 @@ export default class Reports extends ReadServiceResource implements ReadServiceH /** * Get metadata about available report templates. - * * @param type The type of the report. Must be either 'explorer' or 'dashboard'. + * @param options */ listReportTemplates(type: ReportType, options?: GetReportTemplateOptions) { return this.api.get( diff --git a/src/resources/UsageAnalytics/Read/Reports/ReportsInterfaces.ts b/src/resources/UsageAnalytics/Read/Reports/ReportsInterfaces.ts index 60fdf803f..29168d8f6 100644 --- a/src/resources/UsageAnalytics/Read/Reports/ReportsInterfaces.ts +++ b/src/resources/UsageAnalytics/Read/Reports/ReportsInterfaces.ts @@ -21,7 +21,7 @@ export interface ReportModel { export type CreateReportModel = Omit; export type CreateReportResponse = Pick; -export interface GetReportOptions extends TimeZoneParamParts {} +export type GetReportOptions = TimeZoneParamParts; export type UpdateReportModel = CreateReportModel; export type UpdateReportResponse = CreateReportResponse; diff --git a/src/resources/UsageAnalytics/Read/Reports/tests/Reports.spec.ts b/src/resources/UsageAnalytics/Read/Reports/tests/Reports.spec.ts index 8746aaea6..b7a150526 100644 --- a/src/resources/UsageAnalytics/Read/Reports/tests/Reports.spec.ts +++ b/src/resources/UsageAnalytics/Read/Reports/tests/Reports.spec.ts @@ -5,12 +5,10 @@ import {CreateReportModel, ReportAccessRequest, ReportAccessType, UpdateReportMo jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Reports', () => { let reports: Reports; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); const testReportId = 'test-report-id'; const testTemplateId = 'test-template-id'; @@ -20,8 +18,8 @@ describe('Reports', () => { }); describe('list', () => { - it('should make a GET call to the Reports base url', () => { - reports.list(); + it('should make a GET call to the Reports base url', async () => { + await reports.list(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(Reports.baseUrl); @@ -29,8 +27,8 @@ describe('Reports', () => { }); describe('get', () => { - it('should make a GET call to the Reports base url for the specific ID', () => { - reports.get(testReportId); + it('should make a GET call to the Reports base url for the specific ID', async () => { + await reports.get(testReportId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}`); @@ -38,7 +36,7 @@ describe('Reports', () => { }); describe('create', () => { - it('should make a POST call to the Reports base url for the specific ID', () => { + it('should make a POST call to the Reports base url for the specific ID', async () => { const report: CreateReportModel = { allAnalyticsViewer: false, configuration: {}, @@ -47,7 +45,7 @@ describe('Reports', () => { type: ReportType.Dashboard, }; - reports.create(report); + await reports.create(report); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Reports.baseUrl, report); @@ -55,7 +53,7 @@ describe('Reports', () => { }); describe('update', () => { - it('should make a PUT call to the Reports base url for the specific ID', () => { + it('should make a PUT call to the Reports base url for the specific ID', async () => { const report: UpdateReportModel = { allAnalyticsViewer: false, configuration: {}, @@ -64,7 +62,7 @@ describe('Reports', () => { type: ReportType.Dashboard, }; - reports.update(testReportId, report); + await reports.update(testReportId, report); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}`, report); @@ -72,8 +70,8 @@ describe('Reports', () => { }); describe('delete', () => { - it('should make a DELETE call to the Reports base url for the specific ID', () => { - reports.delete(testReportId); + it('should make a DELETE call to the Reports base url for the specific ID', async () => { + await reports.delete(testReportId); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}`); @@ -81,8 +79,8 @@ describe('Reports', () => { }); describe('getAccess', () => { - it('should make a GET call to the specific report ID url for access', () => { - reports.getAccess(testReportId); + it('should make a GET call to the specific report ID url for access', async () => { + await reports.getAccess(testReportId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}/access`); @@ -90,14 +88,14 @@ describe('Reports', () => { }); describe('setAccess', () => { - it('should make a PUT call to the specific report ID url for access', () => { + it('should make a PUT call to the specific report ID url for access', async () => { const access: ReportAccessRequest = { accessType: ReportAccessType.Public, allowedGroups: [], allowedUsers: [], }; - reports.setAccess(testReportId, access); + await reports.setAccess(testReportId, access); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}/access`, access); @@ -105,8 +103,8 @@ describe('Reports', () => { }); describe('getUsers', () => { - it('should make a GET call to the specific report ID url for users', () => { - reports.getUsers(testReportId); + it('should make a GET call to the specific report ID url for users', async () => { + await reports.getUsers(testReportId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}/users`); @@ -114,10 +112,10 @@ describe('Reports', () => { }); describe('setUsers', () => { - it('should make a PUT call to the specific report ID url for users', () => { + it('should make a PUT call to the specific report ID url for users', async () => { const users: string[] = []; - reports.setUsers(testReportId, users); + await reports.setUsers(testReportId, users); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Reports.baseUrl}/${testReportId}/users`, users); @@ -125,8 +123,8 @@ describe('Reports', () => { }); describe('getReportTemplate', () => { - it('should make a GET call to the Reports base url for the specific template ID', () => { - reports.getReportTemplate(testTemplateId); + it('should make a GET call to the Reports base url for the specific template ID', async () => { + await reports.getReportTemplate(testTemplateId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/templates/${testTemplateId}`); @@ -134,8 +132,8 @@ describe('Reports', () => { }); describe('listReportTemplates', () => { - it('should make a GET call to the Reports base url for templates', () => { - reports.listReportTemplates(ReportType.Dashboard); + it('should make a GET call to the Reports base url for templates', async () => { + await reports.listReportTemplates(ReportType.Dashboard); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/templates?type=${ReportType.Dashboard}`); @@ -143,8 +141,8 @@ describe('Reports', () => { }); describe('checkHealth', () => { - it('should make a GET call to the specific report endpoint for healthchecks', () => { - reports.checkHealth(); + it('should make a GET call to the specific report endpoint for healthchecks', async () => { + await reports.checkHealth(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/monitoring/health`); @@ -152,8 +150,8 @@ describe('Reports', () => { }); describe('checkStatus', () => { - it('should make a GET call to the specific report endpoint for service status', () => { - reports.checkStatus(); + it('should make a GET call to the specific report endpoint for service status', async () => { + await reports.checkStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Reports.baseUrl}/status`); diff --git a/src/resources/UsageAnalytics/Read/Snowflake/Snowflake.ts b/src/resources/UsageAnalytics/Read/Snowflake/Snowflake.ts index 1aca1d582..ac53f687e 100644 --- a/src/resources/UsageAnalytics/Read/Snowflake/Snowflake.ts +++ b/src/resources/UsageAnalytics/Read/Snowflake/Snowflake.ts @@ -23,7 +23,6 @@ export default class Snowflake extends ReadServiceResource { /** * Create a new user within a Snowflake reader account. - * * @param model The user to create. */ createUser(model: SnowflakeUserModel) { @@ -32,7 +31,6 @@ export default class Snowflake extends ReadServiceResource { /** * Delete a user from a Snowflake reader account. - * * @param snowflakeUser The login name for the Snowflake user. */ deleteUser(snowflakeUser: string) { @@ -41,7 +39,6 @@ export default class Snowflake extends ReadServiceResource { /** * Get the details for a specific user from a Snowflake reader account. - * * @param snowflakeUser The login name for the Snowflake user. */ getUser(snowflakeUser: string) { @@ -50,7 +47,6 @@ export default class Snowflake extends ReadServiceResource { /** * Reset a user's password in a Snowflake reader account. - * * @param snowflakeUser The login name for the Snowflake user. */ resetPassword(snowflakeUser: string) { @@ -59,7 +55,6 @@ export default class Snowflake extends ReadServiceResource { /** * Reactivate and set a user's expiration in a Snowflake reader account. - * * @param snowflakeUser The login name for the Snowflake user. * @param params The number of days until the user's expiration date. */ @@ -79,7 +74,6 @@ export default class Snowflake extends ReadServiceResource { /** * Set the details of the active network policy for a Snowflake reader account. - * * @param model The network policy to create. */ updateNetworkPolicy(model: SnowflakeNetworkPolicyModel) { @@ -88,7 +82,6 @@ export default class Snowflake extends ReadServiceResource { /** * Get the amount of compute credits used by a Snowflake reader account within a date range. - * * @param params The time range to get the amount of compute credits. */ getCreditUsage(params: GetCreditUsageParams) { diff --git a/src/resources/UsageAnalytics/Read/Snowflake/SnowflakeInterfaces.ts b/src/resources/UsageAnalytics/Read/Snowflake/SnowflakeInterfaces.ts index 0ebc024fb..83f64fe14 100644 --- a/src/resources/UsageAnalytics/Read/Snowflake/SnowflakeInterfaces.ts +++ b/src/resources/UsageAnalytics/Read/Snowflake/SnowflakeInterfaces.ts @@ -50,7 +50,7 @@ export interface SnowflakeNetworkPolicyModel { blockedIpAddresses: string[]; } -export interface GetCreditUsageParams extends TimeRangeParamParts {} +export type GetCreditUsageParams = TimeRangeParamParts; export interface SnowflakeCreditUsageModel { creditsUsed: number; diff --git a/src/resources/UsageAnalytics/Read/Snowflake/tests/Snowflake.spec.ts b/src/resources/UsageAnalytics/Read/Snowflake/tests/Snowflake.spec.ts index 7affce656..1558264cd 100644 --- a/src/resources/UsageAnalytics/Read/Snowflake/tests/Snowflake.spec.ts +++ b/src/resources/UsageAnalytics/Read/Snowflake/tests/Snowflake.spec.ts @@ -9,12 +9,10 @@ import { jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Snowflake', () => { let snowflake: Snowflake; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -22,8 +20,8 @@ describe('Snowflake', () => { }); describe('listUsers', () => { - it('makes a GET call to the specific Snowflake url', () => { - snowflake.listUsers(); + it('makes a GET call to the specific Snowflake url', async () => { + await snowflake.listUsers(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Snowflake.baseUrl}/users`); @@ -31,13 +29,13 @@ describe('Snowflake', () => { }); describe('createUser', () => { - it('makes a POST call to the specific Snowflake url', () => { + it('makes a POST call to the specific Snowflake url', async () => { const model: SnowflakeUserModel = { username: 'ross.blais', email: 'ross.blais@gmail.com', daysToExpiry: 66, }; - snowflake.createUser(model); + await snowflake.createUser(model); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Snowflake.baseUrl}/users`, model); @@ -45,9 +43,9 @@ describe('Snowflake', () => { }); describe('deleteUser', () => { - it('makes a DELETE call to the specific Snowflake url', () => { + it('makes a DELETE call to the specific Snowflake url', async () => { const snowflakeUser = 'ross.blais'; - snowflake.deleteUser(snowflakeUser); + await snowflake.deleteUser(snowflakeUser); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Snowflake.baseUrl}/users/${snowflakeUser}`); @@ -55,9 +53,9 @@ describe('Snowflake', () => { }); describe('getUser', () => { - it('makes a GET call to the specific Snowflake url', () => { + it('makes a GET call to the specific Snowflake url', async () => { const snowflakeUser = 'ross.blais'; - snowflake.getUser(snowflakeUser); + await snowflake.getUser(snowflakeUser); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Snowflake.baseUrl}/users/${snowflakeUser}`); @@ -65,12 +63,12 @@ describe('Snowflake', () => { }); describe('reactivateUser', () => { - it('makes a PUT call to the specific Snowflake url', () => { + it('makes a PUT call to the specific Snowflake url', async () => { const snowflakeUser = 'ross.blais'; const params: ReactivateUserParams = { daysToExpiry: 66, }; - snowflake.reactivateUser(snowflakeUser, params); + await snowflake.reactivateUser(snowflakeUser, params); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Snowflake.baseUrl}/users/${snowflakeUser}/expiration`, params); @@ -78,9 +76,9 @@ describe('Snowflake', () => { }); describe('resetPassword', () => { - it('makes a POST call to the specific Snowflake url', () => { + it('makes a POST call to the specific Snowflake url', async () => { const snowflakeUser = 'ross.blais'; - snowflake.resetPassword(snowflakeUser); + await snowflake.resetPassword(snowflakeUser); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Snowflake.baseUrl}/users/${snowflakeUser}/passwordreset`); @@ -88,8 +86,8 @@ describe('Snowflake', () => { }); describe('getNetworkPolicy', () => { - it('makes a GET call to the specific Snowflake url', () => { - snowflake.getNetworkPolicy(); + it('makes a GET call to the specific Snowflake url', async () => { + await snowflake.getNetworkPolicy(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Snowflake.baseUrl}/networkpolicy`); @@ -97,12 +95,12 @@ describe('Snowflake', () => { }); describe('updateNetworkPolicy', () => { - it('makes a PUT call to the specific Snowflake url', () => { + it('makes a PUT call to the specific Snowflake url', async () => { const model: SnowflakeNetworkPolicyModel = { allowedIpAddresses: ['coulilizazou'], blockedIpAddresses: ['ross'], }; - snowflake.updateNetworkPolicy(model); + await snowflake.updateNetworkPolicy(model); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${Snowflake.baseUrl}/networkpolicy`, model); @@ -110,12 +108,12 @@ describe('Snowflake', () => { }); describe('getCreditUsage', () => { - it('makes a GET call to the specific Snowflake url', () => { + it('makes a GET call to the specific Snowflake url', async () => { const model: GetCreditUsageParams = { from: 'coulilizazou', to: 'ross', }; - snowflake.getCreditUsage(model); + await snowflake.getCreditUsage(model); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Snowflake.baseUrl}/creditusage?from=coulilizazou&to=ross`); @@ -123,8 +121,8 @@ describe('Snowflake', () => { }); describe('getSnowflakeReaderAccount', () => { - it('makes a GET call to the specific Snowflake url', () => { - snowflake.getSnowflakeReaderAccount(); + it('makes a GET call to the specific Snowflake url', async () => { + await snowflake.getSnowflakeReaderAccount(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Snowflake.baseUrl}/readeraccount`); @@ -132,8 +130,8 @@ describe('Snowflake', () => { }); describe('getSnowflakeReaderAccountEndpoint', () => { - it('makes a GET call to the specific Snowflake url', () => { - snowflake.getSnowflakeReaderAccountEndpoint(); + it('makes a GET call to the specific Snowflake url', async () => { + await snowflake.getSnowflakeReaderAccountEndpoint(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Snowflake.baseUrl}/readeraccount/endpoint`); @@ -141,8 +139,8 @@ describe('Snowflake', () => { }); describe('createSnowflakeReaderAccount', () => { - it('makes a POST call to the specific Snowflake url', () => { - snowflake.createSnowflakeReaderAccount(); + it('makes a POST call to the specific Snowflake url', async () => { + await snowflake.createSnowflakeReaderAccount(); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Snowflake.baseUrl}/readeraccounts`); @@ -150,8 +148,8 @@ describe('Snowflake', () => { }); describe('deleteSnowflakeReaderAccount', () => { - it('makes a DELETE call to the specific Snowflake url', () => { - snowflake.deleteSnowflakeReaderAccount(); + it('makes a DELETE call to the specific Snowflake url', async () => { + await snowflake.deleteSnowflakeReaderAccount(); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Snowflake.baseUrl}/readeraccount`); diff --git a/src/resources/UsageAnalytics/Read/Statistics/Statistics.ts b/src/resources/UsageAnalytics/Read/Statistics/Statistics.ts index 352f50512..0898ccae6 100644 --- a/src/resources/UsageAnalytics/Read/Statistics/Statistics.ts +++ b/src/resources/UsageAnalytics/Read/Statistics/Statistics.ts @@ -24,6 +24,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get the incoherent events for a date range. + * @param options */ listIncoherentEvents(options: IncoherentEventsOptions) { return this.api.get( @@ -33,6 +34,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get graph data points for the metrics for a date range. + * @param options */ listGraphDataPoints(options: GraphDataPointsOptions) { return this.api.get( @@ -42,6 +44,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get global data for each metric for a date range. + * @param options */ listGlobalData(options: GlobalDataOptions) { return this.api.get(this.buildPathWithOrg(`${Statistics.baseUrl}/globalData`, options)); @@ -49,6 +52,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get trends of a metric combined with dimensions for a date range. + * @param options */ listTrends(options: TrendsOptions) { return this.api.get(this.buildPathWithOrg(`${Statistics.baseUrl}/trends`, options)); @@ -56,6 +60,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get the metrics based on the visits matching the specified criteria. + * @param options */ listVisitsMetrics(options: VisitsMetricsOptions) { return this.api.get(this.buildPathWithOrg(`${Statistics.baseUrl}/visitsMetrics`, options)); @@ -63,6 +68,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get graph data points for visit based metrics for a date range. + * @param options */ listVisitsGraphDataPoints(options: VisitsGraphDataPointsOptions) { return this.api.get( @@ -74,8 +80,8 @@ export default class Statistics extends ReadServiceResource implements ReadServi * Cancel the execution of a query. * This is a best effort; there is no guarantee that the query will be cancelled. * If the query is cancelled, the sender of the now cancelled query will receive a 409 Conflict. - * * @param queryId The id of the query to cancel. + * @param options */ cancelQuery(queryId: string, options: CancelQueryOptions) { return this.api.delete(this.buildPathWithOrg(`${Statistics.baseUrl}/query/${queryId}`, options)); @@ -83,6 +89,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get metrics combined with dimensions for a date range. + * @param options */ listCombinedData(options: CombinedDataOptions) { return this.api.get(this.buildPathWithOrg(`${Statistics.baseUrl}/combinedData`, options)); @@ -90,6 +97,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Get the details of the visits matching the specified criteria. + * @param options */ listVisits(options: VisitsStatisticsOptions) { return this.api.get(this.buildPathWithOrg(`${Statistics.baseUrl}/visits`, options)); @@ -97,6 +105,7 @@ export default class Statistics extends ReadServiceResource implements ReadServi /** * Force a visit view update. + * @param options */ updateVisitView(options: VisitViewOptions) { return this.api.post(this.buildPathWithOrg(`${Statistics.baseUrl}/visits`, options)); diff --git a/src/resources/UsageAnalytics/Read/Statistics/StatisticsInterfaces.ts b/src/resources/UsageAnalytics/Read/Statistics/StatisticsInterfaces.ts index d86b93087..f9d18781e 100644 --- a/src/resources/UsageAnalytics/Read/Statistics/StatisticsInterfaces.ts +++ b/src/resources/UsageAnalytics/Read/Statistics/StatisticsInterfaces.ts @@ -73,11 +73,13 @@ export interface IncoherentEventsOptions export interface IncoherentEventModel { errorCode: string; datetime: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any event: any; } export interface IncoherentEventsModel { events: IncoherentEventModel[]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any uniqueCounts: any; totalNumberOfResults: number; } @@ -106,6 +108,7 @@ export interface GlobalDataOptions } export interface TrendsModel { + // eslint-disable-next-line @typescript-eslint/no-explicit-any combinations: Array>; uniqueCounts: Record; totalNumberOfResults: number; @@ -175,7 +178,7 @@ export interface VisitsGraphDataPointsOptions EventDimensionsExcludeFilterParamParts, EventDimensionsHideEventsFilterParamParts {} -export interface CancelQueryOptions extends OrganizationParamParts {} +export type CancelQueryOptions = OrganizationParamParts; export interface DataPointModel { dateTime: number; @@ -218,6 +221,7 @@ export interface CombinedDataOptions } export interface CombinedDataModel { + // eslint-disable-next-line @typescript-eslint/no-explicit-any combinations: Array>; uniqueCounts: Record; totalNumberOfResults: number; @@ -246,6 +250,7 @@ export interface VisitsStatisticsOptions export interface VisitStatisticsModel { visitId: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any events: any[]; numberOfEvents: number; } @@ -255,4 +260,4 @@ export interface VisitsStatisticsModel { totalNumberOfVisits: number; } -export interface VisitViewOptions extends OrganizationParamParts {} +export type VisitViewOptions = OrganizationParamParts; diff --git a/src/resources/UsageAnalytics/Read/Statistics/tests/Statistics.spec.ts b/src/resources/UsageAnalytics/Read/Statistics/tests/Statistics.spec.ts index b59d5203b..3ae354465 100644 --- a/src/resources/UsageAnalytics/Read/Statistics/tests/Statistics.spec.ts +++ b/src/resources/UsageAnalytics/Read/Statistics/tests/Statistics.spec.ts @@ -15,12 +15,10 @@ import { jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Statistics', () => { let statistics: Statistics; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -28,37 +26,37 @@ describe('Statistics', () => { }); describe('cancelQuery', () => { - it('should make a DELETE call to the specific Statistics url', () => { + it('should make a DELETE call to the specific Statistics url', async () => { const queryId = 'Jida'; const options: CancelQueryOptions = { org: 'tuna-durgod', }; - statistics.cancelQuery(queryId, options); + await statistics.cancelQuery(queryId, options); expect(api.delete).toHaveBeenCalledTimes(1); expect(api.delete).toHaveBeenCalledWith(`${Statistics.baseUrl}/query/${queryId}?org=tuna-durgod`); }); }); describe('update', () => { - it('should make a POST call to the specific Statistics url', () => { + it('should make a POST call to the specific Statistics url', async () => { const options: VisitViewOptions = { org: 'CouliliZazou', }; - statistics.updateVisitView(options); + await statistics.updateVisitView(options); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(`${Statistics.baseUrl}/visits?org=CouliliZazou`); }); }); describe('listIncoherentEvents', () => { - it('should make a GET call to /v15/stats/incoherentEvents with specific options', () => { + it('should make a GET call to /v15/stats/incoherentEvents with specific options', async () => { const options: IncoherentEventsOptions = { from: '2020-05-12T00:00:00.000Z', to: '2020-05-14T00:00:00.000Z', org: 'yes', }; - statistics.listIncoherentEvents(options); + await statistics.listIncoherentEvents(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/incoherentEvents?org=yes&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -67,14 +65,14 @@ describe('Statistics', () => { }); describe('listGraphDataPoints', () => { - it('should make a GET call to /v15/stats/graphDataPoints with specific options', () => { + it('should make a GET call to /v15/stats/graphDataPoints with specific options', async () => { const options: GraphDataPointsOptions = { m: ['UniqueVisit'], from: '2020-05-12T00:00:00.000Z', to: '2020-05-14T00:00:00.000Z', org: 'no-thanks', }; - statistics.listGraphDataPoints(options); + await statistics.listGraphDataPoints(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/graphDataPoints?org=no-thanks&m=UniqueVisit&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -83,14 +81,14 @@ describe('Statistics', () => { }); describe('listGlobalData', () => { - it('should make a GET call to /v15/stats/globalData with specific options', () => { + it('should make a GET call to /v15/stats/globalData with specific options', async () => { const options: GlobalDataOptions = { m: ['UniqueVisit'], from: '2020-05-12T00:00:00.000Z', to: '2020-05-14T00:00:00.000Z', org: 'no-thanks', }; - statistics.listGlobalData(options); + await statistics.listGlobalData(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/globalData?org=no-thanks&m=UniqueVisit&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -99,7 +97,7 @@ describe('Statistics', () => { }); describe('listTrends', () => { - it('should make a GET call to /v15/stats/trends with specific options', () => { + it('should make a GET call to /v15/stats/trends with specific options', async () => { const options: TrendsOptions = { m: ['UniqueVisit'], d: ['HASCLICK'], @@ -108,7 +106,7 @@ describe('Statistics', () => { to: '2020-05-14T00:00:00.000Z', org: 'yes', }; - statistics.listTrends(options); + await statistics.listTrends(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/trends?org=yes&m=UniqueVisit&d=HASCLICK&t=percent%28UniqueVisit%29&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -117,14 +115,14 @@ describe('Statistics', () => { }); describe('listVisitsMetrics', () => { - it('should make a GET call to /v15/stats/visitsMetrics with specific options', () => { + it('should make a GET call to /v15/stats/visitsMetrics with specific options', async () => { const options: VisitsMetricsOptions = { m: ['UniqueVisit'], from: '2020-05-12T00:00:00.000Z', to: '2020-05-14T00:00:00.000Z', org: 'yes', }; - statistics.listVisitsMetrics(options); + await statistics.listVisitsMetrics(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/visitsMetrics?org=yes&m=UniqueVisit&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -133,14 +131,14 @@ describe('Statistics', () => { }); describe('listVisitsGraphDataPoints', () => { - it('should make a GET call to /v15/stats/visitsGraphDataPoints with specific options', () => { + it('should make a GET call to /v15/stats/visitsGraphDataPoints with specific options', async () => { const options: VisitsGraphDataPointsOptions = { m: ['UniqueVisit'], from: '2020-05-12T00:00:00.000Z', to: '2020-05-14T00:00:00.000Z', org: 'yes', }; - statistics.listVisitsGraphDataPoints(options); + await statistics.listVisitsGraphDataPoints(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/visitsGraphDataPoints?org=yes&m=UniqueVisit&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -149,7 +147,7 @@ describe('Statistics', () => { }); describe('listCombinedData', () => { - it('should make a GET call to /v15/stats/combinedData with specific options', () => { + it('should make a GET call to /v15/stats/combinedData with specific options', async () => { const options: CombinedDataOptions = { m: ['UniqueVisit'], d: ['HASCLICK'], @@ -157,7 +155,7 @@ describe('Statistics', () => { to: '2020-05-14T00:00:00.000Z', org: 'yes', }; - statistics.listCombinedData(options); + await statistics.listCombinedData(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/combinedData?org=yes&m=UniqueVisit&d=HASCLICK&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -166,13 +164,13 @@ describe('Statistics', () => { }); describe('listVisits', () => { - it('should make a GET call to /v15/stats/visits with specific options', () => { + it('should make a GET call to /v15/stats/visits with specific options', async () => { const options: VisitsStatisticsOptions = { from: '2020-05-12T00:00:00.000Z', to: '2020-05-14T00:00:00.000Z', org: 'yes', }; - statistics.listVisits(options); + await statistics.listVisits(options); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${Statistics.baseUrl}/visits?org=yes&from=2020-05-12T00%3A00%3A00.000Z&to=2020-05-14T00%3A00%3A00.000Z`, @@ -181,16 +179,16 @@ describe('Statistics', () => { }); describe('checkHealth', () => { - it('should make a GET call to the specific Statistics url', () => { - statistics.checkHealth(); + it('should make a GET call to the specific Statistics url', async () => { + await statistics.checkHealth(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Statistics.baseUrl}/monitoring/health`); }); }); describe('checkStatus', () => { - it('should make a GET call to the Statistics status url', () => { - statistics.checkStatus(); + it('should make a GET call to the Statistics status url', async () => { + await statistics.checkStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Statistics.baseUrl}/status`); }); diff --git a/src/resources/UsageAnalytics/Read/UAUsers/UAUsers.ts b/src/resources/UsageAnalytics/Read/UAUsers/UAUsers.ts index 64b52693f..1df2a3ffc 100644 --- a/src/resources/UsageAnalytics/Read/UAUsers/UAUsers.ts +++ b/src/resources/UsageAnalytics/Read/UAUsers/UAUsers.ts @@ -14,8 +14,8 @@ export default class UAUsers extends ReadServiceResource implements ReadServiceH /** * Get the data level filters that apply to a user. - * * @param userId The unique identifier of a user. + * @param params */ listUserFilters(userId: string, params?: ListUAUsersFiltersParams) { return this.api.get(this.buildPathWithOrg(`${UAUsers.baseUrl}/${userId}/filters`, params)); @@ -23,8 +23,8 @@ export default class UAUsers extends ReadServiceResource implements ReadServiceH /** * Set the filters that will be applied to a user query. - * * @param userId The unique identifier of a user. + * @param filters */ updateUserFilters(userId: string, filters: UAUserFilterParams[]) { return this.api.put(this.buildPathWithOrg(`${UAUsers.baseUrl}/${userId}/filters`), filters); @@ -32,8 +32,8 @@ export default class UAUsers extends ReadServiceResource implements ReadServiceH /** * Get the reports that a user can access. - * * @param userId The unique identifier of a user. + * @param params */ listUsersReports(userId: string, params?: ListUAUsersReportsParams) { return this.api.get(this.buildPathWithOrg(`${UAUsers.baseUrl}/${userId}/reports`, params)); @@ -41,8 +41,8 @@ export default class UAUsers extends ReadServiceResource implements ReadServiceH /** * Set which reports a user can access. - * * @param userId The unique identifier of a user. + * @param reportsIDs */ updateUsersReports(userId: string, reportsIDs: string[]) { return this.api.put(this.buildPathWithOrg(`${UAUsers.baseUrl}/${userId}/reports`), reportsIDs); @@ -50,7 +50,6 @@ export default class UAUsers extends ReadServiceResource implements ReadServiceH /** * Get a user. - * * @param userId The unique identifier of a user. */ getUser(userId: string) { diff --git a/src/resources/UsageAnalytics/Read/UAUsers/UAUsersInterfaces.ts b/src/resources/UsageAnalytics/Read/UAUsers/UAUsersInterfaces.ts index b78fe018c..bcd845f4c 100644 --- a/src/resources/UsageAnalytics/Read/UAUsers/UAUsersInterfaces.ts +++ b/src/resources/UsageAnalytics/Read/UAUsers/UAUsersInterfaces.ts @@ -50,6 +50,7 @@ export interface UAUsersReportModel { /** * The report configuration in JSON */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any configuration: Record; /** * Whether the report is available to all analytics viewer diff --git a/src/resources/UsageAnalytics/Read/UAUsers/tests/Users.spec.ts b/src/resources/UsageAnalytics/Read/UAUsers/tests/Users.spec.ts index 4fcdf40d1..20cee1eee 100644 --- a/src/resources/UsageAnalytics/Read/UAUsers/tests/Users.spec.ts +++ b/src/resources/UsageAnalytics/Read/UAUsers/tests/Users.spec.ts @@ -4,12 +4,10 @@ import {UAUserFilterParams, ListUAUsersReportsParams} from '../UAUsersInterfaces jest.mock('../../../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Statistics', () => { let users: UAUsers; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,16 +15,16 @@ describe('Statistics', () => { }); describe('ListUserFilters', () => { - it('should make a GET call to the user filters url', () => { + it('should make a GET call to the user filters url', async () => { const userId = 'CouliliZazou'; - users.listUserFilters('CouliliZazou'); + await users.listUserFilters('CouliliZazou'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${UAUsers.baseUrl}/${userId}/filters`); }); }); describe('UpdateUserFilters', () => { - it('should make a PUT call to the specific user filters url', () => { + it('should make a PUT call to the specific user filters url', async () => { const userId = 'Jida'; const filters: UAUserFilterParams[] = [ { @@ -34,20 +32,20 @@ describe('Statistics', () => { id: true, }, ]; - users.updateUserFilters(userId, filters); + await users.updateUserFilters(userId, filters); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${UAUsers.baseUrl}/${userId}/filters`, filters); }); }); describe('ListUsersReports', () => { - it('should make a GET call to the specific Users url', () => { + it('should make a GET call to the specific Users url', async () => { const userId = 'Jida'; const params: ListUAUsersReportsParams = { includeConfig: false, includeGroups: false, }; - users.listUsersReports(userId, params); + await users.listUsersReports(userId, params); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith( `${UAUsers.baseUrl}/${userId}/reports?includeConfig=false&includeGroups=false`, @@ -56,36 +54,36 @@ describe('Statistics', () => { }); describe('updateUsersReports', () => { - it('should make a PUT call to the specific Users url', () => { + it('should make a PUT call to the specific Users url', async () => { const userId = 'Jida'; const reportsIds = ['a', 'b', 'c']; - users.updateUsersReports(userId, reportsIds); + await users.updateUsersReports(userId, reportsIds); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith(`${UAUsers.baseUrl}/${userId}/reports`, reportsIds); }); }); describe('getUser', () => { - it('should make a GET call to /v15/users/:userId', () => { + it('should make a GET call to /v15/users/:userId', async () => { const userId = 'Jida'; - users.getUser(userId); + await users.getUser(userId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${UAUsers.baseUrl}/${userId}`); }); }); describe('checkHealth', () => { - it('should make a GET call to /v15/users/monitoring/health', () => { - users.checkHealth(); + it('should make a GET call to /v15/users/monitoring/health', async () => { + await users.checkHealth(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${UAUsers.baseUrl}/monitoring/health`); }); }); describe('checkStatus', () => { - it('should make a GET call to /v15/users/status with specific options', () => { - users.checkStatus(); + it('should make a GET call to /v15/users/status with specific options', async () => { + await users.checkStatus(); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${UAUsers.baseUrl}/status`); }); diff --git a/src/resources/UsageAnalytics/tests/UsageAnalytics.spec.ts b/src/resources/UsageAnalytics/tests/UsageAnalytics.spec.ts index 3873bde82..36dcc1434 100644 --- a/src/resources/UsageAnalytics/tests/UsageAnalytics.spec.ts +++ b/src/resources/UsageAnalytics/tests/UsageAnalytics.spec.ts @@ -11,12 +11,10 @@ import UsageAnalytics from '../UsageAnalytics.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('UsageAnalytics', () => { let ua: UsageAnalytics; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); diff --git a/src/resources/Users/UserInterfaces.ts b/src/resources/Users/UserInterfaces.ts index c678ab402..1676604de 100644 --- a/src/resources/Users/UserInterfaces.ts +++ b/src/resources/Users/UserInterfaces.ts @@ -2,7 +2,7 @@ import {AuthProvider} from '../Enums.js'; import {RealmModel} from '../Groups/index.js'; export interface UserModel { - additionalInformation: Record; + additionalInformation: Record; country: string; credentialsExpired: boolean; displayName: string; diff --git a/src/resources/Users/tests/User.spec.ts b/src/resources/Users/tests/User.spec.ts index 1f7b25fa5..ad6d0903f 100644 --- a/src/resources/Users/tests/User.spec.ts +++ b/src/resources/Users/tests/User.spec.ts @@ -4,12 +4,10 @@ import {UserModel} from '../UserInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('User', () => { let user: User; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -17,8 +15,8 @@ describe('User', () => { }); describe('get', () => { - it('should make a GET call to the User base url', () => { - user.get('💎'); + it('should make a GET call to the User base url', async () => { + await user.get('💎'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/users/💎'); }); @@ -36,18 +34,18 @@ describe('User', () => { }); }); - it('should make a PUT call to the specific user url and extend existing current user attributes', () => { + it('should make a PUT call to the specific user url and extend existing current user attributes', async () => { const userModel: Partial = { - additionalInformation: {happy: true}, + additionalInformation: {happy: 'true'}, displayName: 'carrot', }; - user.update(userModel); + await user.update(userModel); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( '/rest/users/🥕', expect.objectContaining({ - additionalInformation: {happy: true}, + additionalInformation: {happy: 'true'}, displayName: 'carrot', username: '🥕', }), @@ -56,8 +54,8 @@ describe('User', () => { }); describe('listRealms', () => { - it('should make a GET call /rest/users/{username}/realms', () => { - user.listRealms('🍪'); + it('should make a GET call /rest/users/{username}/realms', async () => { + await user.listRealms('🍪'); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith('/rest/users/🍪/realms'); }); diff --git a/src/resources/Vaults/Vaults.ts b/src/resources/Vaults/Vaults.ts index c80da5a1c..81381ba5f 100644 --- a/src/resources/Vaults/Vaults.ts +++ b/src/resources/Vaults/Vaults.ts @@ -10,8 +10,7 @@ export default class Vaults extends Resource { /** * Find error vault keys for a given snapshot. - * - * @param {string} snapshotId The unique identifier of the target snapshot. + * @param snapshotId The unique identifier of the target snapshot. */ findMissing(snapshotId: string) { return this.api.get(this.buildPath(`${Vaults.baseUrl}/missing`, {snapshotId})); @@ -19,10 +18,9 @@ export default class Vaults extends Resource { /** * Import vault entries from the starting organization into the current organization. - * - * @param {string} currentSnapshotId The unique identifier of the current snapshot. - * @param {string} sourceOrganizationId The unique identifier of the source organization. - * @param {VaultFetchStrategy} fetchStrategy Choosing the strategy to use when importing vault entries. + * @param currentSnapshotId The unique identifier of the current snapshot. + * @param sourceOrganizationId The unique identifier of the source organization. + * @param fetchStrategy Choosing the strategy to use when importing vault entries. */ import(currentSnapshotId: string, sourceOrganizationId: string, fetchStrategy: VaultFetchStrategy) { return this.api.put( @@ -36,8 +34,7 @@ export default class Vaults extends Resource { /** * Create a vault entry. - * - * @param {VaultEntryModel} model Vault entry model + * @param model Vault entry model */ create(model: VaultEntryModel) { return this.api.post(Vaults.baseUrl, model); @@ -45,8 +42,7 @@ export default class Vaults extends Resource { /** * Get all vault entries for an organization. - * - * @param {VaultEntryListOptions} options pagination options + * @param options pagination options */ list(options?: VaultEntryListOptions) { const normalizedOptions = normalizePaginatedOptions(options); diff --git a/src/resources/Vaults/tests/Vaults.spec.ts b/src/resources/Vaults/tests/Vaults.spec.ts index 407d3ea1f..08057c7c8 100644 --- a/src/resources/Vaults/tests/Vaults.spec.ts +++ b/src/resources/Vaults/tests/Vaults.spec.ts @@ -5,12 +5,10 @@ import {VaultEntryModel} from '../VaultsInterfaces.js'; jest.mock('../../../APICore.js'); -const APIMock: jest.Mock = API as any; - describe('Vaults', () => { let vaults: Vaults; - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const api = new API({accessToken: 'some-token'}); + const serverlessApi = new API({accessToken: 'some-token'}); beforeEach(() => { jest.clearAllMocks(); @@ -18,10 +16,10 @@ describe('Vaults', () => { }); describe('findMissing', () => { - it('should make a GET call to the specific Vaults url', () => { + it('should make a GET call to the specific Vaults url', async () => { const snapshotToGetId = 'snapshot-to-be-fetched'; - vaults.findMissing(snapshotToGetId); + await vaults.findMissing(snapshotToGetId); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Vaults.baseUrl}/missing?snapshotId=${snapshotToGetId}`); @@ -29,11 +27,11 @@ describe('Vaults', () => { }); describe('import', () => { - it('should make a PUT call to the specific Vaults url', () => { + it('should make a PUT call to the specific Vaults url', async () => { const currentSnaphostId = 'current-snapshot-id'; const sourceOrganizationId = 'source-organization-id'; - vaults.import(currentSnaphostId, sourceOrganizationId, VaultFetchStrategy.overwrite); + await vaults.import(currentSnaphostId, sourceOrganizationId, VaultFetchStrategy.overwrite); expect(api.put).toHaveBeenCalledTimes(1); expect(api.put).toHaveBeenCalledWith( @@ -43,9 +41,9 @@ describe('Vaults', () => { }); describe('create', () => { - it('should make a POST call to the specific Vaults url', () => { + it('should make a POST call to the specific Vaults url', async () => { const vaultEntryModel: VaultEntryModel = {}; - vaults.create(vaultEntryModel); + await vaults.create(vaultEntryModel); expect(api.post).toHaveBeenCalledTimes(1); expect(api.post).toHaveBeenCalledWith(Vaults.baseUrl, vaultEntryModel); @@ -53,8 +51,8 @@ describe('Vaults', () => { }); describe('list', () => { - it('should make a GET call to the specific Vaults url', () => { - vaults.list({page: 2, perPage: 10}); + it('should make a GET call to the specific Vaults url', async () => { + await vaults.list({page: 2, perPage: 10}); expect(api.get).toHaveBeenCalledTimes(1); expect(api.get).toHaveBeenCalledWith(`${Vaults.baseUrl}?page=2&pageSize=10`); diff --git a/src/resources/tests/Resource.spec.ts b/src/resources/tests/Resource.spec.ts index 3258c51eb..32815629d 100644 --- a/src/resources/tests/Resource.spec.ts +++ b/src/resources/tests/Resource.spec.ts @@ -1,10 +1,9 @@ import API from '../../APICore.js'; +import {PlatformClientOptions} from '../../ConfigurationInterfaces.js'; import Resource from '../Resource.js'; jest.mock('../../APICore.js'); -const APIMock: jest.Mock = API as any; - class ResourceFixture extends Resource { testBuildPath(route: string, params: Record) { return super.buildPath(route, params); @@ -15,8 +14,13 @@ class ResourceFixture extends Resource { } describe('Resource', () => { - const api = new APIMock() as jest.Mocked; - const serverlessApi = new APIMock() as jest.Mocked; + const testConfig = { + host: 'https://some.url/', + organizationId: 'some-org-id', + accessToken: jest.fn(() => 'my-token'), + } satisfies PlatformClientOptions; + const api = new API(testConfig); + const serverlessApi = new API(testConfig); let resource: ResourceFixture; beforeEach(() => { diff --git a/src/tests/APICore.spec.ts b/src/tests/APICore.spec.ts index 04a6aaa2f..886293255 100644 --- a/src/tests/APICore.spec.ts +++ b/src/tests/APICore.spec.ts @@ -1,15 +1,16 @@ -import fetchMock from 'jest-fetch-mock'; +import {enableFetchMocks} from 'jest-fetch-mock'; import API from '../APICore.js'; import {PlatformClientOptions} from '../ConfigurationInterfaces.js'; import getEndpoint, {Environment, Region} from '../Endpoints.js'; import {ResponseHandler} from '../handlers/response/ResponseHandlerInterfaces.js'; +enableFetchMocks(); + jest.mock('../Endpoints.js'); /** * Creates a method that can be passed to `fetchMock` to handle a request. * It will delay completing the request, and handle abort like `fetch` would. - * * @param result The value to resolve with after timeout, if the request is not aborted. * @param timeout The delay to resolve with. * @returns A functhion that can be passed to `fetchMock`. @@ -26,6 +27,9 @@ const delayedResponse = return; } + /** + * + */ function abort(this: AbortSignal) { if (tid !== null) { clearTimeout(tid); @@ -51,11 +55,11 @@ const delayedResponse = }); describe('APICore', () => { - const testConfig: PlatformClientOptions = { + const testConfig = { host: 'https://some.url/', organizationId: 'some-org-id', accessToken: jest.fn(() => 'my-token'), - }; + } satisfies PlatformClientOptions; const testData = { route: 'rest/resource', response: {nuggets: 12345}, @@ -233,7 +237,7 @@ describe('APICore', () => { }); describe('postForm', () => { - const formMock: jest.Mocked = jest.fn() as any; + const formMock = jest.fn() as unknown as jest.Mocked; it('should do a simple POST request using form data', async () => { fetchMock.mockResponseOnce(JSON.stringify(testData.response)); @@ -391,7 +395,7 @@ describe('APICore', () => { await api.get(testData.route); const init = fetchMock.mock.calls[0][1]; expect(init?.signal?.aborted).toBe(false); - await api.abortGetRequests(); + api.abortGetRequests(); expect(init?.signal?.aborted).toBe(true); }); @@ -401,14 +405,14 @@ describe('APICore', () => { await api.get(testData.route, {signal: userAbort.signal}); const init = fetchMock.mock.calls[0][1]; expect(init?.signal?.aborted).toBe(false); - await api.abortGetRequests(); + api.abortGetRequests(); expect(init?.signal?.aborted).toBe(true); expect(userAbort.signal.aborted).toBe(false); }); it('should not abort get requests that are being sent after the abort signal', async () => { fetchMock.mockResponseOnce(JSON.stringify(testData.response)); - await api.abortGetRequests(); + api.abortGetRequests(); await api.get(testData.route); const init = fetchMock.mock.calls[0][1]; expect(init?.signal?.aborted).toBe(false); @@ -479,15 +483,9 @@ describe('APICore', () => { }); describe('checkToken', () => { - const mockedFormData = { - append: jest.fn(), - }; - - beforeEach(() => { - (global as any).FormData = jest.fn(() => mockedFormData); - }); - it('should check if the retrieved token is valid', async () => { + const mockedFormData = new FormData(); + mockedFormData.set('token', 'my-token'); const postFormSpy = jest.spyOn(API.prototype, 'postForm').mockResolvedValue(Promise.resolve()); const api = new API(testConfig); @@ -495,8 +493,6 @@ describe('APICore', () => { expect(postFormSpy).toHaveBeenCalledTimes(1); expect(postFormSpy).toHaveBeenCalledWith('/oauth/check_token', mockedFormData); - expect(mockedFormData.append).toHaveBeenCalledTimes(1); - expect(mockedFormData.append).toHaveBeenCalledWith('token', 'my-token'); }); it('should throw an error if the check token call fails', async () => { diff --git a/src/tests/PlatformClient.spec.ts b/src/tests/PlatformClient.spec.ts index 365894049..488398d5d 100644 --- a/src/tests/PlatformClient.spec.ts +++ b/src/tests/PlatformClient.spec.ts @@ -6,7 +6,7 @@ import PlatformResources from '../resources/PlatformResources.js'; jest.mock('../APICore.js'); -const APIMock: jest.Mock = API as any; +const APIMock = jest.mocked(API); describe('PlatformClient', () => { const baseOptions: PlatformClientOptions = { @@ -56,11 +56,11 @@ describe('PlatformClient', () => { expect(abortServerlessGetRequestsSpy).toHaveBeenCalledTimes(1); }); - it('should check the validity of the access token when initializing the platform client', () => { + it('should check the validity of the access token when initializing the platform client', async () => { const checkTokenSpy = jest.spyOn(API.prototype, 'checkToken'); const platform = new PlatformClient(baseOptions); - platform.initialize(); + await platform.initialize(); expect(checkTokenSpy).toHaveBeenCalledTimes(1); }); @@ -73,7 +73,7 @@ describe('PlatformClient', () => { }); describe('withFeatures', () => { - it('should create a copy of the client with the new feature', async () => { + it('should create a copy of the client with the new feature', () => { const feature: Feature = jest.fn((currentOptions) => currentOptions); const client = new PlatformClient(baseOptions); @@ -83,7 +83,7 @@ describe('PlatformClient', () => { expect(clientWithFeature).not.toBe(client); }); - it('should execute the feature', async () => { + it('should execute the feature', () => { const feature: Feature = jest.fn((currentOptions) => currentOptions); const client = new PlatformClient(baseOptions); @@ -92,7 +92,7 @@ describe('PlatformClient', () => { expect(feature).toHaveBeenCalled(); }); - it('should execute all the features', async () => { + it('should execute all the features', () => { const feature1: Feature = jest.fn((currentOptions) => currentOptions); const feature2: Feature = jest.fn((currentOptions) => currentOptions); const client = new PlatformClient(baseOptions); @@ -113,7 +113,7 @@ describe('PlatformClient', () => { } } - const experimentalResources: any[] = [{key: 'something', resource: Something}]; + const experimentalResources = [{key: 'something', resource: Something}]; class ExperimentalPlatformClient extends PlatformClient { something: Something; diff --git a/src/utils/createFetcher.ts b/src/utils/createFetcher.ts index 048d1abf8..1b109820c 100644 --- a/src/utils/createFetcher.ts +++ b/src/utils/createFetcher.ts @@ -2,7 +2,6 @@ import {AsyncSupplier, Predicate} from './types.js'; /** * Creates a method to perform a fetch request. Can be retried by calling the method again. - * * @param url The URL to use for the request. * @param init The parameters to provide to the request. * @param shouldReject Predicate to see if the response should be (Promise) rejected. diff --git a/src/utils/normalizePaginatedOptions.ts b/src/utils/normalizePaginatedOptions.ts index 63f36c068..584f65b6c 100644 --- a/src/utils/normalizePaginatedOptions.ts +++ b/src/utils/normalizePaginatedOptions.ts @@ -12,7 +12,10 @@ export const normalizePaginatedOptions = ( } }; -const isDeprecatedPaginated = (options: any): options is DeprecatedPaginated => { +const isDeprecatedPaginated = (options?: object): options is DeprecatedPaginated => { + if (!options) { + return false; + } const keys = Object.keys(options); if (!keys.includes('perPage')) { return true; diff --git a/src/utils/stringifyNestedObjects.ts b/src/utils/stringifyNestedObjects.ts index 7a5519093..a320f9dbc 100644 --- a/src/utils/stringifyNestedObjects.ts +++ b/src/utils/stringifyNestedObjects.ts @@ -1,6 +1,6 @@ -export const stringifyNestedObjects = (obj: object): object => { +export const stringifyNestedObjects = (obj: T): T => { Object.keys(obj).forEach((key) => { - const value = obj[key]; + const value = obj[key as keyof T]; if (value && typeof value === 'object' && !Array.isArray(value)) { obj[key] = JSON.stringify(value, null, 0); } diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json deleted file mode 100644 index 5dd17a02e..000000000 --- a/tsconfig.eslint.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compilerOptions": { - "noEmit": true - }, - "include": ["src/**/*.ts", "*.ts"] -} diff --git a/tsconfig.json b/tsconfig.json index 820d1903d..46405ad42 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,5 +13,6 @@ "importHelpers": true, "outDir": "dist", "strictNullChecks": true - } + }, + "exclude": ["*.cjs"] }