diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 62b0f7e0..15f5393f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,22 +1,31 @@ -name: tests +name: Tests + on: push: branches: [main] pull_request: branches: [main] + jobs: build: runs-on: ubuntu-latest strategy: matrix: - node_version: ["20"] - name: Node.js ${{ matrix.node_version }} + node-version: ["20.x", "21.x", "22.x"] # Updated to include Node.js 22.x + + name: Node.js ${{ matrix.node-version }} steps: - - uses: actions/checkout@v2 - - name: Setup node - uses: actions/setup-node@v2 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node_version }} - cache: "npm" - - run: npm install - - run: npm run test:ci + node-version: ${{ matrix.node-version }} + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm run test:all \ No newline at end of file diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 06497fe1..ccbd09ef 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -28,7 +28,7 @@ If you are adding new functionality or fixing a bug, please add a test for it. **Run test and build the library before submitting a pull request :pray:** ```bash -npm run test:ci +npm run test:all ``` **How to add a new module** @@ -39,7 +39,7 @@ To create a new module: - Add a new package.json inside the folder (see any of them as an example) - Add required dependencies to "dependencies" inside package.json. Ensure correct dependency versions. For example, if your module needs to use `tonal/core` look at core's package.json to see what version to use - Add your functionality and tests -- Ensure everything works: run `npm run test:ci` at root folder +- Ensure everything works: run `npm run test:all` at root folder - Create a pull request ## Release diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..a1c773a8 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,42 @@ +import globals from "globals"; +import js from "@eslint/js"; +import tsParser from "@typescript-eslint/parser"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; + +export default [ + { + files: ["packages/**/*.ts"], + ignores: [ + "node_modules/", + "packages/**/dist/*", + ], + + languageOptions: { + globals: { + ...globals.browser, // Standard browser globals (e.g., window, document) + ...globals.node, // Standard Node.js globals (e.g., process, require) + }, + ecmaVersion: "latest", + sourceType: "module", + parser: tsParser, + + parserOptions: { + project: "./tsconfig.json", // Adjust this path if your main tsconfig is elsewhere + ecmaFeatures: { + }, + }, + }, + + plugins: { + "@typescript-eslint": tsPlugin, + }, + + rules: { + ...js.configs.recommended.rules, + ...tsPlugin.configs["eslint-recommended"].rules, + ...tsPlugin.configs.recommended.rules, + "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }], + + }, + }, +]; diff --git a/package-lock.json b/package-lock.json index a6b0ac6d..2136f740 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,23 +10,19 @@ ], "devDependencies": { "@changesets/cli": "^2.27.11", - "@types/jest": "^29.5.14", - "@types/node": "^22.10.2", + "@types/node": "^24.0.3", "@typescript-eslint/eslint-plugin": "^8.18.1", "@typescript-eslint/parser": "^8.18.1", + "@vitest/coverage-v8": "^3.2.4", "esbuild": "^0.25.0", - "eslint": "^8", - "jest": "^29.7.0", - "jest-config": "^29.7.0", - "lint-staged": "^15.2.11", + "eslint": "^9.29.0", + "lint-staged": "^16.1.2", "lodash": "^4.17.21", "prettier": "^3.4.2", - "ts-jest": "^29.2.5", "tsup": "^8.3.5", "turbo": "^2.3.3", - "typedoc": "^0.27.5", - "typedoc-plugin-markdown": "^4.3.2", - "typescript": "^5.7.2" + "typescript": "^5.7.2", + "vitest": "^3.2.4" } }, "node_modules/@ampproject/remapping": { @@ -34,6 +30,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -42,195 +39,34 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", - "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, - "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.26.9" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -239,309 +75,50 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, "node_modules/@changesets/apply-release-plan": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.10.tgz", - "integrity": "sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.12.tgz", + "integrity": "sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/config": "^3.1.1", "@changesets/get-version-range-type": "^0.4.0", - "@changesets/git": "^3.0.2", + "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", @@ -559,6 +136,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -570,10 +148,11 @@ } }, "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.6.tgz", - "integrity": "sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz", + "integrity": "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", @@ -588,27 +167,29 @@ "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.1.tgz", "integrity": "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0" } }, "node_modules/@changesets/cli": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.28.1.tgz", - "integrity": "sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==", + "version": "2.29.5", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.29.5.tgz", + "integrity": "sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==", "dev": true, + "license": "MIT", "dependencies": { - "@changesets/apply-release-plan": "^7.0.10", - "@changesets/assemble-release-plan": "^6.0.6", + "@changesets/apply-release-plan": "^7.0.12", + "@changesets/assemble-release-plan": "^6.0.9", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.1", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", - "@changesets/get-release-plan": "^4.0.8", - "@changesets/git": "^3.0.2", + "@changesets/get-release-plan": "^4.0.13", + "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", - "@changesets/read": "^0.6.3", + "@changesets/read": "^0.6.5", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", @@ -636,6 +217,7 @@ "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.1.1.tgz", "integrity": "sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", @@ -651,6 +233,7 @@ "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", "dev": true, + "license": "MIT", "dependencies": { "extendable-error": "^0.1.5" } @@ -660,6 +243,7 @@ "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz", "integrity": "sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", @@ -668,15 +252,16 @@ } }, "node_modules/@changesets/get-release-plan": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.8.tgz", - "integrity": "sha512-MM4mq2+DQU1ZT7nqxnpveDMTkMBLnwNX44cX7NSxlXmr7f8hO6/S2MXNiXG54uf/0nYnefv0cfy4Czf/ZL/EKQ==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.13.tgz", + "integrity": "sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==", "dev": true, + "license": "MIT", "dependencies": { - "@changesets/assemble-release-plan": "^6.0.6", + "@changesets/assemble-release-plan": "^6.0.9", "@changesets/config": "^3.1.1", "@changesets/pre": "^2.0.2", - "@changesets/read": "^0.6.3", + "@changesets/read": "^0.6.5", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } @@ -685,13 +270,15 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@changesets/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.2.tgz", - "integrity": "sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz", + "integrity": "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@manypkg/get-packages": "^1.1.3", @@ -705,6 +292,7 @@ "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz", "integrity": "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.1.0" } @@ -714,6 +302,7 @@ "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.1.tgz", "integrity": "sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "js-yaml": "^3.13.1" @@ -724,6 +313,7 @@ "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.2.tgz", "integrity": "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/types": "^6.1.0", @@ -732,12 +322,13 @@ } }, "node_modules/@changesets/read": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.3.tgz", - "integrity": "sha512-9H4p/OuJ3jXEUTjaVGdQEhBdqoT2cO5Ts95JTFsQyawmKzpL8FnIeJSyhTDPW1MBRDnwZlHFEM9SpPwJDY5wIg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.5.tgz", + "integrity": "sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==", "dev": true, + "license": "MIT", "dependencies": { - "@changesets/git": "^3.0.2", + "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/parse": "^0.4.1", "@changesets/types": "^6.1.0", @@ -751,6 +342,7 @@ "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz", "integrity": "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" @@ -760,13 +352,15 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.1.0.tgz", "integrity": "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@changesets/write": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.4.0.tgz", "integrity": "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==", "dev": true, + "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", @@ -779,6 +373,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -790,13 +385,14 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -806,13 +402,14 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -822,13 +419,14 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -838,13 +436,14 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -854,13 +453,14 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -870,13 +470,14 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -886,13 +487,14 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -902,13 +504,14 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -918,13 +521,14 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -934,13 +538,14 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -950,13 +555,14 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -966,13 +572,14 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -982,13 +589,14 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -998,13 +606,14 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1014,13 +623,14 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1030,13 +640,14 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1046,13 +657,14 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1062,13 +674,14 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1078,13 +691,14 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1094,13 +708,14 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1110,13 +725,14 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1126,13 +742,14 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -1142,13 +759,14 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1158,13 +776,14 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1174,13 +793,14 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1190,10 +810,11 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -1212,20 +833,84 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "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", @@ -1233,7 +918,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" @@ -1243,23 +928,36 @@ "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 + "dev": true, + "license": "Python-2.0" }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@eslint/eslintrc/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" }, @@ -1272,6 +970,7 @@ "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" }, @@ -1280,60 +979,91 @@ } }, "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.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@gerrit0/mini-shiki": { - "version": "1.27.2", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.27.2.tgz", - "integrity": "sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, - "dependencies": { - "@shikijs/engine-oniguruma": "^1.27.2", - "@shikijs/types": "^1.27.2", - "@shikijs/vscode-textmate": "^10.0.1" + "license": "Apache-2.0", + "engines": { + "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/plugin-kit": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@eslint/core": "^0.15.0", + "levn": "^0.4.1" }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.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==", + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "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==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": "*" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -1341,6 +1071,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1349,18 +1080,26 @@ "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", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1378,6 +1117,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1390,6 +1130,7 @@ "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" }, @@ -1401,13 +1142,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1425,6 +1168,7 @@ "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" }, @@ -1440,6 +1184,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1452,314 +1197,22 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, "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": { "node": ">=8" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "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/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1774,6 +1227,7 @@ "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": { "node": ">=6.0.0" } @@ -1783,6 +1237,7 @@ "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": { "node": ">=6.0.0" } @@ -1791,13 +1246,15 @@ "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 + "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": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1808,6 +1265,7 @@ "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "@types/node": "^12.7.1", @@ -1819,13 +1277,15 @@ "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@manypkg/find-root/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -1840,6 +1300,7 @@ "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", @@ -1853,13 +1314,15 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@manypkg/get-packages/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -1874,6 +1337,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1887,6 +1351,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1896,6 +1361,7 @@ "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": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1909,308 +1375,292 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", - "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.0.tgz", + "integrity": "sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", - "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.0.tgz", + "integrity": "sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", - "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", - "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", - "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.0.tgz", + "integrity": "sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", - "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.0.tgz", + "integrity": "sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", - "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.0.tgz", + "integrity": "sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", - "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.0.tgz", + "integrity": "sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", - "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", - "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", - "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.0.tgz", + "integrity": "sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", - "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.0.tgz", + "integrity": "sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", - "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.0.tgz", + "integrity": "sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.0.tgz", + "integrity": "sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", - "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.0.tgz", + "integrity": "sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", - "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", - "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", - "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", - "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.0.tgz", + "integrity": "sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", - "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", - "dev": true, - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "dev": true, - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "dev": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, "node_modules/@tonaljs/abc-notation": { "resolved": "packages/abc-notation", "link": true @@ -2339,156 +1789,63 @@ "resolved": "packages/voicing-dictionary", "link": true }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.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, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@types/deep-eql": "*" } }, - "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==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } + "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } + "license": "MIT" }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "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, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } + "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", - "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", - "dev": true, - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true - }, - "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==", + "version": "24.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz", + "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "undici-types": "~7.8.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.0.tgz", - "integrity": "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", + "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/type-utils": "8.26.0", - "@typescript-eslint/utils": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/type-utils": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2498,21 +1855,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "@typescript-eslint/parser": "^8.34.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.0.tgz", - "integrity": "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", + "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/typescript-estree": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4" }, "engines": { @@ -2527,14 +1885,37 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", + "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.34.1", + "@typescript-eslint/types": "^8.34.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.0.tgz", - "integrity": "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0" + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2544,16 +1925,34 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", + "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.0.tgz", - "integrity": "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", + "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.0", - "@typescript-eslint/utils": "8.26.0", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/utils": "8.34.1", "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2568,10 +1967,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz", - "integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -2581,19 +1981,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz", - "integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/visitor-keys": "8.26.0", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2607,15 +2010,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.0.tgz", - "integrity": "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.0", - "@typescript-eslint/types": "8.26.0", - "@typescript-eslint/typescript-estree": "8.26.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2630,13 +2034,14 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz", - "integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2647,10 +2052,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -2658,17 +2064,161 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true + "node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2681,6 +2231,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2690,6 +2241,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2706,32 +2258,22 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-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==", + "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": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" + "environment": "^1.0.0" }, - "funding": { - "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, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2742,6 +2284,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2751,6 +2294,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2765,26 +2309,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "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, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -2794,146 +2327,46 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true - }, - "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/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">=12" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "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==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "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/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.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==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.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==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/better-path-resolve": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", "dev": true, + "license": "MIT", "dependencies": { "is-windows": "^1.0.0" }, @@ -2942,10 +2375,11 @@ } }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -2955,6 +2389,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2962,70 +2397,12 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "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==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, "node_modules/bundle-require": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", "dev": true, + "license": "MIT", "dependencies": { "load-tsconfig": "^0.2.3" }, @@ -3041,6 +2418,7 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3050,44 +2428,34 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "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/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001702", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", - "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, "node_modules/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" @@ -3099,26 +2467,29 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -3140,21 +2511,17 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true - }, "node_modules/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" }, @@ -3170,6 +2537,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" @@ -3181,87 +2549,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/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, - "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/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "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==", - "dev": true - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3273,63 +2566,48 @@ "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 + "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 + "dev": true, + "license": "MIT" }, "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "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 - }, - "node_modules/consola": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz", - "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==", "dev": true, - "engines": { - "node": "^14.18.0 || >=16.10.0" - } + "license": "MIT" }, - "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 + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" }, - "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/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.18.0 || >=16.10.0" } }, "node_modules/cross-spawn": { @@ -3337,6 +2615,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3347,10 +2626,11 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3363,67 +2643,39 @@ } } }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "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, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -3431,68 +2683,26 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "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, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz", - "integrity": "sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -3501,23 +2711,12 @@ "node": ">=8.6" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3525,21 +2724,20 @@ "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/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } + "license": "MIT" }, "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3547,40 +2745,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "engines": { - "node": ">=6" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/escape-string-regexp": { @@ -3588,6 +2777,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3596,72 +2786,78 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", "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", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.1", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.29.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "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==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3672,6 +2868,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3679,27 +2876,36 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/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 - }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3711,16 +2917,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/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==", + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/eslint/node_modules/locate-path": { @@ -3728,6 +2932,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -3743,6 +2948,7 @@ "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" }, @@ -3755,6 +2961,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -3770,6 +2977,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -3781,17 +2989,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.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" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3802,6 +3024,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3815,6 +3038,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3827,6 +3051,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3839,15 +3064,27 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3856,67 +3093,32 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "license": "MIT" }, - "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/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, - "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" - }, + "license": "Apache-2.0", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12.0.0" } }, "node_modules/extendable-error": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -3930,13 +3132,15 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3953,6 +3157,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3964,63 +3169,37 @@ "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 + "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 + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.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==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "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==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, "node_modules/fill-range": { @@ -4028,6 +3207,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4040,6 +3220,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -4048,31 +3229,45 @@ "node": ">=8" } }, + "node_modules/fix-dts-default-cjs-exports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", + "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "rollup": "^4.34.8" + } + }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" @@ -4084,23 +3279,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -4110,18 +3294,13 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4130,38 +3309,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-east-asian-width": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4169,53 +3322,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -4223,38 +3335,14 @@ "node": ">=10.13.0" } }, - "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==", - "dev": true, - "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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4265,6 +3353,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -4280,68 +3369,63 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "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 + "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 + "dev": true, + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/human-id": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.1.1.tgz", "integrity": "sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==", "dev": true, + "license": "MIT", "bin": { "human-id": "dist/cli.js" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.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==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -4350,10 +3434,11 @@ } }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -4363,6 +3448,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4379,81 +3465,27 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "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==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4463,6 +3495,7 @@ "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", "engines": { "node": ">=12" }, @@ -4470,20 +3503,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4495,778 +3520,110 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-subdir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", - "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", - "dev": true, - "dependencies": { - "better-path-resolve": "1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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, - "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, - "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, - "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, - "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, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "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/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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "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-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==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "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-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, - "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-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "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-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "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, - "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-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, - "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-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "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, - "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, - "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-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, - "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-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "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, - "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, - "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, - "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-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12.0" } }, - "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==", + "node_modules/is-subdir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", "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-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "better-path-resolve": "1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "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==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "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" - }, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "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==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "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" - }, + "license": "ISC" + }, + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, + "license": "BSD-3-Clause", "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" + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "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==", + "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": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/joycon": { @@ -5274,21 +3631,24 @@ "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "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 + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" }, "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": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -5297,59 +3657,33 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "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 + "dev": true, + "license": "MIT" }, "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 + "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 - }, - "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, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } + "license": "MIT" }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -5359,33 +3693,17 @@ "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/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5399,6 +3717,7 @@ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -5410,39 +3729,32 @@ "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 - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, - "dependencies": { - "uc.micro": "^2.0.0" - } + "license": "MIT" }, "node_modules/lint-staged": { - "version": "15.4.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", - "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.2.tgz", + "integrity": "sha512-sQKw2Si2g9KUZNY3XNvRuDq4UJqpHwF0/FQzZR2M7I5MvtpWvibikCjUVJzZdGE0ByurEl3KQNvsGetd1ty1/Q==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^5.4.1", - "commander": "^13.1.0", - "debug": "^4.4.0", - "execa": "^8.0.1", + "commander": "^14.0.0", + "debug": "^4.4.1", "lilconfig": "^3.1.3", - "listr2": "^8.2.5", + "listr2": "^8.3.3", "micromatch": "^4.0.8", + "nano-spawn": "^1.0.2", "pidtree": "^0.6.0", "string-argv": "^0.3.2", - "yaml": "^2.7.0" + "yaml": "^2.8.0" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=18.12.0" + "node": ">=20.17" }, "funding": { "url": "https://opencollective.com/lint-staged" @@ -5453,6 +3765,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -5460,145 +3773,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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, - "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, - "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, - "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, - "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, - "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, - "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, - "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, - "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, - "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, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/listr2": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", @@ -5616,6 +3796,7 @@ "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -5625,6 +3806,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -5636,37 +3818,36 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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 + "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 + "dev": true, + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true + "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", @@ -5681,26 +3862,12 @@ "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, - "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" }, @@ -5713,6 +3880,7 @@ "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" }, @@ -5725,6 +3893,7 @@ "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" }, @@ -5740,6 +3909,7 @@ "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" @@ -5756,6 +3926,7 @@ "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" }, @@ -5766,26 +3937,48 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/loupe": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", + "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", + "dev": true, + "license": "MIT" + }, + "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/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -5796,61 +3989,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/markdown-it/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 - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true - }, - "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 - }, "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" } @@ -5860,6 +4004,7 @@ "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" @@ -5868,20 +4013,12 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "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" }, @@ -5894,6 +4031,7 @@ "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" }, @@ -5909,15 +4047,30 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5926,96 +4079,76 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.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 - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/nano-spawn": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz", + "integrity": "sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=20.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" } }, - "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==", + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, - "dependencies": { - "path-key": "^3.0.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "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/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, - "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, - "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", @@ -6033,6 +4166,7 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6041,13 +4175,15 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/p-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, + "license": "MIT", "dependencies": { "p-map": "^2.0.0" }, @@ -6060,6 +4196,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6075,6 +4212,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -6087,6 +4225,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6096,6 +4235,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6104,13 +4244,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/package-manager-detector": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", "dev": true, + "license": "MIT", "dependencies": { "quansync": "^0.2.7" } @@ -6120,6 +4262,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6127,62 +4270,32 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/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_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "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 - }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -6194,32 +4307,46 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true - }, "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" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6232,6 +4359,7 @@ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, + "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -6244,29 +4372,60 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "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==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-load-config": { @@ -6284,6 +4443,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "lilconfig": "^3.1.1" }, @@ -6316,15 +4476,17 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.0.tgz", + "integrity": "sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -6335,83 +4497,20 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/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/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true, - "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==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, "node_modules/quansync": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.8.tgz", - "integrity": "sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", + "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", "dev": true, "funding": [ { @@ -6422,7 +4521,8 @@ "type": "individual", "url": "https://github.com/sponsors/sxzz" } - ] + ], + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -6442,19 +4542,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "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==", - "dev": true + ], + "license": "MIT" }, "node_modules/read-yaml-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", @@ -6465,73 +4561,18 @@ "node": ">=6" } }, - "node_modules/read-yaml-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, - "engines": { - "node": ">=4" - } - }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.18.0" }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/resolve-from": { @@ -6539,24 +4580,17 @@ "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.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "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" @@ -6573,6 +4607,7 @@ "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" }, @@ -6583,23 +4618,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -6609,31 +4633,17 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, "node_modules/rollup": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", - "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.0.tgz", + "integrity": "sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -6643,25 +4653,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.35.0", - "@rollup/rollup-android-arm64": "4.35.0", - "@rollup/rollup-darwin-arm64": "4.35.0", - "@rollup/rollup-darwin-x64": "4.35.0", - "@rollup/rollup-freebsd-arm64": "4.35.0", - "@rollup/rollup-freebsd-x64": "4.35.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", - "@rollup/rollup-linux-arm-musleabihf": "4.35.0", - "@rollup/rollup-linux-arm64-gnu": "4.35.0", - "@rollup/rollup-linux-arm64-musl": "4.35.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", - "@rollup/rollup-linux-riscv64-gnu": "4.35.0", - "@rollup/rollup-linux-s390x-gnu": "4.35.0", - "@rollup/rollup-linux-x64-gnu": "4.35.0", - "@rollup/rollup-linux-x64-musl": "4.35.0", - "@rollup/rollup-win32-arm64-msvc": "4.35.0", - "@rollup/rollup-win32-ia32-msvc": "4.35.0", - "@rollup/rollup-win32-x64-msvc": "4.35.0", + "@rollup/rollup-android-arm-eabi": "4.44.0", + "@rollup/rollup-android-arm64": "4.44.0", + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-freebsd-arm64": "4.44.0", + "@rollup/rollup-freebsd-x64": "4.44.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.44.0", + "@rollup/rollup-linux-arm-musleabihf": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.44.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.0", + "@rollup/rollup-linux-riscv64-gnu": "4.44.0", + "@rollup/rollup-linux-riscv64-musl": "4.44.0", + "@rollup/rollup-linux-s390x-gnu": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-ia32-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0", "fsevents": "~2.3.2" } }, @@ -6684,6 +4695,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -6692,13 +4704,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6711,6 +4725,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -6723,27 +4738,37 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "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 + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "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/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6753,6 +4778,7 @@ "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", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -6769,6 +4795,7 @@ "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" }, @@ -6777,22 +4804,26 @@ } }, "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==", + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "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/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, "node_modules/spawndamnit": { @@ -6800,77 +4831,49 @@ "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz", "integrity": "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==", "dev": true, + "license": "SEE LICENSE IN LICENSE", "dependencies": { "cross-spawn": "^7.0.5", "signal-exit": "^4.0.1" } }, - "node_modules/spawndamnit/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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "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 + "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/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "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/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.19" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/string-width": { "version": "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", @@ -6889,6 +4892,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6902,13 +4906,15 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6918,6 +4924,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6930,6 +4937,7 @@ "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" }, @@ -6945,6 +4953,7 @@ "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" }, @@ -6958,6 +4967,7 @@ "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" }, @@ -6966,21 +4976,13 @@ } }, "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "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": ">=6" + "node": ">=4" } }, "node_modules/strip-json-comments": { @@ -6988,6 +4990,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6995,11 +4998,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -7022,6 +5039,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -7031,6 +5049,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -7051,6 +5070,7 @@ "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": { "has-flag": "^4.0.0" }, @@ -7058,23 +5078,12 @@ "node": ">=8" } }, - "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, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7083,52 +5092,47 @@ } }, "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "glob": "^10.4.1", + "minimatch": "^9.0.4" }, "engines": { - "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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=18" } }, - "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==", + "node_modules/test-exclude/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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 - }, "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": { "any-promise": "^1.0.0" } @@ -7138,6 +5142,7 @@ "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": { "thenify": ">= 3.1.0 < 4" }, @@ -7145,19 +5150,28 @@ "node": ">=0.8" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", - "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, + "license": "MIT", "dependencies": { - "fdir": "^6.4.3", + "fdir": "^6.4.4", "picomatch": "^4.0.2" }, "engines": { @@ -7168,10 +5182,11 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, + "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -7186,6 +5201,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7193,11 +5209,42 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "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" }, @@ -7205,17 +5252,12 @@ "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 - }, "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": { "is-number": "^7.0.0" }, @@ -7232,6 +5274,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.1.0" } @@ -7241,15 +5284,17 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12" }, @@ -7261,61 +5306,15 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/ts-jest": { - "version": "29.2.6", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", - "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", "dev": true, - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.1", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } + "license": "Apache-2.0" }, "node_modules/tsup": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.4.0.tgz", - "integrity": "sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz", + "integrity": "sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==", "dev": true, + "license": "MIT", "dependencies": { "bundle-require": "^5.1.0", "cac": "^6.7.14", @@ -7323,6 +5322,7 @@ "consola": "^3.4.0", "debug": "^4.4.0", "esbuild": "^0.25.0", + "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", @@ -7362,108 +5362,103 @@ } } }, - "node_modules/tsup/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/turbo": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.4.4.tgz", - "integrity": "sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.5.4.tgz", + "integrity": "sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==", "dev": true, + "license": "MIT", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "2.4.4", - "turbo-darwin-arm64": "2.4.4", - "turbo-linux-64": "2.4.4", - "turbo-linux-arm64": "2.4.4", - "turbo-windows-64": "2.4.4", - "turbo-windows-arm64": "2.4.4" + "turbo-darwin-64": "2.5.4", + "turbo-darwin-arm64": "2.5.4", + "turbo-linux-64": "2.5.4", + "turbo-linux-arm64": "2.5.4", + "turbo-windows-64": "2.5.4", + "turbo-windows-arm64": "2.5.4" } }, "node_modules/turbo-darwin-64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.4.4.tgz", - "integrity": "sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.5.4.tgz", + "integrity": "sha512-ah6YnH2dErojhFooxEzmvsoZQTMImaruZhFPfMKPBq8sb+hALRdvBNLqfc8NWlZq576FkfRZ/MSi4SHvVFT9PQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/turbo-darwin-arm64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.4.4.tgz", - "integrity": "sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.4.tgz", + "integrity": "sha512-2+Nx6LAyuXw2MdXb7pxqle3MYignLvS7OwtsP9SgtSBaMlnNlxl9BovzqdYAgkUW3AsYiQMJ/wBRb7d+xemM5A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/turbo-linux-64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.4.4.tgz", - "integrity": "sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.5.4.tgz", + "integrity": "sha512-5May2kjWbc8w4XxswGAl74GZ5eM4Gr6IiroqdLhXeXyfvWEdm2mFYCSWOzz0/z5cAgqyGidF1jt1qzUR8hTmOA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/turbo-linux-arm64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.4.4.tgz", - "integrity": "sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.5.4.tgz", + "integrity": "sha512-/2yqFaS3TbfxV3P5yG2JUI79P7OUQKOUvAnx4MV9Bdz6jqHsHwc9WZPpO4QseQm+NvmgY6ICORnoVPODxGUiJg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/turbo-windows-64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.4.4.tgz", - "integrity": "sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.5.4.tgz", + "integrity": "sha512-EQUO4SmaCDhO6zYohxIjJpOKRN3wlfU7jMAj3CgcyTPvQR/UFLEKAYHqJOnJtymbQmiiM/ihX6c6W6Uq0yC7mA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/turbo-windows-arm64": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.4.4.tgz", - "integrity": "sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.5.4.tgz", + "integrity": "sha512-oQ8RrK1VS8lrxkLriotFq+PiF7iiGgkZtfLKF4DDKsmdbPo0O9R2mQxm7jHLuXraRCuIQDWMIw6dpcr7Iykf4A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -7474,6 +5469,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -7481,66 +5477,12 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedoc": { - "version": "0.27.9", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.9.tgz", - "integrity": "sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==", - "dev": true, - "dependencies": { - "@gerrit0/mini-shiki": "^1.24.0", - "lunr": "^2.3.9", - "markdown-it": "^14.1.0", - "minimatch": "^9.0.5", - "yaml": "^2.6.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" - } - }, - "node_modules/typedoc-plugin-markdown": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.4.2.tgz", - "integrity": "sha512-kJVkU2Wd+AXQpyL6DlYXXRrfNrHrEIUgiABWH8Z+2Lz5Sq6an4dQ/hfvP75bbokjNDUskOdFlEEm/0fSVyC7eg==", - "dev": true, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "typedoc": "0.27.x" - } - }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7549,100 +5491,265 @@ "node": ">=14.17" } }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true, + "license": "MIT" }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "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, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" + "jiti": { + "optional": true }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } - ], + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { - "update-browserslist-db": "cli.js" + "vite-node": "vite-node.mjs" }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", "peerDependencies": { - "browserslist": ">= 4.21.0" + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, - "dependencies": { - "punycode": "^2.1.0" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" }, "engines": { - "node": ">=10.12.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, - "dependencies": { - "makeerror": "1.0.12" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -7654,6 +5761,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -7664,11 +5772,29 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/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": { "node": ">=0.10.0" } @@ -7678,6 +5804,7 @@ "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", @@ -7696,6 +5823,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7712,13 +5840,15 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7728,6 +5858,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7742,6 +5873,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -7754,6 +5886,7 @@ "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" }, @@ -7766,6 +5899,7 @@ "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" }, @@ -7776,106 +5910,17 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "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 - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" - } - }, - "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, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "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, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "node": ">= 14.6" } }, "node_modules/yocto-queue": { @@ -7883,6 +5928,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7981,21 +6027,21 @@ }, "packages/key": { "name": "@tonaljs/key", - "version": "4.11.1", + "version": "4.11.2", "license": "MIT", "dependencies": { - "@tonaljs/note": "4.12.0", + "@tonaljs/note": "4.12.1", "@tonaljs/pitch-note": "6.1.0", "@tonaljs/roman-numeral": "4.9.1" }, "devDependencies": { "@tonaljs/chord": "6.1.1", - "@tonaljs/scale": "4.13.1" + "@tonaljs/scale": "4.13.3" } }, "packages/midi": { "name": "@tonaljs/midi", - "version": "4.10.1", + "version": "4.10.2", "license": "MIT", "dependencies": { "@tonaljs/pitch-note": "6.1.0" @@ -8016,10 +6062,10 @@ }, "packages/modules": { "name": "@tonaljs/modules", - "version": "4.8.9", + "version": "4.8.11", "license": "MIT", "dependencies": { - "tonal": "6.4.0" + "tonal": "6.4.2" } }, "packages/notation-scientific": { @@ -8029,10 +6075,10 @@ }, "packages/note": { "name": "@tonaljs/note", - "version": "4.12.0", + "version": "4.12.1", "license": "MIT", "dependencies": { - "@tonaljs/midi": "4.10.1", + "@tonaljs/midi": "4.10.2", "@tonaljs/pitch": "5.0.2", "@tonaljs/pitch-distance": "5.0.5", "@tonaljs/pitch-interval": "6.1.0", @@ -8096,11 +6142,11 @@ }, "packages/range": { "name": "@tonaljs/range", - "version": "4.9.1", + "version": "4.9.2", "license": "MIT", "dependencies": { "@tonaljs/collection": "4.9.0", - "@tonaljs/midi": "4.10.1" + "@tonaljs/midi": "4.10.2" } }, "packages/rhythm-pattern": { @@ -8120,12 +6166,12 @@ }, "packages/scale": { "name": "@tonaljs/scale", - "version": "4.13.1", + "version": "4.13.3", "license": "MIT", "dependencies": { "@tonaljs/chord-type": "5.1.1", "@tonaljs/collection": "4.9.0", - "@tonaljs/note": "4.12.0", + "@tonaljs/note": "4.12.1", "@tonaljs/pcset": "4.10.1", "@tonaljs/pitch-distance": "5.0.5", "@tonaljs/pitch-note": "6.1.0", @@ -8154,7 +6200,7 @@ "license": "MIT" }, "packages/tonal": { - "version": "6.4.0", + "version": "6.4.2", "license": "MIT", "dependencies": { "@tonaljs/abc-notation": "4.9.1", @@ -8165,52 +6211,52 @@ "@tonaljs/core": "5.0.2", "@tonaljs/duration-value": "4.9.0", "@tonaljs/interval": "5.1.0", - "@tonaljs/key": "4.11.1", - "@tonaljs/midi": "4.10.1", + "@tonaljs/key": "4.11.2", + "@tonaljs/midi": "4.10.2", "@tonaljs/mode": "4.9.1", - "@tonaljs/note": "4.12.0", + "@tonaljs/note": "4.12.1", "@tonaljs/pcset": "4.10.1", "@tonaljs/progression": "4.9.1", - "@tonaljs/range": "4.9.1", + "@tonaljs/range": "4.9.2", "@tonaljs/rhythm-pattern": "1.0.0", "@tonaljs/roman-numeral": "4.9.1", - "@tonaljs/scale": "4.13.1", + "@tonaljs/scale": "4.13.3", "@tonaljs/scale-type": "4.9.1", "@tonaljs/time-signature": "4.9.0", - "@tonaljs/voice-leading": "5.1.1", - "@tonaljs/voicing": "5.1.1", - "@tonaljs/voicing-dictionary": "5.1.1" + "@tonaljs/voice-leading": "5.1.2", + "@tonaljs/voicing": "5.1.2", + "@tonaljs/voicing-dictionary": "5.1.2" } }, "packages/voice-leading": { "name": "@tonaljs/voice-leading", - "version": "5.1.1", + "version": "5.1.2", "license": "MIT", "dependencies": { - "@tonaljs/note": "4.12.0" + "@tonaljs/note": "4.12.1" } }, "packages/voicing": { "name": "@tonaljs/voicing", - "version": "5.1.1", + "version": "5.1.2", "license": "MIT", "dependencies": { "@tonaljs/chord": "6.1.1", "@tonaljs/interval": "5.1.0", - "@tonaljs/note": "4.12.0", - "@tonaljs/range": "4.9.1", - "@tonaljs/voice-leading": "5.1.1", - "@tonaljs/voicing-dictionary": "5.1.1" + "@tonaljs/note": "4.12.1", + "@tonaljs/range": "4.9.2", + "@tonaljs/voice-leading": "5.1.2", + "@tonaljs/voicing-dictionary": "5.1.2" } }, "packages/voicing-dictionary": { "name": "@tonaljs/voicing-dictionary", - "version": "5.1.1", + "version": "5.1.2", "license": "MIT", "dependencies": { "@tonaljs/chord": "6.1.1", - "@tonaljs/note": "4.12.0", - "@tonaljs/voice-leading": "5.1.1" + "@tonaljs/note": "4.12.1", + "@tonaljs/voice-leading": "5.1.2" } } } diff --git a/package.json b/package.json index ce0cef04..681f678a 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,15 @@ "module": "packages/tonal/dist/index.mjs", "types": "packages/tonal/dist/index.d.ts", "scripts": { - "publish-packages": "npm run test:ci && changeset version && changeset publish", + "publish-packages": "npm run test:all && changeset version && changeset publish", "build": "turbo run build", "format": "prettier --write packages/**/*.ts packages/**/package.json", - "test": "jest --coverage", + "test": "vitest", + "test:run": "vitest run", + "test:coverage": "vitest run --coverage", "lint": "eslint 'packages/**/*.ts'", "lint:fix": "eslint 'packages/**/*.ts' --fix", - "test:ci": "npm run format && npm run lint && npm run build && npm run test -- --no-cache", - "doc": "typedoc" + "test:all": "npm run format && npm run lint && npm run build && npm run test:run" }, "prettier": {}, "eslintConfig": { @@ -36,35 +37,20 @@ "packages/**/dist/*" ] }, - "lint-staged": { - "packages/**/*.ts": [ - "prettier --write", - "eslint 'packages/**/*.ts'" - ] - }, - "jest": { - "preset": "ts-jest", - "testEnvironment": "node" - }, "devDependencies": { "@changesets/cli": "^2.27.11", - "@types/jest": "^29.5.14", - "@types/node": "^22.10.2", + "@types/node": "^24.0.3", "@typescript-eslint/eslint-plugin": "^8.18.1", "@typescript-eslint/parser": "^8.18.1", + "@vitest/coverage-v8": "^3.2.4", "esbuild": "^0.25.0", - "eslint": "^8", - "jest": "^29.7.0", - "jest-config": "^29.7.0", - "lint-staged": "^15.2.11", + "eslint": "^9.29.0", "lodash": "^4.17.21", "prettier": "^3.4.2", - "ts-jest": "^29.2.5", "tsup": "^8.3.5", "turbo": "^2.3.3", - "typedoc": "^0.27.5", - "typedoc-plugin-markdown": "^4.3.2", - "typescript": "^5.7.2" + "typescript": "^5.7.2", + "vitest": "^3.2.4" }, "packageManager": "npm@11.0.0" } diff --git a/packages/abc-notation/test.ts b/packages/abc-notation/test.ts index 0b62481c..f1e22ac6 100644 --- a/packages/abc-notation/test.ts +++ b/packages/abc-notation/test.ts @@ -1,4 +1,5 @@ -import AbcNotation from "./index"; +import { describe, expect, test } from "vitest"; +import * as AbcNotation from "./index"; describe("@tonaljs/abc-notation", () => { test("tokenize", () => { diff --git a/packages/array/test.ts b/packages/array/test.ts index 7a2fa86e..c3494b49 100644 --- a/packages/array/test.ts +++ b/packages/array/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test, it } from "vitest"; import { compact, permutations, diff --git a/packages/chord-detect/test.ts b/packages/chord-detect/test.ts index 9da7c920..ec0ca845 100644 --- a/packages/chord-detect/test.ts +++ b/packages/chord-detect/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { detect } from "./index"; describe("@tonal/chord-detect", () => { diff --git a/packages/chord-dictionary/test.ts b/packages/chord-dictionary/test.ts index 2bdde9a6..d48f74ad 100644 --- a/packages/chord-dictionary/test.ts +++ b/packages/chord-dictionary/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import ChordDictionary from "./index"; import ChordType from "@tonaljs/chord-type"; diff --git a/packages/chord-type/test.ts b/packages/chord-type/test.ts index 8b2d652c..cf066717 100644 --- a/packages/chord-type/test.ts +++ b/packages/chord-type/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import ChordType from "./index"; import { interval } from "@tonaljs/core"; import DATA from "./data"; diff --git a/packages/chord/test.ts b/packages/chord/test.ts index c05df5ab..e892ff80 100644 --- a/packages/chord/test.ts +++ b/packages/chord/test.ts @@ -1,4 +1,5 @@ -import Chord from "./index"; +import { describe, expect, it, test } from "vitest"; +import * as Chord from "./index"; const $ = (str: string) => str.split(" "); diff --git a/packages/collection/test.ts b/packages/collection/test.ts index 54341458..7edbccd6 100644 --- a/packages/collection/test.ts +++ b/packages/collection/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it, test } from "vitest"; import Collection from "./index"; const $ = (arr: string) => arr.split(" "); diff --git a/packages/core/test/tonal.distance.test.ts b/packages/core/test/tonal.distance.test.ts index 11a78dff..20063ed9 100644 --- a/packages/core/test/tonal.distance.test.ts +++ b/packages/core/test/tonal.distance.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { distance } from "../index"; const allIntervalsFrom = (from: string) => (str: string) => diff --git a/packages/core/test/tonal.interval.test.ts b/packages/core/test/tonal.interval.test.ts index a02f5b14..4c8e26b4 100644 --- a/packages/core/test/tonal.interval.test.ts +++ b/packages/core/test/tonal.interval.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { interval, tokenizeInterval as tokenize } from "../index"; describe("interval", () => { @@ -73,7 +74,7 @@ describe("interval", () => { }); describe("interval from pitch props", () => { - it("requires step, alt and dir", () => { + test("requires step, alt and dir", () => { expect(interval({ step: 0, alt: 0, dir: 1 }).name).toBe("1P"); expect(interval({ step: 0, alt: -2, dir: 1 }).name).toBe("1dd"); expect(interval({ step: 1, alt: 1, dir: 1 }).name).toBe("2A"); @@ -82,7 +83,7 @@ describe("interval", () => { expect(interval({ step: 1000, alt: 0 }).empty).toBe(true); }); - it("accepts octave", () => { + test("accepts octave", () => { expect(interval({ step: 0, alt: 0, oct: 0, dir: 1 }).name).toBe("1P"); expect(interval({ step: 0, alt: -1, oct: 1, dir: -1 }).name).toBe("-8d"); expect(interval({ step: 0, alt: 1, oct: 2, dir: -1 }).name).toBe("-15A"); diff --git a/packages/core/test/tonal.named.test.ts b/packages/core/test/tonal.named.test.ts index e4b9baf6..1eeeed35 100644 --- a/packages/core/test/tonal.named.test.ts +++ b/packages/core/test/tonal.named.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { interval, isNamedPitch, note } from "../index"; describe("@tonaljs/core", () => { diff --git a/packages/core/test/tonal.note.test.ts b/packages/core/test/tonal.note.test.ts index 40bba39f..5576d285 100644 --- a/packages/core/test/tonal.note.test.ts +++ b/packages/core/test/tonal.note.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { note, tokenizeNote as tokenize } from "../index"; describe("note", () => { diff --git a/packages/core/test/tonal.pitch.test.ts b/packages/core/test/tonal.pitch.test.ts index 13f5bb7b..8d5c1147 100644 --- a/packages/core/test/tonal.pitch.test.ts +++ b/packages/core/test/tonal.pitch.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { interval, isPitch, note } from "../index"; describe("@tonal/tonal", () => { diff --git a/packages/core/test/tonal.transpose.test.ts b/packages/core/test/tonal.transpose.test.ts index 8cc2c10d..02ad644b 100644 --- a/packages/core/test/tonal.transpose.test.ts +++ b/packages/core/test/tonal.transpose.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { transpose } from "../index"; const transposeAllFrom = (from: string) => (str: string) => diff --git a/packages/core/test/tonal.utils.test.ts b/packages/core/test/tonal.utils.test.ts index 893410e1..790588b2 100644 --- a/packages/core/test/tonal.utils.test.ts +++ b/packages/core/test/tonal.utils.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { fillStr } from "../index"; describe("@tonaljs/core", () => { diff --git a/packages/duration-value/test.ts b/packages/duration-value/test.ts index 6de8328a..8062ce69 100644 --- a/packages/duration-value/test.ts +++ b/packages/duration-value/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import DurationValue from "./index"; describe("@tonaljs/duration-value", () => { diff --git a/packages/interval/test.ts b/packages/interval/test.ts index ee36473d..d4e3e4da 100644 --- a/packages/interval/test.ts +++ b/packages/interval/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import Interval from "./index"; const $ = (str: string) => str.split(" "); diff --git a/packages/key/__snapshots__/test.ts.snap b/packages/key/__snapshots__/test.ts.snap index 6e490574..e223d26b 100644 --- a/packages/key/__snapshots__/test.ts.snap +++ b/packages/key/__snapshots__/test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`@tonal/key C major 1`] = ` +exports[`@tonal/key > C major 1`] = ` { "alteration": 0, "chordScales": [ @@ -127,7 +127,7 @@ exports[`@tonal/key C major 1`] = ` } `; -exports[`@tonal/key C major chords 1`] = ` +exports[`@tonal/key > C major chords 1`] = ` [ { "name": "Cmaj7", @@ -289,7 +289,7 @@ exports[`@tonal/key C major chords 1`] = ` ] `; -exports[`@tonal/key C minor chords 1`] = ` +exports[`@tonal/key > C minor chords 1`] = ` [ { "name": "Cm7", @@ -525,7 +525,7 @@ exports[`@tonal/key C minor chords 1`] = ` ] `; -exports[`@tonal/key majorKeys 1`] = ` +exports[`@tonal/key > majorKeys 1`] = ` { "alteration": 3, "chordScales": [ @@ -652,7 +652,7 @@ exports[`@tonal/key majorKeys 1`] = ` } `; -exports[`@tonal/key majorKeys 2`] = ` +exports[`@tonal/key > majorKeys 2`] = ` { "alteration": -2, "chordScales": [ @@ -779,7 +779,7 @@ exports[`@tonal/key majorKeys 2`] = ` } `; -exports[`@tonal/key majorKeys 3`] = ` +exports[`@tonal/key > majorKeys 3`] = ` { "alteration": 4, "chordScales": [ @@ -906,7 +906,7 @@ exports[`@tonal/key majorKeys 3`] = ` } `; -exports[`@tonal/key minorKey 1`] = ` +exports[`@tonal/key > minorKey 1`] = ` { "alteration": -3, "harmonic": { @@ -1276,7 +1276,7 @@ exports[`@tonal/key minorKey 1`] = ` } `; -exports[`@tonal/key minorKey 2`] = ` +exports[`@tonal/key > minorKey 2`] = ` { "alteration": -5, "harmonic": { @@ -1646,7 +1646,7 @@ exports[`@tonal/key minorKey 2`] = ` } `; -exports[`@tonal/key minorKey 3`] = ` +exports[`@tonal/key > minorKey 3`] = ` { "alteration": 2, "harmonic": { diff --git a/packages/key/test.ts b/packages/key/test.ts index 70a35f56..851785cd 100644 --- a/packages/key/test.ts +++ b/packages/key/test.ts @@ -1,4 +1,6 @@ // tslint:disable-next-line: no-implicit-dependencies +import { describe, expect, test } from "vitest"; + import { get as scale } from "@tonaljs/scale"; // tslint:disable-next-line: no-implicit-dependencies import { get as chord } from "@tonaljs/chord"; @@ -127,7 +129,7 @@ describe("@tonal/key", () => { }); }); - test.only("C minor chords", () => { + test("C minor chords", () => { expect(Key.minorKeyChords("C")).toMatchSnapshot(); }); test("majorKeys", () => { diff --git a/packages/midi/test.ts b/packages/midi/test.ts index 73004fe7..829603b7 100644 --- a/packages/midi/test.ts +++ b/packages/midi/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import * as Midi from "./index"; describe("midi", () => { @@ -77,7 +78,11 @@ describe("midi", () => { }); test("empty pcsets returns the note", () => { - expect([10, 30, 40].map(Midi.pcsetNearest([]))).toEqual([]); + expect([10, 30, 40].map(Midi.pcsetNearest([]))).toEqual([ + undefined, + undefined, + undefined, + ]); }); }); diff --git a/packages/mode/test.ts b/packages/mode/test.ts index 32e7b6eb..935a2a5f 100644 --- a/packages/mode/test.ts +++ b/packages/mode/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import Mode from "./index"; describe("Mode", () => { diff --git a/packages/notation-scientific/test.ts b/packages/notation-scientific/test.ts index f2bdd44a..c0936ac1 100644 --- a/packages/notation-scientific/test.ts +++ b/packages/notation-scientific/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { name, parse, tokenize } from "./index"; describe("Scientific Notation", () => { diff --git a/packages/note/test.ts b/packages/note/test.ts index 2679ebb0..4ed9639b 100644 --- a/packages/note/test.ts +++ b/packages/note/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import Note from "./index"; const $ = (str: string) => str.split(" "); diff --git a/packages/pcset/test.ts b/packages/pcset/test.ts index 282f65b6..e567a3d0 100644 --- a/packages/pcset/test.ts +++ b/packages/pcset/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import Pcset from "./index"; const $ = (str: string) => str.split(" "); diff --git a/packages/pitch-distance/test.ts b/packages/pitch-distance/test.ts index aceb4133..1449c3b5 100644 --- a/packages/pitch-distance/test.ts +++ b/packages/pitch-distance/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { distance } from "./index"; const allIntervalsFrom = (from: string) => (str: string) => diff --git a/packages/pitch-interval/test.ts b/packages/pitch-interval/test.ts index e3d3664c..be76e512 100644 --- a/packages/pitch-interval/test.ts +++ b/packages/pitch-interval/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it, test } from "vitest"; import { interval, tokenizeInterval as tokenize } from "./index"; describe("interval", () => { diff --git a/packages/pitch-note/test.ts b/packages/pitch-note/test.ts index 0a12b96f..d79ae6d3 100644 --- a/packages/pitch-note/test.ts +++ b/packages/pitch-note/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { note, tokenizeNote as tokenize } from "./index"; describe("note", () => { diff --git a/packages/pitch/test.ts b/packages/pitch/test.ts index e7994290..4f60e645 100644 --- a/packages/pitch/test.ts +++ b/packages/pitch/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { Pitch, chroma, diff --git a/packages/progression/test.ts b/packages/progression/test.ts index c156c71c..e3fc1aa3 100644 --- a/packages/progression/test.ts +++ b/packages/progression/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import Progression from "./index"; const $ = (str: string) => str.split(" "); diff --git a/packages/range/test.ts b/packages/range/test.ts index de3b284c..5b28a883 100644 --- a/packages/range/test.ts +++ b/packages/range/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import Range from "./index"; const { numeric, chromatic } = Range; diff --git a/packages/rhythm-pattern/test.ts b/packages/rhythm-pattern/test.ts index db88f52f..81bf6291 100644 --- a/packages/rhythm-pattern/test.ts +++ b/packages/rhythm-pattern/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from "vitest"; import * as R from "./index"; const sequential = (start: number, step: number) => { diff --git a/packages/roman-numeral/index.ts b/packages/roman-numeral/index.ts index 61485fdf..5a6f03d2 100644 --- a/packages/roman-numeral/index.ts +++ b/packages/roman-numeral/index.ts @@ -18,7 +18,11 @@ export interface NoRomanNumeral extends Partial { readonly name: ""; readonly chordType: ""; } -const NoRomanNumeral: NoRomanNumeral = { empty: true, name: "", chordType: "" }; +const NO_ROMAN_NUMERAL: NoRomanNumeral = { + empty: true, + name: "", + chordType: "", +}; const cache: Record = {}; @@ -46,7 +50,7 @@ export function get(src: any): RomanNumeral | NoRomanNumeral { ? fromPitch(src) : isNamedPitch(src) ? get(src.name) - : NoRomanNumeral; + : NO_ROMAN_NUMERAL; } /** @@ -89,7 +93,7 @@ const NAMES_MINOR = ROMANS.toLowerCase().split(" "); function parse(src: string): RomanNumeral | NoRomanNumeral { const [name, acc, roman, chordType] = tokenize(src); if (!roman) { - return NoRomanNumeral; + return NO_ROMAN_NUMERAL; } const upperRoman = roman.toUpperCase(); diff --git a/packages/roman-numeral/test.ts b/packages/roman-numeral/test.ts index 83f21fd4..3d0caa3e 100644 --- a/packages/roman-numeral/test.ts +++ b/packages/roman-numeral/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it, test } from "vitest"; import { interval } from "@tonaljs/core"; import RomanNumeral from "./index"; diff --git a/packages/scale-dictionary/test.ts b/packages/scale-dictionary/test.ts index 2c0bcd8a..b1ebd68d 100644 --- a/packages/scale-dictionary/test.ts +++ b/packages/scale-dictionary/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import ScaleDictionary from "./index"; import ScaleType from "@tonaljs/scale-type"; diff --git a/packages/scale-type/test.ts b/packages/scale-type/test.ts index 4239e49a..6355a0a1 100644 --- a/packages/scale-type/test.ts +++ b/packages/scale-type/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { modes } from "@tonaljs/pcset"; import ScaleType from "./index"; diff --git a/packages/scale/test.ts b/packages/scale/test.ts index 7c274fa9..a10ba1cc 100644 --- a/packages/scale/test.ts +++ b/packages/scale/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import * as Scale from "./index"; const $ = (s: string) => s.split(" "); diff --git a/packages/time-signature/test.ts b/packages/time-signature/test.ts index d3ef2750..03850fab 100644 --- a/packages/time-signature/test.ts +++ b/packages/time-signature/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import TimeSignature from "./index"; describe("time-signature", () => { diff --git a/packages/tonal/__snapshots__/test.ts.snap b/packages/tonal/__snapshots__/test.ts.snap index bdc1650f..ff3666bd 100644 --- a/packages/tonal/__snapshots__/test.ts.snap +++ b/packages/tonal/__snapshots__/test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`tonal Modules exports functions 1`] = ` +exports[`tonal > Modules exports functions 1`] = ` { "AbcNotation": [ "abcToScientificNotation", @@ -317,7 +317,7 @@ exports[`tonal Modules exports functions 1`] = ` } `; -exports[`tonal exported modules and functions 1`] = ` +exports[`tonal > exported modules and functions 1`] = ` [ "AbcNotation", "Array", diff --git a/packages/tonal/browser/tonal.min.js b/packages/tonal/browser/tonal.min.js index 1e9feb59..6732873a 100644 --- a/packages/tonal/browser/tonal.min.js +++ b/packages/tonal/browser/tonal.min.js @@ -1,2 +1,2 @@ -"use strict";var Tonal=(()=>{var Vt=Object.defineProperty;var ho=Object.getOwnPropertyDescriptor;var vo=Object.getOwnPropertyNames;var yo=Object.prototype.hasOwnProperty;var d=(t,n)=>{for(var e in n)Vt(t,e,{get:n[e],enumerable:!0})},bo=(t,n,e,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of vo(n))!yo.call(t,o)&&o!==e&&Vt(t,o,{get:()=>n[o],enumerable:!(r=ho(n,o))||r.enumerable});return t};var Ao=t=>bo(Vt({},"__esModule",{value:!0}),t);var bi={};d(bi,{AbcNotation:()=>Kt,Array:()=>Ut,Chord:()=>on,ChordDictionary:()=>vi,ChordType:()=>dt,Collection:()=>Qt,Core:()=>$t,DurationValue:()=>an,Interval:()=>nn,Key:()=>vn,Midi:()=>cn,Mode:()=>Sn,Note:()=>dn,PcSet:()=>hi,Pcset:()=>ft,Progression:()=>xn,Range:()=>Tn,RhythmPattern:()=>Cn,RomanNumeral:()=>pn,Scale:()=>Rn,ScaleDictionary:()=>yi,ScaleType:()=>gt,TimeSignature:()=>_n,Tonal:()=>Mi,VoiceLeading:()=>On,Voicing:()=>zn,VoicingDictionary:()=>kn,accToAlt:()=>L,altToAcc:()=>F,chroma:()=>Kn,coordToInterval:()=>q,coordToNote:()=>ct,coordinates:()=>U,deprecate:()=>Bn,distance:()=>A,fillStr:()=>lo,height:()=>kt,interval:()=>f,isNamed:()=>fo,isNamedPitch:()=>C,isPitch:()=>_,midi:()=>Un,note:()=>s,pitch:()=>X,stepToLetter:()=>zt,tokenizeInterval:()=>Lt,tokenizeNote:()=>Q,tonicIntervalsTransposer:()=>O,transpose:()=>p});var Kt={};d(Kt,{abcToScientificNotation:()=>et,default:()=>Oo,distance:()=>ae,scientificToAbcNotation:()=>Ht,tokenize:()=>Bt,transpose:()=>oe});function C(t){return t!==null&&typeof t=="object"&&"name"in t&&typeof t.name=="string"}var Hn=[0,2,4,5,7,9,11],Kn=({step:t,alt:n})=>(Hn[t]+n+120)%12,kt=({step:t,alt:n,oct:e,dir:r=1})=>r*(Hn[t]+n+12*(e===void 0?-100:e)),Un=t=>{let n=kt(t);return t.oct!==void 0&&n>=-12&&n<=115?n+12:null};function _(t){return t!==null&&typeof t=="object"&&"step"in t&&typeof t.step=="number"&&"alt"in t&&typeof t.alt=="number"&&!isNaN(t.step)&&!isNaN(t.alt)}var Xn=[0,2,4,-1,1,3,5],Qn=Xn.map(t=>Math.floor(t*7/12));function U(t){let{step:n,alt:e,oct:r,dir:o=1}=t,a=Xn[n]+7*e;if(r===void 0)return[o*a];let i=r-Qn[n]-4*e;return[o*a,o*i]}var go=[3,0,4,1,5,2,6];function X(t){let[n,e,r]=t,o=go[No(n)],a=Math.floor((n+1)/7);if(e===void 0)return{step:o,alt:a,dir:r};let i=e+4*a+Qn[o];return{step:o,alt:a,oct:i,dir:r}}function No(t){let n=(t+1)%7;return n<0?7+n:n}var Jn=(t,n)=>Array(Math.abs(n)+1).join(t),qt=Object.freeze({empty:!0,name:"",num:NaN,q:"",type:"",step:NaN,alt:NaN,dir:NaN,simple:NaN,semitones:NaN,chroma:NaN,coord:[],oct:NaN}),So="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",xo="(AA|A|P|M|m|d|dd)([-+]?\\d+)",Io=new RegExp("^"+So+"|"+xo+"$");function Lt(t){let n=Io.exec(`${t}`);return n===null?["",""]:n[1]?[n[1],n[2]]:[n[4],n[3]]}var Wn={};function f(t){return typeof t=="string"?Wn[t]||(Wn[t]=jo(t)):_(t)?f(Co(t)):C(t)?f(t.name):qt}var Zn=[0,2,4,5,7,9,11],Yn="PMMPPMM";function jo(t){let n=Lt(t);if(n[0]==="")return qt;let e=+n[0],r=n[1],o=(Math.abs(e)-1)%7,a=Yn[o];if(a==="M"&&r==="P")return qt;let i=a==="M"?"majorable":"perfectable",m=""+e+r,c=e<0?-1:1,u=e===8||e===-8?e:c*(o+1),M=To(i,r),y=Math.floor((Math.abs(e)-1)/7),l=c*(Zn[o]+M+12*y),P=(c*(Zn[o]+M)%12+12)%12,h=U({step:o,alt:M,oct:y,dir:c});return{empty:!1,name:m,num:e,q:r,step:o,alt:M,dir:c,type:i,simple:u,semitones:l,chroma:P,coord:h,oct:y}}function q(t,n){let[e,r=0]=t,o=e*7+r*12<0,a=n||o?[-e,-r,-1]:[e,r,1];return f(X(a))}function To(t,n){return n==="M"&&t==="majorable"||n==="P"&&t==="perfectable"?0:n==="m"&&t==="majorable"?-1:/^A+$/.test(n)?n.length:/^d+$/.test(n)?-1*(t==="perfectable"?n.length:n.length+1):0}function Co(t){let{step:n,alt:e,oct:r=0,dir:o}=t;if(!o)return"";let a=n+1+7*r,i=a===0?n+1:a,m=o<0?"-":"",c=Yn[n]==="M"?"majorable":"perfectable";return m+i+Eo(c,e)}function Eo(t,n){return n===0?t==="majorable"?"M":"P":n===-1&&t==="majorable"?"m":n>0?Jn("A",n):Jn("d",t==="perfectable"?n:n+1)}var te=(t,n)=>Array(Math.abs(n)+1).join(t),ee=Object.freeze({empty:!0,name:"",letter:"",acc:"",pc:"",step:NaN,alt:NaN,chroma:NaN,height:NaN,coord:[],midi:null,freq:null}),ne=new Map,zt=t=>"CDEFGAB".charAt(t),F=t=>t<0?te("b",-t):te("#",t),L=t=>t[0]==="b"?-t.length:t.length;function s(t){let n=JSON.stringify(t),e=ne.get(n);if(e)return e;let r=typeof t=="string"?Ro(t):_(t)?s(_o(t)):C(t)?s(t.name):ee;return ne.set(n,r),r}var Do=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function Q(t){let n=Do.exec(t);return n?[n[1].toUpperCase(),n[2].replace(/x/g,"##"),n[3],n[4]]:["","","",""]}function ct(t){return s(X(t))}var wo=(t,n)=>(t%n+n)%n,Gt=[0,2,4,5,7,9,11];function Ro(t){let n=Q(t);if(n[0]===""||n[3]!=="")return ee;let e=n[0],r=n[1],o=n[2],a=(e.charCodeAt(0)+3)%7,i=L(r),m=o.length?+o:void 0,c=U({step:a,alt:i,oct:m}),u=e+r+o,M=e+r,y=(Gt[a]+i+120)%12,l=m===void 0?wo(Gt[a]+i,12)-12*99:Gt[a]+i+12*(m+1),P=l>=0&&l<=127?l:null,h=m===void 0?null:Math.pow(2,(l-69)/12)*440;return{empty:!1,acc:r,alt:i,chroma:y,coord:c,freq:h,height:l,letter:e,midi:P,name:u,oct:m,pc:M,step:a}}function _o(t){let{step:n,alt:e,oct:r}=t,o=zt(n);if(!o)return"";let a=o+F(e);return r||r===0?a+r:a}function p(t,n){let e=s(t),r=Array.isArray(n)?n:f(n).coord;if(e.empty||!r||r.length<2)return"";let o=e.coord,a=o.length===1?[o[0]+r[0]]:[o[0]+r[0],o[1]+r[1]];return ct(a).name}function O(t,n){let e=t.length;return r=>{if(!n)return"";let o=r<0?(e- -r%e)%e:r%e,a=Math.floor(r/e),i=p(n,[0,a]);return p(i,t[o])}}function A(t,n){let e=s(t),r=s(n);if(e.empty||r.empty)return"";let o=e.coord,a=r.coord,i=a[0]-o[0],m=o.length===2&&a.length===2?a[1]-o[1]:-Math.floor(i*7/12),c=r.height===e.height&&r.midi!==null&&e.oct===r.oct&&e.step>r.step;return q([i,m],c).name}var re=(t,n)=>Array(n+1).join(t),Fo=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function Bt(t){let n=Fo.exec(t);return n?[n[1],n[2],n[3]]:["","",""]}function et(t){let[n,e,r]=Bt(t);if(e==="")return"";let o=4;for(let i=0;i96?e.toUpperCase()+a+(o+1):e+a+o}function Ht(t){let n=s(t);if(n.empty||!n.oct&&n.oct!==0)return"";let{letter:e,acc:r,oct:o}=n,a=r[0]==="b"?r.replace(/b/g,"_"):r.replace(/#/g,"^"),i=o>4?e.toLowerCase():e,m=o===5?"":o>4?re("'",o-5):re(",",4-o);return a+i+m}function oe(t,n){return Ht(p(et(t),n))}function ae(t,n){return A(et(t),et(n))}var Oo={abcToScientificNotation:et,scientificToAbcNotation:Ht,tokenize:Bt,transpose:oe,distance:ae};var Ut={};d(Ut,{compact:()=>Lo,permutations:()=>me,range:()=>ko,rotate:()=>qo,shuffle:()=>zo,sortedNoteNames:()=>ie,sortedUniqNoteNames:()=>Go});function $o(t,n){let e=[];for(;n--;e[n]=n+t);return e}function Vo(t,n){let e=[];for(;n--;e[n]=t-n);return e}function ko(t,n){return tn===0||n)}function ie(t){return t.map(e=>s(e)).filter(e=>!e.empty).sort((e,r)=>e.height-r.height).map(e=>e.name)}function Go(t){return ie(t).filter((n,e,r)=>e===0||n!==r[e-1])}function zo(t,n=Math.random){let e,r,o=t.length;for(;o;)e=Math.floor(n()*o--),r=t[o],t[o]=t[e],t[e]=r;return t}function me(t){return t.length===0?[[]]:me(t.slice(1)).reduce((n,e)=>n.concat(t.map((r,o)=>{let a=e.slice();return a.splice(o,0,t[0]),a})),[])}var on={};d(on,{chord:()=>Ge,chordScales:()=>Be,default:()=>it,degrees:()=>Xe,detect:()=>pt,extended:()=>He,get:()=>R,getChord:()=>at,notes:()=>Ue,reduced:()=>Ke,steps:()=>Qe,tokenize:()=>Y,transpose:()=>ze});var dt={};d(dt,{add:()=>Wt,addAlias:()=>Se,all:()=>D,chordType:()=>ve,default:()=>ma,entries:()=>ge,get:()=>ot,keys:()=>Ae,names:()=>ye,removeAll:()=>Ne,symbols:()=>be});var ft={};d(ft,{EmptyPcset:()=>x,chroma:()=>ut,chromas:()=>Pe,default:()=>Yo,filter:()=>he,get:()=>v,includes:()=>Zo,intervals:()=>fe,isChroma:()=>rt,isEqual:()=>Me,isNoteIncludedIn:()=>lt,isSubsetOf:()=>G,isSupersetOf:()=>z,modes:()=>W,notes:()=>pe,num:()=>de,pcset:()=>le});var Qt={};d(Qt,{compact:()=>J,default:()=>Ko,permutations:()=>Xt,range:()=>$,rotate:()=>E,shuffle:()=>se});function Bo(t,n){let e=[];for(;n--;e[n]=n+t);return e}function Ho(t,n){let e=[];for(;n--;e[n]=t-n);return e}function $(t,n){return tn===0||n)}function se(t,n=Math.random){let e,r,o=t.length;for(;o;)e=Math.floor(n()*o--),r=t[o],t[o]=t[e],t[e]=r;return t}function Xt(t){return t.length===0?[[]]:Xt(t.slice(1)).reduce((n,e)=>n.concat(t.map((r,o)=>{let a=e.slice();return a.splice(o,0,t[0]),a})),[])}var Ko={compact:J,permutations:Xt,range:$,rotate:E,shuffle:se};var x={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},Jt=t=>Number(t).toString(2).padStart(12,"0"),ce=t=>parseInt(t,2),Uo=/^[01]{12}$/;function rt(t){return Uo.test(t)}var Xo=t=>typeof t=="number"&&t>=0&&t<=4095,Qo=t=>t&&rt(t.chroma),ue={[x.chroma]:x};function v(t){let n=rt(t)?t:Xo(t)?Jt(t):Array.isArray(t)?ea(t):Qo(t)?t.chroma:x.chroma;return ue[n]=ue[n]||na(n)}var le=v,ut=t=>v(t).chroma,fe=t=>v(t).intervals,de=t=>v(t).setNum,Jo=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Wo(t){let n=[];for(let e=0;e<12;e++)t.charAt(e)==="1"&&n.push(Jo[e]);return n}function pe(t){return v(t).intervals.map(n=>p("C",n))}function Pe(){return $(2048,4095).map(Jt)}function W(t,n=!0){let r=v(t).chroma.split("");return J(r.map((o,a)=>{let i=E(a,r);return n&&i[0]==="0"?null:i.join("")}))}function Me(t,n){return v(t).setNum===v(n).setNum}function G(t){let n=v(t).setNum;return e=>{let r=v(e).setNum;return n&&n!==r&&(r&n)===r}}function z(t){let n=v(t).setNum;return e=>{let r=v(e).setNum;return n&&n!==r&&(r|n)===r}}function lt(t){let n=v(t);return e=>{let r=s(e);return n&&!r.empty&&n.chroma.charAt(r.chroma)==="1"}}var Zo=lt;function he(t){let n=lt(t);return e=>e.filter(n)}var Yo={get:v,chroma:ut,num:de,intervals:fe,chromas:Pe,isSupersetOf:z,isSubsetOf:G,isNoteIncludedIn:lt,isEqual:Me,filter:he,modes:W,notes:pe,pcset:le};function ta(t){let n=t.split("");return n.map((e,r)=>E(r,n).join(""))}function na(t){let n=ce(t),e=ta(t).map(ce).filter(a=>a>=2048).sort()[0],r=Jt(e),o=Wo(t);return{empty:!1,name:"",setNum:n,chroma:t,normalized:r,intervals:o}}function ea(t){if(t.length===0)return x.chroma;let n,e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let r=0;rt.name).filter(t=>t)}function be(){return Z.map(t=>t.aliases[0]).filter(t=>t)}function Ae(){return Object.keys(B)}function D(){return Z.slice()}var ge=D;function Ne(){Z=[],B={}}function Wt(t,n,e){let r=ia(t),o={...v(t),name:e||"",quality:r,intervals:t,aliases:n};Z.push(o),o.name&&(B[o.name]=o),B[o.setNum]=o,B[o.chroma]=o,o.aliases.forEach(a=>Se(o,a))}function Se(t,n){B[n]=t}function ia(t){let n=e=>t.indexOf(e)!==-1;return n("5A")?"Augmented":n("3M")?"Major":n("5d")?"Diminished":n("3m")?"Minor":"Unknown"}oa.forEach(([t,n,e])=>Wt(t.split(" "),e.split(" "),n));Z.sort((t,n)=>t.setNum-n.setNum);var ma={names:ye,symbols:be,get:ot,all:D,add:Wt,removeAll:Ne,keys:Ae,entries:ge,chordType:ve};var sa=t=>{let n=t.reduce((e,r)=>{let o=s(r).chroma;return o!==void 0&&(e[o]=e[o]||s(r).name),e},{});return e=>n[e]};function pt(t,n={}){let e=t.map(o=>s(o).pc).filter(o=>o);return s.length===0?[]:Pa(e,1,n).filter(o=>o.weight).sort((o,a)=>a.weight-o.weight).map(o=>o.name)}var Pt={anyThirds:384,perfectFifth:16,nonPerfectFifths:40,anySeventh:3},Mt=t=>n=>!!(n&t),ca=Mt(Pt.anyThirds),ua=Mt(Pt.perfectFifth),la=Mt(Pt.anySeventh),fa=Mt(Pt.nonPerfectFifths);function da(t){let n=parseInt(t.chroma,2);return ca(n)&&ua(n)&&la(n)}function pa(t){let n=parseInt(t,2);return fa(n)?t:(n|16).toString(2)}function Pa(t,n,e){let r=t[0],o=s(r).chroma,a=sa(t),i=W(t,!1),m=[];return i.forEach((c,u)=>{let M=e.assumePerfectFifth&&pa(c);D().filter(l=>e.assumePerfectFifth&&da(l)?l.chroma===M:l.chroma===c).forEach(l=>{let P=l.aliases[0],h=a(u);u!==o?m.push({weight:.5*n,name:`${h}${P}/${r}`}):m.push({weight:1*n,name:`${h}${P}`})})}),m}var nn={};d(nn,{add:()=>Yt,addTo:()=>Re,default:()=>tn,distance:()=>we,fromSemitones:()=>De,get:()=>Zt,invert:()=>Ee,name:()=>Ie,names:()=>xe,num:()=>Ce,quality:()=>Te,semitones:()=>je,simplify:()=>ht,subtract:()=>vt,transposeFifths:()=>yt});function xe(){return"1P 2M 3M 4P 5P 6m 7m".split(" ")}var Zt=f,Ie=t=>f(t).name,je=t=>f(t).semitones,Te=t=>f(t).q,Ce=t=>f(t).num;function ht(t){let n=f(t);return n.empty?"":n.simple+n.q}function Ee(t){let n=f(t);if(n.empty)return"";let e=(7-n.step)%7,r=n.type==="perfectable"?-n.alt:-(n.alt+1);return f({step:e,alt:r,oct:n.oct,dir:n.dir}).name}var Ma=[1,2,2,3,3,4,5,5,6,6,7,7],ha="P m M m M P d P m M m M".split(" ");function De(t){let n=t<0?-1:1,e=Math.abs(t),r=e%12,o=Math.floor(e/12);return n*(Ma[r]+7*o)+ha[r]}var we=A,Yt=_e((t,n)=>[t[0]+n[0],t[1]+n[1]]),Re=t=>n=>Yt(t,n),vt=_e((t,n)=>[t[0]-n[0],t[1]-n[1]]);function yt(t,n){let e=Zt(t);if(e.empty)return"";let[r,o,a]=e.coord;return q([r+n,o,a]).name}var tn={names:xe,get:Zt,name:Ie,num:Ce,semitones:je,quality:Te,fromSemitones:De,distance:we,invert:Ee,simplify:ht,add:Yt,addTo:Re,subtract:vt,transposeFifths:yt};function _e(t){return(n,e)=>{let r=f(n).coord,o=f(e).coord;if(r&&o){let a=t(r,o);return q(a).name}}}var gt={};d(gt,{NoScaleType:()=>Fe,add:()=>en,addAlias:()=>qe,all:()=>w,default:()=>ba,entries:()=>$e,get:()=>K,keys:()=>Ve,names:()=>At,removeAll:()=>ke,scaleType:()=>Oe});var va=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2M 3m 4P 5P 6m 7m","minor","aeolian"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 6A","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],ya=va,Fe={...x,intervals:[],aliases:[]},bt=[],H={};function At(){return bt.map(t=>t.name)}function K(t){return H[t]||Fe}var Oe=K;function w(){return bt.slice()}var $e=w;function Ve(){return Object.keys(H)}function ke(){bt=[],H={}}function en(t,n,e=[]){let r={...v(t),name:n,intervals:t,aliases:e};return bt.push(r),H[r.name]=r,H[r.setNum]=r,H[r.chroma]=r,r.aliases.forEach(o=>qe(r,o)),r}function qe(t,n){H[n]=t}ya.forEach(([t,n,...e])=>en(t.split(" "),n,e));var ba={names:At,get:K,all:w,add:en,removeAll:ke,keys:Ve,entries:$e,scaleType:Oe};var Le={empty:!0,name:"",symbol:"",root:"",bass:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Y(t){let[n,e,r,o]=Q(t);return n===""?rn("",t):n==="A"&&o==="ug"?rn("","aug"):rn(n+e,r+o)}function rn(t,n){let e=n.split("/");if(e.length===1)return[t,e[0],""];let[r,o,a,i]=Q(e[1]);return r!==""&&a===""&&i===""?[t,e[0],r+o]:[t,n,""]}function R(t){if(Array.isArray(t))return at(t[1]||"",t[0],t[2]);if(t==="")return Le;{let[n,e,r]=Y(t),o=at(e,n,r);return o.empty?at(t):o}}function at(t,n,e){let r=ot(t),o=s(n||""),a=s(e||"");if(r.empty||n&&o.empty||e&&a.empty)return Le;let i=A(o.pc,a.pc),m=r.intervals.indexOf(i),c=m>=0,u=c?a:s(""),M=m===-1?NaN:m+1,y=a.pc&&a.pc!==o.pc,l=Array.from(r.intervals);if(c)for(let k=1;kp(o.pc,k));t=r.aliases.indexOf(t)!==-1?t:r.aliases[0];let h=`${o.empty?"":o.pc}${t}${c&&M>1?"/"+u.pc:y?"/"+a.pc:""}`,nt=`${n?o.pc+" ":""}${r.name}${c&&M>1?" over "+u.pc:y?" over "+a.pc:""}`;return{...r,name:nt,symbol:h,tonic:o.pc,type:r.name,root:u.pc,bass:y?a.pc:"",intervals:l,rootDegree:M,notes:P}}var Ge=R;function ze(t,n){let[e,r,o]=Y(t);if(!e)return t;let a=p(o,n),i=a?"/"+a:"";return p(e,n)+r+i}function Be(t){let n=R(t),e=z(n.chroma);return w().filter(r=>e(r.chroma)).map(r=>r.name)}function He(t){let n=R(t),e=z(n.chroma);return D().filter(r=>e(r.chroma)).map(r=>n.tonic+r.aliases[0])}function Ke(t){let n=R(t),e=G(n.chroma);return D().filter(r=>e(r.chroma)).map(r=>n.tonic+r.aliases[0])}function Ue(t,n){let e=R(t),r=n||e.tonic;return!r||e.empty?[]:e.intervals.map(o=>p(r,o))}function Xe(t,n){let e=R(t),r=n||e.tonic,o=O(e.intervals,r);return a=>a?o(a>0?a-1:a):""}function Qe(t,n){let e=R(t),r=n||e.tonic;return O(e.intervals,r)}var it={getChord:at,get:R,detect:pt,chordScales:Be,extended:He,reduced:Ke,tokenize:Y,transpose:ze,degrees:Xe,steps:Qe,notes:Ue,chord:Ge};var an={};d(an,{default:()=>xa,fraction:()=>Ye,get:()=>St,names:()=>Je,shorthands:()=>We,value:()=>Ze});var Aa=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],ga=Aa,Nt=[];ga.forEach(([t,n,e])=>Ia(t,n,e));var Na={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function Je(){return Nt.reduce((t,n)=>(n.names.forEach(e=>t.push(e)),t),[])}function We(){return Nt.map(t=>t.shorthand)}var Sa=/^([^.]+)(\.*)$/;function St(t){let[n,e,r]=Sa.exec(t)||[],o=Nt.find(m=>m.shorthand===e||m.names.includes(e));if(!o)return Na;let a=ja(o.fraction,r.length),i=a[0]/a[1];return{...o,name:t,dots:r,value:i,fraction:a}}var Ze=t=>St(t).value,Ye=t=>St(t).fraction,xa={names:Je,shorthands:We,get:St,value:Ze,fraction:Ye};function Ia(t,n,e){Nt.push({empty:!1,dots:"",name:"",value:1/t,fraction:t<1?[1/t,1]:[1,t],shorthand:n,names:e})}function ja(t,n){let e=Math.pow(2,n),r=t[0]*e,o=t[1]*e,a=r;for(let i=0;iQa,majorKey:()=>Mn,majorKeyChords:()=>Ua,majorTonicFromKeySignature:()=>Rr,minorKey:()=>hn,minorKeyChords:()=>Xa});var dn={};d(dn,{accidentals:()=>sr,ascending:()=>Ct,chroma:()=>fr,default:()=>S,descending:()=>gr,distance:()=>Mr,enharmonic:()=>Dt,freq:()=>lr,fromFreq:()=>dr,fromFreqSharps:()=>pr,fromMidi:()=>Tt,fromMidiSharps:()=>Pr,get:()=>N,midi:()=>ur,name:()=>ir,names:()=>ar,octave:()=>cr,pitchClass:()=>mr,simplify:()=>Nr,sortedNames:()=>fn,sortedUniqNames:()=>Et,tr:()=>hr,trBy:()=>vr,trFifths:()=>br,trFrom:()=>yr,transpose:()=>g,transposeBy:()=>un,transposeFifths:()=>tt,transposeFrom:()=>ln,transposeOctaves:()=>Ar});var cn={};d(cn,{chroma:()=>It,default:()=>_a,freqToMidi:()=>mt,isMidi:()=>mn,midiToFreq:()=>tr,midiToNoteName:()=>I,pcset:()=>jt,pcsetDegrees:()=>er,pcsetNearest:()=>nr,pcsetSteps:()=>sn,toMidi:()=>xt});function mn(t){return+t>=0&&+t<=127}function xt(t){if(mn(t))return+t;let n=s(t);return n.empty?null:n.midi}function tr(t,n=440){return Math.pow(2,(t-69)/12)*n}var Ta=Math.log(2),Ca=Math.log(440);function mt(t){let n=12*(Math.log(t)-Ca)/Ta+69;return Math.round(n*100)/100}var Ea="C C# D D# E F F# G G# A A# B".split(" "),Da="C Db D Eb E F Gb G Ab A Bb B".split(" ");function I(t,n={}){if(isNaN(t)||t===-1/0||t===1/0)return"";t=Math.round(t);let r=(n.sharps===!0?Ea:Da)[t%12];if(n.pitchClass)return r;let o=Math.floor(t/12)-1;return r+o}function It(t){return t%12}function wa(t){return t.split("").reduce((n,e,r)=>(r<12&&e==="1"&&n.push(r),n),[])}function Ra(t){return t.map(It).sort((n,e)=>n-e).filter((n,e,r)=>e===0||n!==r[e-1])}function jt(t){return Array.isArray(t)?Ra(t):wa(t)}function nr(t){let n=jt(t);return e=>{let r=It(e);for(let o=0;o<12;o++){if(n.includes(r+o))return e+o;if(n.includes(r-o))return e-o}}}function sn(t,n){let e=jt(t),r=e.length;return o=>{let a=o<0?(r- -o%r)%r:o%r,i=Math.floor(o/r);return e[a]+i*12+n}}function er(t,n){let e=sn(t,n);return r=>{if(r!==0)return e(r>0?r-1:r)}}var _a={chroma:It,freqToMidi:mt,isMidi:mn,midiToFreq:tr,midiToNoteName:I,pcsetNearest:nr,pcset:jt,pcsetDegrees:er,pcsetSteps:sn,toMidi:xt};var Fa=["C","D","E","F","G","A","B"],rr=t=>t.name,or=t=>t.map(s).filter(n=>!n.empty);function ar(t){return t===void 0?Fa.slice():Array.isArray(t)?or(t).map(rr):[]}var N=s,ir=t=>N(t).name,mr=t=>N(t).pc,sr=t=>N(t).acc,cr=t=>N(t).oct,ur=t=>N(t).midi,lr=t=>N(t).freq,fr=t=>N(t).chroma;function Tt(t){return I(t)}function dr(t){return I(mt(t))}function pr(t){return I(mt(t),{sharps:!0})}function Pr(t){return I(t,{sharps:!0})}var Mr=A,g=p,hr=p,un=t=>n=>g(n,t),vr=un,ln=t=>n=>g(t,n),yr=ln;function tt(t,n){return g(t,[n,0])}var br=tt;function Ar(t,n){return g(t,[0,n])}var Ct=(t,n)=>t.height-n.height,gr=(t,n)=>n.height-t.height;function fn(t,n){return n=n||Ct,or(t).sort(n).map(rr)}function Et(t){return fn(t,Ct).filter((n,e,r)=>e===0||n!==r[e-1])}var Nr=t=>{let n=N(t);return n.empty?"":I(n.midi||n.chroma,{sharps:n.alt>0,pitchClass:n.midi===null})};function Dt(t,n){let e=N(t);if(e.empty)return"";let r=N(n||I(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(r.empty||r.chroma!==e.chroma)return"";if(e.oct===void 0)return r.pc;let o=e.chroma-e.alt,a=r.chroma-r.alt,i=o>11||a<0?-1:o<0||a>11?1:0,m=e.oct+i;return r.pc+m}var S={names:ar,get:N,name:ir,pitchClass:mr,accidentals:sr,octave:cr,midi:ur,ascending:Ct,descending:gr,distance:Mr,sortedNames:fn,sortedUniqNames:Et,fromMidi:Tt,fromMidiSharps:Pr,freq:lr,fromFreq:dr,fromFreqSharps:pr,chroma:fr,transpose:g,tr:hr,transposeBy:un,trBy:vr,transposeFrom:ln,trFrom:yr,transposeFifths:tt,transposeOctaves:Ar,trFifths:br,simplify:Nr,enharmonic:Dt};var pn={};d(pn,{default:()=>qa,get:()=>j,names:()=>jr,romanNumeral:()=>Ir,tokenize:()=>Tr});var xr={empty:!0,name:"",chordType:""},Sr={};function j(t){return typeof t=="string"?Sr[t]||(Sr[t]=ka(t)):typeof t=="number"?j(wt[t]||""):_(t)?Oa(t):C(t)?j(t.name):xr}var Ir=j;function jr(t=!0){return(t?wt:Va).slice()}function Oa(t){return j(F(t.alt)+wt[t.step])}var $a=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function Tr(t){return $a.exec(t)||["","","",""]}var Cr="I II III IV V VI VII",wt=Cr.split(" "),Va=Cr.toLowerCase().split(" ");function ka(t){let[n,e,r,o]=Tr(t);if(!r)return xr;let a=r.toUpperCase(),i=wt.indexOf(a),m=L(e),c=1;return{empty:!1,name:n,roman:r,interval:f({step:i,alt:m,dir:c}).name,acc:e,chordType:o,alt:m,step:i,major:r===a,oct:0,dir:c}}var qa={names:jr,get:j,romanNumeral:Ir};var b=Object.freeze([]),Dr={type:"major",tonic:"",alteration:0,keySignature:""},Rt={tonic:"",grades:b,intervals:b,scale:b,triads:b,chords:b,chordsHarmonicFunction:b,chordScales:b,secondaryDominants:b,secondaryDominantSupertonics:b,substituteDominantsMinorRelative:b,substituteDominants:b,substituteDominantSupertonics:b,secondaryDominantsMinorRelative:b},La={...Dr,...Rt,type:"major",minorRelative:"",scale:b,substituteDominants:b,secondaryDominantSupertonics:b,substituteDominantsMinorRelative:b},Ga={...Dr,type:"minor",relativeMajor:"",natural:Rt,harmonic:Rt,melodic:Rt},Pn=(t,n,e="")=>n.map((r,o)=>`${t[o]}${e}${r}`);function Ft(t,n,e,r,o){return a=>{let i=t.map(P=>j(P).interval||""),m=i.map(P=>g(a,P)),c=Pn(m,e),u=m.map(P=>g(P,"5P")).map(P=>m.includes(P)&&!c.includes(P+"7")?P+"7":""),M=Er(u,n),y=u.map(P=>{if(!P)return"";let h=P.slice(0,-1);return g(h,"5d")+"7"}),l=Er(y,n);return{tonic:a,grades:t,intervals:i,scale:m,triads:Pn(m,n),chords:c,chordsHarmonicFunction:r.slice(),chordScales:Pn(m,o," "),secondaryDominants:u,secondaryDominantSupertonics:M,substituteDominants:y,substituteDominantSupertonics:l,secondaryDominantsMinorRelative:M,substituteDominantsMinorRelative:l}}}var Er=(t,n)=>t.map((e,r)=>{if(!e)return"";let o=e.slice(0,-1),a=g(o,"5P");return n[r].endsWith("m")?a+"m7":a+"m7b5"}),wr=(t,n)=>{let e=s(t),r=s(n);return e.empty||r.empty?0:r.coord[0]-e.coord[0]},za=Ft("I II III IV V VI VII".split(" ")," m m m dim".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),Ba=Ft("I II bIII IV V bVI bVII".split(" "),"m dim m m ".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),Ha=Ft("I II bIII IV V bVI VII".split(" "),"m dim aug m dim".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),Ka=Ft("I II bIII IV V VI VII".split(" "),"m m aug dim dim".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function Mn(t){let n=s(t).pc;if(!n)return La;let e=za(n),r=wr("C",n);return{...e,type:"major",minorRelative:g(n,"-3m"),alteration:r,keySignature:F(r)}}function Ua(t){let n=Mn(t),e=[];return _t(n,e),e}function Xa(t){let n=hn(t),e=[];return _t(n.natural,e),_t(n.harmonic,e),_t(n.melodic,e),e}function _t(t,n){let e=(r,o)=>{if(!r)return;let a=n.find(i=>i.name===r);a||(a={name:r,roles:[]},n.push(a)),o&&!a.roles.includes(o)&&a.roles.push(o)};t.chords.forEach((r,o)=>e(r,t.chordsHarmonicFunction[o])),t.secondaryDominants.forEach((r,o)=>e(r,`V/${t.grades[o]}`)),t.secondaryDominantSupertonics.forEach((r,o)=>e(r,`ii/${t.grades[o]}`)),t.substituteDominants.forEach((r,o)=>e(r,`subV/${t.grades[o]}`)),t.substituteDominantSupertonics.forEach((r,o)=>e(r,`subii/${t.grades[o]}`))}function hn(t){let n=s(t).pc;if(!n)return Ga;let e=wr("C",n)-3;return{type:"minor",tonic:n,relativeMajor:g(n,"3m"),alteration:e,keySignature:F(e),natural:Ba(n),harmonic:Ha(n),melodic:Ka(n)}}function Rr(t){return typeof t=="number"?tt("C",t):typeof t=="string"&&/^b+|#+$/.test(t)?tt("C",L(t)):null}var Qa={majorKey:Mn,majorTonicFromKeySignature:Rr,minorKey:hn};var Sn={};d(Sn,{all:()=>gn,default:()=>Wa,distance:()=>Nn,entries:()=>Or,get:()=>V,mode:()=>Fr,names:()=>$r,notes:()=>Vr,relativeTonic:()=>Gr,seventhChords:()=>Lr,triads:()=>qr});var bn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],_r={...x,name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]},An=bn.map(Ja),yn={};An.forEach(t=>{yn[t.name]=t,t.aliases.forEach(n=>{yn[n]=t})});function V(t){return typeof t=="string"?yn[t.toLowerCase()]||_r:t&&t.name?V(t.name):_r}var Fr=V;function gn(){return An.slice()}var Or=gn;function $r(){return An.map(t=>t.name)}function Ja(t){let[n,e,r,o,a,i,m]=t,c=m?[m]:[],u=Number(e).toString(2);return{empty:!1,intervals:K(o).intervals,modeNum:n,chroma:u,normalized:u,name:o,setNum:e,alt:r,triad:a,seventh:i,aliases:c}}function Vr(t,n){return V(t).intervals.map(e=>p(n,e))}function kr(t){return(n,e)=>{let r=V(n);if(r.empty)return[];let o=E(r.modeNum,t),a=r.intervals.map(i=>p(e,i));return o.map((i,m)=>a[m]+i)}}var qr=kr(bn.map(t=>t[4])),Lr=kr(bn.map(t=>t[5]));function Nn(t,n){let e=V(n),r=V(t);return e.empty||r.empty?"":ht(yt("1P",r.alt-e.alt))}function Gr(t,n,e){return p(e,Nn(t,n))}var Wa={get:V,names:$r,all:gn,distance:Nn,relativeTonic:Gr,notes:Vr,triads:qr,seventhChords:Lr,entries:Or,mode:Fr};var xn={};d(xn,{default:()=>Za,fromRomanNumerals:()=>zr,toRomanNumerals:()=>Br});function zr(t,n){return n.map(j).map(r=>p(t,f(r))+r.chordType)}function Br(t,n){return n.map(e=>{let[r,o]=Y(e),a=A(t,r);return j(f(a)).name+o})}var Za={fromRomanNumerals:zr,toRomanNumerals:Br};var Tn={};d(Tn,{chromatic:()=>Hr,default:()=>jn,numeric:()=>In});function In(t){let n=J(t.map(e=>typeof e=="number"?e:xt(e)));return!t.length||n.length!==t.length?[]:n.reduce((e,r)=>{let o=e[e.length-1];return e.concat($(o,r).slice(1))},[n[0]])}function Hr(t,n){return In(t).map(e=>I(e,n))}var jn={numeric:In,chromatic:Hr};var Cn={};d(Cn,{binary:()=>Ya,euclid:()=>ai,hex:()=>ti,onsets:()=>ni,probability:()=>ri,random:()=>ei,rotate:()=>oi});function Ya(...t){return t.reduce((n,e)=>(e.toString(2).split("").forEach(r=>{n.push(parseInt(r))}),n),[])}function ti(t){let n=[];for(let e=0;e{n.push(a==="1"?1:0)})}return n}function ni(...t){return t.reduce((n,e)=>{n.push(1);for(let r=0;r=n?1:0);return r}function ri(t,n=Math.random){return t.map(e=>n()<=e?1:0)}function oi(t,n){let e=t.length,r=[];for(let o=0;osi,degrees:()=>Yr,detect:()=>Xr,extended:()=>Dn,get:()=>T,modeNames:()=>Wr,names:()=>Kr,rangeOf:()=>Zr,reduced:()=>Jr,scale:()=>Ur,scaleChords:()=>Qr,scaleNotes:()=>wn,steps:()=>to,tokenize:()=>En});var ii={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function En(t){if(typeof t!="string")return["",""];let n=t.indexOf(" "),e=s(t.substring(0,n));if(e.empty){let o=s(t);return o.empty?["",t.toLowerCase()]:[o.name,""]}let r=t.substring(e.name.length+1).toLowerCase();return[e.name,r.length?r:""]}var Kr=At;function T(t){let n=Array.isArray(t)?t:En(t),e=s(n[0]).name,r=K(n[1]);if(r.empty)return ii;let o=r.name,a=e?r.intervals.map(m=>p(e,m)):[],i=e?e+" "+o:o;return{...r,name:i,type:o,tonic:e,notes:a}}var Ur=T;function Xr(t,n={}){let e=ut(t),r=s(n.tonic??t[0]??""),o=r.chroma;if(o===void 0)return[];let a=e.split("");a[o]="1";let i=E(o,a).join(""),m=w().find(u=>u.chroma===i),c=[];return m&&c.push(r.name+" "+m.name),n.match==="exact"||Dn(i).forEach(u=>{c.push(r.name+" "+u)}),c}function Qr(t){let n=T(t),e=G(n.chroma);return D().filter(r=>e(r.chroma)).map(r=>r.aliases[0])}function Dn(t){let n=rt(t)?t:T(t).chroma,e=z(n);return w().filter(r=>e(r.chroma)).map(r=>r.name)}function Jr(t){let n=G(T(t).chroma);return w().filter(e=>n(e.chroma)).map(e=>e.name)}function wn(t){let n=t.map(o=>s(o).pc).filter(o=>o),e=n[0],r=Et(n);return E(r.indexOf(e),r)}function Wr(t){let n=T(t);if(n.empty)return[];let e=n.tonic?n.notes:n.intervals;return W(n.chroma).map((r,o)=>{let a=T(r).name;return a?[e[o],a]:["",""]}).filter(r=>r[0])}function mi(t){let n=Array.isArray(t)?wn(t):T(t).notes,e=n.map(r=>s(r).chroma);return r=>{let o=typeof r=="number"?s(Tt(r)):s(r),a=o.height;if(a===void 0)return;let i=a%12,m=e.indexOf(i);if(m!==-1)return Dt(o.name,n[m])}}function Zr(t){let n=mi(t);return(e,r)=>{let o=s(e).height,a=s(r).height;return o===void 0||a===void 0?[]:$(o,a).map(n).filter(i=>i)}}function Yr(t){let{intervals:n,tonic:e}=T(t),r=O(n,e);return o=>o?r(o>0?o-1:o):""}function to(t){let{intervals:n,tonic:e}=T(t);return O(n,e)}var si={degrees:Yr,detect:Xr,extended:Dn,get:T,modeNames:Wr,names:Kr,rangeOf:Zr,reduced:Jr,scaleChords:Qr,scaleNotes:wn,steps:to,tokenize:En,scale:Ur};var _n={};d(_n,{default:()=>fi,get:()=>ro,names:()=>eo,parse:()=>Ot});var ci={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},ui=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function eo(){return ui.slice()}var li=/^(\d*\d(?:\+\d)*)\/(\d+)$/,no=new Map;function ro(t){let n=JSON.stringify(t),e=no.get(n);if(e)return e;let r=pi(Ot(t));return no.set(n,r),r}function Ot(t){if(typeof t=="string"){let[a,i,m]=li.exec(t)||[];return Ot([i,m])}let[n,e]=t,r=+e;if(typeof n=="number")return[n,r];let o=n.split("+").map(a=>+a);return o.length===1?[o[0],r]:[o,r]}var fi={names:eo,parse:Ot,get:ro},di=t=>Math.log(t)/Math.log(2)%1===0;function pi([t,n]){let e=Array.isArray(t)?t.reduce((m,c)=>m+c,0):t,r=n;if(e===0||r===0)return ci;let o=Array.isArray(t)?`${t.join("+")}/${n}`:`${t}/${n}`,a=Array.isArray(t)?t:[],i=r===4||r===2?"simple":r===8&&e%3===0?"compound":di(r)?"irregular":"irrational";return{empty:!1,name:o,type:i,upper:e,lower:r,additive:a}}var On={};d(On,{default:()=>Fn,topNoteDiff:()=>oo});var oo=(t,n)=>{if(!n||!n.length)return t[0];let e=o=>S.midi(o[o.length-1])||0,r=o=>Math.abs(e(n)-e(o));return t.sort((o,a)=>r(o)-r(a))[0]},Fn={topNoteDiff:oo};var zn={};d(zn,{default:()=>Pi,get:()=>Ln,search:()=>Gn,sequence:()=>uo});var kn={};d(kn,{all:()=>io,default:()=>st,defaultDictionary:()=>Vn,lefthand:()=>$n,lookup:()=>mo,triads:()=>ao});var ao={M:["1P 3M 5P","3M 5P 8P","5P 8P 10M"],m:["1P 3m 5P","3m 5P 8P","5P 8P 10m"],o:["1P 3m 5d","3m 5d 8P","5d 8P 10m"],aug:["1P 3m 5A","3m 5A 8P","5A 8P 10m"]},$n={m7:["3m 5P 7m 9M","7m 9M 10m 12P"],7:["3M 6M 7m 9M","7m 9M 10M 13M"],"^7":["3M 5P 7M 9M","7M 9M 10M 12P"],69:["3M 5P 6A 9M"],m7b5:["3m 5d 7m 8P","7m 8P 10m 12d"],"7b9":["3M 6m 7m 9m","7m 9m 10M 13m"],"7b13":["3M 6m 7m 9m","7m 9m 10M 13m"],o7:["1P 3m 5d 6M","5d 6M 8P 10m"],"7#11":["7m 9M 11A 13A"],"7#9":["3M 7m 9A"],mM7:["3m 5P 7M 9M","7M 9M 10m 12P"],m6:["3m 5P 6M 9M","6M 9M 10m 12P"]},io={M:["1P 3M 5P","3M 5P 8P","5P 8P 10M"],m:["1P 3m 5P","3m 5P 8P","5P 8P 10m"],o:["1P 3m 5d","3m 5d 8P","5d 8P 10m"],aug:["1P 3m 5A","3m 5A 8P","5A 8P 10m"],m7:["3m 5P 7m 9M","7m 9M 10m 12P"],7:["3M 6M 7m 9M","7m 9M 10M 13M"],"^7":["3M 5P 7M 9M","7M 9M 10M 12P"],69:["3M 5P 6A 9M"],m7b5:["3m 5d 7m 8P","7m 8P 10m 12d"],"7b9":["3M 6m 7m 9m","7m 9m 10M 13m"],"7b13":["3M 6m 7m 9m","7m 9m 10M 13m"],o7:["1P 3m 5d 6M","5d 6M 8P 10m"],"7#11":["7m 9M 11A 13A"],"7#9":["3M 7m 9A"],mM7:["3m 5P 7M 9M","7M 9M 10m 12P"],m6:["3m 5P 6M 9M","6M 9M 10m 12P"]},Vn=$n;function mo(t,n=Vn){if(n[t])return n[t];let{aliases:e}=it.get("C"+t),r=Object.keys(n).find(o=>e.includes(o))||"";if(r!==void 0)return n[r]}var st={lookup:mo,lefthand:$n,triads:ao,all:io,defaultDictionary:Vn};var qn=["C3","C5"],so=st.all,co=Fn.topNoteDiff;function Ln(t,n=qn,e=so,r=co,o){let a=Gn(t,n,e);return!o||!o.length?a[0]:r(a,o)}function Gn(t,n=qn,e=st.triads){let[r,o]=it.tokenize(t),a=st.lookup(o,e);if(!a)return[];let i=a.map(c=>c.split(" ")),m=jn.chromatic(n);return i.reduce((c,u)=>{let M=u.map(h=>tn.subtract(h,u[0])||""),y=S.transpose(r,u[0]),P=m.filter(h=>S.chroma(h)===S.chroma(y)).filter(h=>(S.midi(S.transpose(h,M[M.length-1]))||0)<=(S.midi(n[1])||0)).map(h=>S.enharmonic(h,y)).map(h=>M.map(nt=>S.transpose(h,nt)));return c.concat(P)},[])}function uo(t,n=qn,e=so,r=co,o){let{voicings:a}=t.reduce(({voicings:i,lastVoicing:m},c)=>{let u=Ln(c,n,e,r,m);return m=u,i.push(u),{voicings:i,lastVoicing:m}},{voicings:[],lastVoicing:o});return a}var Pi={get:Ln,search:Gn,sequence:uo};var $t={};d($t,{accToAlt:()=>L,altToAcc:()=>F,chroma:()=>Kn,coordToInterval:()=>q,coordToNote:()=>ct,coordinates:()=>U,deprecate:()=>Bn,distance:()=>A,fillStr:()=>lo,height:()=>kt,interval:()=>f,isNamed:()=>fo,isNamedPitch:()=>C,isPitch:()=>_,midi:()=>Un,note:()=>s,pitch:()=>X,stepToLetter:()=>zt,tokenizeInterval:()=>Lt,tokenizeNote:()=>Q,tonicIntervalsTransposer:()=>O,transpose:()=>p});var lo=(t,n)=>Array(Math.abs(n)+1).join(t);function Bn(t,n,e){return function(...r){return console.warn(`${t} is deprecated. Use ${n}.`),e.apply(this,r)}}var fo=Bn("isNamed","isNamedPitch",C);var Mi=$t,hi=ft,vi=dt,yi=gt;return Ao(bi);})(); +"use strict";var Tonal=(()=>{var Vt=Object.defineProperty;var ho=Object.getOwnPropertyDescriptor;var vo=Object.getOwnPropertyNames;var yo=Object.prototype.hasOwnProperty;var d=(t,n)=>{for(var e in n)Vt(t,e,{get:n[e],enumerable:!0})},bo=(t,n,e,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of vo(n))!yo.call(t,o)&&o!==e&&Vt(t,o,{get:()=>n[o],enumerable:!(r=ho(n,o))||r.enumerable});return t};var Ao=t=>bo(Vt({},"__esModule",{value:!0}),t);var bi={};d(bi,{AbcNotation:()=>Ht,Array:()=>Kt,Chord:()=>on,ChordDictionary:()=>vi,ChordType:()=>dt,Collection:()=>Qt,Core:()=>$t,DurationValue:()=>an,Interval:()=>nn,Key:()=>vn,Midi:()=>cn,Mode:()=>Sn,Note:()=>dn,PcSet:()=>hi,Pcset:()=>ft,Progression:()=>xn,Range:()=>Tn,RhythmPattern:()=>Cn,RomanNumeral:()=>pn,Scale:()=>wn,ScaleDictionary:()=>yi,ScaleType:()=>gt,TimeSignature:()=>Rn,Tonal:()=>Pi,VoiceLeading:()=>On,Voicing:()=>zn,VoicingDictionary:()=>kn,accToAlt:()=>L,altToAcc:()=>F,chroma:()=>Hn,coordToInterval:()=>q,coordToNote:()=>ct,coordinates:()=>K,deprecate:()=>Bn,distance:()=>A,fillStr:()=>lo,height:()=>kt,interval:()=>f,isNamed:()=>fo,isNamedPitch:()=>C,isPitch:()=>R,midi:()=>Kn,note:()=>s,pitch:()=>X,stepToLetter:()=>zt,tokenizeInterval:()=>Lt,tokenizeNote:()=>Q,tonicIntervalsTransposer:()=>O,transpose:()=>p});var Ht={};d(Ht,{abcToScientificNotation:()=>et,default:()=>Oo,distance:()=>ae,scientificToAbcNotation:()=>Ut,tokenize:()=>Bt,transpose:()=>oe});function C(t){return t!==null&&typeof t=="object"&&"name"in t&&typeof t.name=="string"}var Un=[0,2,4,5,7,9,11],Hn=({step:t,alt:n})=>(Un[t]+n+120)%12,kt=({step:t,alt:n,oct:e,dir:r=1})=>r*(Un[t]+n+12*(e===void 0?-100:e)),Kn=t=>{let n=kt(t);return t.oct!==void 0&&n>=-12&&n<=115?n+12:null};function R(t){return t!==null&&typeof t=="object"&&"step"in t&&typeof t.step=="number"&&"alt"in t&&typeof t.alt=="number"&&!isNaN(t.step)&&!isNaN(t.alt)}var Xn=[0,2,4,-1,1,3,5],Qn=Xn.map(t=>Math.floor(t*7/12));function K(t){let{step:n,alt:e,oct:r,dir:o=1}=t,a=Xn[n]+7*e;if(r===void 0)return[o*a];let i=r-Qn[n]-4*e;return[o*a,o*i]}var go=[3,0,4,1,5,2,6];function X(t){let[n,e,r]=t,o=go[No(n)],a=Math.floor((n+1)/7);if(e===void 0)return{step:o,alt:a,dir:r};let i=e+4*a+Qn[o];return{step:o,alt:a,oct:i,dir:r}}function No(t){let n=(t+1)%7;return n<0?7+n:n}var Jn=(t,n)=>Array(Math.abs(n)+1).join(t),qt=Object.freeze({empty:!0,name:"",num:NaN,q:"",type:"",step:NaN,alt:NaN,dir:NaN,simple:NaN,semitones:NaN,chroma:NaN,coord:[],oct:NaN}),So="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",xo="(AA|A|P|M|m|d|dd)([-+]?\\d+)",Io=new RegExp("^"+So+"|"+xo+"$");function Lt(t){let n=Io.exec(`${t}`);return n===null?["",""]:n[1]?[n[1],n[2]]:[n[4],n[3]]}var Wn={};function f(t){return typeof t=="string"?Wn[t]||(Wn[t]=jo(t)):R(t)?f(Co(t)):C(t)?f(t.name):qt}var Zn=[0,2,4,5,7,9,11],Yn="PMMPPMM";function jo(t){let n=Lt(t);if(n[0]==="")return qt;let e=+n[0],r=n[1],o=(Math.abs(e)-1)%7,a=Yn[o];if(a==="M"&&r==="P")return qt;let i=a==="M"?"majorable":"perfectable",m=""+e+r,c=e<0?-1:1,u=e===8||e===-8?e:c*(o+1),P=To(i,r),y=Math.floor((Math.abs(e)-1)/7),l=c*(Zn[o]+P+12*y),M=(c*(Zn[o]+P)%12+12)%12,h=K({step:o,alt:P,oct:y,dir:c});return{empty:!1,name:m,num:e,q:r,step:o,alt:P,dir:c,type:i,simple:u,semitones:l,chroma:M,coord:h,oct:y}}function q(t,n){let[e,r=0]=t,o=e*7+r*12<0,a=n||o?[-e,-r,-1]:[e,r,1];return f(X(a))}function To(t,n){return n==="M"&&t==="majorable"||n==="P"&&t==="perfectable"?0:n==="m"&&t==="majorable"?-1:/^A+$/.test(n)?n.length:/^d+$/.test(n)?-1*(t==="perfectable"?n.length:n.length+1):0}function Co(t){let{step:n,alt:e,oct:r=0,dir:o}=t;if(!o)return"";let a=n+1+7*r,i=a===0?n+1:a,m=o<0?"-":"",c=Yn[n]==="M"?"majorable":"perfectable";return m+i+Eo(c,e)}function Eo(t,n){return n===0?t==="majorable"?"M":"P":n===-1&&t==="majorable"?"m":n>0?Jn("A",n):Jn("d",t==="perfectable"?n:n+1)}var te=(t,n)=>Array(Math.abs(n)+1).join(t),ee=Object.freeze({empty:!0,name:"",letter:"",acc:"",pc:"",step:NaN,alt:NaN,chroma:NaN,height:NaN,coord:[],midi:null,freq:null}),ne=new Map,zt=t=>"CDEFGAB".charAt(t),F=t=>t<0?te("b",-t):te("#",t),L=t=>t[0]==="b"?-t.length:t.length;function s(t){let n=JSON.stringify(t),e=ne.get(n);if(e)return e;let r=typeof t=="string"?wo(t):R(t)?s(Ro(t)):C(t)?s(t.name):ee;return ne.set(n,r),r}var Do=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function Q(t){let n=Do.exec(t);return n?[n[1].toUpperCase(),n[2].replace(/x/g,"##"),n[3],n[4]]:["","","",""]}function ct(t){return s(X(t))}var _o=(t,n)=>(t%n+n)%n,Gt=[0,2,4,5,7,9,11];function wo(t){let n=Q(t);if(n[0]===""||n[3]!=="")return ee;let e=n[0],r=n[1],o=n[2],a=(e.charCodeAt(0)+3)%7,i=L(r),m=o.length?+o:void 0,c=K({step:a,alt:i,oct:m}),u=e+r+o,P=e+r,y=(Gt[a]+i+120)%12,l=m===void 0?_o(Gt[a]+i,12)-12*99:Gt[a]+i+12*(m+1),M=l>=0&&l<=127?l:null,h=m===void 0?null:Math.pow(2,(l-69)/12)*440;return{empty:!1,acc:r,alt:i,chroma:y,coord:c,freq:h,height:l,letter:e,midi:M,name:u,oct:m,pc:P,step:a}}function Ro(t){let{step:n,alt:e,oct:r}=t,o=zt(n);if(!o)return"";let a=o+F(e);return r||r===0?a+r:a}function p(t,n){let e=s(t),r=Array.isArray(n)?n:f(n).coord;if(e.empty||!r||r.length<2)return"";let o=e.coord,a=o.length===1?[o[0]+r[0]]:[o[0]+r[0],o[1]+r[1]];return ct(a).name}function O(t,n){let e=t.length;return r=>{if(!n)return"";let o=r<0?(e- -r%e)%e:r%e,a=Math.floor(r/e),i=p(n,[0,a]);return p(i,t[o])}}function A(t,n){let e=s(t),r=s(n);if(e.empty||r.empty)return"";let o=e.coord,a=r.coord,i=a[0]-o[0],m=o.length===2&&a.length===2?a[1]-o[1]:-Math.floor(i*7/12),c=r.height===e.height&&r.midi!==null&&e.oct===r.oct&&e.step>r.step;return q([i,m],c).name}var re=(t,n)=>Array(n+1).join(t),Fo=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function Bt(t){let n=Fo.exec(t);return n?[n[1],n[2],n[3]]:["","",""]}function et(t){let[n,e,r]=Bt(t);if(e==="")return"";let o=4;for(let i=0;i96?e.toUpperCase()+a+(o+1):e+a+o}function Ut(t){let n=s(t);if(n.empty||!n.oct&&n.oct!==0)return"";let{letter:e,acc:r,oct:o}=n,a=r[0]==="b"?r.replace(/b/g,"_"):r.replace(/#/g,"^"),i=o>4?e.toLowerCase():e,m=o===5?"":o>4?re("'",o-5):re(",",4-o);return a+i+m}function oe(t,n){return Ut(p(et(t),n))}function ae(t,n){return A(et(t),et(n))}var Oo={abcToScientificNotation:et,scientificToAbcNotation:Ut,tokenize:Bt,transpose:oe,distance:ae};var Kt={};d(Kt,{compact:()=>Lo,permutations:()=>me,range:()=>ko,rotate:()=>qo,shuffle:()=>zo,sortedNoteNames:()=>ie,sortedUniqNoteNames:()=>Go});function $o(t,n){let e=[];for(;n--;e[n]=n+t);return e}function Vo(t,n){let e=[];for(;n--;e[n]=t-n);return e}function ko(t,n){return tn===0||n)}function ie(t){return t.map(e=>s(e)).filter(e=>!e.empty).sort((e,r)=>e.height-r.height).map(e=>e.name)}function Go(t){return ie(t).filter((n,e,r)=>e===0||n!==r[e-1])}function zo(t,n=Math.random){let e,r,o=t.length;for(;o;)e=Math.floor(n()*o--),r=t[o],t[o]=t[e],t[e]=r;return t}function me(t){return t.length===0?[[]]:me(t.slice(1)).reduce((n,e)=>n.concat(t.map((r,o)=>{let a=e.slice();return a.splice(o,0,t[0]),a})),[])}var on={};d(on,{chord:()=>Ge,chordScales:()=>Be,default:()=>it,degrees:()=>Xe,detect:()=>pt,extended:()=>Ue,get:()=>w,getChord:()=>at,notes:()=>Ke,reduced:()=>He,steps:()=>Qe,tokenize:()=>Y,transpose:()=>ze});var dt={};d(dt,{add:()=>Wt,addAlias:()=>Se,all:()=>D,chordType:()=>ve,default:()=>ma,entries:()=>ge,get:()=>ot,keys:()=>Ae,names:()=>ye,removeAll:()=>Ne,symbols:()=>be});var ft={};d(ft,{EmptyPcset:()=>x,chroma:()=>ut,chromas:()=>Me,default:()=>Yo,filter:()=>he,get:()=>v,includes:()=>Zo,intervals:()=>fe,isChroma:()=>rt,isEqual:()=>Pe,isNoteIncludedIn:()=>lt,isSubsetOf:()=>G,isSupersetOf:()=>z,modes:()=>W,notes:()=>pe,num:()=>de,pcset:()=>le});var Qt={};d(Qt,{compact:()=>J,default:()=>Ho,permutations:()=>Xt,range:()=>$,rotate:()=>E,shuffle:()=>se});function Bo(t,n){let e=[];for(;n--;e[n]=n+t);return e}function Uo(t,n){let e=[];for(;n--;e[n]=t-n);return e}function $(t,n){return tn===0||n)}function se(t,n=Math.random){let e,r,o=t.length;for(;o;)e=Math.floor(n()*o--),r=t[o],t[o]=t[e],t[e]=r;return t}function Xt(t){return t.length===0?[[]]:Xt(t.slice(1)).reduce((n,e)=>n.concat(t.map((r,o)=>{let a=e.slice();return a.splice(o,0,t[0]),a})),[])}var Ho={compact:J,permutations:Xt,range:$,rotate:E,shuffle:se};var x={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},Jt=t=>Number(t).toString(2).padStart(12,"0"),ce=t=>parseInt(t,2),Ko=/^[01]{12}$/;function rt(t){return Ko.test(t)}var Xo=t=>typeof t=="number"&&t>=0&&t<=4095,Qo=t=>t&&rt(t.chroma),ue={[x.chroma]:x};function v(t){let n=rt(t)?t:Xo(t)?Jt(t):Array.isArray(t)?ea(t):Qo(t)?t.chroma:x.chroma;return ue[n]=ue[n]||na(n)}var le=v,ut=t=>v(t).chroma,fe=t=>v(t).intervals,de=t=>v(t).setNum,Jo=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Wo(t){let n=[];for(let e=0;e<12;e++)t.charAt(e)==="1"&&n.push(Jo[e]);return n}function pe(t){return v(t).intervals.map(n=>p("C",n))}function Me(){return $(2048,4095).map(Jt)}function W(t,n=!0){let r=v(t).chroma.split("");return J(r.map((o,a)=>{let i=E(a,r);return n&&i[0]==="0"?null:i.join("")}))}function Pe(t,n){return v(t).setNum===v(n).setNum}function G(t){let n=v(t).setNum;return e=>{let r=v(e).setNum;return n&&n!==r&&(r&n)===r}}function z(t){let n=v(t).setNum;return e=>{let r=v(e).setNum;return n&&n!==r&&(r|n)===r}}function lt(t){let n=v(t);return e=>{let r=s(e);return n&&!r.empty&&n.chroma.charAt(r.chroma)==="1"}}var Zo=lt;function he(t){let n=lt(t);return e=>e.filter(n)}var Yo={get:v,chroma:ut,num:de,intervals:fe,chromas:Me,isSupersetOf:z,isSubsetOf:G,isNoteIncludedIn:lt,isEqual:Pe,filter:he,modes:W,notes:pe,pcset:le};function ta(t){let n=t.split("");return n.map((e,r)=>E(r,n).join(""))}function na(t){let n=ce(t),e=ta(t).map(ce).filter(a=>a>=2048).sort()[0],r=Jt(e),o=Wo(t);return{empty:!1,name:"",setNum:n,chroma:t,normalized:r,intervals:o}}function ea(t){if(t.length===0)return x.chroma;let n,e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let r=0;rt.name).filter(t=>t)}function be(){return Z.map(t=>t.aliases[0]).filter(t=>t)}function Ae(){return Object.keys(B)}function D(){return Z.slice()}var ge=D;function Ne(){Z=[],B={}}function Wt(t,n,e){let r=ia(t),o={...v(t),name:e||"",quality:r,intervals:t,aliases:n};Z.push(o),o.name&&(B[o.name]=o),B[o.setNum]=o,B[o.chroma]=o,o.aliases.forEach(a=>Se(o,a))}function Se(t,n){B[n]=t}function ia(t){let n=e=>t.indexOf(e)!==-1;return n("5A")?"Augmented":n("3M")?"Major":n("5d")?"Diminished":n("3m")?"Minor":"Unknown"}oa.forEach(([t,n,e])=>Wt(t.split(" "),e.split(" "),n));Z.sort((t,n)=>t.setNum-n.setNum);var ma={names:ye,symbols:be,get:ot,all:D,add:Wt,removeAll:Ne,keys:Ae,entries:ge,chordType:ve};var sa=t=>{let n=t.reduce((e,r)=>{let o=s(r).chroma;return o!==void 0&&(e[o]=e[o]||s(r).name),e},{});return e=>n[e]};function pt(t,n={}){let e=t.map(o=>s(o).pc).filter(o=>o);return s.length===0?[]:Ma(e,1,n).filter(o=>o.weight).sort((o,a)=>a.weight-o.weight).map(o=>o.name)}var Mt={anyThirds:384,perfectFifth:16,nonPerfectFifths:40,anySeventh:3},Pt=t=>n=>!!(n&t),ca=Pt(Mt.anyThirds),ua=Pt(Mt.perfectFifth),la=Pt(Mt.anySeventh),fa=Pt(Mt.nonPerfectFifths);function da(t){let n=parseInt(t.chroma,2);return ca(n)&&ua(n)&&la(n)}function pa(t){let n=parseInt(t,2);return fa(n)?t:(n|16).toString(2)}function Ma(t,n,e){let r=t[0],o=s(r).chroma,a=sa(t),i=W(t,!1),m=[];return i.forEach((c,u)=>{let P=e.assumePerfectFifth&&pa(c);D().filter(l=>e.assumePerfectFifth&&da(l)?l.chroma===P:l.chroma===c).forEach(l=>{let M=l.aliases[0],h=a(u);u!==o?m.push({weight:.5*n,name:`${h}${M}/${r}`}):m.push({weight:1*n,name:`${h}${M}`})})}),m}var nn={};d(nn,{add:()=>Yt,addTo:()=>we,default:()=>tn,distance:()=>_e,fromSemitones:()=>De,get:()=>Zt,invert:()=>Ee,name:()=>Ie,names:()=>xe,num:()=>Ce,quality:()=>Te,semitones:()=>je,simplify:()=>ht,subtract:()=>vt,transposeFifths:()=>yt});function xe(){return"1P 2M 3M 4P 5P 6m 7m".split(" ")}var Zt=f,Ie=t=>f(t).name,je=t=>f(t).semitones,Te=t=>f(t).q,Ce=t=>f(t).num;function ht(t){let n=f(t);return n.empty?"":n.simple+n.q}function Ee(t){let n=f(t);if(n.empty)return"";let e=(7-n.step)%7,r=n.type==="perfectable"?-n.alt:-(n.alt+1);return f({step:e,alt:r,oct:n.oct,dir:n.dir}).name}var Pa=[1,2,2,3,3,4,5,5,6,6,7,7],ha="P m M m M P d P m M m M".split(" ");function De(t){let n=t<0?-1:1,e=Math.abs(t),r=e%12,o=Math.floor(e/12);return n*(Pa[r]+7*o)+ha[r]}var _e=A,Yt=Re((t,n)=>[t[0]+n[0],t[1]+n[1]]),we=t=>n=>Yt(t,n),vt=Re((t,n)=>[t[0]-n[0],t[1]-n[1]]);function yt(t,n){let e=Zt(t);if(e.empty)return"";let[r,o,a]=e.coord;return q([r+n,o,a]).name}var tn={names:xe,get:Zt,name:Ie,num:Ce,semitones:je,quality:Te,fromSemitones:De,distance:_e,invert:Ee,simplify:ht,add:Yt,addTo:we,subtract:vt,transposeFifths:yt};function Re(t){return(n,e)=>{let r=f(n).coord,o=f(e).coord;if(r&&o){let a=t(r,o);return q(a).name}}}var gt={};d(gt,{NoScaleType:()=>Fe,add:()=>en,addAlias:()=>qe,all:()=>_,default:()=>ba,entries:()=>$e,get:()=>H,keys:()=>Ve,names:()=>At,removeAll:()=>ke,scaleType:()=>Oe});var va=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2M 3m 4P 5P 6m 7m","minor","aeolian"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 6A","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],ya=va,Fe={...x,intervals:[],aliases:[]},bt=[],U={};function At(){return bt.map(t=>t.name)}function H(t){return U[t]||Fe}var Oe=H;function _(){return bt.slice()}var $e=_;function Ve(){return Object.keys(U)}function ke(){bt=[],U={}}function en(t,n,e=[]){let r={...v(t),name:n,intervals:t,aliases:e};return bt.push(r),U[r.name]=r,U[r.setNum]=r,U[r.chroma]=r,r.aliases.forEach(o=>qe(r,o)),r}function qe(t,n){U[n]=t}ya.forEach(([t,n,...e])=>en(t.split(" "),n,e));var ba={names:At,get:H,all:_,add:en,removeAll:ke,keys:Ve,entries:$e,scaleType:Oe};var Le={empty:!0,name:"",symbol:"",root:"",bass:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Y(t){let[n,e,r,o]=Q(t);return n===""?rn("",t):n==="A"&&o==="ug"?rn("","aug"):rn(n+e,r+o)}function rn(t,n){let e=n.split("/");if(e.length===1)return[t,e[0],""];let[r,o,a,i]=Q(e[1]);return r!==""&&a===""&&i===""?[t,e[0],r+o]:[t,n,""]}function w(t){if(Array.isArray(t))return at(t[1]||"",t[0],t[2]);if(t==="")return Le;{let[n,e,r]=Y(t),o=at(e,n,r);return o.empty?at(t):o}}function at(t,n,e){let r=ot(t),o=s(n||""),a=s(e||"");if(r.empty||n&&o.empty||e&&a.empty)return Le;let i=A(o.pc,a.pc),m=r.intervals.indexOf(i),c=m>=0,u=c?a:s(""),P=m===-1?NaN:m+1,y=a.pc&&a.pc!==o.pc,l=Array.from(r.intervals);if(c)for(let k=1;kp(o.pc,k));t=r.aliases.indexOf(t)!==-1?t:r.aliases[0];let h=`${o.empty?"":o.pc}${t}${c&&P>1?"/"+u.pc:y?"/"+a.pc:""}`,nt=`${n?o.pc+" ":""}${r.name}${c&&P>1?" over "+u.pc:y?" over "+a.pc:""}`;return{...r,name:nt,symbol:h,tonic:o.pc,type:r.name,root:u.pc,bass:y?a.pc:"",intervals:l,rootDegree:P,notes:M}}var Ge=w;function ze(t,n){let[e,r,o]=Y(t);if(!e)return t;let a=p(o,n),i=a?"/"+a:"";return p(e,n)+r+i}function Be(t){let n=w(t),e=z(n.chroma);return _().filter(r=>e(r.chroma)).map(r=>r.name)}function Ue(t){let n=w(t),e=z(n.chroma);return D().filter(r=>e(r.chroma)).map(r=>n.tonic+r.aliases[0])}function He(t){let n=w(t),e=G(n.chroma);return D().filter(r=>e(r.chroma)).map(r=>n.tonic+r.aliases[0])}function Ke(t,n){let e=w(t),r=n||e.tonic;return!r||e.empty?[]:e.intervals.map(o=>p(r,o))}function Xe(t,n){let e=w(t),r=n||e.tonic,o=O(e.intervals,r);return a=>a?o(a>0?a-1:a):""}function Qe(t,n){let e=w(t),r=n||e.tonic;return O(e.intervals,r)}var it={getChord:at,get:w,detect:pt,chordScales:Be,extended:Ue,reduced:He,tokenize:Y,transpose:ze,degrees:Xe,steps:Qe,notes:Ke,chord:Ge};var an={};d(an,{default:()=>xa,fraction:()=>Ye,get:()=>St,names:()=>Je,shorthands:()=>We,value:()=>Ze});var Aa=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],ga=Aa,Nt=[];ga.forEach(([t,n,e])=>Ia(t,n,e));var Na={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function Je(){return Nt.reduce((t,n)=>(n.names.forEach(e=>t.push(e)),t),[])}function We(){return Nt.map(t=>t.shorthand)}var Sa=/^([^.]+)(\.*)$/;function St(t){let[n,e,r]=Sa.exec(t)||[],o=Nt.find(m=>m.shorthand===e||m.names.includes(e));if(!o)return Na;let a=ja(o.fraction,r.length),i=a[0]/a[1];return{...o,name:t,dots:r,value:i,fraction:a}}var Ze=t=>St(t).value,Ye=t=>St(t).fraction,xa={names:Je,shorthands:We,get:St,value:Ze,fraction:Ye};function Ia(t,n,e){Nt.push({empty:!1,dots:"",name:"",value:1/t,fraction:t<1?[1/t,1]:[1,t],shorthand:n,names:e})}function ja(t,n){let e=Math.pow(2,n),r=t[0]*e,o=t[1]*e,a=r;for(let i=0;iQa,majorKey:()=>Pn,majorKeyChords:()=>Ka,majorTonicFromKeySignature:()=>wr,minorKey:()=>hn,minorKeyChords:()=>Xa});var dn={};d(dn,{accidentals:()=>sr,ascending:()=>Ct,chroma:()=>fr,default:()=>S,descending:()=>gr,distance:()=>Pr,enharmonic:()=>Dt,freq:()=>lr,fromFreq:()=>dr,fromFreqSharps:()=>pr,fromMidi:()=>Tt,fromMidiSharps:()=>Mr,get:()=>N,midi:()=>ur,name:()=>ir,names:()=>ar,octave:()=>cr,pitchClass:()=>mr,simplify:()=>Nr,sortedNames:()=>fn,sortedUniqNames:()=>Et,tr:()=>hr,trBy:()=>vr,trFifths:()=>br,trFrom:()=>yr,transpose:()=>g,transposeBy:()=>un,transposeFifths:()=>tt,transposeFrom:()=>ln,transposeOctaves:()=>Ar});var cn={};d(cn,{chroma:()=>It,default:()=>Ra,freqToMidi:()=>mt,isMidi:()=>mn,midiToFreq:()=>tr,midiToNoteName:()=>I,pcset:()=>jt,pcsetDegrees:()=>er,pcsetNearest:()=>nr,pcsetSteps:()=>sn,toMidi:()=>xt});function mn(t){return+t>=0&&+t<=127}function xt(t){if(mn(t))return+t;let n=s(t);return n.empty?null:n.midi}function tr(t,n=440){return Math.pow(2,(t-69)/12)*n}var Ta=Math.log(2),Ca=Math.log(440);function mt(t){let n=12*(Math.log(t)-Ca)/Ta+69;return Math.round(n*100)/100}var Ea="C C# D D# E F F# G G# A A# B".split(" "),Da="C Db D Eb E F Gb G Ab A Bb B".split(" ");function I(t,n={}){if(isNaN(t)||t===-1/0||t===1/0)return"";t=Math.round(t);let r=(n.sharps===!0?Ea:Da)[t%12];if(n.pitchClass)return r;let o=Math.floor(t/12)-1;return r+o}function It(t){return t%12}function _a(t){return t.split("").reduce((n,e,r)=>(r<12&&e==="1"&&n.push(r),n),[])}function wa(t){return t.map(It).sort((n,e)=>n-e).filter((n,e,r)=>e===0||n!==r[e-1])}function jt(t){return Array.isArray(t)?wa(t):_a(t)}function nr(t){let n=jt(t);return e=>{let r=It(e);for(let o=0;o<12;o++){let a=(r+o)%12,i=(r-o+12)%12;if(n.includes(a))return e+o;if(n.includes(i))return e-o}}}function sn(t,n){let e=jt(t),r=e.length;return o=>{let a=o<0?(r- -o%r)%r:o%r,i=Math.floor(o/r);return e[a]+i*12+n}}function er(t,n){let e=sn(t,n);return r=>{if(r!==0)return e(r>0?r-1:r)}}var Ra={chroma:It,freqToMidi:mt,isMidi:mn,midiToFreq:tr,midiToNoteName:I,pcsetNearest:nr,pcset:jt,pcsetDegrees:er,pcsetSteps:sn,toMidi:xt};var Fa=["C","D","E","F","G","A","B"],rr=t=>t.name,or=t=>t.map(s).filter(n=>!n.empty);function ar(t){return t===void 0?Fa.slice():Array.isArray(t)?or(t).map(rr):[]}var N=s,ir=t=>N(t).name,mr=t=>N(t).pc,sr=t=>N(t).acc,cr=t=>N(t).oct,ur=t=>N(t).midi,lr=t=>N(t).freq,fr=t=>N(t).chroma;function Tt(t){return I(t)}function dr(t){return I(mt(t))}function pr(t){return I(mt(t),{sharps:!0})}function Mr(t){return I(t,{sharps:!0})}var Pr=A,g=p,hr=p,un=t=>n=>g(n,t),vr=un,ln=t=>n=>g(t,n),yr=ln;function tt(t,n){return g(t,[n,0])}var br=tt;function Ar(t,n){return g(t,[0,n])}var Ct=(t,n)=>t.height-n.height,gr=(t,n)=>n.height-t.height;function fn(t,n){return n=n||Ct,or(t).sort(n).map(rr)}function Et(t){return fn(t,Ct).filter((n,e,r)=>e===0||n!==r[e-1])}var Nr=t=>{let n=N(t);return n.empty?"":I(n.midi||n.chroma,{sharps:n.alt>0,pitchClass:n.midi===null})};function Dt(t,n){let e=N(t);if(e.empty)return"";let r=N(n||I(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(r.empty||r.chroma!==e.chroma)return"";if(e.oct===void 0)return r.pc;let o=e.chroma-e.alt,a=r.chroma-r.alt,i=o>11||a<0?-1:o<0||a>11?1:0,m=e.oct+i;return r.pc+m}var S={names:ar,get:N,name:ir,pitchClass:mr,accidentals:sr,octave:cr,midi:ur,ascending:Ct,descending:gr,distance:Pr,sortedNames:fn,sortedUniqNames:Et,fromMidi:Tt,fromMidiSharps:Mr,freq:lr,fromFreq:dr,fromFreqSharps:pr,chroma:fr,transpose:g,tr:hr,transposeBy:un,trBy:vr,transposeFrom:ln,trFrom:yr,transposeFifths:tt,transposeOctaves:Ar,trFifths:br,simplify:Nr,enharmonic:Dt};var pn={};d(pn,{default:()=>qa,get:()=>j,names:()=>jr,romanNumeral:()=>Ir,tokenize:()=>Tr});var xr={empty:!0,name:"",chordType:""},Sr={};function j(t){return typeof t=="string"?Sr[t]||(Sr[t]=ka(t)):typeof t=="number"?j(_t[t]||""):R(t)?Oa(t):C(t)?j(t.name):xr}var Ir=j;function jr(t=!0){return(t?_t:Va).slice()}function Oa(t){return j(F(t.alt)+_t[t.step])}var $a=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function Tr(t){return $a.exec(t)||["","","",""]}var Cr="I II III IV V VI VII",_t=Cr.split(" "),Va=Cr.toLowerCase().split(" ");function ka(t){let[n,e,r,o]=Tr(t);if(!r)return xr;let a=r.toUpperCase(),i=_t.indexOf(a),m=L(e),c=1;return{empty:!1,name:n,roman:r,interval:f({step:i,alt:m,dir:c}).name,acc:e,chordType:o,alt:m,step:i,major:r===a,oct:0,dir:c}}var qa={names:jr,get:j,romanNumeral:Ir};var b=Object.freeze([]),Dr={type:"major",tonic:"",alteration:0,keySignature:""},wt={tonic:"",grades:b,intervals:b,scale:b,triads:b,chords:b,chordsHarmonicFunction:b,chordScales:b,secondaryDominants:b,secondaryDominantSupertonics:b,substituteDominantsMinorRelative:b,substituteDominants:b,substituteDominantSupertonics:b,secondaryDominantsMinorRelative:b},La={...Dr,...wt,type:"major",minorRelative:"",scale:b,substituteDominants:b,secondaryDominantSupertonics:b,substituteDominantsMinorRelative:b},Ga={...Dr,type:"minor",relativeMajor:"",natural:wt,harmonic:wt,melodic:wt},Mn=(t,n,e="")=>n.map((r,o)=>`${t[o]}${e}${r}`);function Ft(t,n,e,r,o){return a=>{let i=t.map(M=>j(M).interval||""),m=i.map(M=>g(a,M)),c=Mn(m,e),u=m.map(M=>g(M,"5P")).map(M=>m.includes(M)&&!c.includes(M+"7")?M+"7":""),P=Er(u,n),y=u.map(M=>{if(!M)return"";let h=M.slice(0,-1);return g(h,"5d")+"7"}),l=Er(y,n);return{tonic:a,grades:t,intervals:i,scale:m,triads:Mn(m,n),chords:c,chordsHarmonicFunction:r.slice(),chordScales:Mn(m,o," "),secondaryDominants:u,secondaryDominantSupertonics:P,substituteDominants:y,substituteDominantSupertonics:l,secondaryDominantsMinorRelative:P,substituteDominantsMinorRelative:l}}}var Er=(t,n)=>t.map((e,r)=>{if(!e)return"";let o=e.slice(0,-1),a=g(o,"5P");return n[r].endsWith("m")?a+"m7":a+"m7b5"}),_r=(t,n)=>{let e=s(t),r=s(n);return e.empty||r.empty?0:r.coord[0]-e.coord[0]},za=Ft("I II III IV V VI VII".split(" ")," m m m dim".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),Ba=Ft("I II bIII IV V bVI bVII".split(" "),"m dim m m ".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),Ua=Ft("I II bIII IV V bVI VII".split(" "),"m dim aug m dim".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),Ha=Ft("I II bIII IV V VI VII".split(" "),"m m aug dim dim".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function Pn(t){let n=s(t).pc;if(!n)return La;let e=za(n),r=_r("C",n);return{...e,type:"major",minorRelative:g(n,"-3m"),alteration:r,keySignature:F(r)}}function Ka(t){let n=Pn(t),e=[];return Rt(n,e),e}function Xa(t){let n=hn(t),e=[];return Rt(n.natural,e),Rt(n.harmonic,e),Rt(n.melodic,e),e}function Rt(t,n){let e=(r,o)=>{if(!r)return;let a=n.find(i=>i.name===r);a||(a={name:r,roles:[]},n.push(a)),o&&!a.roles.includes(o)&&a.roles.push(o)};t.chords.forEach((r,o)=>e(r,t.chordsHarmonicFunction[o])),t.secondaryDominants.forEach((r,o)=>e(r,`V/${t.grades[o]}`)),t.secondaryDominantSupertonics.forEach((r,o)=>e(r,`ii/${t.grades[o]}`)),t.substituteDominants.forEach((r,o)=>e(r,`subV/${t.grades[o]}`)),t.substituteDominantSupertonics.forEach((r,o)=>e(r,`subii/${t.grades[o]}`))}function hn(t){let n=s(t).pc;if(!n)return Ga;let e=_r("C",n)-3;return{type:"minor",tonic:n,relativeMajor:g(n,"3m"),alteration:e,keySignature:F(e),natural:Ba(n),harmonic:Ua(n),melodic:Ha(n)}}function wr(t){return typeof t=="number"?tt("C",t):typeof t=="string"&&/^b+|#+$/.test(t)?tt("C",L(t)):null}var Qa={majorKey:Pn,majorTonicFromKeySignature:wr,minorKey:hn};var Sn={};d(Sn,{all:()=>gn,default:()=>Wa,distance:()=>Nn,entries:()=>Or,get:()=>V,mode:()=>Fr,names:()=>$r,notes:()=>Vr,relativeTonic:()=>Gr,seventhChords:()=>Lr,triads:()=>qr});var bn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Rr={...x,name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]},An=bn.map(Ja),yn={};An.forEach(t=>{yn[t.name]=t,t.aliases.forEach(n=>{yn[n]=t})});function V(t){return typeof t=="string"?yn[t.toLowerCase()]||Rr:t&&t.name?V(t.name):Rr}var Fr=V;function gn(){return An.slice()}var Or=gn;function $r(){return An.map(t=>t.name)}function Ja(t){let[n,e,r,o,a,i,m]=t,c=m?[m]:[],u=Number(e).toString(2);return{empty:!1,intervals:H(o).intervals,modeNum:n,chroma:u,normalized:u,name:o,setNum:e,alt:r,triad:a,seventh:i,aliases:c}}function Vr(t,n){return V(t).intervals.map(e=>p(n,e))}function kr(t){return(n,e)=>{let r=V(n);if(r.empty)return[];let o=E(r.modeNum,t),a=r.intervals.map(i=>p(e,i));return o.map((i,m)=>a[m]+i)}}var qr=kr(bn.map(t=>t[4])),Lr=kr(bn.map(t=>t[5]));function Nn(t,n){let e=V(n),r=V(t);return e.empty||r.empty?"":ht(yt("1P",r.alt-e.alt))}function Gr(t,n,e){return p(e,Nn(t,n))}var Wa={get:V,names:$r,all:gn,distance:Nn,relativeTonic:Gr,notes:Vr,triads:qr,seventhChords:Lr,entries:Or,mode:Fr};var xn={};d(xn,{default:()=>Za,fromRomanNumerals:()=>zr,toRomanNumerals:()=>Br});function zr(t,n){return n.map(j).map(r=>p(t,f(r))+r.chordType)}function Br(t,n){return n.map(e=>{let[r,o]=Y(e),a=A(t,r);return j(f(a)).name+o})}var Za={fromRomanNumerals:zr,toRomanNumerals:Br};var Tn={};d(Tn,{chromatic:()=>Ur,default:()=>jn,numeric:()=>In});function In(t){let n=J(t.map(e=>typeof e=="number"?e:xt(e)));return!t.length||n.length!==t.length?[]:n.reduce((e,r)=>{let o=e[e.length-1];return e.concat($(o,r).slice(1))},[n[0]])}function Ur(t,n){return In(t).map(e=>I(e,n))}var jn={numeric:In,chromatic:Ur};var Cn={};d(Cn,{binary:()=>Ya,euclid:()=>ai,hex:()=>ti,onsets:()=>ni,probability:()=>ri,random:()=>ei,rotate:()=>oi});function Ya(...t){return t.reduce((n,e)=>(e.toString(2).split("").forEach(r=>{n.push(parseInt(r))}),n),[])}function ti(t){let n=[];for(let e=0;e{n.push(a==="1"?1:0)})}return n}function ni(...t){return t.reduce((n,e)=>{n.push(1);for(let r=0;r=n?1:0);return r}function ri(t,n=Math.random){return t.map(e=>n()<=e?1:0)}function oi(t,n){let e=t.length,r=[];for(let o=0;osi,degrees:()=>Yr,detect:()=>Xr,extended:()=>Dn,get:()=>T,modeNames:()=>Wr,names:()=>Hr,rangeOf:()=>Zr,reduced:()=>Jr,scale:()=>Kr,scaleChords:()=>Qr,scaleNotes:()=>_n,steps:()=>to,tokenize:()=>En});var ii={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function En(t){if(typeof t!="string")return["",""];let n=t.indexOf(" "),e=s(t.substring(0,n));if(e.empty){let o=s(t);return o.empty?["",t.toLowerCase()]:[o.name,""]}let r=t.substring(e.name.length+1).toLowerCase();return[e.name,r.length?r:""]}var Hr=At;function T(t){let n=Array.isArray(t)?t:En(t),e=s(n[0]).name,r=H(n[1]);if(r.empty)return ii;let o=r.name,a=e?r.intervals.map(m=>p(e,m)):[],i=e?e+" "+o:o;return{...r,name:i,type:o,tonic:e,notes:a}}var Kr=T;function Xr(t,n={}){let e=ut(t),r=s(n.tonic??t[0]??""),o=r.chroma;if(o===void 0)return[];let a=e.split("");a[o]="1";let i=E(o,a).join(""),m=_().find(u=>u.chroma===i),c=[];return m&&c.push(r.name+" "+m.name),n.match==="exact"||Dn(i).forEach(u=>{c.push(r.name+" "+u)}),c}function Qr(t){let n=T(t),e=G(n.chroma);return D().filter(r=>e(r.chroma)).map(r=>r.aliases[0])}function Dn(t){let n=rt(t)?t:T(t).chroma,e=z(n);return _().filter(r=>e(r.chroma)).map(r=>r.name)}function Jr(t){let n=G(T(t).chroma);return _().filter(e=>n(e.chroma)).map(e=>e.name)}function _n(t){let n=t.map(o=>s(o).pc).filter(o=>o),e=n[0],r=Et(n);return E(r.indexOf(e),r)}function Wr(t){let n=T(t);if(n.empty)return[];let e=n.tonic?n.notes:n.intervals;return W(n.chroma).map((r,o)=>{let a=T(r).name;return a?[e[o],a]:["",""]}).filter(r=>r[0])}function mi(t){let n=Array.isArray(t)?_n(t):T(t).notes,e=n.map(r=>s(r).chroma);return r=>{let o=typeof r=="number"?s(Tt(r)):s(r),a=o.height;if(a===void 0)return;let i=a%12,m=e.indexOf(i);if(m!==-1)return Dt(o.name,n[m])}}function Zr(t){let n=mi(t);return(e,r)=>{let o=s(e).height,a=s(r).height;return o===void 0||a===void 0?[]:$(o,a).map(n).filter(i=>i)}}function Yr(t){let{intervals:n,tonic:e}=T(t),r=O(n,e);return o=>o?r(o>0?o-1:o):""}function to(t){let{intervals:n,tonic:e}=T(t);return O(n,e)}var si={degrees:Yr,detect:Xr,extended:Dn,get:T,modeNames:Wr,names:Hr,rangeOf:Zr,reduced:Jr,scaleChords:Qr,scaleNotes:_n,steps:to,tokenize:En,scale:Kr};var Rn={};d(Rn,{default:()=>fi,get:()=>ro,names:()=>eo,parse:()=>Ot});var ci={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},ui=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function eo(){return ui.slice()}var li=/^(\d*\d(?:\+\d)*)\/(\d+)$/,no=new Map;function ro(t){let n=JSON.stringify(t),e=no.get(n);if(e)return e;let r=pi(Ot(t));return no.set(n,r),r}function Ot(t){if(typeof t=="string"){let[a,i,m]=li.exec(t)||[];return Ot([i,m])}let[n,e]=t,r=+e;if(typeof n=="number")return[n,r];let o=n.split("+").map(a=>+a);return o.length===1?[o[0],r]:[o,r]}var fi={names:eo,parse:Ot,get:ro},di=t=>Math.log(t)/Math.log(2)%1===0;function pi([t,n]){let e=Array.isArray(t)?t.reduce((m,c)=>m+c,0):t,r=n;if(e===0||r===0)return ci;let o=Array.isArray(t)?`${t.join("+")}/${n}`:`${t}/${n}`,a=Array.isArray(t)?t:[],i=r===4||r===2?"simple":r===8&&e%3===0?"compound":di(r)?"irregular":"irrational";return{empty:!1,name:o,type:i,upper:e,lower:r,additive:a}}var On={};d(On,{default:()=>Fn,topNoteDiff:()=>oo});var oo=(t,n)=>{if(!n||!n.length)return t[0];let e=o=>S.midi(o[o.length-1])||0,r=o=>Math.abs(e(n)-e(o));return t.sort((o,a)=>r(o)-r(a))[0]},Fn={topNoteDiff:oo};var zn={};d(zn,{default:()=>Mi,get:()=>Ln,search:()=>Gn,sequence:()=>uo});var kn={};d(kn,{all:()=>io,default:()=>st,defaultDictionary:()=>Vn,lefthand:()=>$n,lookup:()=>mo,triads:()=>ao});var ao={M:["1P 3M 5P","3M 5P 8P","5P 8P 10M"],m:["1P 3m 5P","3m 5P 8P","5P 8P 10m"],o:["1P 3m 5d","3m 5d 8P","5d 8P 10m"],aug:["1P 3M 5A","3M 5A 8P","5A 8P 10M"]},$n={m7:["3m 5P 7m 9M","7m 9M 10m 12P"],7:["3M 6M 7m 9M","7m 9M 10M 13M"],"^7":["3M 5P 7M 9M","7M 9M 10M 12P"],69:["3M 5P 6A 9M"],m7b5:["3m 5d 7m 8P","7m 8P 10m 12d"],"7b9":["3M 6m 7m 9m","7m 9m 10M 13m"],"7b13":["3M 6m 7m 9m","7m 9m 10M 13m"],o7:["1P 3m 5d 6M","5d 6M 8P 10m"],"7#11":["7m 9M 11A 13A"],"7#9":["3M 7m 9A"],mM7:["3m 5P 7M 9M","7M 9M 10m 12P"],m6:["3m 5P 6M 9M","6M 9M 10m 12P"]},io={M:["1P 3M 5P","3M 5P 8P","5P 8P 10M"],m:["1P 3m 5P","3m 5P 8P","5P 8P 10m"],o:["1P 3m 5d","3m 5d 8P","5d 8P 10m"],aug:["1P 3M 5A","3M 5A 8P","5A 8P 10M"],m7:["3m 5P 7m 9M","7m 9M 10m 12P"],7:["3M 6M 7m 9M","7m 9M 10M 13M"],"^7":["3M 5P 7M 9M","7M 9M 10M 12P"],69:["3M 5P 6A 9M"],m7b5:["3m 5d 7m 8P","7m 8P 10m 12d"],"7b9":["3M 6m 7m 9m","7m 9m 10M 13m"],"7b13":["3M 6m 7m 9m","7m 9m 10M 13m"],o7:["1P 3m 5d 6M","5d 6M 8P 10m"],"7#11":["7m 9M 11A 13A"],"7#9":["3M 7m 9A"],mM7:["3m 5P 7M 9M","7M 9M 10m 12P"],m6:["3m 5P 6M 9M","6M 9M 10m 12P"]},Vn=$n;function mo(t,n=Vn){if(n[t])return n[t];let{aliases:e}=it.get("C"+t),r=Object.keys(n).find(o=>e.includes(o))||"";if(r!==void 0)return n[r]}var st={lookup:mo,lefthand:$n,triads:ao,all:io,defaultDictionary:Vn};var qn=["C3","C5"],so=st.all,co=Fn.topNoteDiff;function Ln(t,n=qn,e=so,r=co,o){let a=Gn(t,n,e);return!o||!o.length?a[0]:r(a,o)}function Gn(t,n=qn,e=st.triads){let[r,o]=it.tokenize(t),a=st.lookup(o,e);if(!a)return[];let i=a.map(c=>c.split(" ")),m=jn.chromatic(n);return i.reduce((c,u)=>{let P=u.map(h=>tn.subtract(h,u[0])||""),y=S.transpose(r,u[0]),M=m.filter(h=>S.chroma(h)===S.chroma(y)).filter(h=>(S.midi(S.transpose(h,P[P.length-1]))||0)<=(S.midi(n[1])||0)).map(h=>S.enharmonic(h,y)).map(h=>P.map(nt=>S.transpose(h,nt)));return c.concat(M)},[])}function uo(t,n=qn,e=so,r=co,o){let{voicings:a}=t.reduce(({voicings:i,lastVoicing:m},c)=>{let u=Ln(c,n,e,r,m);return m=u,i.push(u),{voicings:i,lastVoicing:m}},{voicings:[],lastVoicing:o});return a}var Mi={get:Ln,search:Gn,sequence:uo};var $t={};d($t,{accToAlt:()=>L,altToAcc:()=>F,chroma:()=>Hn,coordToInterval:()=>q,coordToNote:()=>ct,coordinates:()=>K,deprecate:()=>Bn,distance:()=>A,fillStr:()=>lo,height:()=>kt,interval:()=>f,isNamed:()=>fo,isNamedPitch:()=>C,isPitch:()=>R,midi:()=>Kn,note:()=>s,pitch:()=>X,stepToLetter:()=>zt,tokenizeInterval:()=>Lt,tokenizeNote:()=>Q,tonicIntervalsTransposer:()=>O,transpose:()=>p});var lo=(t,n)=>Array(Math.abs(n)+1).join(t);function Bn(t,n,e){return function(...r){return console.warn(`${t} is deprecated. Use ${n}.`),e.apply(this,r)}}var fo=Bn("isNamed","isNamedPitch",C);var Pi=$t,hi=ft,vi=dt,yi=gt;return Ao(bi);})(); //# sourceMappingURL=tonal.min.js.map diff --git a/packages/tonal/browser/tonal.min.js.map b/packages/tonal/browser/tonal.min.js.map index c9f9a1e8..0abc010d 100644 --- a/packages/tonal/browser/tonal.min.js.map +++ b/packages/tonal/browser/tonal.min.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../index.ts", "../../pitch/index.ts", "../../pitch-interval/index.ts", "../../pitch-note/index.ts", "../../pitch-distance/index.ts", "../../collection/index.ts", "../../pcset/index.ts", "../../chord-type/index.ts", "../../chord-type/data.ts", "../../chord-detect/index.ts", "../../duration-value/data.ts", "../../duration-value/index.ts", "../../midi/index.ts", "../../note/index.ts", "../../rhythm-pattern/index.ts", "../../time-signature/index.ts", "../../voicing-dictionary/index.ts", "../../voicing-dictionary/data.ts"], - "sourcesContent": ["import * as AbcNotation from \"@tonaljs/abc-notation\";\nimport * as Array from \"@tonaljs/array\";\nimport * as Chord from \"@tonaljs/chord\";\nimport * as ChordType from \"@tonaljs/chord-type\";\nimport * as Collection from \"@tonaljs/collection\";\nimport * as DurationValue from \"@tonaljs/duration-value\";\nimport * as Interval from \"@tonaljs/interval\";\nimport * as Key from \"@tonaljs/key\";\nimport * as Midi from \"@tonaljs/midi\";\nimport * as Mode from \"@tonaljs/mode\";\nimport * as Note from \"@tonaljs/note\";\nimport * as Pcset from \"@tonaljs/pcset\";\nimport * as Progression from \"@tonaljs/progression\";\nimport * as Range from \"@tonaljs/range\";\nimport * as RhythmPattern from \"@tonaljs/rhythm-pattern\";\nimport * as RomanNumeral from \"@tonaljs/roman-numeral\";\nimport * as Scale from \"@tonaljs/scale\";\nimport * as ScaleType from \"@tonaljs/scale-type\";\nimport * as TimeSignature from \"@tonaljs/time-signature\";\nimport * as VoiceLeading from \"@tonaljs/voice-leading\";\nimport * as Voicing from \"@tonaljs/voicing\";\nimport * as VoicingDictionary from \"@tonaljs/voicing-dictionary\";\n\nexport * from \"@tonaljs/core\";\n\n// deprecated (backwards compatibility)\nimport * as Core from \"@tonaljs/core\";\n/** @deprecated */\nconst Tonal = Core;\n/** @deprecated */\nconst PcSet = Pcset;\n/** @deprecated */\nconst ChordDictionary = ChordType;\n/** @deprecated */\nconst ScaleDictionary = ScaleType;\n\nexport {\n AbcNotation,\n Array,\n Chord,\n ChordDictionary,\n ChordType,\n Collection,\n Core,\n DurationValue,\n Interval,\n Key,\n Midi,\n Mode,\n Note,\n PcSet,\n Pcset,\n Progression,\n Range,\n RhythmPattern,\n RomanNumeral,\n Scale,\n ScaleDictionary,\n ScaleType,\n TimeSignature,\n Tonal,\n VoiceLeading,\n Voicing,\n VoicingDictionary,\n};\n", "export interface NamedPitch {\n readonly name: string;\n}\n\n/*** @deprecated use NamedPitch */\nexport interface Named {\n readonly name: string;\n}\n\nexport interface NotFound extends NamedPitch {\n readonly empty: true;\n readonly name: \"\";\n}\n\nexport function isNamedPitch(src: unknown): src is NamedPitch {\n return src !== null &&\n typeof src === \"object\" &&\n \"name\" in src &&\n typeof src.name === \"string\"\n ? true\n : false;\n}\n\ntype Fifths = number;\ntype Octaves = number;\nexport type Direction = 1 | -1;\n\nexport type PitchClassCoordinates = [Fifths];\nexport type NoteCoordinates = [Fifths, Octaves];\nexport type IntervalCoordinates = [Fifths, Octaves, Direction];\nexport type PitchCoordinates =\n | PitchClassCoordinates\n | NoteCoordinates\n | IntervalCoordinates;\n\n/**\n * Pitch properties\n *\n * - {number} step - The step number: 0 = C, 1 = D, ... 6 = B\n * - {number} alt - Number of alterations: -2 = 'bb', -1 = 'b', 0 = '', 1 = '#', ...\n * - {number} [oct] = The octave (undefined when is a coord class)\n * - {number} [dir] = Interval direction (undefined when is not an interval)\n */\nexport interface Pitch {\n readonly step: number;\n readonly alt: number;\n readonly oct?: number; // undefined for pitch classes\n readonly dir?: Direction; // undefined for notes\n}\n\nconst SIZES = [0, 2, 4, 5, 7, 9, 11];\nexport const chroma = ({ step, alt }: Pitch) => (SIZES[step] + alt + 120) % 12;\n\nexport const height = ({ step, alt, oct, dir = 1 }: Pitch) =>\n dir * (SIZES[step] + alt + 12 * (oct === undefined ? -100 : oct));\n\nexport const midi = (pitch: Pitch) => {\n const h = height(pitch);\n return pitch.oct !== undefined && h >= -12 && h <= 115 ? h + 12 : null;\n};\n\nexport function isPitch(pitch: unknown): pitch is Pitch {\n return pitch !== null &&\n typeof pitch === \"object\" &&\n \"step\" in pitch &&\n typeof pitch.step === \"number\" &&\n \"alt\" in pitch &&\n typeof pitch.alt === \"number\" &&\n !isNaN(pitch.step) &&\n !isNaN(pitch.alt)\n ? true\n : false;\n}\n\n// The number of fifths of [C, D, E, F, G, A, B]\nconst FIFTHS = [0, 2, 4, -1, 1, 3, 5];\n// The number of octaves it span each step\nconst STEPS_TO_OCTS = FIFTHS.map((fifths: number) =>\n Math.floor((fifths * 7) / 12),\n);\n\n/**\n * Get coordinates from pitch object\n */\nexport function coordinates(pitch: Pitch): PitchCoordinates {\n const { step, alt, oct, dir = 1 } = pitch;\n const f = FIFTHS[step] + 7 * alt;\n if (oct === undefined) {\n return [dir * f];\n }\n const o = oct - STEPS_TO_OCTS[step] - 4 * alt;\n return [dir * f, dir * o];\n}\n\n// We need to get the steps from fifths\n// Fifths for CDEFGAB are [ 0, 2, 4, -1, 1, 3, 5 ]\n// We add 1 to fifths to avoid negative numbers, so:\n// for [\"F\", \"C\", \"G\", \"D\", \"A\", \"E\", \"B\"] we have:\nconst FIFTHS_TO_STEPS = [3, 0, 4, 1, 5, 2, 6];\n\n/**\n * Get pitch from coordinate objects\n */\nexport function pitch(coord: PitchCoordinates): Pitch {\n const [f, o, dir] = coord;\n const step = FIFTHS_TO_STEPS[unaltered(f)];\n const alt = Math.floor((f + 1) / 7);\n if (o === undefined) {\n return { step, alt, dir };\n }\n const oct = o + 4 * alt + STEPS_TO_OCTS[step];\n return { step, alt, oct, dir };\n}\n\n// Return the number of fifths as if it were unaltered\nfunction unaltered(f: number): number {\n const i = (f + 1) % 7;\n return i < 0 ? 7 + i : i;\n}\n", "import {\n coordinates,\n Direction,\n IntervalCoordinates,\n isNamedPitch,\n isPitch,\n NamedPitch,\n Pitch,\n pitch,\n PitchCoordinates,\n} from \"@tonaljs/pitch\";\n\nconst fillStr = (s: string, n: number) => Array(Math.abs(n) + 1).join(s);\n\nexport type IntervalName = string;\nexport type IntervalLiteral = IntervalName | Pitch | NamedPitch;\n\ntype Quality =\n | \"dddd\"\n | \"ddd\"\n | \"dd\"\n | \"d\"\n | \"m\"\n | \"M\"\n | \"P\"\n | \"A\"\n | \"AA\"\n | \"AAA\"\n | \"AAAA\";\ntype Type = \"perfectable\" | \"majorable\";\n\nexport interface Interval extends Pitch, NamedPitch {\n readonly empty: boolean;\n readonly name: IntervalName;\n readonly num: number;\n readonly q: Quality;\n readonly type: Type;\n readonly step: number;\n readonly alt: number;\n readonly dir: Direction;\n readonly simple: number;\n readonly semitones: number;\n readonly chroma: number;\n readonly coord: IntervalCoordinates;\n readonly oct: number;\n}\n\nexport type IntervalType = Interval;\n\nconst NoInterval: Interval = Object.freeze({\n empty: true,\n name: \"\",\n num: NaN,\n q: \"\" as Quality,\n type: \"\" as Type,\n step: NaN,\n alt: NaN,\n dir: NaN as Direction,\n simple: NaN,\n semitones: NaN,\n chroma: NaN,\n coord: [] as unknown as IntervalCoordinates,\n oct: NaN,\n});\n\n// shorthand tonal notation (with quality after number)\nconst INTERVAL_TONAL_REGEX = \"([-+]?\\\\d+)(d{1,4}|m|M|P|A{1,4})\";\n// standard shorthand notation (with quality before number)\nconst INTERVAL_SHORTHAND_REGEX = \"(AA|A|P|M|m|d|dd)([-+]?\\\\d+)\";\nconst REGEX = new RegExp(\n \"^\" + INTERVAL_TONAL_REGEX + \"|\" + INTERVAL_SHORTHAND_REGEX + \"$\",\n);\n\ntype IntervalTokens = [string, string];\n\n/**\n * @private\n */\nexport function tokenizeInterval(str?: IntervalName): IntervalTokens {\n const m = REGEX.exec(`${str}`);\n if (m === null) {\n return [\"\", \"\"];\n }\n return m[1] ? [m[1], m[2]] : [m[4], m[3]];\n}\n\nconst cache: { [key in string]: Interval } = {};\n\n/**\n * Get interval properties. It returns an object with:\n *\n * - name: the interval name\n * - num: the interval number\n * - type: 'perfectable' or 'majorable'\n * - q: the interval quality (d, m, M, A)\n * - dir: interval direction (1 ascending, -1 descending)\n * - simple: the simplified number\n * - semitones: the size in semitones\n * - chroma: the interval chroma\n *\n * @param {string} interval - the interval name\n * @return {Object} the interval properties\n *\n * @example\n * import { interval } from '@tonaljs/core'\n * interval('P5').semitones // => 7\n * interval('m3').type // => 'majorable'\n */\nexport function interval(src: IntervalLiteral): Interval {\n return typeof src === \"string\"\n ? cache[src] || (cache[src] = parse(src))\n : isPitch(src)\n ? interval(pitchName(src))\n : isNamedPitch(src)\n ? interval(src.name)\n : NoInterval;\n}\n\nconst SIZES = [0, 2, 4, 5, 7, 9, 11];\nconst TYPES = \"PMMPPMM\";\nfunction parse(str?: string): Interval {\n const tokens = tokenizeInterval(str);\n if (tokens[0] === \"\") {\n return NoInterval;\n }\n const num = +tokens[0];\n const q = tokens[1] as Quality;\n const step = (Math.abs(num) - 1) % 7;\n const t = TYPES[step];\n if (t === \"M\" && q === \"P\") {\n return NoInterval;\n }\n const type = t === \"M\" ? \"majorable\" : \"perfectable\";\n\n const name = \"\" + num + q;\n const dir = num < 0 ? -1 : 1;\n const simple = num === 8 || num === -8 ? num : dir * (step + 1);\n const alt = qToAlt(type, q);\n const oct = Math.floor((Math.abs(num) - 1) / 7);\n const semitones = dir * (SIZES[step] + alt + 12 * oct);\n const chroma = (((dir * (SIZES[step] + alt)) % 12) + 12) % 12;\n const coord = coordinates({ step, alt, oct, dir }) as IntervalCoordinates;\n return {\n empty: false,\n name,\n num,\n q,\n step,\n alt,\n dir,\n type,\n simple,\n semitones,\n chroma,\n coord,\n oct,\n };\n}\n\n/**\n * @private\n *\n * forceDescending is used in the case of unison (#243)\n */\nexport function coordToInterval(\n coord: PitchCoordinates,\n forceDescending?: boolean,\n): Interval {\n const [f, o = 0] = coord;\n const isDescending = f * 7 + o * 12 < 0;\n const ivl: IntervalCoordinates =\n forceDescending || isDescending ? [-f, -o, -1] : [f, o, 1];\n return interval(pitch(ivl)) as Interval;\n}\n\nfunction qToAlt(type: Type, q: string): number {\n return (q === \"M\" && type === \"majorable\") ||\n (q === \"P\" && type === \"perfectable\")\n ? 0\n : q === \"m\" && type === \"majorable\"\n ? -1\n : /^A+$/.test(q)\n ? q.length\n : /^d+$/.test(q)\n ? -1 * (type === \"perfectable\" ? q.length : q.length + 1)\n : 0;\n}\n\n// return the interval name of a pitch\nfunction pitchName(props: Pitch): string {\n const { step, alt, oct = 0, dir } = props;\n if (!dir) {\n return \"\";\n }\n const calcNum = step + 1 + 7 * oct;\n // this is an edge case: descending pitch class unison (see #243)\n const num = calcNum === 0 ? step + 1 : calcNum;\n const d = dir < 0 ? \"-\" : \"\";\n const type = TYPES[step] === \"M\" ? \"majorable\" : \"perfectable\";\n const name = d + num + altToQ(type, alt);\n return name;\n}\n\nfunction altToQ(type: Type, alt: number): Quality {\n if (alt === 0) {\n return type === \"majorable\" ? \"M\" : \"P\";\n } else if (alt === -1 && type === \"majorable\") {\n return \"m\";\n } else if (alt > 0) {\n return fillStr(\"A\", alt) as Quality;\n } else {\n return fillStr(\"d\", type === \"perfectable\" ? alt : alt + 1) as Quality;\n }\n}\n", "import {\n coordinates,\n isNamedPitch,\n isPitch,\n NamedPitch,\n Pitch,\n pitch,\n PitchCoordinates,\n} from \"@tonaljs/pitch\";\n\nconst fillStr = (s: string, n: number) => Array(Math.abs(n) + 1).join(s);\n\nexport type NoteWithOctave = string;\nexport type PcName = string;\nexport type NoteName = NoteWithOctave | PcName;\nexport type NoteLiteral = NoteName | Pitch | NamedPitch;\n\nexport interface Note extends Pitch, NamedPitch {\n readonly empty: boolean;\n readonly name: NoteName;\n readonly letter: string;\n readonly acc: string;\n readonly pc: PcName;\n readonly chroma: number;\n readonly height: number;\n readonly coord: PitchCoordinates;\n readonly midi: number | null;\n readonly freq: number | null;\n}\n\nexport type NoteType = Note;\n\nconst NoNote: Note = Object.freeze({\n empty: true,\n name: \"\",\n letter: \"\",\n acc: \"\",\n pc: \"\",\n step: NaN,\n alt: NaN,\n chroma: NaN,\n height: NaN,\n coord: [] as unknown as PitchCoordinates,\n midi: null,\n freq: null,\n});\n\nconst cache: Map = new Map();\n\nexport const stepToLetter = (step: number) => \"CDEFGAB\".charAt(step);\nexport const altToAcc = (alt: number): string =>\n alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt);\nexport const accToAlt = (acc: string): number =>\n acc[0] === \"b\" ? -acc.length : acc.length;\n\n/**\n * Given a note literal (a note name or a note object), returns the Note object\n * @example\n * note('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\n */\nexport function note(src: NoteLiteral): Note {\n const stringSrc = JSON.stringify(src);\n\n const cached = cache.get(stringSrc);\n if (cached) {\n return cached;\n }\n\n const value =\n typeof src === \"string\"\n ? parse(src)\n : isPitch(src)\n ? note(pitchName(src))\n : isNamedPitch(src)\n ? note(src.name)\n : NoNote;\n cache.set(stringSrc, value);\n return value;\n}\n\ntype NoteTokens = [string, string, string, string];\n\nconst REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\n\n/**\n * @private\n */\nexport function tokenizeNote(str: string): NoteTokens {\n const m = REGEX.exec(str) as string[];\n return m\n ? [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]]\n : [\"\", \"\", \"\", \"\"];\n}\n\n/**\n * @private\n */\nexport function coordToNote(noteCoord: PitchCoordinates): Note {\n return note(pitch(noteCoord)) as Note;\n}\n\nconst mod = (n: number, m: number) => ((n % m) + m) % m;\n\nconst SEMI = [0, 2, 4, 5, 7, 9, 11];\nfunction parse(noteName: NoteName): Note {\n const tokens = tokenizeNote(noteName);\n if (tokens[0] === \"\" || tokens[3] !== \"\") {\n return NoNote;\n }\n\n const letter = tokens[0];\n const acc = tokens[1];\n const octStr = tokens[2];\n\n const step = (letter.charCodeAt(0) + 3) % 7;\n const alt = accToAlt(acc);\n const oct = octStr.length ? +octStr : undefined;\n const coord = coordinates({ step, alt, oct });\n\n const name = letter + acc + octStr;\n const pc = letter + acc;\n const chroma = (SEMI[step] + alt + 120) % 12;\n const height =\n oct === undefined\n ? mod(SEMI[step] + alt, 12) - 12 * 99\n : SEMI[step] + alt + 12 * (oct + 1);\n const midi = height >= 0 && height <= 127 ? height : null;\n const freq = oct === undefined ? null : Math.pow(2, (height - 69) / 12) * 440;\n\n return {\n empty: false,\n acc,\n alt,\n chroma,\n coord,\n freq,\n height,\n letter,\n midi,\n name,\n oct,\n pc,\n step,\n };\n}\n\nfunction pitchName(props: Pitch): NoteName {\n const { step, alt, oct } = props;\n const letter = stepToLetter(step);\n if (!letter) {\n return \"\";\n }\n\n const pc = letter + altToAcc(alt);\n return oct || oct === 0 ? pc + oct : pc;\n}\n", "import { PitchCoordinates } from \"@tonaljs/pitch\";\nimport {\n IntervalLiteral,\n IntervalName,\n interval as asInterval,\n coordToInterval,\n} from \"@tonaljs/pitch-interval\";\nimport {\n NoteLiteral,\n NoteName,\n note as asNote,\n coordToNote,\n} from \"@tonaljs/pitch-note\";\n\n/**\n * Transpose a note by an interval.\n *\n * @param {string} note - the note or note name\n * @param {string} interval - the interval or interval name\n * @return {string} the transposed note name or empty string if not valid notes\n * @example\n * import { transpose } from \"@tonaljs/core\"\n * transpose(\"d3\", \"3M\") // => \"F#3\"\n * transpose(\"D\", \"3M\") // => \"F#\"\n * [\"C\", \"D\", \"E\", \"F\", \"G\"].map(pc => transpose(pc, \"M3)) // => [\"E\", \"F#\", \"G#\", \"A\", \"B\"]\n */\nexport function transpose(\n noteName: NoteLiteral,\n intervalName: IntervalLiteral | [number, number],\n): NoteName {\n const note = asNote(noteName);\n const intervalCoord = Array.isArray(intervalName)\n ? intervalName\n : asInterval(intervalName).coord;\n if (note.empty || !intervalCoord || intervalCoord.length < 2) {\n return \"\";\n }\n const noteCoord = note.coord;\n const tr: PitchCoordinates =\n noteCoord.length === 1\n ? [noteCoord[0] + intervalCoord[0]]\n : [noteCoord[0] + intervalCoord[0], noteCoord[1] + intervalCoord[1]];\n return coordToNote(tr).name;\n}\n\n// Private\nexport function tonicIntervalsTransposer(\n intervals: string[],\n tonic: string | undefined | null,\n) {\n const len = intervals.length;\n return (normalized: number) => {\n if (!tonic) return \"\";\n const index =\n normalized < 0 ? (len - (-normalized % len)) % len : normalized % len;\n const octaves = Math.floor(normalized / len);\n const root = transpose(tonic, [0, octaves]);\n return transpose(root, intervals[index]);\n };\n}\n\n/**\n * Find the interval distance between two notes or coord classes.\n *\n * To find distance between coord classes, both notes must be coord classes and\n * the interval is always ascending\n *\n * @param {Note|string} from - the note or note name to calculate distance from\n * @param {Note|string} to - the note or note name to calculate distance to\n * @return {string} the interval name or empty string if not valid notes\n *\n */\nexport function distance(\n fromNote: NoteLiteral,\n toNote: NoteLiteral,\n): IntervalName {\n const from = asNote(fromNote);\n const to = asNote(toNote);\n if (from.empty || to.empty) {\n return \"\";\n }\n\n const fcoord = from.coord;\n const tcoord = to.coord;\n const fifths = tcoord[0] - fcoord[0];\n const octs =\n fcoord.length === 2 && tcoord.length === 2\n ? tcoord[1] - fcoord[1]\n : -Math.floor((fifths * 7) / 12);\n\n // If it's unison, not pitch class, and in the same octave\n // it can be descending interval (see #243 & #428)\n const forceDescending =\n to.height === from.height &&\n to.midi !== null &&\n from.oct === to.oct &&\n from.step > to.step;\n return coordToInterval([fifths, octs], forceDescending).name;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n// ascending range\nfunction ascR(b: number, n: number) {\n const a = [];\n // tslint:disable-next-line:curly\n for (; n--; a[n] = n + b);\n return a;\n}\n// descending range\nfunction descR(b: number, n: number) {\n const a = [];\n // tslint:disable-next-line:curly\n for (; n--; a[n] = b - n);\n return a;\n}\n\n/**\n * Creates a numeric range\n *\n * @param {number} from\n * @param {number} to\n * @return {Array}\n *\n * @example\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\n * range(2, -2) // => [2, 1, 0, -1, -2]\n */\nexport function range(from: number, to: number): number[] {\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\n}\n\n/**\n * Rotates a list a number of times. It's completely agnostic about the\n * contents of the list.\n *\n * @param {Integer} times - the number of rotations\n * @param {Array} collection\n * @return {Array} the rotated collection\n *\n * @example\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\n */\nexport function rotate(times: number, arr: T[]): T[] {\n const len = arr.length;\n const n = ((times % len) + len) % len;\n return arr.slice(n, len).concat(arr.slice(0, n));\n}\n\n/**\n * Return a copy of the collection with the null values removed\n * @function\n * @param {Array} collection\n * @return {Array}\n *\n * @example\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\n */\nexport function compact(arr: any[]): any[] {\n return arr.filter((n) => n === 0 || n);\n}\n\n/**\n * Randomizes the order of the specified collection in-place, using the Fisher–Yates shuffle.\n *\n * @function\n * @param {Array} collection\n * @return {Array} the collection shuffled\n *\n * @example\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\n */\nexport function shuffle(arr: any[], rnd = Math.random): any[] {\n let i: number;\n let t: any;\n let m: number = arr.length;\n while (m) {\n i = Math.floor(rnd() * m--);\n t = arr[m];\n arr[m] = arr[i];\n arr[i] = t;\n }\n return arr;\n}\n\n/**\n * Get all permutations of an collection\n *\n * @param {Array} collection - the collection\n * @return {Array} an collection with all the permutations\n * @example\n * permutations([\"a\", \"b\", \"c\"])) // =>\n * [\n * [\"a\", \"b\", \"c\"],\n * [\"b\", \"a\", \"c\"],\n * [\"b\", \"c\", \"a\"],\n * [\"a\", \"c\", \"b\"],\n * [\"c\", \"a\", \"b\"],\n * [\"c\", \"b\", \"a\"]\n * ]\n */\nexport function permutations(arr: any[]): any[] {\n if (arr.length === 0) {\n return [[]];\n }\n return permutations(arr.slice(1)).reduce((acc, perm) => {\n return acc.concat(\n arr.map((e, pos) => {\n const newPerm = perm.slice();\n newPerm.splice(pos, 0, arr[0]);\n return newPerm;\n }),\n );\n }, []);\n}\n\n/** @deprecated */\nexport default {\n compact,\n permutations,\n range,\n rotate,\n shuffle,\n};\n", "import { compact, range, rotate } from \"@tonaljs/collection\";\nimport { NotFound } from \"@tonaljs/pitch\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { Interval, IntervalName, interval } from \"@tonaljs/pitch-interval\";\nimport { Note, NoteName, note } from \"@tonaljs/pitch-note\";\n\n/**\n * The properties of a pitch class set\n * @param {number} num - a number between 1 and 4095 (both included) that\n * uniquely identifies the set. It's the decimal number of the chroma.\n * @param {string} chroma - a string representation of the set: a 12-char string\n * with either \"1\" or \"0\" as characters, representing a pitch class or not\n * for the given position in the octave. For example, a \"1\" at index 0 means 'C',\n * a \"1\" at index 2 means 'D', and so on...\n * @param {string} normalized - the chroma but shifted to the first 1\n * @param {number} length - the number of notes of the pitch class set\n * @param {IntervalName[]} intervals - the intervals of the pitch class set\n * *starting from C*\n */\nexport interface Pcset {\n readonly name: string;\n readonly empty: boolean;\n readonly setNum: number;\n readonly chroma: PcsetChroma;\n readonly normalized: PcsetChroma;\n readonly intervals: IntervalName[];\n}\n\nexport const EmptyPcset: Pcset = {\n empty: true,\n name: \"\",\n setNum: 0,\n chroma: \"000000000000\",\n normalized: \"000000000000\",\n intervals: [],\n};\n\nexport type PcsetChroma = string;\nexport type PcsetNum = number;\n\n// UTILITIES\nconst setNumToChroma = (num: number): string =>\n Number(num).toString(2).padStart(12, \"0\");\nconst chromaToNumber = (chroma: string): number => parseInt(chroma, 2);\nconst REGEX = /^[01]{12}$/;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isChroma(set: any): set is PcsetChroma {\n return REGEX.test(set);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPcsetNum = (set: any): set is PcsetNum =>\n typeof set === \"number\" && set >= 0 && set <= 4095;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPcset = (set: any): set is Pcset => set && isChroma(set.chroma);\n\nconst cache: { [key in string]: Pcset } = { [EmptyPcset.chroma]: EmptyPcset };\n\n/**\n * A definition of a pitch class set. It could be:\n * - The pitch class set chroma (a 12-length string with only 1s or 0s)\n * - The pitch class set number (an integer between 1 and 4095)\n * - An array of note names\n * - An array of interval names\n */\nexport type Set =\n | Partial\n | PcsetChroma\n | PcsetNum\n | NoteName[]\n | IntervalName[];\n\n/**\n * Get the pitch class set of a collection of notes or set number or chroma\n */\nexport function get(src: Set): Pcset {\n const chroma: PcsetChroma = isChroma(src)\n ? src\n : isPcsetNum(src)\n ? setNumToChroma(src)\n : Array.isArray(src)\n ? listToChroma(src)\n : isPcset(src)\n ? src.chroma\n : EmptyPcset.chroma;\n\n return (cache[chroma] = cache[chroma] || chromaToPcset(chroma));\n}\n\n/**\n * @use Pcset.get\n * @deprecated\n */\nexport const pcset = get;\n\n/**\n * Get pitch class set chroma\n * @function\n * @example\n * Pcset.chroma([\"c\", \"d\", \"e\"]); //=> \"101010000000\"\n */\nexport const chroma = (set: Set) => get(set).chroma;\n\n/**\n * Get intervals (from C) of a set\n * @function\n * @example\n * Pcset.intervals([\"c\", \"d\", \"e\"]); //=>\n */\nexport const intervals = (set: Set) => get(set).intervals;\n\n/**\n * Get pitch class set number\n * @function\n * @example\n * Pcset.num([\"c\", \"d\", \"e\"]); //=> 2192\n */\nexport const num = (set: Set) => get(set).setNum;\n\nconst IVLS = [\n \"1P\",\n \"2m\",\n \"2M\",\n \"3m\",\n \"3M\",\n \"4P\",\n \"5d\",\n \"5P\",\n \"6m\",\n \"6M\",\n \"7m\",\n \"7M\",\n];\n\n/**\n * Get the intervals of a pcset *starting from C*\n * @private\n * @param {Set} set - the pitch class set\n * @return {IntervalName[]} an array of interval names or an empty array\n * if not a valid pitch class set\n */\nfunction chromaToIntervals(chroma: PcsetChroma): IntervalName[] {\n const intervals = [];\n for (let i = 0; i < 12; i++) {\n // tslint:disable-next-line:curly\n if (chroma.charAt(i) === \"1\") intervals.push(IVLS[i]);\n }\n return intervals;\n}\n\nexport function notes(set: Set): NoteName[] {\n return get(set).intervals.map((ivl) => transpose(\"C\", ivl));\n}\n\n/**\n * Get a list of all possible pitch class sets (all possible chromas) *having\n * C as root*. There are 2048 different chromas. If you want them with another\n * note you have to transpose it\n *\n * @see http://allthescales.org/\n * @return {Array} an array of possible chromas from '10000000000' to '11111111111'\n */\nexport function chromas(): PcsetChroma[] {\n return range(2048, 4095).map(setNumToChroma);\n}\n\n/**\n * Given a a list of notes or a pcset chroma, produce the rotations\n * of the chroma discarding the ones that starts with \"0\"\n *\n * This is used, for example, to get all the modes of a scale.\n *\n * @param {Array|string} set - the list of notes or pitchChr of the set\n * @param {boolean} normalize - (Optional, true by default) remove all\n * the rotations that starts with \"0\"\n * @return {Array} an array with all the modes of the chroma\n *\n * @example\n * Pcset.modes([\"C\", \"D\", \"E\"]).map(Pcset.intervals)\n */\nexport function modes(set: Set, normalize = true): PcsetChroma[] {\n const pcs = get(set);\n\n const binary = pcs.chroma.split(\"\");\n return compact(\n binary.map((_, i) => {\n const r = rotate(i, binary);\n return normalize && r[0] === \"0\" ? null : r.join(\"\");\n }),\n );\n}\n\n/**\n * Test if two pitch class sets are equal\n *\n * @param {Array|string} set1 - one of the pitch class sets\n * @param {Array|string} set2 - the other pitch class set\n * @return {boolean} true if they are equal\n * @example\n * Pcset.isEqual([\"c2\", \"d3\"], [\"c5\", \"d2\"]) // => true\n */\nexport function isEqual(s1: Set, s2: Set) {\n return get(s1).setNum === get(s2).setNum;\n}\n\n/**\n * Create a function that test if a collection of notes is a\n * subset of a given set\n *\n * The function is curried.\n *\n * @param {PcsetChroma|NoteName[]} set - the superset to test against (chroma or\n * list of notes)\n * @return{function(PcsetChroma|NoteNames[]): boolean} a function accepting a set\n * to test against (chroma or list of notes)\n * @example\n * const inCMajor = Pcset.isSubsetOf([\"C\", \"E\", \"G\"])\n * inCMajor([\"e6\", \"c4\"]) // => true\n * inCMajor([\"e6\", \"c4\", \"d3\"]) // => false\n */\nexport function isSubsetOf(set: Set) {\n const s = get(set).setNum;\n\n return (notes: Set | Pcset) => {\n const o = get(notes).setNum;\n // tslint:disable-next-line: no-bitwise\n return s && s !== o && (o & s) === o;\n };\n}\n\n/**\n * Create a function that test if a collection of notes is a\n * superset of a given set (it contains all notes and at least one more)\n *\n * @param {Set} set - an array of notes or a chroma set string to test against\n * @return {(subset: Set): boolean} a function that given a set\n * returns true if is a subset of the first one\n * @example\n * const extendsCMajor = Pcset.isSupersetOf([\"C\", \"E\", \"G\"])\n * extendsCMajor([\"e6\", \"a\", \"c4\", \"g2\"]) // => true\n * extendsCMajor([\"c6\", \"e4\", \"g3\"]) // => false\n */\nexport function isSupersetOf(set: Set) {\n const s = get(set).setNum;\n return (notes: Set) => {\n const o = get(notes).setNum;\n // tslint:disable-next-line: no-bitwise\n return s && s !== o && (o | s) === o;\n };\n}\n\n/**\n * Test if a given pitch class set includes a note\n *\n * @param {Array} set - the base set to test against\n * @param {string} note - the note to test\n * @return {boolean} true if the note is included in the pcset\n *\n * Can be partially applied\n *\n * @example\n * const isNoteInCMajor = isNoteIncludedIn(['C', 'E', 'G'])\n * isNoteInCMajor('C4') // => true\n * isNoteInCMajor('C#4') // => false\n */\nexport function isNoteIncludedIn(set: Set) {\n const s = get(set);\n\n return (noteName: NoteName): boolean => {\n const n = note(noteName);\n return s && !n.empty && s.chroma.charAt(n.chroma) === \"1\";\n };\n}\n\n/** @deprecated use: isNoteIncludedIn */\nexport const includes = isNoteIncludedIn;\n\n/**\n * Filter a list with a pitch class set\n *\n * @param {Array|string} set - the pitch class set notes\n * @param {Array|string} notes - the note list to be filtered\n * @return {Array} the filtered notes\n *\n * @example\n * Pcset.filter([\"C\", \"D\", \"E\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"d2\", \"c3\", \"d3\" ])\n * Pcset.filter([\"C2\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"c3\" ])\n */\nexport function filter(set: Set) {\n const isIncluded = isNoteIncludedIn(set);\n return (notes: NoteName[]) => {\n return notes.filter(isIncluded);\n };\n}\n\n/** @deprecated */\nexport default {\n get,\n chroma,\n num,\n intervals,\n chromas,\n isSupersetOf,\n isSubsetOf,\n isNoteIncludedIn,\n isEqual,\n filter,\n modes,\n notes,\n // deprecated\n pcset,\n};\n\n//// PRIVATE ////\n\nfunction chromaRotations(chroma: string): string[] {\n const binary = chroma.split(\"\");\n return binary.map((_, i) => rotate(i, binary).join(\"\"));\n}\n\nfunction chromaToPcset(chroma: PcsetChroma): Pcset {\n const setNum = chromaToNumber(chroma);\n const normalizedNum = chromaRotations(chroma)\n .map(chromaToNumber)\n .filter((n) => n >= 2048)\n .sort()[0];\n const normalized = setNumToChroma(normalizedNum);\n\n const intervals = chromaToIntervals(chroma);\n\n return {\n empty: false,\n name: \"\",\n setNum,\n chroma,\n normalized,\n intervals,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction listToChroma(set: any[]): PcsetChroma {\n if (set.length === 0) {\n return EmptyPcset.chroma;\n }\n\n let pitch: Note | Interval | NotFound;\n const binary = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < set.length; i++) {\n pitch = note(set[i]);\n // tslint:disable-next-line: curly\n if (pitch.empty) pitch = interval(set[i]);\n // tslint:disable-next-line: curly\n if (!pitch.empty) binary[pitch.chroma] = 1;\n }\n return binary.join(\"\");\n}\n", "import {\n EmptyPcset,\n get as pcset,\n Pcset,\n PcsetChroma,\n PcsetNum,\n} from \"@tonaljs/pcset\";\nimport data from \"./data\";\n\nexport type ChordQuality =\n | \"Major\"\n | \"Minor\"\n | \"Augmented\"\n | \"Diminished\"\n | \"Unknown\";\n\nexport interface ChordType extends Pcset {\n name: string;\n quality: ChordQuality;\n aliases: string[];\n}\nconst NoChordType: ChordType = {\n ...EmptyPcset,\n name: \"\",\n quality: \"Unknown\",\n intervals: [],\n aliases: [],\n};\n\ntype ChordTypeName = string | PcsetChroma | PcsetNum;\n\nlet dictionary: ChordType[] = [];\nlet index: Record = {};\n\n/**\n * Given a chord name or chroma, return the chord properties\n * @param {string} source - chord name or pitch class set chroma\n * @example\n * import { get } from 'tonaljs/chord-type'\n * get('major') // => { name: 'major', ... }\n */\nexport function get(type: ChordTypeName): ChordType {\n return index[type] || NoChordType;\n}\n\n/** @deprecated */\nexport const chordType = get;\n\n/**\n * Get all chord (long) names\n */\nexport function names() {\n return dictionary.map((chord) => chord.name).filter((x) => x);\n}\n\n/**\n * Get all chord symbols\n */\nexport function symbols() {\n return dictionary.map((chord) => chord.aliases[0]).filter((x) => x);\n}\n\n/**\n * Keys used to reference chord types\n */\nexport function keys() {\n return Object.keys(index);\n}\n\n/**\n * Return a list of all chord types\n */\nexport function all(): ChordType[] {\n return dictionary.slice();\n}\n\n/** @deprecated */\nexport const entries = all;\n\n/**\n * Clear the dictionary\n */\nexport function removeAll() {\n dictionary = [];\n index = {};\n}\n\n/**\n * Add a chord to the dictionary.\n * @param intervals\n * @param aliases\n * @param [fullName]\n */\nexport function add(intervals: string[], aliases: string[], fullName?: string) {\n const quality = getQuality(intervals);\n const chord = {\n ...pcset(intervals),\n name: fullName || \"\",\n quality,\n intervals,\n aliases,\n };\n dictionary.push(chord);\n if (chord.name) {\n index[chord.name] = chord;\n }\n index[chord.setNum] = chord;\n index[chord.chroma] = chord;\n chord.aliases.forEach((alias) => addAlias(chord, alias));\n}\n\nexport function addAlias(chord: ChordType, alias: string) {\n index[alias] = chord;\n}\n\nfunction getQuality(intervals: string[]): ChordQuality {\n const has = (interval: string) => intervals.indexOf(interval) !== -1;\n return has(\"5A\")\n ? \"Augmented\"\n : has(\"3M\")\n ? \"Major\"\n : has(\"5d\")\n ? \"Diminished\"\n : has(\"3m\")\n ? \"Minor\"\n : \"Unknown\";\n}\n\ndata.forEach(([ivls, fullName, names]: string[]) =>\n add(ivls.split(\" \"), names.split(\" \"), fullName),\n);\ndictionary.sort((a, b) => a.setNum - b.setNum);\n\n/** @deprecated */\nexport default {\n names,\n symbols,\n get,\n all,\n add,\n removeAll,\n keys,\n // deprecated\n entries,\n chordType,\n};\n", "/**\n * @private\n * Chord List\n * Source: https://en.wikibooks.org/wiki/Music_Theory/Complete_List_of_Chord_Patterns\n * Format: [\"intervals\", \"full name\", \"abrv1 abrv2\"]\n */\nconst CHORDS: string[][] = [\n // ==Major==\n [\"1P 3M 5P\", \"major\", \"M ^ maj\"],\n [\"1P 3M 5P 7M\", \"major seventh\", \"maj7 Δ ma7 M7 Maj7 ^7\"],\n [\"1P 3M 5P 7M 9M\", \"major ninth\", \"maj9 Δ9 ^9\"],\n [\"1P 3M 5P 7M 9M 13M\", \"major thirteenth\", \"maj13 Maj13 ^13\"],\n [\"1P 3M 5P 6M\", \"sixth\", \"6 add6 add13 M6\"],\n [\"1P 3M 5P 6M 9M\", \"sixth added ninth\", \"6add9 6/9 69 M69\"],\n [\"1P 3M 6m 7M\", \"major seventh flat sixth\", \"M7b6 ^7b6\"],\n [\n \"1P 3M 5P 7M 11A\",\n \"major seventh sharp eleventh\",\n \"maj#4 Δ#4 Δ#11 M7#11 ^7#11 maj7#11\",\n ],\n // ==Minor==\n // '''Normal'''\n [\"1P 3m 5P\", \"minor\", \"m min -\"],\n [\"1P 3m 5P 7m\", \"minor seventh\", \"m7 min7 mi7 -7\"],\n [\n \"1P 3m 5P 7M\",\n \"minor/major seventh\",\n \"m/ma7 m/maj7 mM7 mMaj7 m/M7 -Δ7 mΔ -^7 -maj7\",\n ],\n [\"1P 3m 5P 6M\", \"minor sixth\", \"m6 -6\"],\n [\"1P 3m 5P 7m 9M\", \"minor ninth\", \"m9 -9\"],\n [\"1P 3m 5P 7M 9M\", \"minor/major ninth\", \"mM9 mMaj9 -^9\"],\n [\"1P 3m 5P 7m 9M 11P\", \"minor eleventh\", \"m11 -11\"],\n [\"1P 3m 5P 7m 9M 13M\", \"minor thirteenth\", \"m13 -13\"],\n // '''Diminished'''\n [\"1P 3m 5d\", \"diminished\", \"dim ° o\"],\n [\"1P 3m 5d 7d\", \"diminished seventh\", \"dim7 °7 o7\"],\n [\"1P 3m 5d 7m\", \"half-diminished\", \"m7b5 ø -7b5 h7 h\"],\n // ==Dominant/Seventh==\n // '''Normal'''\n [\"1P 3M 5P 7m\", \"dominant seventh\", \"7 dom\"],\n [\"1P 3M 5P 7m 9M\", \"dominant ninth\", \"9\"],\n [\"1P 3M 5P 7m 9M 13M\", \"dominant thirteenth\", \"13\"],\n [\"1P 3M 5P 7m 11A\", \"lydian dominant seventh\", \"7#11 7#4\"],\n // '''Altered'''\n [\"1P 3M 5P 7m 9m\", \"dominant flat ninth\", \"7b9\"],\n [\"1P 3M 5P 7m 9A\", \"dominant sharp ninth\", \"7#9\"],\n [\"1P 3M 7m 9m\", \"altered\", \"alt7\"],\n // '''Suspended'''\n [\"1P 4P 5P\", \"suspended fourth\", \"sus4 sus\"],\n [\"1P 2M 5P\", \"suspended second\", \"sus2\"],\n [\"1P 4P 5P 7m\", \"suspended fourth seventh\", \"7sus4 7sus\"],\n [\"1P 5P 7m 9M 11P\", \"eleventh\", \"11\"],\n [\n \"1P 4P 5P 7m 9m\",\n \"suspended fourth flat ninth\",\n \"b9sus phryg 7b9sus 7b9sus4\",\n ],\n // ==Other==\n [\"1P 5P\", \"fifth\", \"5\"],\n [\"1P 3M 5A\", \"augmented\", \"aug + +5 ^#5\"],\n [\"1P 3m 5A\", \"minor augmented\", \"m#5 -#5 m+\"],\n [\"1P 3M 5A 7M\", \"augmented seventh\", \"maj7#5 maj7+5 +maj7 ^7#5\"],\n [\n \"1P 3M 5P 7M 9M 11A\",\n \"major sharp eleventh (lydian)\",\n \"maj9#11 Δ9#11 ^9#11\",\n ],\n // ==Legacy==\n [\"1P 2M 4P 5P\", \"\", \"sus24 sus4add9\"],\n [\"1P 3M 5A 7M 9M\", \"\", \"maj9#5 Maj9#5\"],\n [\"1P 3M 5A 7m\", \"\", \"7#5 +7 7+ 7aug aug7\"],\n [\"1P 3M 5A 7m 9A\", \"\", \"7#5#9 7#9#5 7alt\"],\n [\"1P 3M 5A 7m 9M\", \"\", \"9#5 9+\"],\n [\"1P 3M 5A 7m 9M 11A\", \"\", \"9#5#11\"],\n [\"1P 3M 5A 7m 9m\", \"\", \"7#5b9 7b9#5\"],\n [\"1P 3M 5A 7m 9m 11A\", \"\", \"7#5b9#11\"],\n [\"1P 3M 5A 9A\", \"\", \"+add#9\"],\n [\"1P 3M 5A 9M\", \"\", \"M#5add9 +add9\"],\n [\"1P 3M 5P 6M 11A\", \"\", \"M6#11 M6b5 6#11 6b5\"],\n [\"1P 3M 5P 6M 7M 9M\", \"\", \"M7add13\"],\n [\"1P 3M 5P 6M 9M 11A\", \"\", \"69#11\"],\n [\"1P 3m 5P 6M 9M\", \"\", \"m69 -69\"],\n [\"1P 3M 5P 6m 7m\", \"\", \"7b6\"],\n [\"1P 3M 5P 7M 9A 11A\", \"\", \"maj7#9#11\"],\n [\"1P 3M 5P 7M 9M 11A 13M\", \"\", \"M13#11 maj13#11 M13+4 M13#4\"],\n [\"1P 3M 5P 7M 9m\", \"\", \"M7b9\"],\n [\"1P 3M 5P 7m 11A 13m\", \"\", \"7#11b13 7b5b13\"],\n [\"1P 3M 5P 7m 13M\", \"\", \"7add6 67 7add13\"],\n [\"1P 3M 5P 7m 9A 11A\", \"\", \"7#9#11 7b5#9 7#9b5\"],\n [\"1P 3M 5P 7m 9A 11A 13M\", \"\", \"13#9#11\"],\n [\"1P 3M 5P 7m 9A 11A 13m\", \"\", \"7#9#11b13\"],\n [\"1P 3M 5P 7m 9A 13M\", \"\", \"13#9\"],\n [\"1P 3M 5P 7m 9A 13m\", \"\", \"7#9b13\"],\n [\"1P 3M 5P 7m 9M 11A\", \"\", \"9#11 9+4 9#4\"],\n [\"1P 3M 5P 7m 9M 11A 13M\", \"\", \"13#11 13+4 13#4\"],\n [\"1P 3M 5P 7m 9M 11A 13m\", \"\", \"9#11b13 9b5b13\"],\n [\"1P 3M 5P 7m 9m 11A\", \"\", \"7b9#11 7b5b9 7b9b5\"],\n [\"1P 3M 5P 7m 9m 11A 13M\", \"\", \"13b9#11\"],\n [\"1P 3M 5P 7m 9m 11A 13m\", \"\", \"7b9b13#11 7b9#11b13 7b5b9b13\"],\n [\"1P 3M 5P 7m 9m 13M\", \"\", \"13b9\"],\n [\"1P 3M 5P 7m 9m 13m\", \"\", \"7b9b13\"],\n [\"1P 3M 5P 7m 9m 9A\", \"\", \"7b9#9\"],\n [\"1P 3M 5P 9M\", \"\", \"Madd9 2 add9 add2\"],\n [\"1P 3M 5P 9m\", \"\", \"Maddb9\"],\n [\"1P 3M 5d\", \"\", \"Mb5\"],\n [\"1P 3M 5d 6M 7m 9M\", \"\", \"13b5\"],\n [\"1P 3M 5d 7M\", \"\", \"M7b5\"],\n [\"1P 3M 5d 7M 9M\", \"\", \"M9b5\"],\n [\"1P 3M 5d 7m\", \"\", \"7b5\"],\n [\"1P 3M 5d 7m 9M\", \"\", \"9b5\"],\n [\"1P 3M 7m\", \"\", \"7no5\"],\n [\"1P 3M 7m 13m\", \"\", \"7b13\"],\n [\"1P 3M 7m 9M\", \"\", \"9no5\"],\n [\"1P 3M 7m 9M 13M\", \"\", \"13no5\"],\n [\"1P 3M 7m 9M 13m\", \"\", \"9b13\"],\n [\"1P 3m 4P 5P\", \"\", \"madd4\"],\n [\"1P 3m 5P 6m 7M\", \"\", \"mMaj7b6\"],\n [\"1P 3m 5P 6m 7M 9M\", \"\", \"mMaj9b6\"],\n [\"1P 3m 5P 7m 11P\", \"\", \"m7add11 m7add4\"],\n [\"1P 3m 5P 9M\", \"\", \"madd9\"],\n [\"1P 3m 5d 6M 7M\", \"\", \"o7M7\"],\n [\"1P 3m 5d 7M\", \"\", \"oM7\"],\n [\"1P 3m 6m 7M\", \"\", \"mb6M7\"],\n [\"1P 3m 6m 7m\", \"\", \"m7#5\"],\n [\"1P 3m 6m 7m 9M\", \"\", \"m9#5\"],\n [\"1P 3m 5A 7m 9M 11P\", \"\", \"m11A\"],\n [\"1P 3m 6m 9m\", \"\", \"mb6b9\"],\n [\"1P 2M 3m 5d 7m\", \"\", \"m9b5\"],\n [\"1P 4P 5A 7M\", \"\", \"M7#5sus4\"],\n [\"1P 4P 5A 7M 9M\", \"\", \"M9#5sus4\"],\n [\"1P 4P 5A 7m\", \"\", \"7#5sus4\"],\n [\"1P 4P 5P 7M\", \"\", \"M7sus4\"],\n [\"1P 4P 5P 7M 9M\", \"\", \"M9sus4\"],\n [\"1P 4P 5P 7m 9M\", \"\", \"9sus4 9sus\"],\n [\"1P 4P 5P 7m 9M 13M\", \"\", \"13sus4 13sus\"],\n [\"1P 4P 5P 7m 9m 13m\", \"\", \"7sus4b9b13 7b9b13sus4\"],\n [\"1P 4P 7m 10m\", \"\", \"4 quartal\"],\n [\"1P 5P 7m 9m 11P\", \"\", \"11b9\"],\n];\n\nexport default CHORDS;\n", "import { all, ChordType } from \"@tonaljs/chord-type\";\nimport { modes } from \"@tonaljs/pcset\";\nimport { note } from \"@tonaljs/pitch-note\";\n\ninterface FoundChord {\n readonly weight: number;\n readonly name: string;\n}\n\nconst namedSet = (notes: string[]) => {\n const pcToName = notes.reduce>((record, n) => {\n const chroma = note(n).chroma;\n if (chroma !== undefined) {\n record[chroma] = record[chroma] || note(n).name;\n }\n return record;\n }, {});\n\n return (chroma: number) => pcToName[chroma];\n};\n\ntype DetectOptions = {\n assumePerfectFifth: boolean;\n};\nexport function detect(\n source: string[],\n options: Partial = {},\n): string[] {\n const notes = source.map((n) => note(n).pc).filter((x) => x);\n if (note.length === 0) {\n return [];\n }\n\n const found: FoundChord[] = findMatches(notes, 1, options);\n\n return found\n .filter((chord) => chord.weight)\n .sort((a, b) => b.weight - a.weight)\n .map((chord) => chord.name);\n}\n\n/* tslint:disable:no-bitwise */\nconst BITMASK = {\n // 3m 000100000000\n // 3M 000010000000\n anyThirds: 384,\n // 5P 000000010000\n perfectFifth: 16,\n // 5d 000000100000\n // 5A 000000001000\n nonPerfectFifths: 40,\n anySeventh: 3,\n};\n\nconst testChromaNumber = (bitmask: number) => (chromaNumber: number) =>\n Boolean(chromaNumber & bitmask);\nconst hasAnyThird = testChromaNumber(BITMASK.anyThirds);\nconst hasPerfectFifth = testChromaNumber(BITMASK.perfectFifth);\nconst hasAnySeventh = testChromaNumber(BITMASK.anySeventh);\nconst hasNonPerfectFifth = testChromaNumber(BITMASK.nonPerfectFifths);\n\nfunction hasAnyThirdAndPerfectFifthAndAnySeventh(chordType: ChordType) {\n const chromaNumber = parseInt(chordType.chroma, 2);\n return (\n hasAnyThird(chromaNumber) &&\n hasPerfectFifth(chromaNumber) &&\n hasAnySeventh(chromaNumber)\n );\n}\n\nfunction withPerfectFifth(chroma: string): string {\n const chromaNumber = parseInt(chroma, 2);\n return hasNonPerfectFifth(chromaNumber)\n ? chroma\n : (chromaNumber | 16).toString(2);\n}\n\n/* tslint:enable:no-bitwise */\n\ntype FindMatchesOptions = {\n assumePerfectFifth: boolean;\n};\nfunction findMatches(\n notes: string[],\n weight: number,\n options: Partial,\n): FoundChord[] {\n const tonic = notes[0];\n const tonicChroma = note(tonic).chroma;\n const noteName = namedSet(notes);\n // we need to test all chromas to get the correct baseNote\n const allModes = modes(notes, false);\n\n const found: FoundChord[] = [];\n allModes.forEach((mode, index) => {\n const modeWithPerfectFifth =\n options.assumePerfectFifth && withPerfectFifth(mode);\n // some chords could have the same chroma but different interval spelling\n const chordTypes = all().filter((chordType) => {\n if (\n options.assumePerfectFifth &&\n hasAnyThirdAndPerfectFifthAndAnySeventh(chordType)\n ) {\n return chordType.chroma === modeWithPerfectFifth;\n }\n return chordType.chroma === mode;\n });\n\n chordTypes.forEach((chordType) => {\n const chordName = chordType.aliases[0];\n const baseNote = noteName(index);\n const isInversion = index !== tonicChroma;\n if (isInversion) {\n found.push({\n weight: 0.5 * weight,\n name: `${baseNote}${chordName}/${tonic}`,\n });\n } else {\n found.push({ weight: 1 * weight, name: `${baseNote}${chordName}` });\n }\n });\n });\n\n return found;\n}\n\n/** @deprecated */\nexport default { detect };\n", "// source: https://en.wikipedia.org/wiki/Note_value\nconst DATA: [number, string, string[]][] = [\n [\n 0.125,\n \"dl\",\n [\"large\", \"duplex longa\", \"maxima\", \"octuple\", \"octuple whole\"],\n ],\n [0.25, \"l\", [\"long\", \"longa\"]],\n [0.5, \"d\", [\"double whole\", \"double\", \"breve\"]],\n [1, \"w\", [\"whole\", \"semibreve\"]],\n [2, \"h\", [\"half\", \"minim\"]],\n [4, \"q\", [\"quarter\", \"crotchet\"]],\n [8, \"e\", [\"eighth\", \"quaver\"]],\n [16, \"s\", [\"sixteenth\", \"semiquaver\"]],\n [32, \"t\", [\"thirty-second\", \"demisemiquaver\"]],\n [64, \"sf\", [\"sixty-fourth\", \"hemidemisemiquaver\"]],\n [128, \"h\", [\"hundred twenty-eighth\"]],\n [256, \"th\", [\"two hundred fifty-sixth\"]],\n];\n\nexport default DATA;\n", "import DATA from \"./data\";\n\ntype Fraction = [number, number];\n\nconst VALUES: DurationValue[] = [];\n\nDATA.forEach(([denominator, shorthand, names]) =>\n add(denominator, shorthand, names),\n);\n\nexport interface DurationValue {\n empty: boolean;\n value: number;\n name: string;\n fraction: Fraction;\n shorthand: string;\n dots: string;\n names: string[];\n}\n\nconst NoDuration: DurationValue = {\n empty: true,\n name: \"\",\n value: 0,\n fraction: [0, 0],\n shorthand: \"\",\n dots: \"\",\n names: [],\n};\n\nexport function names(): string[] {\n return VALUES.reduce((names, duration) => {\n duration.names.forEach((name) => names.push(name));\n return names;\n }, [] as string[]);\n}\n\nexport function shorthands(): string[] {\n return VALUES.map((dur) => dur.shorthand);\n}\n\nconst REGEX = /^([^.]+)(\\.*)$/;\n\nexport function get(name: string): DurationValue {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, simple, dots] = REGEX.exec(name) || [];\n const base = VALUES.find(\n (dur) => dur.shorthand === simple || dur.names.includes(simple),\n );\n if (!base) {\n return NoDuration;\n }\n\n const fraction = calcDots(base.fraction, dots.length);\n const value = fraction[0] / fraction[1];\n\n return { ...base, name, dots, value, fraction };\n}\n\nexport const value = (name: string) => get(name).value;\nexport const fraction = (name: string) => get(name).fraction;\n\n/** @deprecated */\nexport default { names, shorthands, get, value, fraction };\n\n//// PRIVATE ////\n\nfunction add(denominator: number, shorthand: string, names: string[]) {\n VALUES.push({\n empty: false,\n dots: \"\",\n name: \"\",\n value: 1 / denominator,\n fraction: denominator < 1 ? [1 / denominator, 1] : [1, denominator],\n shorthand,\n names,\n });\n}\n\nfunction calcDots(fraction: Fraction, dots: number): Fraction {\n const pow = Math.pow(2, dots);\n\n let numerator = fraction[0] * pow;\n let denominator = fraction[1] * pow;\n const base = numerator;\n\n // add fractions\n for (let i = 0; i < dots; i++) {\n numerator += base / Math.pow(2, i + 1);\n }\n\n // simplify\n while (numerator % 2 === 0 && denominator % 2 === 0) {\n numerator /= 2;\n denominator /= 2;\n }\n return [numerator, denominator];\n}\n", "import { NoteName, note as props } from \"@tonaljs/pitch-note\";\n\ntype Midi = number;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isMidi(arg: any): arg is Midi {\n return +arg >= 0 && +arg <= 127;\n}\n\n/**\n * Get the note midi number (a number between 0 and 127)\n *\n * It returns undefined if not valid note name\n *\n * @function\n * @param {string|number} note - the note name or midi number\n * @return {Integer} the midi number or undefined if not valid note\n * @example\n * import { toMidi } from '@tonaljs/midi'\n * toMidi(\"C4\") // => 60\n * toMidi(60) // => 60\n * toMidi('60') // => 60\n */\nexport function toMidi(note: NoteName | number): number | null {\n if (isMidi(note)) {\n return +note;\n }\n const n = props(note);\n return n.empty ? null : n.midi;\n}\n\n/**\n * Get the frequency in hertz from midi number\n *\n * @param {number} midi - the note midi number\n * @param {number} [tuning = 440] - A4 tuning frequency in Hz (440 by default)\n * @return {number} the frequency or null if not valid note midi\n * @example\n * import { midiToFreq} from '@tonaljs/midi'\n * midiToFreq(69) // => 440\n */\nexport function midiToFreq(midi: number, tuning = 440): number {\n return Math.pow(2, (midi - 69) / 12) * tuning;\n}\n\nconst L2 = Math.log(2);\nconst L440 = Math.log(440);\n\n/**\n * Get the midi number from a frequency in hertz. The midi number can\n * contain decimals (with two digits precision)\n *\n * @param {number} frequency\n * @return {number}\n * @example\n * import { freqToMidi} from '@tonaljs/midi'\n * freqToMidi(220)); //=> 57\n * freqToMidi(261.62)); //=> 60\n * freqToMidi(261)); //=> 59.96\n */\nexport function freqToMidi(freq: number): number {\n const v = (12 * (Math.log(freq) - L440)) / L2 + 69;\n return Math.round(v * 100) / 100;\n}\n\nexport interface ToNoteNameOptions {\n pitchClass?: boolean;\n sharps?: boolean;\n}\n\nconst SHARPS = \"C C# D D# E F F# G G# A A# B\".split(\" \");\nconst FLATS = \"C Db D Eb E F Gb G Ab A Bb B\".split(\" \");\n/**\n * Given a midi number, returns a note name. The altered notes will have\n * flats unless explicitly set with the optional `useSharps` parameter.\n *\n * @function\n * @param {number} midi - the midi note number\n * @param {Object} options = default: `{ sharps: false, pitchClass: false }`\n * @param {boolean} useSharps - (Optional) set to true to use sharps instead of flats\n * @return {string} the note name\n * @example\n * import { midiToNoteName } from '@tonaljs/midi'\n * midiToNoteName(61) // => \"Db4\"\n * midiToNoteName(61, { pitchClass: true }) // => \"Db\"\n * midiToNoteName(61, { sharps: true }) // => \"C#4\"\n * midiToNoteName(61, { pitchClass: true, sharps: true }) // => \"C#\"\n * // it rounds to nearest note\n * midiToNoteName(61.7) // => \"D4\"\n */\nexport function midiToNoteName(midi: number, options: ToNoteNameOptions = {}) {\n if (isNaN(midi) || midi === -Infinity || midi === Infinity) return \"\";\n midi = Math.round(midi);\n const pcs = options.sharps === true ? SHARPS : FLATS;\n const pc = pcs[midi % 12];\n if (options.pitchClass) {\n return pc;\n }\n const o = Math.floor(midi / 12) - 1;\n return pc + o;\n}\n\nexport function chroma(midi: number): number {\n return midi % 12;\n}\n\nfunction pcsetFromChroma(chroma: string): number[] {\n return chroma.split(\"\").reduce((pcset, val, index) => {\n if (index < 12 && val === \"1\") pcset.push(index);\n return pcset;\n }, [] as number[]);\n}\n\nfunction pcsetFromMidi(midi: number[]): number[] {\n return midi\n .map(chroma)\n .sort((a, b) => a - b)\n .filter((n, i, a) => i === 0 || n !== a[i - 1]);\n}\n\n/**\n * Given a list of midi numbers, returns the pitch class set (unique chroma numbers)\n * @param midi\n * @example\n *\n */\nexport function pcset(notes: number[] | string): number[] {\n return Array.isArray(notes) ? pcsetFromMidi(notes) : pcsetFromChroma(notes);\n}\n\nexport function pcsetNearest(notes: number[] | string) {\n const set = pcset(notes);\n return (midi: number): number | undefined => {\n const ch = chroma(midi);\n for (let i = 0; i < 12; i++) {\n if (set.includes(ch + i)) return midi + i;\n if (set.includes(ch - i)) return midi - i;\n }\n return undefined;\n };\n}\n\nexport function pcsetSteps(notes: number[] | string, tonic: number) {\n const set = pcset(notes);\n const len = set.length;\n return (step: number): number => {\n const index = step < 0 ? (len - (-step % len)) % len : step % len;\n const octaves = Math.floor(step / len);\n return set[index] + octaves * 12 + tonic;\n };\n}\n\nexport function pcsetDegrees(notes: number[] | string, tonic: number) {\n const steps = pcsetSteps(notes, tonic);\n return (degree: number): number | undefined => {\n if (degree === 0) return undefined;\n return steps(degree > 0 ? degree - 1 : degree);\n };\n}\n\n/** @deprecated */\nexport default {\n chroma,\n freqToMidi,\n isMidi,\n midiToFreq,\n midiToNoteName,\n pcsetNearest,\n pcset,\n pcsetDegrees,\n pcsetSteps,\n toMidi,\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { freqToMidi, midiToNoteName } from \"@tonaljs/midi\";\nimport { Pitch } from \"@tonaljs/pitch\";\nimport { distance as _dist, transpose as _tr } from \"@tonaljs/pitch-distance\";\nimport { IntervalName } from \"@tonaljs/pitch-interval\";\nimport {\n Note,\n NoteLiteral,\n NoteName,\n note as props,\n} from \"@tonaljs/pitch-note\";\n\nexport type { NoteType } from \"@tonaljs/pitch-note\";\n\nconst NAMES = [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"];\n\nconst toName = (n: Note) => n.name;\nconst onlyNotes = (array: any[]) =>\n array.map(props).filter((n) => !n.empty) as Note[];\n\n/**\n * Return the natural note names without octave\n * @function\n * @example\n * Note.names(); // => [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"]\n */\nexport function names(array?: any[]): string[] {\n if (array === undefined) {\n return NAMES.slice();\n } else if (!Array.isArray(array)) {\n return [];\n } else {\n return onlyNotes(array).map(toName);\n }\n}\n\n/**\n * Get a note from a note name\n *\n * @function\n * @example\n * Note.get('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\n */\nexport const get = props;\n\n/**\n * Get the note name\n * @function\n */\nexport const name = (note: NoteLiteral) => get(note).name;\n\n/**\n * Get the note pitch class name\n * @function\n */\nexport const pitchClass = (note: NoteLiteral) => get(note).pc;\n\n/**\n * Get the note accidentals\n * @function\n */\nexport const accidentals = (note: NoteLiteral) => get(note).acc;\n\n/**\n * Get the note octave\n * @function\n */\nexport const octave = (note: NoteLiteral) => get(note).oct;\n\n/**\n * Get the note midi\n * @function\n */\nexport const midi = (note: NoteLiteral) => get(note).midi;\n\n/**\n * Get the note midi\n * @function\n */\nexport const freq = (note: NoteLiteral) => get(note).freq;\n\n/**\n * Get the note chroma\n * @function\n */\nexport const chroma = (note: NoteLiteral) => get(note).chroma;\n\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n *\n * @function\n * @param {number} midi - the midi note number\n * @return {string} the note name\n * @example\n * Note.fromMidi(61) // => \"Db4\"\n * Note.fromMidi(61.7) // => \"D4\"\n */\nexport function fromMidi(midi: number) {\n return midiToNoteName(midi);\n}\n\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n */\nexport function fromFreq(freq: number) {\n return midiToNoteName(freqToMidi(freq));\n}\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n */\nexport function fromFreqSharps(freq: number) {\n return midiToNoteName(freqToMidi(freq), { sharps: true });\n}\n\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n *\n * @function\n * @param {number} midi - the midi note number\n * @return {string} the note name\n * @example\n * Note.fromMidiSharps(61) // => \"C#4\"\n */\n\nexport function fromMidiSharps(midi: number) {\n return midiToNoteName(midi, { sharps: true });\n}\n\nexport const distance = _dist;\n\n/**\n * Transpose a note by an interval\n */\nexport const transpose = _tr;\nexport const tr = _tr;\n\n/**\n * Transpose by an interval.\n * @function\n * @param {string} interval\n * @return {function} a function that transposes by the given interval\n * @example\n * [\"C\", \"D\", \"E\"].map(Note.transposeBy(\"5P\"));\n * // => [\"G\", \"A\", \"B\"]\n */\nexport const transposeBy = (interval: IntervalName) => (note: NoteName) =>\n transpose(note, interval);\nexport const trBy = transposeBy;\n\n/**\n * Transpose from a note\n * @function\n * @param {string} note\n * @return {function} a function that transposes the the note by an interval\n * [\"1P\", \"3M\", \"5P\"].map(Note.transposeFrom(\"C\"));\n * // => [\"C\", \"E\", \"G\"]\n */\nexport const transposeFrom = (note: NoteName) => (interval: IntervalName) =>\n transpose(note, interval);\nexport const trFrom = transposeFrom;\n\n/**\n * Transpose a note by a number of perfect fifths.\n *\n * @function\n * @param {string} note - the note name\n * @param {number} fifths - the number of fifths\n * @return {string} the transposed note name\n *\n * @example\n * import { transposeFifths } from \"@tonaljs/note\"\n * transposeFifths(\"G4\", 1) // => \"D\"\n * [0, 1, 2, 3, 4].map(fifths => transposeFifths(\"C\", fifths)) // => [\"C\", \"G\", \"D\", \"A\", \"E\"]\n */\nexport function transposeFifths(noteName: NoteName, fifths: number): NoteName {\n return transpose(noteName, [fifths, 0]);\n}\nexport const trFifths = transposeFifths;\n\n// TODO: documentation\nexport function transposeOctaves(\n noteName: NoteName,\n octaves: number,\n): NoteName {\n return transpose(noteName, [0, octaves]);\n}\n\nexport type NoteComparator = (a: Note, b: Note) => number;\n\nexport const ascending: NoteComparator = (a, b) => a.height - b.height;\nexport const descending: NoteComparator = (a, b) => b.height - a.height;\n\nexport function sortedNames(\n notes: any[],\n comparator?: NoteComparator,\n): string[] {\n comparator = comparator || ascending;\n return onlyNotes(notes).sort(comparator).map(toName);\n}\n\nexport function sortedUniqNames(notes: any[]): string[] {\n return sortedNames(notes, ascending).filter(\n (n, i, a) => i === 0 || n !== a[i - 1],\n );\n}\n\n/**\n * Simplify a note\n *\n * @function\n * @param {string} note - the note to be simplified\n * - sameAccType: default true. Use same kind of accidentals that source\n * @return {string} the simplified note or '' if not valid note\n * @example\n * simplify(\"C##\") // => \"D\"\n * simplify(\"C###\") // => \"D#\"\n * simplify(\"C###\")\n * simplify(\"B#4\") // => \"C5\"\n */\nexport const simplify = (noteName: NoteName | Pitch): string => {\n const note = get(noteName);\n if (note.empty) {\n return \"\";\n }\n return midiToNoteName(note.midi || note.chroma, {\n sharps: note.alt > 0,\n pitchClass: note.midi === null,\n });\n};\n/**\n * Get enharmonic of a note\n *\n * @function\n * @param {string} note\n * @param [string] - [optional] Destination pitch class\n * @return {string} the enharmonic note name or '' if not valid note\n * @example\n * Note.enharmonic(\"Db\") // => \"C#\"\n * Note.enharmonic(\"C\") // => \"C\"\n * Note.enharmonic(\"F2\",\"E#\") // => \"E#2\"\n * Note.enharmonic(\"C##b\"); // => \"\"\n */\nexport function enharmonic(noteName: string, destName?: string) {\n const src = get(noteName);\n if (src.empty) {\n return \"\";\n }\n\n // destination: use given or generate one\n const dest = get(\n destName ||\n midiToNoteName(src.midi || src.chroma, {\n sharps: src.alt < 0,\n pitchClass: true,\n }),\n );\n\n // ensure destination is valid\n if (dest.empty || dest.chroma !== src.chroma) {\n return \"\";\n }\n\n // if src has no octave, no need to calculate anything else\n if (src.oct === undefined) {\n return dest.pc;\n }\n\n // detect any octave overflow\n const srcChroma = src.chroma - src.alt;\n const destChroma = dest.chroma - dest.alt;\n const destOctOffset =\n srcChroma > 11 || destChroma < 0\n ? -1\n : srcChroma < 0 || destChroma > 11\n ? +1\n : 0;\n // calculate the new octave\n const destOct = src.oct + destOctOffset;\n return dest.pc + destOct;\n}\n\n/** @deprecated */\nexport default {\n names,\n get,\n name,\n pitchClass,\n accidentals,\n octave,\n midi,\n ascending,\n descending,\n distance,\n sortedNames,\n sortedUniqNames,\n fromMidi,\n fromMidiSharps,\n freq,\n fromFreq,\n fromFreqSharps,\n chroma,\n transpose,\n tr,\n transposeBy,\n trBy,\n transposeFrom,\n trFrom,\n transposeFifths,\n transposeOctaves,\n trFifths,\n simplify,\n enharmonic,\n};\n", "type RhythmPatternValue = 0 | 1;\n\nexport type RhythmPattern = Array;\n\n/**\n * Create a rhythm pattern from a number or concatenation of numbers in binary form\n * @param numbers one or more number\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * binary(13) // => [1, 1, 0, 1]\n * binary(12, 13) // => [1, 1, 0, 0, 1, 1, 0, 1]\n */\nexport function binary(...numbers: number[]): RhythmPattern {\n return numbers.reduce((pattern, number) => {\n number\n .toString(2)\n .split(\"\")\n .forEach((digit: string) => {\n pattern.push(parseInt(digit) as RhythmPatternValue);\n });\n return pattern;\n }, [] as RhythmPattern);\n}\n\n/**\n * Create a rhythmic pattern using an hexadecimal numbers\n * @param hexNumber string with the hexadecimal number\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * R.hex(\"8f\"); // => [1, 0, 0, 0, 1, 1, 1, 1]\n */\nexport function hex(hexNumber: string): RhythmPattern {\n const pattern: RhythmPattern = [];\n for (let i = 0; i < hexNumber.length; i++) {\n const digit = parseInt(\"0x\" + hexNumber[i]);\n const binary = isNaN(digit) ? \"0000\" : digit.toString(2).padStart(4, \"0\");\n binary.split(\"\").forEach((digit: string) => {\n pattern.push(digit === \"1\" ? 1 : 0);\n });\n }\n return pattern;\n}\n\n/**\n * Create a rhythm pattern from the onsets\n * @param numbers the onsets sizes\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * onsets(1, 2, 2, 1) // => [1, 0, 1, 0, 0, 1, 0, 0, 1, 0]\n */\nexport function onsets(...numbers: number[]): RhythmPattern {\n return numbers.reduce((pattern, number) => {\n pattern.push(1);\n for (let i = 0; i < number; i++) {\n pattern.push(0);\n }\n return pattern;\n }, [] as RhythmPattern);\n}\n\n/**\n * Create a random rhythm pattern with a specified length\n * @param length length of the pattern\n * @param probability Threshold where random number is considered a beat (defaults to 0.5)\n * @param rnd A random function (Math.random by default)\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * random(4) // => [1, 0, 0, 1]\n */\nexport function random(\n length: number,\n probability = 0.5,\n rnd: () => number = Math.random,\n): RhythmPattern {\n const pattern: RhythmPattern = [];\n for (let i = 0; i < length; i++) {\n pattern.push(rnd() >= probability ? 1 : 0);\n }\n return pattern;\n}\n\n/**\n * Create a rhythm pattern based on the given probability thresholds\n * @param probabilities An array with the probability of each step to be a beat\n * @param rnd A random function (Math.random by default)\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * probability([0.6, 0, 0.2, 0.5]) // => [0, 0, 0, 1]\n */\nexport function probability(\n probabilities: number[],\n rnd: () => number = Math.random,\n): RhythmPattern {\n return probabilities.map((probability) => (rnd() <= probability ? 1 : 0));\n}\n\n/**\n * Rotate a pattern right\n * @param pattern the pattern to rotate\n * @param rotations the number of steps to rotate\n * @returns the rotated pattern (an array of 0s and 1s)\n * @example\n * rotate([1, 0, 0, 1], 2); // => [0, 1, 1, 0]\n *\n */\nexport function rotate(\n pattern: RhythmPattern,\n rotations: number,\n): RhythmPattern {\n const len = pattern.length;\n const rotated: RhythmPattern = [];\n for (let i = 0; i < len; i++) {\n const pos = (((i - rotations) % len) + len) % len;\n rotated[i] = pattern[pos];\n }\n return rotated;\n}\n\n/**\n * Generates an euclidean rhythm pattern\n * @param steps The length of the pattern\n * @param beats The number of beats\n * @returns an array with 0s and 1s representing the rhythmic pattern\n * @example\n * euclid(8, 3); // => [1, 0, 0, 1, 0, 0, 1, 0]\n */\nexport function euclid(steps: number, beats: number): RhythmPattern {\n const pattern: RhythmPattern = [];\n let d = -1;\n\n for (let i = 0; i < steps; i++) {\n const v = Math.floor(i * (beats / steps));\n pattern[i] = v !== d ? 1 : 0;\n d = v;\n }\n return pattern;\n}\n", "// TYPES: PARSING\nexport type TimeSignatureLiteral = string | [number, number] | [string, string];\ntype ParsedTimeSignature = [number | number[], number];\n\n// TYPES: PROPERTIES\nexport type ValidTimeSignature = {\n readonly empty: false;\n readonly name: string;\n readonly upper: number | number[];\n readonly lower: number;\n readonly type: \"simple\" | \"compound\" | \"irregular\" | \"irrational\";\n readonly additive: number[];\n};\n\nexport type InvalidTimeSignature = {\n readonly empty: true;\n readonly name: \"\";\n readonly upper: undefined;\n readonly lower: undefined;\n readonly type: undefined;\n readonly additive: [];\n};\n\nexport type TimeSignature = ValidTimeSignature | InvalidTimeSignature;\n\n// CONSTANTS\nconst NONE: InvalidTimeSignature = {\n empty: true,\n name: \"\",\n upper: undefined,\n lower: undefined,\n type: undefined,\n additive: [],\n};\n\nconst NAMES = [\"4/4\", \"3/4\", \"2/4\", \"2/2\", \"12/8\", \"9/8\", \"6/8\", \"3/8\"];\n\n// PUBLIC API\n\nexport function names() {\n return NAMES.slice();\n}\n\nconst REGEX = /^(\\d*\\d(?:\\+\\d)*)\\/(\\d+)$/;\nconst CACHE = new Map();\n\nexport function get(literal: TimeSignatureLiteral): TimeSignature {\n const stringifiedLiteral = JSON.stringify(literal);\n const cached = CACHE.get(stringifiedLiteral);\n if (cached) {\n return cached;\n }\n\n const ts = build(parse(literal));\n CACHE.set(stringifiedLiteral, ts);\n return ts;\n}\n\nexport function parse(literal: TimeSignatureLiteral): ParsedTimeSignature {\n if (typeof literal === \"string\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, up, low] = REGEX.exec(literal) || [];\n return parse([up, low]);\n }\n\n const [up, down] = literal;\n const denominator = +down;\n if (typeof up === \"number\") {\n return [up, denominator];\n }\n\n const list = up.split(\"+\").map((n) => +n);\n return list.length === 1 ? [list[0], denominator] : [list, denominator];\n}\n\n/** @deprecated */\nexport default { names, parse, get };\n\n// PRIVATE\n\nconst isPowerOfTwo = (x: number) => (Math.log(x) / Math.log(2)) % 1 === 0;\n\nfunction build([up, down]: ParsedTimeSignature): TimeSignature {\n const upper = Array.isArray(up) ? up.reduce((a, b) => a + b, 0) : up;\n const lower = down;\n if (upper === 0 || lower === 0) {\n return NONE;\n }\n\n const name = Array.isArray(up) ? `${up.join(\"+\")}/${down}` : `${up}/${down}`;\n const additive = Array.isArray(up) ? up : [];\n const type =\n lower === 4 || lower === 2\n ? \"simple\"\n : lower === 8 && upper % 3 === 0\n ? \"compound\"\n : isPowerOfTwo(lower)\n ? \"irregular\"\n : \"irrational\";\n\n return {\n empty: false,\n name,\n type,\n upper,\n lower,\n additive,\n };\n}\n", "import Chord from \"@tonaljs/chord\";\nimport { all, lefthand, triads, VoicingDictionary } from \"./data\";\nexport { all, lefthand, triads } from \"./data\";\n\nexport const defaultDictionary: VoicingDictionary = lefthand;\n\nexport function lookup(\n symbol: string,\n dictionary = defaultDictionary,\n): string[] | undefined {\n if (dictionary[symbol]) {\n return dictionary[symbol];\n }\n const { aliases } = Chord.get(\"C\" + symbol);\n // TODO: find other way to get aliases of symbol\n const match =\n Object.keys(dictionary).find((_symbol) => aliases.includes(_symbol)) || \"\";\n if (match !== undefined) {\n return dictionary[match];\n }\n return undefined;\n}\n\n/** @deprecated */\nexport default {\n lookup,\n lefthand,\n triads,\n all,\n defaultDictionary,\n};\n", "export type VoicingDictionary = { [symbol: string]: string[] };\n\nexport const triads: VoicingDictionary = {\n M: [\"1P 3M 5P\", \"3M 5P 8P\", \"5P 8P 10M\"],\n m: [\"1P 3m 5P\", \"3m 5P 8P\", \"5P 8P 10m\"],\n o: [\"1P 3m 5d\", \"3m 5d 8P\", \"5d 8P 10m\"],\n aug: [\"1P 3m 5A\", \"3m 5A 8P\", \"5A 8P 10m\"],\n};\nexport const lefthand: VoicingDictionary = {\n m7: [\"3m 5P 7m 9M\", \"7m 9M 10m 12P\"],\n \"7\": [\"3M 6M 7m 9M\", \"7m 9M 10M 13M\"],\n \"^7\": [\"3M 5P 7M 9M\", \"7M 9M 10M 12P\"],\n \"69\": [\"3M 5P 6A 9M\"],\n m7b5: [\"3m 5d 7m 8P\", \"7m 8P 10m 12d\"],\n \"7b9\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n \"7b13\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n o7: [\"1P 3m 5d 6M\", \"5d 6M 8P 10m\"],\n \"7#11\": [\"7m 9M 11A 13A\"],\n \"7#9\": [\"3M 7m 9A\"],\n mM7: [\"3m 5P 7M 9M\", \"7M 9M 10m 12P\"],\n m6: [\"3m 5P 6M 9M\", \"6M 9M 10m 12P\"],\n};\nexport const all: VoicingDictionary = {\n M: [\"1P 3M 5P\", \"3M 5P 8P\", \"5P 8P 10M\"],\n m: [\"1P 3m 5P\", \"3m 5P 8P\", \"5P 8P 10m\"],\n o: [\"1P 3m 5d\", \"3m 5d 8P\", \"5d 8P 10m\"],\n aug: [\"1P 3m 5A\", \"3m 5A 8P\", \"5A 8P 10m\"],\n m7: [\"3m 5P 7m 9M\", \"7m 9M 10m 12P\"],\n \"7\": [\"3M 6M 7m 9M\", \"7m 9M 10M 13M\"],\n \"^7\": [\"3M 5P 7M 9M\", \"7M 9M 10M 12P\"],\n \"69\": [\"3M 5P 6A 9M\"],\n m7b5: [\"3m 5d 7m 8P\", \"7m 8P 10m 12d\"],\n \"7b9\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n \"7b13\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n o7: [\"1P 3m 5d 6M\", \"5d 6M 8P 10m\"],\n \"7#11\": [\"7m 9M 11A 13A\"],\n \"7#9\": [\"3M 7m 9A\"],\n mM7: [\"3m 5P 7M 9M\", \"7M 9M 10m 12P\"],\n m6: [\"3m 5P 6M 9M\", \"6M 9M 10m 12P\"],\n};\n"], - "mappings": "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", - "names": ["index_exports", "__export", "dist_exports", "ChordDictionary", "PcSet", "ScaleDictionary", "Tonal", "accToAlt", "altToAcc", "chroma", "coordToInterval", "coordToNote", "coordinates", "deprecate", "distance", "fillStr", "height", "interval", "isNamed", "isNamedPitch", "isPitch", "midi", "note", "pitch", "stepToLetter", "tokenizeInterval", "tokenizeNote", "tonicIntervalsTransposer", "transpose", "isNamedPitch", "src", "SIZES", "chroma", "step", "alt", "height", "oct", "dir", "midi", "pitch", "h", "isPitch", "FIFTHS", "STEPS_TO_OCTS", "fifths", "coordinates", "f", "o", "FIFTHS_TO_STEPS", "coord", "unaltered", "i", "fillStr", "s", "NoInterval", "INTERVAL_TONAL_REGEX", "INTERVAL_SHORTHAND_REGEX", "REGEX", "tokenizeInterval", "str", "m", "cache", "interval", "src", "parse", "isPitch", "pitchName", "isNamedPitch", "SIZES", "TYPES", "tokens", "num", "q", "step", "t", "type", "name", "dir", "simple", "alt", "qToAlt", "oct", "semitones", "chroma", "coord", "coordinates", "coordToInterval", "forceDescending", "f", "o", "isDescending", "ivl", "pitch", "props", "calcNum", "d", "altToQ", "fillStr", "s", "NoNote", "cache", "stepToLetter", "step", "altToAcc", "alt", "accToAlt", "acc", "note", "src", "stringSrc", "cached", "value", "parse", "isPitch", "pitchName", "isNamedPitch", "REGEX", "tokenizeNote", "str", "m", "coordToNote", "noteCoord", "pitch", "mod", "n", "SEMI", "noteName", "tokens", "letter", "octStr", "oct", "coord", "coordinates", "name", "pc", "chroma", "height", "midi", "freq", "props", "transpose", "noteName", "intervalName", "note", "intervalCoord", "interval", "noteCoord", "tr", "coordToNote", "tonicIntervalsTransposer", "intervals", "tonic", "len", "normalized", "index", "octaves", "root", "distance", "fromNote", "toNote", "from", "to", "fcoord", "tcoord", "fifths", "octs", "forceDescending", "coordToInterval", "fillStr", "character", "times", "REGEX", "tokenize", "str", "m", "abcToScientificNotation", "acc", "letter", "oct", "scientificToAbcNotation", "note", "l", "o", "transpose", "interval", "distance", "from", "to", "index_default", "ascR", "b", "a", "descR", "range", "from", "to", "rotate", "times", "arr", "len", "n", "compact", "sortedNoteNames", "notes", "note", "sortedUniqNoteNames", "i", "shuffle", "rnd", "t", "m", "permutations", "acc", "perm", "e", "pos", "newPerm", "ascR", "b", "a", "descR", "range", "from", "to", "rotate", "times", "arr", "len", "n", "compact", "shuffle", "rnd", "i", "t", "m", "permutations", "acc", "perm", "e", "pos", "newPerm", "index_default", "EmptyPcset", "setNumToChroma", "num", "chromaToNumber", "chroma", "REGEX", "isChroma", "set", "isPcsetNum", "isPcset", "cache", "get", "src", "listToChroma", "chromaToPcset", "pcset", "intervals", "IVLS", "chromaToIntervals", "i", "notes", "ivl", "transpose", "chromas", "range", "modes", "normalize", "binary", "compact", "_", "r", "rotate", "isEqual", "s1", "s2", "isSubsetOf", "s", "o", "isSupersetOf", "isNoteIncludedIn", "noteName", "n", "note", "includes", "filter", "isIncluded", "index_default", "chromaRotations", "setNum", "normalizedNum", "normalized", "pitch", "interval", "CHORDS", "data_default", "NoChordType", "EmptyPcset", "dictionary", "index", "get", "type", "chordType", "names", "chord", "x", "symbols", "keys", "all", "entries", "removeAll", "add", "intervals", "aliases", "fullName", "quality", "getQuality", "alias", "addAlias", "has", "interval", "ivls", "a", "b", "index_default", "namedSet", "notes", "pcToName", "record", "n", "chroma", "note", "detect", "source", "options", "x", "findMatches", "chord", "a", "b", "BITMASK", "testChromaNumber", "bitmask", "chromaNumber", "hasAnyThird", "hasPerfectFifth", "hasAnySeventh", "hasNonPerfectFifth", "hasAnyThirdAndPerfectFifthAndAnySeventh", "chordType", "withPerfectFifth", "weight", "tonic", "tonicChroma", "noteName", "allModes", "modes", "found", "mode", "index", "modeWithPerfectFifth", "all", "chordName", "baseNote", "names", "get", "interval", "name", "semitones", "quality", "num", "simplify", "i", "invert", "step", "alt", "IN", "IQ", "fromSemitones", "d", "n", "c", "distance", "add", "combinator", "a", "b", "addTo", "other", "subtract", "transposeFifths", "fifths", "ivl", "nFifths", "nOcts", "dir", "coordToInterval", "index_default", "fn", "coordA", "coordB", "coord", "SCALES", "data_default", "NoScaleType", "EmptyPcset", "dictionary", "index", "names", "scale", "get", "type", "scaleType", "all", "entries", "keys", "removeAll", "add", "intervals", "name", "aliases", "alias", "addAlias", "ivls", "index_default", "NoChord", "tokenize", "name", "letter", "acc", "oct", "type", "tokenizeNote", "tokenizeBass", "note", "chord", "split", "get", "src", "getChord", "tonic", "bass", "typeName", "optionalTonic", "optionalBass", "bassInterval", "distance", "bassIndex", "hasRoot", "root", "rootDegree", "hasBass", "intervals", "i", "num", "quality", "newNum", "ivl", "subtract", "notes", "transpose", "symbol", "chordName", "interval", "tr", "slash", "chordScales", "s", "isChordIncluded", "isSupersetOf", "all", "scale", "extended", "isSuperset", "reduced", "isSubset", "isSubsetOf", "degrees", "tonicIntervalsTransposer", "degree", "steps", "index_default", "detect", "DATA", "data_default", "VALUES", "denominator", "shorthand", "names", "add", "NoDuration", "duration", "name", "shorthands", "dur", "REGEX", "get", "_", "simple", "dots", "base", "fraction", "calcDots", "value", "index_default", "pow", "numerator", "isMidi", "arg", "toMidi", "note", "midiToFreq", "midi", "tuning", "L2", "L440", "freqToMidi", "freq", "v", "SHARPS", "FLATS", "midiToNoteName", "options", "pc", "chroma", "pcsetFromChroma", "pcset", "val", "index", "pcsetFromMidi", "a", "b", "i", "notes", "pcsetNearest", "set", "ch", "pcsetSteps", "tonic", "len", "step", "octaves", "pcsetDegrees", "steps", "degree", "index_default", "NAMES", "toName", "n", "onlyNotes", "array", "note", "names", "get", "name", "pitchClass", "accidentals", "octave", "midi", "freq", "chroma", "fromMidi", "midiToNoteName", "fromFreq", "freqToMidi", "fromFreqSharps", "fromMidiSharps", "distance", "transpose", "tr", "transposeBy", "interval", "trBy", "transposeFrom", "trFrom", "transposeFifths", "noteName", "fifths", "trFifths", "transposeOctaves", "octaves", "ascending", "a", "b", "descending", "sortedNames", "notes", "comparator", "sortedUniqNames", "i", "simplify", "enharmonic", "destName", "src", "dest", "srcChroma", "destChroma", "destOctOffset", "destOct", "index_default", "NoRomanNumeral", "cache", "get", "src", "parse", "NAMES", "isPitch", "fromPitch", "isNamedPitch", "romanNumeral", "names", "major", "NAMES_MINOR", "pitch", "altToAcc", "REGEX", "tokenize", "str", "ROMANS", "name", "acc", "roman", "chordType", "upperRoman", "step", "alt", "accToAlt", "dir", "interval", "index_default", "Empty", "NoKey", "NoKeyScale", "NoMajorKey", "NoMinorKey", "mapScaleToType", "scale", "list", "sep", "type", "i", "keyScale", "grades", "triads", "chordTypes", "harmonicFunctions", "chordScales", "tonic", "intervals", "gr", "get", "interval", "transpose", "chords", "secondaryDominants", "note", "secondaryDominantSupertonics", "supertonics", "substituteDominants", "chord", "domRoot", "substituteDominantSupertonics", "dominants", "targetTriads", "index", "minorRoot", "distInFifths", "from", "to", "f", "t", "MajorScale", "NaturalScale", "HarmonicScale", "MelodicScale", "majorKey", "pc", "alteration", "altToAcc", "majorKeyChords", "key", "keyChordsOf", "minorKeyChords", "minorKey", "updateChord", "name", "newRole", "keyChord", "chordName", "tnc", "majorTonicFromKeySignature", "sig", "transposeFifths", "accToAlt", "index_default", "MODES", "NoMode", "EmptyPcset", "modes", "toMode", "index", "mode", "alias", "get", "name", "all", "entries", "names", "modeNum", "setNum", "alt", "triad", "seventh", "aliases", "chroma", "notes", "modeName", "tonic", "ivl", "transpose", "chords", "triads", "rotate", "tonics", "i", "x", "seventhChords", "distance", "destination", "source", "from", "to", "simplify", "transposeFifths", "relativeTonic", "index_default", "fromRomanNumerals", "tonic", "chords", "get", "rn", "transpose", "interval", "toRomanNumerals", "chord", "note", "chordType", "tokenize", "intervalName", "distance", "index_default", "numeric", "notes", "midi", "compact", "note", "toMidi", "result", "last", "range", "chromatic", "options", "midiToNoteName", "index_default", "binary", "numbers", "pattern", "number", "digit", "hex", "hexNumber", "i", "onsets", "random", "length", "probability", "rnd", "probabilities", "rotate", "rotations", "len", "rotated", "pos", "euclid", "steps", "beats", "d", "v", "NoScale", "tokenize", "name", "i", "tonic", "note", "n", "type", "names", "get", "src", "tokens", "st", "notes", "transpose", "scale", "detect", "options", "notesChroma", "chroma", "tonicChroma", "pitchClasses", "scaleChroma", "rotate", "match", "all", "scaleType", "results", "extended", "scaleName", "scaleChords", "s", "inScale", "isSubsetOf", "chord", "isChroma", "isSuperset", "isSupersetOf", "reduced", "isSubset", "scaleNotes", "pcset", "x", "sortedUniqNames", "modeNames", "tonics", "modes", "modeName", "getNoteNameOf", "chromas", "noteOrMidi", "currNote", "fromMidi", "height", "position", "enharmonic", "rangeOf", "getName", "fromNote", "toNote", "from", "to", "range", "degrees", "intervals", "tonicIntervalsTransposer", "degree", "steps", "index_default", "NONE", "NAMES", "names", "REGEX", "CACHE", "get", "literal", "stringifiedLiteral", "cached", "ts", "build", "parse", "_", "up", "low", "down", "denominator", "list", "n", "index_default", "isPowerOfTwo", "x", "upper", "a", "b", "lower", "name", "additive", "type", "topNoteDiff", "voicings", "lastVoicing", "topNoteMidi", "voicing", "index_default", "diff", "a", "b", "triads", "lefthand", "all", "defaultDictionary", "lookup", "symbol", "dictionary", "aliases", "index_default", "match", "_symbol", "defaultRange", "defaultDictionary", "index_default", "defaultVoiceLeading", "get", "chord", "range", "dictionary", "voiceLeading", "lastVoicing", "voicings", "search", "tonic", "symbol", "sets", "intervals", "notesInRange", "voiced", "voicing", "relativeIntervals", "interval", "bottomPitchClass", "notes", "note", "start", "sequence", "chords", "fillStr", "s", "deprecate", "original", "alternative", "fn", "args", "isNamed", "isNamedPitch", "Tonal", "dist_exports", "PcSet", "ChordDictionary", "ScaleDictionary"] + "sources": ["../index.ts", "../../pitch/index.ts", "../../pitch-interval/index.ts", "../../pitch-note/index.ts", "../../pitch-distance/index.ts", "../../abc-notation/index.ts", "../../array/index.ts", "../../collection/index.ts", "../../pcset/index.ts", "../../chord-type/index.ts", "../../chord-type/data.ts", "../../chord-detect/index.ts", "../../interval/index.ts", "../../scale-type/index.ts", "../../scale-type/data.ts", "../../chord/index.ts", "../../duration-value/data.ts", "../../duration-value/index.ts", "../../midi/index.ts", "../../note/index.ts", "../../roman-numeral/index.ts", "../../key/index.ts", "../../mode/index.ts", "../../progression/index.ts", "../../range/index.ts", "../../rhythm-pattern/index.ts", "../../scale/index.ts", "../../time-signature/index.ts", "../../voice-leading/index.ts", "../../voicing-dictionary/index.ts", "../../voicing-dictionary/data.ts", "../../voicing/index.ts", "../../core/index.ts"], + "sourcesContent": ["import * as AbcNotation from \"@tonaljs/abc-notation\";\nimport * as Array from \"@tonaljs/array\";\nimport * as Chord from \"@tonaljs/chord\";\nimport * as ChordType from \"@tonaljs/chord-type\";\nimport * as Collection from \"@tonaljs/collection\";\nimport * as DurationValue from \"@tonaljs/duration-value\";\nimport * as Interval from \"@tonaljs/interval\";\nimport * as Key from \"@tonaljs/key\";\nimport * as Midi from \"@tonaljs/midi\";\nimport * as Mode from \"@tonaljs/mode\";\nimport * as Note from \"@tonaljs/note\";\nimport * as Pcset from \"@tonaljs/pcset\";\nimport * as Progression from \"@tonaljs/progression\";\nimport * as Range from \"@tonaljs/range\";\nimport * as RhythmPattern from \"@tonaljs/rhythm-pattern\";\nimport * as RomanNumeral from \"@tonaljs/roman-numeral\";\nimport * as Scale from \"@tonaljs/scale\";\nimport * as ScaleType from \"@tonaljs/scale-type\";\nimport * as TimeSignature from \"@tonaljs/time-signature\";\nimport * as VoiceLeading from \"@tonaljs/voice-leading\";\nimport * as Voicing from \"@tonaljs/voicing\";\nimport * as VoicingDictionary from \"@tonaljs/voicing-dictionary\";\n\nexport * from \"@tonaljs/core\";\n\n// deprecated (backwards compatibility)\nimport * as Core from \"@tonaljs/core\";\n/** @deprecated */\nconst Tonal = Core;\n/** @deprecated */\nconst PcSet = Pcset;\n/** @deprecated */\nconst ChordDictionary = ChordType;\n/** @deprecated */\nconst ScaleDictionary = ScaleType;\n\nexport {\n AbcNotation,\n Array,\n Chord,\n ChordDictionary,\n ChordType,\n Collection,\n Core,\n DurationValue,\n Interval,\n Key,\n Midi,\n Mode,\n Note,\n PcSet,\n Pcset,\n Progression,\n Range,\n RhythmPattern,\n RomanNumeral,\n Scale,\n ScaleDictionary,\n ScaleType,\n TimeSignature,\n Tonal,\n VoiceLeading,\n Voicing,\n VoicingDictionary,\n};\n", "export interface NamedPitch {\n readonly name: string;\n}\n\n/*** @deprecated use NamedPitch */\nexport interface Named {\n readonly name: string;\n}\n\nexport interface NotFound extends NamedPitch {\n readonly empty: true;\n readonly name: \"\";\n}\n\nexport function isNamedPitch(src: unknown): src is NamedPitch {\n return src !== null &&\n typeof src === \"object\" &&\n \"name\" in src &&\n typeof src.name === \"string\"\n ? true\n : false;\n}\n\ntype Fifths = number;\ntype Octaves = number;\nexport type Direction = 1 | -1;\n\nexport type PitchClassCoordinates = [Fifths];\nexport type NoteCoordinates = [Fifths, Octaves];\nexport type IntervalCoordinates = [Fifths, Octaves, Direction];\nexport type PitchCoordinates =\n | PitchClassCoordinates\n | NoteCoordinates\n | IntervalCoordinates;\n\n/**\n * Pitch properties\n *\n * - {number} step - The step number: 0 = C, 1 = D, ... 6 = B\n * - {number} alt - Number of alterations: -2 = 'bb', -1 = 'b', 0 = '', 1 = '#', ...\n * - {number} [oct] = The octave (undefined when is a coord class)\n * - {number} [dir] = Interval direction (undefined when is not an interval)\n */\nexport interface Pitch {\n readonly step: number;\n readonly alt: number;\n readonly oct?: number; // undefined for pitch classes\n readonly dir?: Direction; // undefined for notes\n}\n\nconst SIZES = [0, 2, 4, 5, 7, 9, 11];\nexport const chroma = ({ step, alt }: Pitch) => (SIZES[step] + alt + 120) % 12;\n\nexport const height = ({ step, alt, oct, dir = 1 }: Pitch) =>\n dir * (SIZES[step] + alt + 12 * (oct === undefined ? -100 : oct));\n\nexport const midi = (pitch: Pitch) => {\n const h = height(pitch);\n return pitch.oct !== undefined && h >= -12 && h <= 115 ? h + 12 : null;\n};\n\nexport function isPitch(pitch: unknown): pitch is Pitch {\n return pitch !== null &&\n typeof pitch === \"object\" &&\n \"step\" in pitch &&\n typeof pitch.step === \"number\" &&\n \"alt\" in pitch &&\n typeof pitch.alt === \"number\" &&\n !isNaN(pitch.step) &&\n !isNaN(pitch.alt)\n ? true\n : false;\n}\n\n// The number of fifths of [C, D, E, F, G, A, B]\nconst FIFTHS = [0, 2, 4, -1, 1, 3, 5];\n// The number of octaves it span each step\nconst STEPS_TO_OCTS = FIFTHS.map((fifths: number) =>\n Math.floor((fifths * 7) / 12),\n);\n\n/**\n * Get coordinates from pitch object\n */\nexport function coordinates(pitch: Pitch): PitchCoordinates {\n const { step, alt, oct, dir = 1 } = pitch;\n const f = FIFTHS[step] + 7 * alt;\n if (oct === undefined) {\n return [dir * f];\n }\n const o = oct - STEPS_TO_OCTS[step] - 4 * alt;\n return [dir * f, dir * o];\n}\n\n// We need to get the steps from fifths\n// Fifths for CDEFGAB are [ 0, 2, 4, -1, 1, 3, 5 ]\n// We add 1 to fifths to avoid negative numbers, so:\n// for [\"F\", \"C\", \"G\", \"D\", \"A\", \"E\", \"B\"] we have:\nconst FIFTHS_TO_STEPS = [3, 0, 4, 1, 5, 2, 6];\n\n/**\n * Get pitch from coordinate objects\n */\nexport function pitch(coord: PitchCoordinates): Pitch {\n const [f, o, dir] = coord;\n const step = FIFTHS_TO_STEPS[unaltered(f)];\n const alt = Math.floor((f + 1) / 7);\n if (o === undefined) {\n return { step, alt, dir };\n }\n const oct = o + 4 * alt + STEPS_TO_OCTS[step];\n return { step, alt, oct, dir };\n}\n\n// Return the number of fifths as if it were unaltered\nfunction unaltered(f: number): number {\n const i = (f + 1) % 7;\n return i < 0 ? 7 + i : i;\n}\n", "import {\n coordinates,\n Direction,\n IntervalCoordinates,\n isNamedPitch,\n isPitch,\n NamedPitch,\n Pitch,\n pitch,\n PitchCoordinates,\n} from \"@tonaljs/pitch\";\n\nconst fillStr = (s: string, n: number) => Array(Math.abs(n) + 1).join(s);\n\nexport type IntervalName = string;\nexport type IntervalLiteral = IntervalName | Pitch | NamedPitch;\n\ntype Quality =\n | \"dddd\"\n | \"ddd\"\n | \"dd\"\n | \"d\"\n | \"m\"\n | \"M\"\n | \"P\"\n | \"A\"\n | \"AA\"\n | \"AAA\"\n | \"AAAA\";\ntype Type = \"perfectable\" | \"majorable\";\n\nexport interface Interval extends Pitch, NamedPitch {\n readonly empty: boolean;\n readonly name: IntervalName;\n readonly num: number;\n readonly q: Quality;\n readonly type: Type;\n readonly step: number;\n readonly alt: number;\n readonly dir: Direction;\n readonly simple: number;\n readonly semitones: number;\n readonly chroma: number;\n readonly coord: IntervalCoordinates;\n readonly oct: number;\n}\n\nexport type IntervalType = Interval;\n\nconst NoInterval: Interval = Object.freeze({\n empty: true,\n name: \"\",\n num: NaN,\n q: \"\" as Quality,\n type: \"\" as Type,\n step: NaN,\n alt: NaN,\n dir: NaN as Direction,\n simple: NaN,\n semitones: NaN,\n chroma: NaN,\n coord: [] as unknown as IntervalCoordinates,\n oct: NaN,\n});\n\n// shorthand tonal notation (with quality after number)\nconst INTERVAL_TONAL_REGEX = \"([-+]?\\\\d+)(d{1,4}|m|M|P|A{1,4})\";\n// standard shorthand notation (with quality before number)\nconst INTERVAL_SHORTHAND_REGEX = \"(AA|A|P|M|m|d|dd)([-+]?\\\\d+)\";\nconst REGEX = new RegExp(\n \"^\" + INTERVAL_TONAL_REGEX + \"|\" + INTERVAL_SHORTHAND_REGEX + \"$\",\n);\n\ntype IntervalTokens = [string, string];\n\n/**\n * @private\n */\nexport function tokenizeInterval(str?: IntervalName): IntervalTokens {\n const m = REGEX.exec(`${str}`);\n if (m === null) {\n return [\"\", \"\"];\n }\n return m[1] ? [m[1], m[2]] : [m[4], m[3]];\n}\n\nconst cache: { [key in string]: Interval } = {};\n\n/**\n * Get interval properties. It returns an object with:\n *\n * - name: the interval name\n * - num: the interval number\n * - type: 'perfectable' or 'majorable'\n * - q: the interval quality (d, m, M, A)\n * - dir: interval direction (1 ascending, -1 descending)\n * - simple: the simplified number\n * - semitones: the size in semitones\n * - chroma: the interval chroma\n *\n * @param {string} interval - the interval name\n * @return {Object} the interval properties\n *\n * @example\n * import { interval } from '@tonaljs/core'\n * interval('P5').semitones // => 7\n * interval('m3').type // => 'majorable'\n */\nexport function interval(src: IntervalLiteral): Interval {\n return typeof src === \"string\"\n ? cache[src] || (cache[src] = parse(src))\n : isPitch(src)\n ? interval(pitchName(src))\n : isNamedPitch(src)\n ? interval(src.name)\n : NoInterval;\n}\n\nconst SIZES = [0, 2, 4, 5, 7, 9, 11];\nconst TYPES = \"PMMPPMM\";\nfunction parse(str?: string): Interval {\n const tokens = tokenizeInterval(str);\n if (tokens[0] === \"\") {\n return NoInterval;\n }\n const num = +tokens[0];\n const q = tokens[1] as Quality;\n const step = (Math.abs(num) - 1) % 7;\n const t = TYPES[step];\n if (t === \"M\" && q === \"P\") {\n return NoInterval;\n }\n const type = t === \"M\" ? \"majorable\" : \"perfectable\";\n\n const name = \"\" + num + q;\n const dir = num < 0 ? -1 : 1;\n const simple = num === 8 || num === -8 ? num : dir * (step + 1);\n const alt = qToAlt(type, q);\n const oct = Math.floor((Math.abs(num) - 1) / 7);\n const semitones = dir * (SIZES[step] + alt + 12 * oct);\n const chroma = (((dir * (SIZES[step] + alt)) % 12) + 12) % 12;\n const coord = coordinates({ step, alt, oct, dir }) as IntervalCoordinates;\n return {\n empty: false,\n name,\n num,\n q,\n step,\n alt,\n dir,\n type,\n simple,\n semitones,\n chroma,\n coord,\n oct,\n };\n}\n\n/**\n * @private\n *\n * forceDescending is used in the case of unison (#243)\n */\nexport function coordToInterval(\n coord: PitchCoordinates,\n forceDescending?: boolean,\n): Interval {\n const [f, o = 0] = coord;\n const isDescending = f * 7 + o * 12 < 0;\n const ivl: IntervalCoordinates =\n forceDescending || isDescending ? [-f, -o, -1] : [f, o, 1];\n return interval(pitch(ivl)) as Interval;\n}\n\nfunction qToAlt(type: Type, q: string): number {\n return (q === \"M\" && type === \"majorable\") ||\n (q === \"P\" && type === \"perfectable\")\n ? 0\n : q === \"m\" && type === \"majorable\"\n ? -1\n : /^A+$/.test(q)\n ? q.length\n : /^d+$/.test(q)\n ? -1 * (type === \"perfectable\" ? q.length : q.length + 1)\n : 0;\n}\n\n// return the interval name of a pitch\nfunction pitchName(props: Pitch): string {\n const { step, alt, oct = 0, dir } = props;\n if (!dir) {\n return \"\";\n }\n const calcNum = step + 1 + 7 * oct;\n // this is an edge case: descending pitch class unison (see #243)\n const num = calcNum === 0 ? step + 1 : calcNum;\n const d = dir < 0 ? \"-\" : \"\";\n const type = TYPES[step] === \"M\" ? \"majorable\" : \"perfectable\";\n const name = d + num + altToQ(type, alt);\n return name;\n}\n\nfunction altToQ(type: Type, alt: number): Quality {\n if (alt === 0) {\n return type === \"majorable\" ? \"M\" : \"P\";\n } else if (alt === -1 && type === \"majorable\") {\n return \"m\";\n } else if (alt > 0) {\n return fillStr(\"A\", alt) as Quality;\n } else {\n return fillStr(\"d\", type === \"perfectable\" ? alt : alt + 1) as Quality;\n }\n}\n", "import {\n coordinates,\n isNamedPitch,\n isPitch,\n NamedPitch,\n Pitch,\n pitch,\n PitchCoordinates,\n} from \"@tonaljs/pitch\";\n\nconst fillStr = (s: string, n: number) => Array(Math.abs(n) + 1).join(s);\n\nexport type NoteWithOctave = string;\nexport type PcName = string;\nexport type NoteName = NoteWithOctave | PcName;\nexport type NoteLiteral = NoteName | Pitch | NamedPitch;\n\nexport interface Note extends Pitch, NamedPitch {\n readonly empty: boolean;\n readonly name: NoteName;\n readonly letter: string;\n readonly acc: string;\n readonly pc: PcName;\n readonly chroma: number;\n readonly height: number;\n readonly coord: PitchCoordinates;\n readonly midi: number | null;\n readonly freq: number | null;\n}\n\nexport type NoteType = Note;\n\nconst NoNote: Note = Object.freeze({\n empty: true,\n name: \"\",\n letter: \"\",\n acc: \"\",\n pc: \"\",\n step: NaN,\n alt: NaN,\n chroma: NaN,\n height: NaN,\n coord: [] as unknown as PitchCoordinates,\n midi: null,\n freq: null,\n});\n\nconst cache: Map = new Map();\n\nexport const stepToLetter = (step: number) => \"CDEFGAB\".charAt(step);\nexport const altToAcc = (alt: number): string =>\n alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt);\nexport const accToAlt = (acc: string): number =>\n acc[0] === \"b\" ? -acc.length : acc.length;\n\n/**\n * Given a note literal (a note name or a note object), returns the Note object\n * @example\n * note('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\n */\nexport function note(src: NoteLiteral): Note {\n const stringSrc = JSON.stringify(src);\n\n const cached = cache.get(stringSrc);\n if (cached) {\n return cached;\n }\n\n const value =\n typeof src === \"string\"\n ? parse(src)\n : isPitch(src)\n ? note(pitchName(src))\n : isNamedPitch(src)\n ? note(src.name)\n : NoNote;\n cache.set(stringSrc, value);\n return value;\n}\n\ntype NoteTokens = [string, string, string, string];\n\nconst REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\n\n/**\n * @private\n */\nexport function tokenizeNote(str: string): NoteTokens {\n const m = REGEX.exec(str) as string[];\n return m\n ? [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]]\n : [\"\", \"\", \"\", \"\"];\n}\n\n/**\n * @private\n */\nexport function coordToNote(noteCoord: PitchCoordinates): Note {\n return note(pitch(noteCoord)) as Note;\n}\n\nconst mod = (n: number, m: number) => ((n % m) + m) % m;\n\nconst SEMI = [0, 2, 4, 5, 7, 9, 11];\nfunction parse(noteName: NoteName): Note {\n const tokens = tokenizeNote(noteName);\n if (tokens[0] === \"\" || tokens[3] !== \"\") {\n return NoNote;\n }\n\n const letter = tokens[0];\n const acc = tokens[1];\n const octStr = tokens[2];\n\n const step = (letter.charCodeAt(0) + 3) % 7;\n const alt = accToAlt(acc);\n const oct = octStr.length ? +octStr : undefined;\n const coord = coordinates({ step, alt, oct });\n\n const name = letter + acc + octStr;\n const pc = letter + acc;\n const chroma = (SEMI[step] + alt + 120) % 12;\n const height =\n oct === undefined\n ? mod(SEMI[step] + alt, 12) - 12 * 99\n : SEMI[step] + alt + 12 * (oct + 1);\n const midi = height >= 0 && height <= 127 ? height : null;\n const freq = oct === undefined ? null : Math.pow(2, (height - 69) / 12) * 440;\n\n return {\n empty: false,\n acc,\n alt,\n chroma,\n coord,\n freq,\n height,\n letter,\n midi,\n name,\n oct,\n pc,\n step,\n };\n}\n\nfunction pitchName(props: Pitch): NoteName {\n const { step, alt, oct } = props;\n const letter = stepToLetter(step);\n if (!letter) {\n return \"\";\n }\n\n const pc = letter + altToAcc(alt);\n return oct || oct === 0 ? pc + oct : pc;\n}\n", "import { PitchCoordinates } from \"@tonaljs/pitch\";\nimport {\n IntervalLiteral,\n IntervalName,\n interval as asInterval,\n coordToInterval,\n} from \"@tonaljs/pitch-interval\";\nimport {\n NoteLiteral,\n NoteName,\n note as asNote,\n coordToNote,\n} from \"@tonaljs/pitch-note\";\n\n/**\n * Transpose a note by an interval.\n *\n * @param {string} note - the note or note name\n * @param {string} interval - the interval or interval name\n * @return {string} the transposed note name or empty string if not valid notes\n * @example\n * import { transpose } from \"@tonaljs/core\"\n * transpose(\"d3\", \"3M\") // => \"F#3\"\n * transpose(\"D\", \"3M\") // => \"F#\"\n * [\"C\", \"D\", \"E\", \"F\", \"G\"].map(pc => transpose(pc, \"M3)) // => [\"E\", \"F#\", \"G#\", \"A\", \"B\"]\n */\nexport function transpose(\n noteName: NoteLiteral,\n intervalName: IntervalLiteral | [number, number],\n): NoteName {\n const note = asNote(noteName);\n const intervalCoord = Array.isArray(intervalName)\n ? intervalName\n : asInterval(intervalName).coord;\n if (note.empty || !intervalCoord || intervalCoord.length < 2) {\n return \"\";\n }\n const noteCoord = note.coord;\n const tr: PitchCoordinates =\n noteCoord.length === 1\n ? [noteCoord[0] + intervalCoord[0]]\n : [noteCoord[0] + intervalCoord[0], noteCoord[1] + intervalCoord[1]];\n return coordToNote(tr).name;\n}\n\n// Private\nexport function tonicIntervalsTransposer(\n intervals: string[],\n tonic: string | undefined | null,\n) {\n const len = intervals.length;\n return (normalized: number) => {\n if (!tonic) return \"\";\n const index =\n normalized < 0 ? (len - (-normalized % len)) % len : normalized % len;\n const octaves = Math.floor(normalized / len);\n const root = transpose(tonic, [0, octaves]);\n return transpose(root, intervals[index]);\n };\n}\n\n/**\n * Find the interval distance between two notes or coord classes.\n *\n * To find distance between coord classes, both notes must be coord classes and\n * the interval is always ascending\n *\n * @param {Note|string} from - the note or note name to calculate distance from\n * @param {Note|string} to - the note or note name to calculate distance to\n * @return {string} the interval name or empty string if not valid notes\n *\n */\nexport function distance(\n fromNote: NoteLiteral,\n toNote: NoteLiteral,\n): IntervalName {\n const from = asNote(fromNote);\n const to = asNote(toNote);\n if (from.empty || to.empty) {\n return \"\";\n }\n\n const fcoord = from.coord;\n const tcoord = to.coord;\n const fifths = tcoord[0] - fcoord[0];\n const octs =\n fcoord.length === 2 && tcoord.length === 2\n ? tcoord[1] - fcoord[1]\n : -Math.floor((fifths * 7) / 12);\n\n // If it's unison, not pitch class, and in the same octave\n // it can be descending interval (see #243 & #428)\n const forceDescending =\n to.height === from.height &&\n to.midi !== null &&\n from.oct === to.oct &&\n from.step > to.step;\n return coordToInterval([fifths, octs], forceDescending).name;\n}\n", "import { distance as dist, transpose as tr } from \"@tonaljs/pitch-distance\";\nimport { note } from \"@tonaljs/pitch-note\";\n\nconst fillStr = (character: string, times: number) =>\n Array(times + 1).join(character);\n\nconst REGEX = /^(_{1,}|=|\\^{1,}|)([abcdefgABCDEFG])([,']*)$/;\n\ntype AbcTokens = [string, string, string];\n\nexport function tokenize(str: string): AbcTokens {\n const m = REGEX.exec(str);\n if (!m) {\n return [\"\", \"\", \"\"];\n }\n return [m[1], m[2], m[3]];\n}\n\n/**\n * Convert a (string) note in ABC notation into a (string) note in scientific notation\n *\n * @example\n * abcToScientificNotation(\"c\") // => \"C5\"\n */\nexport function abcToScientificNotation(str: string): string {\n const [acc, letter, oct] = tokenize(str);\n if (letter === \"\") {\n return \"\";\n }\n let o = 4;\n for (let i = 0; i < oct.length; i++) {\n o += oct.charAt(i) === \",\" ? -1 : 1;\n }\n const a =\n acc[0] === \"_\"\n ? acc.replace(/_/g, \"b\")\n : acc[0] === \"^\"\n ? acc.replace(/\\^/g, \"#\")\n : \"\";\n return letter.charCodeAt(0) > 96\n ? letter.toUpperCase() + a + (o + 1)\n : letter + a + o;\n}\n\n/**\n * Convert a (string) note in scientific notation into a (string) note in ABC notation\n *\n * @example\n * scientificToAbcNotation(\"C#4\") // => \"^C\"\n */\nexport function scientificToAbcNotation(str: string): string {\n const n = note(str);\n if (n.empty || (!n.oct && n.oct !== 0)) {\n return \"\";\n }\n const { letter, acc, oct } = n;\n const a = acc[0] === \"b\" ? acc.replace(/b/g, \"_\") : acc.replace(/#/g, \"^\");\n const l = oct > 4 ? letter.toLowerCase() : letter;\n const o =\n oct === 5 ? \"\" : oct > 4 ? fillStr(\"'\", oct - 5) : fillStr(\",\", 4 - oct);\n return a + l + o;\n}\n\nexport function transpose(note: string, interval: string): string {\n return scientificToAbcNotation(tr(abcToScientificNotation(note), interval));\n}\n\nexport function distance(from: string, to: string): string {\n return dist(abcToScientificNotation(from), abcToScientificNotation(to));\n}\n\n/** @deprecated */\nexport default {\n abcToScientificNotation,\n scientificToAbcNotation,\n tokenize,\n transpose,\n distance,\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { note, Note } from \"@tonaljs/pitch-note\";\n\n// ascending range\nfunction ascR(b: number, n: number) {\n const a = [];\n // tslint:disable-next-line:curly\n for (; n--; a[n] = n + b);\n return a;\n}\n// descending range\nfunction descR(b: number, n: number) {\n const a = [];\n // tslint:disable-next-line:curly\n for (; n--; a[n] = b - n);\n return a;\n}\n\n/**\n * Creates a numeric range\n *\n * @param {number} from\n * @param {number} to\n * @return {Array}\n *\n * @example\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\n * range(2, -2) // => [2, 1, 0, -1, -2]\n */\nexport function range(from: number, to: number): number[] {\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\n}\n\n/**\n * Rotates a list a number of times. It's completely agnostic about the\n * contents of the list.\n *\n * @param {Integer} times - the number of rotations\n * @param {Array} array\n * @return {Array} the rotated array\n *\n * @example\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\n */\nexport function rotate(times: number, arr: T[]): T[] {\n const len = arr.length;\n const n = ((times % len) + len) % len;\n return arr.slice(n, len).concat(arr.slice(0, n));\n}\n\n/**\n * Return a copy of the array with the null values removed\n * @function\n * @param {Array} array\n * @return {Array}\n *\n * @example\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\n */\nexport function compact(arr: any[]): any[] {\n return arr.filter((n) => n === 0 || n);\n}\n\n/**\n * Sort an array of notes in ascending order. Pitch classes are listed\n * before notes. Any string that is not a note is removed.\n *\n * @param {string[]} notes\n * @return {string[]} sorted array of notes\n *\n * @example\n * sortedNoteNames(['c2', 'c5', 'c1', 'c0', 'c6', 'c'])\n * // => ['C', 'C0', 'C1', 'C2', 'C5', 'C6']\n * sortedNoteNames(['c', 'F', 'G', 'a', 'b', 'h', 'J'])\n * // => ['C', 'F', 'G', 'A', 'B']\n */\nexport function sortedNoteNames(notes: string[]): string[] {\n const valid = notes.map((n) => note(n)).filter((n) => !n.empty) as Note[];\n return valid.sort((a, b) => a.height - b.height).map((n) => n.name);\n}\n\n/**\n * Get sorted notes with duplicates removed. Pitch classes are listed\n * before notes.\n *\n * @function\n * @param {string[]} array\n * @return {string[]} unique sorted notes\n *\n * @example\n * Array.sortedUniqNoteNames(['a', 'b', 'c2', '1p', 'p2', 'c2', 'b', 'c', 'c3' ])\n * // => [ 'C', 'A', 'B', 'C2', 'C3' ]\n */\nexport function sortedUniqNoteNames(arr: string[]): string[] {\n return sortedNoteNames(arr).filter((n, i, a) => i === 0 || n !== a[i - 1]);\n}\n\n/**\n * Randomizes the order of the specified array in-place, using the Fisher–Yates shuffle.\n *\n * @function\n * @param {Array} array\n * @return {Array} the array shuffled\n *\n * @example\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\n */\nexport function shuffle(arr: any[], rnd = Math.random): any[] {\n let i: number;\n let t: any;\n let m: number = arr.length;\n while (m) {\n i = Math.floor(rnd() * m--);\n t = arr[m];\n arr[m] = arr[i];\n arr[i] = t;\n }\n return arr;\n}\n\n/**\n * Get all permutations of an array\n *\n * @param {Array} array - the array\n * @return {Array} an array with all the permutations\n * @example\n * permutations([\"a\", \"b\", \"c\"])) // =>\n * [\n * [\"a\", \"b\", \"c\"],\n * [\"b\", \"a\", \"c\"],\n * [\"b\", \"c\", \"a\"],\n * [\"a\", \"c\", \"b\"],\n * [\"c\", \"a\", \"b\"],\n * [\"c\", \"b\", \"a\"]\n * ]\n */\nexport function permutations(arr: any[]): any[] {\n if (arr.length === 0) {\n return [[]];\n }\n return permutations(arr.slice(1)).reduce((acc, perm) => {\n return acc.concat(\n arr.map((e, pos) => {\n const newPerm = perm.slice();\n newPerm.splice(pos, 0, arr[0]);\n return newPerm;\n }),\n );\n }, []);\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n// ascending range\nfunction ascR(b: number, n: number) {\n const a = [];\n // tslint:disable-next-line:curly\n for (; n--; a[n] = n + b);\n return a;\n}\n// descending range\nfunction descR(b: number, n: number) {\n const a = [];\n // tslint:disable-next-line:curly\n for (; n--; a[n] = b - n);\n return a;\n}\n\n/**\n * Creates a numeric range\n *\n * @param {number} from\n * @param {number} to\n * @return {Array}\n *\n * @example\n * range(-2, 2) // => [-2, -1, 0, 1, 2]\n * range(2, -2) // => [2, 1, 0, -1, -2]\n */\nexport function range(from: number, to: number): number[] {\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\n}\n\n/**\n * Rotates a list a number of times. It's completely agnostic about the\n * contents of the list.\n *\n * @param {Integer} times - the number of rotations\n * @param {Array} collection\n * @return {Array} the rotated collection\n *\n * @example\n * rotate(1, [1, 2, 3]) // => [2, 3, 1]\n */\nexport function rotate(times: number, arr: T[]): T[] {\n const len = arr.length;\n const n = ((times % len) + len) % len;\n return arr.slice(n, len).concat(arr.slice(0, n));\n}\n\n/**\n * Return a copy of the collection with the null values removed\n * @function\n * @param {Array} collection\n * @return {Array}\n *\n * @example\n * compact([\"a\", \"b\", null, \"c\"]) // => [\"a\", \"b\", \"c\"]\n */\nexport function compact(arr: any[]): any[] {\n return arr.filter((n) => n === 0 || n);\n}\n\n/**\n * Randomizes the order of the specified collection in-place, using the Fisher–Yates shuffle.\n *\n * @function\n * @param {Array} collection\n * @return {Array} the collection shuffled\n *\n * @example\n * shuffle([\"C\", \"D\", \"E\", \"F\"]) // => [...]\n */\nexport function shuffle(arr: any[], rnd = Math.random): any[] {\n let i: number;\n let t: any;\n let m: number = arr.length;\n while (m) {\n i = Math.floor(rnd() * m--);\n t = arr[m];\n arr[m] = arr[i];\n arr[i] = t;\n }\n return arr;\n}\n\n/**\n * Get all permutations of an collection\n *\n * @param {Array} collection - the collection\n * @return {Array} an collection with all the permutations\n * @example\n * permutations([\"a\", \"b\", \"c\"])) // =>\n * [\n * [\"a\", \"b\", \"c\"],\n * [\"b\", \"a\", \"c\"],\n * [\"b\", \"c\", \"a\"],\n * [\"a\", \"c\", \"b\"],\n * [\"c\", \"a\", \"b\"],\n * [\"c\", \"b\", \"a\"]\n * ]\n */\nexport function permutations(arr: any[]): any[] {\n if (arr.length === 0) {\n return [[]];\n }\n return permutations(arr.slice(1)).reduce((acc, perm) => {\n return acc.concat(\n arr.map((e, pos) => {\n const newPerm = perm.slice();\n newPerm.splice(pos, 0, arr[0]);\n return newPerm;\n }),\n );\n }, []);\n}\n\n/** @deprecated */\nexport default {\n compact,\n permutations,\n range,\n rotate,\n shuffle,\n};\n", "import { compact, range, rotate } from \"@tonaljs/collection\";\nimport { NotFound } from \"@tonaljs/pitch\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { Interval, IntervalName, interval } from \"@tonaljs/pitch-interval\";\nimport { Note, NoteName, note } from \"@tonaljs/pitch-note\";\n\n/**\n * The properties of a pitch class set\n * @param {number} num - a number between 1 and 4095 (both included) that\n * uniquely identifies the set. It's the decimal number of the chroma.\n * @param {string} chroma - a string representation of the set: a 12-char string\n * with either \"1\" or \"0\" as characters, representing a pitch class or not\n * for the given position in the octave. For example, a \"1\" at index 0 means 'C',\n * a \"1\" at index 2 means 'D', and so on...\n * @param {string} normalized - the chroma but shifted to the first 1\n * @param {number} length - the number of notes of the pitch class set\n * @param {IntervalName[]} intervals - the intervals of the pitch class set\n * *starting from C*\n */\nexport interface Pcset {\n readonly name: string;\n readonly empty: boolean;\n readonly setNum: number;\n readonly chroma: PcsetChroma;\n readonly normalized: PcsetChroma;\n readonly intervals: IntervalName[];\n}\n\nexport const EmptyPcset: Pcset = {\n empty: true,\n name: \"\",\n setNum: 0,\n chroma: \"000000000000\",\n normalized: \"000000000000\",\n intervals: [],\n};\n\nexport type PcsetChroma = string;\nexport type PcsetNum = number;\n\n// UTILITIES\nconst setNumToChroma = (num: number): string =>\n Number(num).toString(2).padStart(12, \"0\");\nconst chromaToNumber = (chroma: string): number => parseInt(chroma, 2);\nconst REGEX = /^[01]{12}$/;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isChroma(set: any): set is PcsetChroma {\n return REGEX.test(set);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPcsetNum = (set: any): set is PcsetNum =>\n typeof set === \"number\" && set >= 0 && set <= 4095;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPcset = (set: any): set is Pcset => set && isChroma(set.chroma);\n\nconst cache: { [key in string]: Pcset } = { [EmptyPcset.chroma]: EmptyPcset };\n\n/**\n * A definition of a pitch class set. It could be:\n * - The pitch class set chroma (a 12-length string with only 1s or 0s)\n * - The pitch class set number (an integer between 1 and 4095)\n * - An array of note names\n * - An array of interval names\n */\nexport type Set =\n | Partial\n | PcsetChroma\n | PcsetNum\n | NoteName[]\n | IntervalName[];\n\n/**\n * Get the pitch class set of a collection of notes or set number or chroma\n */\nexport function get(src: Set): Pcset {\n const chroma: PcsetChroma = isChroma(src)\n ? src\n : isPcsetNum(src)\n ? setNumToChroma(src)\n : Array.isArray(src)\n ? listToChroma(src)\n : isPcset(src)\n ? src.chroma\n : EmptyPcset.chroma;\n\n return (cache[chroma] = cache[chroma] || chromaToPcset(chroma));\n}\n\n/**\n * @use Pcset.get\n * @deprecated\n */\nexport const pcset = get;\n\n/**\n * Get pitch class set chroma\n * @function\n * @example\n * Pcset.chroma([\"c\", \"d\", \"e\"]); //=> \"101010000000\"\n */\nexport const chroma = (set: Set) => get(set).chroma;\n\n/**\n * Get intervals (from C) of a set\n * @function\n * @example\n * Pcset.intervals([\"c\", \"d\", \"e\"]); //=>\n */\nexport const intervals = (set: Set) => get(set).intervals;\n\n/**\n * Get pitch class set number\n * @function\n * @example\n * Pcset.num([\"c\", \"d\", \"e\"]); //=> 2192\n */\nexport const num = (set: Set) => get(set).setNum;\n\nconst IVLS = [\n \"1P\",\n \"2m\",\n \"2M\",\n \"3m\",\n \"3M\",\n \"4P\",\n \"5d\",\n \"5P\",\n \"6m\",\n \"6M\",\n \"7m\",\n \"7M\",\n];\n\n/**\n * Get the intervals of a pcset *starting from C*\n * @private\n * @param {Set} set - the pitch class set\n * @return {IntervalName[]} an array of interval names or an empty array\n * if not a valid pitch class set\n */\nfunction chromaToIntervals(chroma: PcsetChroma): IntervalName[] {\n const intervals = [];\n for (let i = 0; i < 12; i++) {\n // tslint:disable-next-line:curly\n if (chroma.charAt(i) === \"1\") intervals.push(IVLS[i]);\n }\n return intervals;\n}\n\nexport function notes(set: Set): NoteName[] {\n return get(set).intervals.map((ivl) => transpose(\"C\", ivl));\n}\n\n/**\n * Get a list of all possible pitch class sets (all possible chromas) *having\n * C as root*. There are 2048 different chromas. If you want them with another\n * note you have to transpose it\n *\n * @see http://allthescales.org/\n * @return {Array} an array of possible chromas from '10000000000' to '11111111111'\n */\nexport function chromas(): PcsetChroma[] {\n return range(2048, 4095).map(setNumToChroma);\n}\n\n/**\n * Given a a list of notes or a pcset chroma, produce the rotations\n * of the chroma discarding the ones that starts with \"0\"\n *\n * This is used, for example, to get all the modes of a scale.\n *\n * @param {Array|string} set - the list of notes or pitchChr of the set\n * @param {boolean} normalize - (Optional, true by default) remove all\n * the rotations that starts with \"0\"\n * @return {Array} an array with all the modes of the chroma\n *\n * @example\n * Pcset.modes([\"C\", \"D\", \"E\"]).map(Pcset.intervals)\n */\nexport function modes(set: Set, normalize = true): PcsetChroma[] {\n const pcs = get(set);\n\n const binary = pcs.chroma.split(\"\");\n return compact(\n binary.map((_, i) => {\n const r = rotate(i, binary);\n return normalize && r[0] === \"0\" ? null : r.join(\"\");\n }),\n );\n}\n\n/**\n * Test if two pitch class sets are equal\n *\n * @param {Array|string} set1 - one of the pitch class sets\n * @param {Array|string} set2 - the other pitch class set\n * @return {boolean} true if they are equal\n * @example\n * Pcset.isEqual([\"c2\", \"d3\"], [\"c5\", \"d2\"]) // => true\n */\nexport function isEqual(s1: Set, s2: Set) {\n return get(s1).setNum === get(s2).setNum;\n}\n\n/**\n * Create a function that test if a collection of notes is a\n * subset of a given set\n *\n * The function is curried.\n *\n * @param {PcsetChroma|NoteName[]} set - the superset to test against (chroma or\n * list of notes)\n * @return{function(PcsetChroma|NoteNames[]): boolean} a function accepting a set\n * to test against (chroma or list of notes)\n * @example\n * const inCMajor = Pcset.isSubsetOf([\"C\", \"E\", \"G\"])\n * inCMajor([\"e6\", \"c4\"]) // => true\n * inCMajor([\"e6\", \"c4\", \"d3\"]) // => false\n */\nexport function isSubsetOf(set: Set) {\n const s = get(set).setNum;\n\n return (notes: Set | Pcset) => {\n const o = get(notes).setNum;\n // tslint:disable-next-line: no-bitwise\n return s && s !== o && (o & s) === o;\n };\n}\n\n/**\n * Create a function that test if a collection of notes is a\n * superset of a given set (it contains all notes and at least one more)\n *\n * @param {Set} set - an array of notes or a chroma set string to test against\n * @return {(subset: Set): boolean} a function that given a set\n * returns true if is a subset of the first one\n * @example\n * const extendsCMajor = Pcset.isSupersetOf([\"C\", \"E\", \"G\"])\n * extendsCMajor([\"e6\", \"a\", \"c4\", \"g2\"]) // => true\n * extendsCMajor([\"c6\", \"e4\", \"g3\"]) // => false\n */\nexport function isSupersetOf(set: Set) {\n const s = get(set).setNum;\n return (notes: Set) => {\n const o = get(notes).setNum;\n // tslint:disable-next-line: no-bitwise\n return s && s !== o && (o | s) === o;\n };\n}\n\n/**\n * Test if a given pitch class set includes a note\n *\n * @param {Array} set - the base set to test against\n * @param {string} note - the note to test\n * @return {boolean} true if the note is included in the pcset\n *\n * Can be partially applied\n *\n * @example\n * const isNoteInCMajor = isNoteIncludedIn(['C', 'E', 'G'])\n * isNoteInCMajor('C4') // => true\n * isNoteInCMajor('C#4') // => false\n */\nexport function isNoteIncludedIn(set: Set) {\n const s = get(set);\n\n return (noteName: NoteName): boolean => {\n const n = note(noteName);\n return s && !n.empty && s.chroma.charAt(n.chroma) === \"1\";\n };\n}\n\n/** @deprecated use: isNoteIncludedIn */\nexport const includes = isNoteIncludedIn;\n\n/**\n * Filter a list with a pitch class set\n *\n * @param {Array|string} set - the pitch class set notes\n * @param {Array|string} notes - the note list to be filtered\n * @return {Array} the filtered notes\n *\n * @example\n * Pcset.filter([\"C\", \"D\", \"E\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"d2\", \"c3\", \"d3\" ])\n * Pcset.filter([\"C2\"], [\"c2\", \"c#2\", \"d2\", \"c3\", \"c#3\", \"d3\"]) // => [ \"c2\", \"c3\" ])\n */\nexport function filter(set: Set) {\n const isIncluded = isNoteIncludedIn(set);\n return (notes: NoteName[]) => {\n return notes.filter(isIncluded);\n };\n}\n\n/** @deprecated */\nexport default {\n get,\n chroma,\n num,\n intervals,\n chromas,\n isSupersetOf,\n isSubsetOf,\n isNoteIncludedIn,\n isEqual,\n filter,\n modes,\n notes,\n // deprecated\n pcset,\n};\n\n//// PRIVATE ////\n\nfunction chromaRotations(chroma: string): string[] {\n const binary = chroma.split(\"\");\n return binary.map((_, i) => rotate(i, binary).join(\"\"));\n}\n\nfunction chromaToPcset(chroma: PcsetChroma): Pcset {\n const setNum = chromaToNumber(chroma);\n const normalizedNum = chromaRotations(chroma)\n .map(chromaToNumber)\n .filter((n) => n >= 2048)\n .sort()[0];\n const normalized = setNumToChroma(normalizedNum);\n\n const intervals = chromaToIntervals(chroma);\n\n return {\n empty: false,\n name: \"\",\n setNum,\n chroma,\n normalized,\n intervals,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction listToChroma(set: any[]): PcsetChroma {\n if (set.length === 0) {\n return EmptyPcset.chroma;\n }\n\n let pitch: Note | Interval | NotFound;\n const binary = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < set.length; i++) {\n pitch = note(set[i]);\n // tslint:disable-next-line: curly\n if (pitch.empty) pitch = interval(set[i]);\n // tslint:disable-next-line: curly\n if (!pitch.empty) binary[pitch.chroma] = 1;\n }\n return binary.join(\"\");\n}\n", "import {\n EmptyPcset,\n get as pcset,\n Pcset,\n PcsetChroma,\n PcsetNum,\n} from \"@tonaljs/pcset\";\nimport data from \"./data\";\n\nexport type ChordQuality =\n | \"Major\"\n | \"Minor\"\n | \"Augmented\"\n | \"Diminished\"\n | \"Unknown\";\n\nexport interface ChordType extends Pcset {\n name: string;\n quality: ChordQuality;\n aliases: string[];\n}\nconst NoChordType: ChordType = {\n ...EmptyPcset,\n name: \"\",\n quality: \"Unknown\",\n intervals: [],\n aliases: [],\n};\n\ntype ChordTypeName = string | PcsetChroma | PcsetNum;\n\nlet dictionary: ChordType[] = [];\nlet index: Record = {};\n\n/**\n * Given a chord name or chroma, return the chord properties\n * @param {string} source - chord name or pitch class set chroma\n * @example\n * import { get } from 'tonaljs/chord-type'\n * get('major') // => { name: 'major', ... }\n */\nexport function get(type: ChordTypeName): ChordType {\n return index[type] || NoChordType;\n}\n\n/** @deprecated */\nexport const chordType = get;\n\n/**\n * Get all chord (long) names\n */\nexport function names() {\n return dictionary.map((chord) => chord.name).filter((x) => x);\n}\n\n/**\n * Get all chord symbols\n */\nexport function symbols() {\n return dictionary.map((chord) => chord.aliases[0]).filter((x) => x);\n}\n\n/**\n * Keys used to reference chord types\n */\nexport function keys() {\n return Object.keys(index);\n}\n\n/**\n * Return a list of all chord types\n */\nexport function all(): ChordType[] {\n return dictionary.slice();\n}\n\n/** @deprecated */\nexport const entries = all;\n\n/**\n * Clear the dictionary\n */\nexport function removeAll() {\n dictionary = [];\n index = {};\n}\n\n/**\n * Add a chord to the dictionary.\n * @param intervals\n * @param aliases\n * @param [fullName]\n */\nexport function add(intervals: string[], aliases: string[], fullName?: string) {\n const quality = getQuality(intervals);\n const chord = {\n ...pcset(intervals),\n name: fullName || \"\",\n quality,\n intervals,\n aliases,\n };\n dictionary.push(chord);\n if (chord.name) {\n index[chord.name] = chord;\n }\n index[chord.setNum] = chord;\n index[chord.chroma] = chord;\n chord.aliases.forEach((alias) => addAlias(chord, alias));\n}\n\nexport function addAlias(chord: ChordType, alias: string) {\n index[alias] = chord;\n}\n\nfunction getQuality(intervals: string[]): ChordQuality {\n const has = (interval: string) => intervals.indexOf(interval) !== -1;\n return has(\"5A\")\n ? \"Augmented\"\n : has(\"3M\")\n ? \"Major\"\n : has(\"5d\")\n ? \"Diminished\"\n : has(\"3m\")\n ? \"Minor\"\n : \"Unknown\";\n}\n\ndata.forEach(([ivls, fullName, names]: string[]) =>\n add(ivls.split(\" \"), names.split(\" \"), fullName),\n);\ndictionary.sort((a, b) => a.setNum - b.setNum);\n\n/** @deprecated */\nexport default {\n names,\n symbols,\n get,\n all,\n add,\n removeAll,\n keys,\n // deprecated\n entries,\n chordType,\n};\n", "/**\n * @private\n * Chord List\n * Source: https://en.wikibooks.org/wiki/Music_Theory/Complete_List_of_Chord_Patterns\n * Format: [\"intervals\", \"full name\", \"abrv1 abrv2\"]\n */\nconst CHORDS: string[][] = [\n // ==Major==\n [\"1P 3M 5P\", \"major\", \"M ^ maj\"],\n [\"1P 3M 5P 7M\", \"major seventh\", \"maj7 Δ ma7 M7 Maj7 ^7\"],\n [\"1P 3M 5P 7M 9M\", \"major ninth\", \"maj9 Δ9 ^9\"],\n [\"1P 3M 5P 7M 9M 13M\", \"major thirteenth\", \"maj13 Maj13 ^13\"],\n [\"1P 3M 5P 6M\", \"sixth\", \"6 add6 add13 M6\"],\n [\"1P 3M 5P 6M 9M\", \"sixth added ninth\", \"6add9 6/9 69 M69\"],\n [\"1P 3M 6m 7M\", \"major seventh flat sixth\", \"M7b6 ^7b6\"],\n [\n \"1P 3M 5P 7M 11A\",\n \"major seventh sharp eleventh\",\n \"maj#4 Δ#4 Δ#11 M7#11 ^7#11 maj7#11\",\n ],\n // ==Minor==\n // '''Normal'''\n [\"1P 3m 5P\", \"minor\", \"m min -\"],\n [\"1P 3m 5P 7m\", \"minor seventh\", \"m7 min7 mi7 -7\"],\n [\n \"1P 3m 5P 7M\",\n \"minor/major seventh\",\n \"m/ma7 m/maj7 mM7 mMaj7 m/M7 -Δ7 mΔ -^7 -maj7\",\n ],\n [\"1P 3m 5P 6M\", \"minor sixth\", \"m6 -6\"],\n [\"1P 3m 5P 7m 9M\", \"minor ninth\", \"m9 -9\"],\n [\"1P 3m 5P 7M 9M\", \"minor/major ninth\", \"mM9 mMaj9 -^9\"],\n [\"1P 3m 5P 7m 9M 11P\", \"minor eleventh\", \"m11 -11\"],\n [\"1P 3m 5P 7m 9M 13M\", \"minor thirteenth\", \"m13 -13\"],\n // '''Diminished'''\n [\"1P 3m 5d\", \"diminished\", \"dim ° o\"],\n [\"1P 3m 5d 7d\", \"diminished seventh\", \"dim7 °7 o7\"],\n [\"1P 3m 5d 7m\", \"half-diminished\", \"m7b5 ø -7b5 h7 h\"],\n // ==Dominant/Seventh==\n // '''Normal'''\n [\"1P 3M 5P 7m\", \"dominant seventh\", \"7 dom\"],\n [\"1P 3M 5P 7m 9M\", \"dominant ninth\", \"9\"],\n [\"1P 3M 5P 7m 9M 13M\", \"dominant thirteenth\", \"13\"],\n [\"1P 3M 5P 7m 11A\", \"lydian dominant seventh\", \"7#11 7#4\"],\n // '''Altered'''\n [\"1P 3M 5P 7m 9m\", \"dominant flat ninth\", \"7b9\"],\n [\"1P 3M 5P 7m 9A\", \"dominant sharp ninth\", \"7#9\"],\n [\"1P 3M 7m 9m\", \"altered\", \"alt7\"],\n // '''Suspended'''\n [\"1P 4P 5P\", \"suspended fourth\", \"sus4 sus\"],\n [\"1P 2M 5P\", \"suspended second\", \"sus2\"],\n [\"1P 4P 5P 7m\", \"suspended fourth seventh\", \"7sus4 7sus\"],\n [\"1P 5P 7m 9M 11P\", \"eleventh\", \"11\"],\n [\n \"1P 4P 5P 7m 9m\",\n \"suspended fourth flat ninth\",\n \"b9sus phryg 7b9sus 7b9sus4\",\n ],\n // ==Other==\n [\"1P 5P\", \"fifth\", \"5\"],\n [\"1P 3M 5A\", \"augmented\", \"aug + +5 ^#5\"],\n [\"1P 3m 5A\", \"minor augmented\", \"m#5 -#5 m+\"],\n [\"1P 3M 5A 7M\", \"augmented seventh\", \"maj7#5 maj7+5 +maj7 ^7#5\"],\n [\n \"1P 3M 5P 7M 9M 11A\",\n \"major sharp eleventh (lydian)\",\n \"maj9#11 Δ9#11 ^9#11\",\n ],\n // ==Legacy==\n [\"1P 2M 4P 5P\", \"\", \"sus24 sus4add9\"],\n [\"1P 3M 5A 7M 9M\", \"\", \"maj9#5 Maj9#5\"],\n [\"1P 3M 5A 7m\", \"\", \"7#5 +7 7+ 7aug aug7\"],\n [\"1P 3M 5A 7m 9A\", \"\", \"7#5#9 7#9#5 7alt\"],\n [\"1P 3M 5A 7m 9M\", \"\", \"9#5 9+\"],\n [\"1P 3M 5A 7m 9M 11A\", \"\", \"9#5#11\"],\n [\"1P 3M 5A 7m 9m\", \"\", \"7#5b9 7b9#5\"],\n [\"1P 3M 5A 7m 9m 11A\", \"\", \"7#5b9#11\"],\n [\"1P 3M 5A 9A\", \"\", \"+add#9\"],\n [\"1P 3M 5A 9M\", \"\", \"M#5add9 +add9\"],\n [\"1P 3M 5P 6M 11A\", \"\", \"M6#11 M6b5 6#11 6b5\"],\n [\"1P 3M 5P 6M 7M 9M\", \"\", \"M7add13\"],\n [\"1P 3M 5P 6M 9M 11A\", \"\", \"69#11\"],\n [\"1P 3m 5P 6M 9M\", \"\", \"m69 -69\"],\n [\"1P 3M 5P 6m 7m\", \"\", \"7b6\"],\n [\"1P 3M 5P 7M 9A 11A\", \"\", \"maj7#9#11\"],\n [\"1P 3M 5P 7M 9M 11A 13M\", \"\", \"M13#11 maj13#11 M13+4 M13#4\"],\n [\"1P 3M 5P 7M 9m\", \"\", \"M7b9\"],\n [\"1P 3M 5P 7m 11A 13m\", \"\", \"7#11b13 7b5b13\"],\n [\"1P 3M 5P 7m 13M\", \"\", \"7add6 67 7add13\"],\n [\"1P 3M 5P 7m 9A 11A\", \"\", \"7#9#11 7b5#9 7#9b5\"],\n [\"1P 3M 5P 7m 9A 11A 13M\", \"\", \"13#9#11\"],\n [\"1P 3M 5P 7m 9A 11A 13m\", \"\", \"7#9#11b13\"],\n [\"1P 3M 5P 7m 9A 13M\", \"\", \"13#9\"],\n [\"1P 3M 5P 7m 9A 13m\", \"\", \"7#9b13\"],\n [\"1P 3M 5P 7m 9M 11A\", \"\", \"9#11 9+4 9#4\"],\n [\"1P 3M 5P 7m 9M 11A 13M\", \"\", \"13#11 13+4 13#4\"],\n [\"1P 3M 5P 7m 9M 11A 13m\", \"\", \"9#11b13 9b5b13\"],\n [\"1P 3M 5P 7m 9m 11A\", \"\", \"7b9#11 7b5b9 7b9b5\"],\n [\"1P 3M 5P 7m 9m 11A 13M\", \"\", \"13b9#11\"],\n [\"1P 3M 5P 7m 9m 11A 13m\", \"\", \"7b9b13#11 7b9#11b13 7b5b9b13\"],\n [\"1P 3M 5P 7m 9m 13M\", \"\", \"13b9\"],\n [\"1P 3M 5P 7m 9m 13m\", \"\", \"7b9b13\"],\n [\"1P 3M 5P 7m 9m 9A\", \"\", \"7b9#9\"],\n [\"1P 3M 5P 9M\", \"\", \"Madd9 2 add9 add2\"],\n [\"1P 3M 5P 9m\", \"\", \"Maddb9\"],\n [\"1P 3M 5d\", \"\", \"Mb5\"],\n [\"1P 3M 5d 6M 7m 9M\", \"\", \"13b5\"],\n [\"1P 3M 5d 7M\", \"\", \"M7b5\"],\n [\"1P 3M 5d 7M 9M\", \"\", \"M9b5\"],\n [\"1P 3M 5d 7m\", \"\", \"7b5\"],\n [\"1P 3M 5d 7m 9M\", \"\", \"9b5\"],\n [\"1P 3M 7m\", \"\", \"7no5\"],\n [\"1P 3M 7m 13m\", \"\", \"7b13\"],\n [\"1P 3M 7m 9M\", \"\", \"9no5\"],\n [\"1P 3M 7m 9M 13M\", \"\", \"13no5\"],\n [\"1P 3M 7m 9M 13m\", \"\", \"9b13\"],\n [\"1P 3m 4P 5P\", \"\", \"madd4\"],\n [\"1P 3m 5P 6m 7M\", \"\", \"mMaj7b6\"],\n [\"1P 3m 5P 6m 7M 9M\", \"\", \"mMaj9b6\"],\n [\"1P 3m 5P 7m 11P\", \"\", \"m7add11 m7add4\"],\n [\"1P 3m 5P 9M\", \"\", \"madd9\"],\n [\"1P 3m 5d 6M 7M\", \"\", \"o7M7\"],\n [\"1P 3m 5d 7M\", \"\", \"oM7\"],\n [\"1P 3m 6m 7M\", \"\", \"mb6M7\"],\n [\"1P 3m 6m 7m\", \"\", \"m7#5\"],\n [\"1P 3m 6m 7m 9M\", \"\", \"m9#5\"],\n [\"1P 3m 5A 7m 9M 11P\", \"\", \"m11A\"],\n [\"1P 3m 6m 9m\", \"\", \"mb6b9\"],\n [\"1P 2M 3m 5d 7m\", \"\", \"m9b5\"],\n [\"1P 4P 5A 7M\", \"\", \"M7#5sus4\"],\n [\"1P 4P 5A 7M 9M\", \"\", \"M9#5sus4\"],\n [\"1P 4P 5A 7m\", \"\", \"7#5sus4\"],\n [\"1P 4P 5P 7M\", \"\", \"M7sus4\"],\n [\"1P 4P 5P 7M 9M\", \"\", \"M9sus4\"],\n [\"1P 4P 5P 7m 9M\", \"\", \"9sus4 9sus\"],\n [\"1P 4P 5P 7m 9M 13M\", \"\", \"13sus4 13sus\"],\n [\"1P 4P 5P 7m 9m 13m\", \"\", \"7sus4b9b13 7b9b13sus4\"],\n [\"1P 4P 7m 10m\", \"\", \"4 quartal\"],\n [\"1P 5P 7m 9m 11P\", \"\", \"11b9\"],\n];\n\nexport default CHORDS;\n", "import { all, ChordType } from \"@tonaljs/chord-type\";\nimport { modes } from \"@tonaljs/pcset\";\nimport { note } from \"@tonaljs/pitch-note\";\n\ninterface FoundChord {\n readonly weight: number;\n readonly name: string;\n}\n\nconst namedSet = (notes: string[]) => {\n const pcToName = notes.reduce>((record, n) => {\n const chroma = note(n).chroma;\n if (chroma !== undefined) {\n record[chroma] = record[chroma] || note(n).name;\n }\n return record;\n }, {});\n\n return (chroma: number) => pcToName[chroma];\n};\n\ntype DetectOptions = {\n assumePerfectFifth: boolean;\n};\nexport function detect(\n source: string[],\n options: Partial = {},\n): string[] {\n const notes = source.map((n) => note(n).pc).filter((x) => x);\n if (note.length === 0) {\n return [];\n }\n\n const found: FoundChord[] = findMatches(notes, 1, options);\n\n return found\n .filter((chord) => chord.weight)\n .sort((a, b) => b.weight - a.weight)\n .map((chord) => chord.name);\n}\n\n/* tslint:disable:no-bitwise */\nconst BITMASK = {\n // 3m 000100000000\n // 3M 000010000000\n anyThirds: 384,\n // 5P 000000010000\n perfectFifth: 16,\n // 5d 000000100000\n // 5A 000000001000\n nonPerfectFifths: 40,\n anySeventh: 3,\n};\n\nconst testChromaNumber = (bitmask: number) => (chromaNumber: number) =>\n Boolean(chromaNumber & bitmask);\nconst hasAnyThird = testChromaNumber(BITMASK.anyThirds);\nconst hasPerfectFifth = testChromaNumber(BITMASK.perfectFifth);\nconst hasAnySeventh = testChromaNumber(BITMASK.anySeventh);\nconst hasNonPerfectFifth = testChromaNumber(BITMASK.nonPerfectFifths);\n\nfunction hasAnyThirdAndPerfectFifthAndAnySeventh(chordType: ChordType) {\n const chromaNumber = parseInt(chordType.chroma, 2);\n return (\n hasAnyThird(chromaNumber) &&\n hasPerfectFifth(chromaNumber) &&\n hasAnySeventh(chromaNumber)\n );\n}\n\nfunction withPerfectFifth(chroma: string): string {\n const chromaNumber = parseInt(chroma, 2);\n return hasNonPerfectFifth(chromaNumber)\n ? chroma\n : (chromaNumber | 16).toString(2);\n}\n\n/* tslint:enable:no-bitwise */\n\ntype FindMatchesOptions = {\n assumePerfectFifth: boolean;\n};\nfunction findMatches(\n notes: string[],\n weight: number,\n options: Partial,\n): FoundChord[] {\n const tonic = notes[0];\n const tonicChroma = note(tonic).chroma;\n const noteName = namedSet(notes);\n // we need to test all chromas to get the correct baseNote\n const allModes = modes(notes, false);\n\n const found: FoundChord[] = [];\n allModes.forEach((mode, index) => {\n const modeWithPerfectFifth =\n options.assumePerfectFifth && withPerfectFifth(mode);\n // some chords could have the same chroma but different interval spelling\n const chordTypes = all().filter((chordType) => {\n if (\n options.assumePerfectFifth &&\n hasAnyThirdAndPerfectFifthAndAnySeventh(chordType)\n ) {\n return chordType.chroma === modeWithPerfectFifth;\n }\n return chordType.chroma === mode;\n });\n\n chordTypes.forEach((chordType) => {\n const chordName = chordType.aliases[0];\n const baseNote = noteName(index);\n const isInversion = index !== tonicChroma;\n if (isInversion) {\n found.push({\n weight: 0.5 * weight,\n name: `${baseNote}${chordName}/${tonic}`,\n });\n } else {\n found.push({ weight: 1 * weight, name: `${baseNote}${chordName}` });\n }\n });\n });\n\n return found;\n}\n\n/** @deprecated */\nexport default { detect };\n", "import { IntervalCoordinates, NoteCoordinates } from \"@tonaljs/pitch\";\nimport { distance as dist } from \"@tonaljs/pitch-distance\";\nimport {\n IntervalName,\n coordToInterval,\n interval as props,\n} from \"@tonaljs/pitch-interval\";\n\n/**\n * Get the natural list of names\n */\nexport function names(): IntervalName[] {\n return \"1P 2M 3M 4P 5P 6m 7m\".split(\" \");\n}\n\n/**\n * Get properties of an interval\n *\n * @function\n * @example\n * Interval.get('P4') // => {\"alt\": 0, \"dir\": 1, \"name\": \"4P\", \"num\": 4, \"oct\": 0, \"q\": \"P\", \"semitones\": 5, \"simple\": 4, \"step\": 3, \"type\": \"perfectable\"}\n */\nexport const get = props;\n\n/**\n * Get name of an interval\n *\n * @function\n * @example\n * Interval.name('4P') // => \"4P\"\n * Interval.name('P4') // => \"4P\"\n * Interval.name('C4') // => \"\"\n */\nexport const name = (name: string) => props(name).name;\n\n/**\n * Get semitones of an interval\n * @function\n * @example\n * Interval.semitones('P4') // => 5\n */\nexport const semitones = (name: string) => props(name).semitones;\n\n/**\n * Get quality of an interval\n * @function\n * @example\n * Interval.quality('P4') // => \"P\"\n */\nexport const quality = (name: string) => props(name).q;\n\n/**\n * Get number of an interval\n * @function\n * @example\n * Interval.num('P4') // => 4\n */\nexport const num = (name: string) => props(name).num;\n\n/**\n * Get the simplified version of an interval.\n *\n * @function\n * @param {string} interval - the interval to simplify\n * @return {string} the simplified interval\n *\n * @example\n * Interval.simplify(\"9M\") // => \"2M\"\n * Interval.simplify(\"2M\") // => \"2M\"\n * Interval.simplify(\"-2M\") // => \"7m\"\n * [\"8P\", \"9M\", \"10M\", \"11P\", \"12P\", \"13M\", \"14M\", \"15P\"].map(Interval.simplify)\n * // => [ \"8P\", \"2M\", \"3M\", \"4P\", \"5P\", \"6M\", \"7M\", \"8P\" ]\n */\nexport function simplify(name: IntervalName): IntervalName {\n const i = props(name);\n return i.empty ? \"\" : i.simple + i.q;\n}\n\n/**\n * Get the inversion (https://en.wikipedia.org/wiki/Inversion_(music)#Intervals)\n * of an interval.\n *\n * @function\n * @param {string} interval - the interval to invert in interval shorthand\n * notation or interval array notation\n * @return {string} the inverted interval\n *\n * @example\n * Interval.invert(\"3m\") // => \"6M\"\n * Interval.invert(\"2M\") // => \"7m\"\n */\nexport function invert(name: IntervalName): IntervalName {\n const i = props(name);\n if (i.empty) {\n return \"\";\n }\n const step = (7 - i.step) % 7;\n const alt = i.type === \"perfectable\" ? -i.alt : -(i.alt + 1);\n return props({ step, alt, oct: i.oct, dir: i.dir }).name;\n}\n\n// interval numbers\nconst IN = [1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7];\n// interval qualities\nconst IQ = \"P m M m M P d P m M m M\".split(\" \");\n\n/**\n * Get interval name from semitones number. Since there are several interval\n * names for the same number, the name it's arbitrary, but deterministic.\n *\n * @param {Integer} num - the number of semitones (can be negative)\n * @return {string} the interval name\n * @example\n * Interval.fromSemitones(7) // => \"5P\"\n * Interval.fromSemitones(-7) // => \"-5P\"\n */\nexport function fromSemitones(semitones: number): IntervalName {\n const d = semitones < 0 ? -1 : 1;\n const n = Math.abs(semitones);\n const c = n % 12;\n const o = Math.floor(n / 12);\n return d * (IN[c] + 7 * o) + IQ[c];\n}\n\n/**\n * Find interval between two notes\n *\n * @example\n * Interval.distance(\"C4\", \"G4\"); // => \"5P\"\n */\nexport const distance = dist;\n\n/**\n * Adds two intervals\n *\n * @function\n * @param {string} interval1\n * @param {string} interval2\n * @return {string} the added interval name\n * @example\n * Interval.add(\"3m\", \"5P\") // => \"7m\"\n */\nexport const add = combinator((a, b) => [a[0] + b[0], a[1] + b[1]]);\n\n/**\n * Returns a function that adds an interval\n *\n * @function\n * @example\n * ['1P', '2M', '3M'].map(Interval.addTo('5P')) // => [\"5P\", \"6M\", \"7M\"]\n */\nexport const addTo = (interval: string) => (other: string) =>\n add(interval, other);\n\n/**\n * Subtracts two intervals\n *\n * @function\n * @param {string} minuendInterval\n * @param {string} subtrahendInterval\n * @return {string} the subtracted interval name\n * @example\n * Interval.subtract('5P', '3M') // => '3m'\n * Interval.subtract('3M', '5P') // => '-3m'\n */\nexport const subtract = combinator((a, b) => [a[0] - b[0], a[1] - b[1]]);\n\nexport function transposeFifths(\n interval: IntervalName,\n fifths: number,\n): IntervalName {\n const ivl = get(interval);\n if (ivl.empty) return \"\";\n\n const [nFifths, nOcts, dir] = ivl.coord;\n return coordToInterval([nFifths + fifths, nOcts, dir]).name;\n}\n\n/** @deprecated */\nexport default {\n names,\n get,\n name,\n num,\n semitones,\n quality,\n fromSemitones,\n distance,\n invert,\n simplify,\n add,\n addTo,\n subtract,\n transposeFifths,\n};\n\n//// PRIVATE ////\n\ntype Operation = (\n a: IntervalCoordinates,\n b: IntervalCoordinates,\n) => NoteCoordinates;\n\nfunction combinator(fn: Operation) {\n return (a: IntervalName, b: IntervalName): IntervalName | undefined => {\n const coordA = props(a).coord;\n const coordB = props(b).coord;\n if (coordA && coordB) {\n const coord = fn(coordA, coordB);\n return coordToInterval(coord).name;\n }\n };\n}\n", "import {\n EmptyPcset,\n get as pcset,\n Pcset,\n PcsetChroma,\n PcsetNum,\n} from \"@tonaljs/pcset\";\nimport data from \"./data\";\n\n/**\n * Properties for a scale in the scale dictionary. It's a pitch class set\n * properties with the following additional information:\n * - name: the scale name\n * - aliases: alternative list of names\n * - intervals: an array of interval names\n */\nexport interface ScaleType extends Pcset {\n readonly name: string;\n readonly aliases: string[];\n}\n\nexport const NoScaleType: ScaleType = {\n ...EmptyPcset,\n intervals: [],\n aliases: [],\n};\n\ntype ScaleTypeName = string | PcsetChroma | PcsetNum;\n\nlet dictionary: ScaleType[] = [];\nlet index: Record = {};\n\nexport function names() {\n return dictionary.map((scale) => scale.name);\n}\n\n/**\n * Given a scale name or chroma, return the scale properties\n *\n * @param {string} type - scale name or pitch class set chroma\n * @example\n * import { get } from 'tonaljs/scale-type'\n * get('major') // => { name: 'major', ... }\n */\nexport function get(type: ScaleTypeName): ScaleType {\n return index[type] || NoScaleType;\n}\n\n/**\n * @deprecated\n * @use ScaleType.get\n */\nexport const scaleType = get;\n\n/**\n * Return a list of all scale types\n */\nexport function all() {\n return dictionary.slice();\n}\n\n/**\n * @deprecated\n * @use ScaleType.all\n */\nexport const entries = all;\n\n/**\n * Keys used to reference scale types\n */\nexport function keys() {\n return Object.keys(index);\n}\n\n/**\n * Clear the dictionary\n */\nexport function removeAll() {\n dictionary = [];\n index = {};\n}\n\n/**\n * Add a scale into dictionary\n * @param intervals\n * @param name\n * @param aliases\n */\nexport function add(\n intervals: string[],\n name: string,\n aliases: string[] = [],\n): ScaleType {\n const scale = { ...pcset(intervals), name, intervals, aliases };\n dictionary.push(scale);\n index[scale.name] = scale;\n index[scale.setNum] = scale;\n index[scale.chroma] = scale;\n scale.aliases.forEach((alias) => addAlias(scale, alias));\n return scale;\n}\n\nexport function addAlias(scale: ScaleType, alias: string) {\n index[alias] = scale;\n}\n\ndata.forEach(([ivls, name, ...aliases]: string[]) =>\n add(ivls.split(\" \"), name, aliases),\n);\n\n/** @deprecated */\nexport default {\n names,\n get,\n all,\n add,\n removeAll,\n keys,\n\n // deprecated\n entries,\n scaleType,\n};\n", "// SCALES\n// Format: [\"intervals\", \"name\", \"alias1\", \"alias2\", ...]\nconst SCALES: string[][] = [\n // Basic scales\n [\"1P 2M 3M 5P 6M\", \"major pentatonic\", \"pentatonic\"],\n [\"1P 2M 3M 4P 5P 6M 7M\", \"major\", \"ionian\"],\n [\"1P 2M 3m 4P 5P 6m 7m\", \"minor\", \"aeolian\"],\n\n // Jazz common scales\n [\"1P 2M 3m 3M 5P 6M\", \"major blues\"],\n [\"1P 3m 4P 5d 5P 7m\", \"minor blues\", \"blues\"],\n [\"1P 2M 3m 4P 5P 6M 7M\", \"melodic minor\"],\n [\"1P 2M 3m 4P 5P 6m 7M\", \"harmonic minor\"],\n [\"1P 2M 3M 4P 5P 6M 7m 7M\", \"bebop\"],\n [\"1P 2M 3m 4P 5d 6m 6M 7M\", \"diminished\", \"whole-half diminished\"],\n\n // Modes\n [\"1P 2M 3m 4P 5P 6M 7m\", \"dorian\"],\n [\"1P 2M 3M 4A 5P 6M 7M\", \"lydian\"],\n [\"1P 2M 3M 4P 5P 6M 7m\", \"mixolydian\", \"dominant\"],\n [\"1P 2m 3m 4P 5P 6m 7m\", \"phrygian\"],\n [\"1P 2m 3m 4P 5d 6m 7m\", \"locrian\"],\n\n // 5-note scales\n [\"1P 3M 4P 5P 7M\", \"ionian pentatonic\"],\n [\"1P 3M 4P 5P 7m\", \"mixolydian pentatonic\", \"indian\"],\n [\"1P 2M 4P 5P 6M\", \"ritusen\"],\n [\"1P 2M 4P 5P 7m\", \"egyptian\"],\n [\"1P 3M 4P 5d 7m\", \"neopolitan major pentatonic\"],\n [\"1P 3m 4P 5P 6m\", \"vietnamese 1\"],\n [\"1P 2m 3m 5P 6m\", \"pelog\"],\n [\"1P 2m 4P 5P 6m\", \"kumoijoshi\"],\n [\"1P 2M 3m 5P 6m\", \"hirajoshi\"],\n [\"1P 2m 4P 5d 7m\", \"iwato\"],\n [\"1P 2m 4P 5P 7m\", \"in-sen\"],\n [\"1P 3M 4A 5P 7M\", \"lydian pentatonic\", \"chinese\"],\n [\"1P 3m 4P 6m 7m\", \"malkos raga\"],\n [\"1P 3m 4P 5d 7m\", \"locrian pentatonic\", \"minor seven flat five pentatonic\"],\n [\"1P 3m 4P 5P 7m\", \"minor pentatonic\", \"vietnamese 2\"],\n [\"1P 3m 4P 5P 6M\", \"minor six pentatonic\"],\n [\"1P 2M 3m 5P 6M\", \"flat three pentatonic\", \"kumoi\"],\n [\"1P 2M 3M 5P 6m\", \"flat six pentatonic\"],\n [\"1P 2m 3M 5P 6M\", \"scriabin\"],\n [\"1P 3M 5d 6m 7m\", \"whole tone pentatonic\"],\n [\"1P 3M 4A 5A 7M\", \"lydian #5P pentatonic\"],\n [\"1P 3M 4A 5P 7m\", \"lydian dominant pentatonic\"],\n [\"1P 3m 4P 5P 7M\", \"minor #7M pentatonic\"],\n [\"1P 3m 4d 5d 7m\", \"super locrian pentatonic\"],\n\n // 6-note scales\n [\"1P 2M 3m 4P 5P 7M\", \"minor hexatonic\"],\n [\"1P 2A 3M 5P 5A 7M\", \"augmented\"],\n [\"1P 2M 4P 5P 6M 7m\", \"piongio\"],\n [\"1P 2m 3M 4A 6M 7m\", \"prometheus neopolitan\"],\n [\"1P 2M 3M 4A 6M 7m\", \"prometheus\"],\n [\"1P 2m 3M 5d 6m 7m\", \"mystery #1\"],\n [\"1P 2m 3M 4P 5A 6M\", \"six tone symmetric\"],\n [\"1P 2M 3M 4A 5A 6A\", \"whole tone\", \"messiaen's mode #1\"],\n [\"1P 2m 4P 4A 5P 7M\", \"messiaen's mode #5\"],\n\n // 7-note scales\n [\"1P 2M 3M 4P 5d 6m 7m\", \"locrian major\", \"arabian\"],\n [\"1P 2m 3M 4A 5P 6m 7M\", \"double harmonic lydian\"],\n [\n \"1P 2m 2A 3M 4A 6m 7m\",\n \"altered\",\n \"super locrian\",\n \"diminished whole tone\",\n \"pomeroy\",\n ],\n [\"1P 2M 3m 4P 5d 6m 7m\", \"locrian #2\", \"half-diminished\", \"aeolian b5\"],\n [\n \"1P 2M 3M 4P 5P 6m 7m\",\n \"mixolydian b6\",\n \"melodic minor fifth mode\",\n \"hindu\",\n ],\n [\"1P 2M 3M 4A 5P 6M 7m\", \"lydian dominant\", \"lydian b7\", \"overtone\"],\n [\"1P 2M 3M 4A 5A 6M 7M\", \"lydian augmented\"],\n [\n \"1P 2m 3m 4P 5P 6M 7m\",\n \"dorian b2\",\n \"phrygian #6\",\n \"melodic minor second mode\",\n ],\n [\n \"1P 2m 3m 4d 5d 6m 7d\",\n \"ultralocrian\",\n \"superlocrian bb7\",\n \"superlocrian diminished\",\n ],\n [\"1P 2m 3m 4P 5d 6M 7m\", \"locrian 6\", \"locrian natural 6\", \"locrian sharp 6\"],\n [\"1P 2A 3M 4P 5P 5A 7M\", \"augmented heptatonic\"],\n // Source https://en.wikipedia.org/wiki/Ukrainian_Dorian_scale\n [\n \"1P 2M 3m 4A 5P 6M 7m\",\n \"dorian #4\",\n \"ukrainian dorian\",\n \"romanian minor\",\n \"altered dorian\",\n ],\n [\"1P 2M 3m 4A 5P 6M 7M\", \"lydian diminished\"],\n [\"1P 2M 3M 4A 5A 7m 7M\", \"leading whole tone\"],\n [\"1P 2M 3M 4A 5P 6m 7m\", \"lydian minor\"],\n [\"1P 2m 3M 4P 5P 6m 7m\", \"phrygian dominant\", \"spanish\", \"phrygian major\"],\n [\"1P 2m 3m 4P 5P 6m 7M\", \"balinese\"],\n [\"1P 2m 3m 4P 5P 6M 7M\", \"neopolitan major\"],\n [\"1P 2M 3M 4P 5P 6m 7M\", \"harmonic major\"],\n [\"1P 2m 3M 4P 5P 6m 7M\", \"double harmonic major\", \"gypsy\"],\n [\"1P 2M 3m 4A 5P 6m 7M\", \"hungarian minor\"],\n [\"1P 2A 3M 4A 5P 6M 7m\", \"hungarian major\"],\n [\"1P 2m 3M 4P 5d 6M 7m\", \"oriental\"],\n [\"1P 2m 3m 3M 4A 5P 7m\", \"flamenco\"],\n [\"1P 2m 3m 4A 5P 6m 7M\", \"todi raga\"],\n [\"1P 2m 3M 4P 5d 6m 7M\", \"persian\"],\n [\"1P 2m 3M 5d 6m 7m 7M\", \"enigmatic\"],\n [\n \"1P 2M 3M 4P 5A 6M 7M\",\n \"major augmented\",\n \"major #5\",\n \"ionian augmented\",\n \"ionian #5\",\n ],\n [\"1P 2A 3M 4A 5P 6M 7M\", \"lydian #9\"],\n\n // 8-note scales\n [\"1P 2m 2M 4P 4A 5P 6m 7M\", \"messiaen's mode #4\"],\n [\"1P 2m 3M 4P 4A 5P 6m 7M\", \"purvi raga\"],\n [\"1P 2m 3m 3M 4P 5P 6m 7m\", \"spanish heptatonic\"],\n [\"1P 2M 3m 3M 4P 5P 6M 7m\", \"bebop minor\"],\n [\"1P 2M 3M 4P 5P 5A 6M 7M\", \"bebop major\"],\n [\"1P 2m 3m 4P 5d 5P 6m 7m\", \"bebop locrian\"],\n [\"1P 2M 3m 4P 5P 6m 7m 7M\", \"minor bebop\"],\n [\"1P 2M 3M 4P 5d 5P 6M 7M\", \"ichikosucho\"],\n [\"1P 2M 3m 4P 5P 6m 6M 7M\", \"minor six diminished\"],\n [\n \"1P 2m 3m 3M 4A 5P 6M 7m\",\n \"half-whole diminished\",\n \"dominant diminished\",\n \"messiaen's mode #2\",\n ],\n [\"1P 3m 3M 4P 5P 6M 7m 7M\", \"kafi raga\"],\n [\"1P 2M 3M 4P 4A 5A 6A 7M\", \"messiaen's mode #6\"],\n\n // 9-note scales\n [\"1P 2M 3m 3M 4P 5d 5P 6M 7m\", \"composite blues\"],\n [\"1P 2M 3m 3M 4A 5P 6m 7m 7M\", \"messiaen's mode #3\"],\n\n // 10-note scales\n [\"1P 2m 2M 3m 4P 4A 5P 6m 6M 7M\", \"messiaen's mode #7\"],\n\n // 12-note scales\n [\"1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M\", \"chromatic\"],\n];\n\nexport default SCALES;\n", "import { detect } from \"@tonaljs/chord-detect\";\nimport {\n ChordType,\n all as chordTypes,\n get as getChordType,\n} from \"@tonaljs/chord-type\";\nimport { subtract } from \"@tonaljs/interval\";\nimport { isSubsetOf, isSupersetOf } from \"@tonaljs/pcset\";\nimport {\n distance,\n tonicIntervalsTransposer,\n transpose as transposeNote,\n} from \"@tonaljs/pitch-distance\";\nimport { NoteName, note, tokenizeNote } from \"@tonaljs/pitch-note\";\nimport { all as scaleTypes } from \"@tonaljs/scale-type\";\n\nexport { detect } from \"@tonaljs/chord-detect\";\n\ntype ChordNameOrTokens =\n | string // full name to be parsed\n | [string] // only the name\n | [string, string] // tonic, name\n | [string, string, string]; // tonic, name, bass\ntype ChordNameTokens = [string, string, string]; // [TONIC, SCALE TYPE, BASS]\n\nexport interface Chord extends ChordType {\n tonic: string | null;\n type: string;\n root: string;\n bass: string;\n rootDegree: number;\n symbol: string;\n notes: NoteName[];\n}\n\nconst NoChord: Chord = {\n empty: true,\n name: \"\",\n symbol: \"\",\n root: \"\",\n bass: \"\",\n rootDegree: 0,\n type: \"\",\n tonic: null,\n setNum: NaN,\n quality: \"Unknown\",\n chroma: \"\",\n normalized: \"\",\n aliases: [],\n notes: [],\n intervals: [],\n};\n\n// 6, 64, 7, 9, 11 and 13 are consider part of the chord\n// (see https://github.com/danigb/tonal/issues/55)\n//const NUM_TYPES = /^(6|64|7|9|11|13)$/;\n/**\n * Tokenize a chord name. It returns an array with the tonic, chord type and bass\n * If not tonic is found, all the name is considered the chord name.\n *\n * This function does NOT check if the chord type exists or not. It only tries\n * to split the tonic and chord type.\n *\n * This function does NOT check if the bass is part of the chord or not but it\n * only accepts a pitch class as bass\n *\n * @function\n * @param {string} name - the chord name\n * @return {Array} an array with [tonic, type, bass]\n * @example\n * tokenize(\"Cmaj7\") // => [ \"C\", \"maj7\" ]\n * tokenize(\"C7\") // => [ \"C\", \"7\" ]\n * tokenize(\"mMaj7\") // => [ null, \"mMaj7\" ]\n * tokenize(\"Cnonsense\") // => [ null, \"nonsense\" ]\n */\nexport function tokenize(name: string): ChordNameTokens {\n const [letter, acc, oct, type] = tokenizeNote(name);\n if (letter === \"\") {\n return tokenizeBass(\"\", name);\n } else if (letter === \"A\" && type === \"ug\") {\n return tokenizeBass(\"\", \"aug\");\n } else {\n return tokenizeBass(letter + acc, oct + type);\n }\n}\n\nfunction tokenizeBass(note: string, chord: string): ChordNameTokens {\n const split = chord.split(\"/\");\n if (split.length === 1) {\n return [note, split[0], \"\"];\n }\n const [letter, acc, oct, type] = tokenizeNote(split[1]);\n // Only a pitch class is accepted as bass note\n if (letter !== \"\" && oct === \"\" && type === \"\") {\n return [note, split[0], letter + acc];\n } else {\n return [note, chord, \"\"];\n }\n}\n\n/**\n * Get a Chord from a chord name.\n */\nexport function get(src: ChordNameOrTokens): Chord {\n if (Array.isArray(src)) {\n return getChord(src[1] || \"\", src[0], src[2]);\n } else if (src === \"\") {\n return NoChord;\n } else {\n const [tonic, type, bass] = tokenize(src);\n const chord = getChord(type, tonic, bass);\n return chord.empty ? getChord(src) : chord;\n }\n}\n\n/**\n * Get chord properties\n *\n * @param typeName - the chord type name\n * @param [tonic] - Optional tonic\n * @param [root] - Optional root (requires a tonic)\n */\nexport function getChord(\n typeName: string,\n optionalTonic?: string,\n optionalBass?: string,\n): Chord {\n const type = getChordType(typeName);\n const tonic = note(optionalTonic || \"\");\n const bass = note(optionalBass || \"\");\n\n if (\n type.empty ||\n (optionalTonic && tonic.empty) ||\n (optionalBass && bass.empty)\n ) {\n return NoChord;\n }\n\n const bassInterval = distance(tonic.pc, bass.pc);\n const bassIndex = type.intervals.indexOf(bassInterval);\n const hasRoot = bassIndex >= 0;\n const root = hasRoot ? bass : note(\"\");\n const rootDegree = bassIndex === -1 ? NaN : bassIndex + 1;\n const hasBass = bass.pc && bass.pc !== tonic.pc;\n\n const intervals = Array.from(type.intervals);\n\n if (hasRoot) {\n for (let i = 1; i < rootDegree; i++) {\n const num = intervals[0][0];\n const quality = intervals[0][1];\n const newNum = parseInt(num, 10) + 7;\n intervals.push(`${newNum}${quality}`);\n intervals.shift();\n }\n } else if (hasBass) {\n const ivl = subtract(distance(tonic.pc, bass.pc), \"8P\");\n if (ivl) intervals.unshift(ivl);\n }\n\n const notes = tonic.empty\n ? []\n : intervals.map((i) => transposeNote(tonic.pc, i));\n\n typeName = type.aliases.indexOf(typeName) !== -1 ? typeName : type.aliases[0];\n const symbol = `${tonic.empty ? \"\" : tonic.pc}${typeName}${\n hasRoot && rootDegree > 1 ? \"/\" + root.pc : hasBass ? \"/\" + bass.pc : \"\"\n }`;\n const name = `${optionalTonic ? tonic.pc + \" \" : \"\"}${type.name}${\n hasRoot && rootDegree > 1\n ? \" over \" + root.pc\n : hasBass\n ? \" over \" + bass.pc\n : \"\"\n }`;\n return {\n ...type,\n name,\n symbol,\n tonic: tonic.pc,\n type: type.name,\n root: root.pc,\n bass: hasBass ? bass.pc : \"\",\n intervals,\n rootDegree,\n notes,\n };\n}\n\nexport const chord = get;\n\n/**\n * Transpose a chord name\n *\n * @param {string} chordName - the chord name\n * @return {string} the transposed chord\n *\n * @example\n * transpose('Dm7', 'P4') // => 'Gm7\n */\nexport function transpose(chordName: string, interval: string): string {\n const [tonic, type, bass] = tokenize(chordName);\n if (!tonic) {\n return chordName;\n }\n const tr = transposeNote(bass, interval);\n const slash = tr ? \"/\" + tr : \"\";\n return transposeNote(tonic, interval) + type + slash;\n}\n\n/**\n * Get all scales where the given chord fits\n *\n * @example\n * chordScales('C7b9')\n * // => [\"phrygian dominant\", \"flamenco\", \"spanish heptatonic\", \"half-whole diminished\", \"chromatic\"]\n */\nexport function chordScales(name: string): string[] {\n const s = get(name);\n const isChordIncluded = isSupersetOf(s.chroma);\n return scaleTypes()\n .filter((scale) => isChordIncluded(scale.chroma))\n .map((scale) => scale.name);\n}\n/**\n * Get all chords names that are a superset of the given one\n * (has the same notes and at least one more)\n *\n * @function\n * @example\n * extended(\"CMaj7\")\n * // => [ 'Cmaj#4', 'Cmaj7#9#11', 'Cmaj9', 'CM7add13', 'Cmaj13', 'Cmaj9#11', 'CM13#11', 'CM7b9' ]\n */\nexport function extended(chordName: string): string[] {\n const s = get(chordName);\n const isSuperset = isSupersetOf(s.chroma);\n return chordTypes()\n .filter((chord) => isSuperset(chord.chroma))\n .map((chord) => s.tonic + chord.aliases[0]);\n}\n\n/**\n * Find all chords names that are a subset of the given one\n * (has less notes but all from the given chord)\n *\n * @example\n */\nexport function reduced(chordName: string): string[] {\n const s = get(chordName);\n const isSubset = isSubsetOf(s.chroma);\n return chordTypes()\n .filter((chord) => isSubset(chord.chroma))\n .map((chord) => s.tonic + chord.aliases[0]);\n}\n\n/**\n * Return the chord notes\n */\nexport function notes(chordName: ChordNameOrTokens, tonic?: string): string[] {\n const chord = get(chordName);\n const note = tonic || chord.tonic;\n if (!note || chord.empty) return [];\n return chord.intervals.map((ivl) => transposeNote(note, ivl));\n}\n\n/**\n * Returns a function to get a note name from the scale degree.\n *\n * @example\n * [1, 2, 3, 4].map(Chord.degrees(\"C\")) => [\"C\", \"E\", \"G\", \"C\"]\n * [1, 2, 3, 4].map(Chord.degrees(\"C4\")) => [\"C4\", \"E4\", \"G4\", \"C5\"]\n */\nexport function degrees(chordName: ChordNameOrTokens, tonic?: string) {\n const chord = get(chordName);\n const note = tonic || chord.tonic;\n const transpose = tonicIntervalsTransposer(chord.intervals, note);\n return (degree: number) =>\n degree ? transpose(degree > 0 ? degree - 1 : degree) : \"\";\n}\n\n/**\n * Sames as `degree` but with 0-based index\n */\nexport function steps(chordName: ChordNameOrTokens, tonic?: string) {\n const chord = get(chordName);\n const note = tonic || chord.tonic;\n return tonicIntervalsTransposer(chord.intervals, note);\n}\n\n/** @deprecated */\nexport default {\n getChord,\n get,\n detect,\n chordScales,\n extended,\n reduced,\n tokenize,\n transpose,\n degrees,\n steps,\n notes,\n chord,\n};\n", "// source: https://en.wikipedia.org/wiki/Note_value\nconst DATA: [number, string, string[]][] = [\n [\n 0.125,\n \"dl\",\n [\"large\", \"duplex longa\", \"maxima\", \"octuple\", \"octuple whole\"],\n ],\n [0.25, \"l\", [\"long\", \"longa\"]],\n [0.5, \"d\", [\"double whole\", \"double\", \"breve\"]],\n [1, \"w\", [\"whole\", \"semibreve\"]],\n [2, \"h\", [\"half\", \"minim\"]],\n [4, \"q\", [\"quarter\", \"crotchet\"]],\n [8, \"e\", [\"eighth\", \"quaver\"]],\n [16, \"s\", [\"sixteenth\", \"semiquaver\"]],\n [32, \"t\", [\"thirty-second\", \"demisemiquaver\"]],\n [64, \"sf\", [\"sixty-fourth\", \"hemidemisemiquaver\"]],\n [128, \"h\", [\"hundred twenty-eighth\"]],\n [256, \"th\", [\"two hundred fifty-sixth\"]],\n];\n\nexport default DATA;\n", "import DATA from \"./data\";\n\ntype Fraction = [number, number];\n\nconst VALUES: DurationValue[] = [];\n\nDATA.forEach(([denominator, shorthand, names]) =>\n add(denominator, shorthand, names),\n);\n\nexport interface DurationValue {\n empty: boolean;\n value: number;\n name: string;\n fraction: Fraction;\n shorthand: string;\n dots: string;\n names: string[];\n}\n\nconst NoDuration: DurationValue = {\n empty: true,\n name: \"\",\n value: 0,\n fraction: [0, 0],\n shorthand: \"\",\n dots: \"\",\n names: [],\n};\n\nexport function names(): string[] {\n return VALUES.reduce((names, duration) => {\n duration.names.forEach((name) => names.push(name));\n return names;\n }, [] as string[]);\n}\n\nexport function shorthands(): string[] {\n return VALUES.map((dur) => dur.shorthand);\n}\n\nconst REGEX = /^([^.]+)(\\.*)$/;\n\nexport function get(name: string): DurationValue {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, simple, dots] = REGEX.exec(name) || [];\n const base = VALUES.find(\n (dur) => dur.shorthand === simple || dur.names.includes(simple),\n );\n if (!base) {\n return NoDuration;\n }\n\n const fraction = calcDots(base.fraction, dots.length);\n const value = fraction[0] / fraction[1];\n\n return { ...base, name, dots, value, fraction };\n}\n\nexport const value = (name: string) => get(name).value;\nexport const fraction = (name: string) => get(name).fraction;\n\n/** @deprecated */\nexport default { names, shorthands, get, value, fraction };\n\n//// PRIVATE ////\n\nfunction add(denominator: number, shorthand: string, names: string[]) {\n VALUES.push({\n empty: false,\n dots: \"\",\n name: \"\",\n value: 1 / denominator,\n fraction: denominator < 1 ? [1 / denominator, 1] : [1, denominator],\n shorthand,\n names,\n });\n}\n\nfunction calcDots(fraction: Fraction, dots: number): Fraction {\n const pow = Math.pow(2, dots);\n\n let numerator = fraction[0] * pow;\n let denominator = fraction[1] * pow;\n const base = numerator;\n\n // add fractions\n for (let i = 0; i < dots; i++) {\n numerator += base / Math.pow(2, i + 1);\n }\n\n // simplify\n while (numerator % 2 === 0 && denominator % 2 === 0) {\n numerator /= 2;\n denominator /= 2;\n }\n return [numerator, denominator];\n}\n", "import { NoteName, note as props } from \"@tonaljs/pitch-note\";\n\ntype Midi = number;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isMidi(arg: any): arg is Midi {\n return +arg >= 0 && +arg <= 127;\n}\n\n/**\n * Get the note midi number (a number between 0 and 127)\n *\n * It returns undefined if not valid note name\n *\n * @function\n * @param {string|number} note - the note name or midi number\n * @return {Integer} the midi number or undefined if not valid note\n * @example\n * import { toMidi } from '@tonaljs/midi'\n * toMidi(\"C4\") // => 60\n * toMidi(60) // => 60\n * toMidi('60') // => 60\n */\nexport function toMidi(note: NoteName | number): number | null {\n if (isMidi(note)) {\n return +note;\n }\n const n = props(note);\n return n.empty ? null : n.midi;\n}\n\n/**\n * Get the frequency in hertz from midi number\n *\n * @param {number} midi - the note midi number\n * @param {number} [tuning = 440] - A4 tuning frequency in Hz (440 by default)\n * @return {number} the frequency or null if not valid note midi\n * @example\n * import { midiToFreq} from '@tonaljs/midi'\n * midiToFreq(69) // => 440\n */\nexport function midiToFreq(midi: number, tuning = 440): number {\n return Math.pow(2, (midi - 69) / 12) * tuning;\n}\n\nconst L2 = Math.log(2);\nconst L440 = Math.log(440);\n\n/**\n * Get the midi number from a frequency in hertz. The midi number can\n * contain decimals (with two digits precision)\n *\n * @param {number} frequency\n * @return {number}\n * @example\n * import { freqToMidi} from '@tonaljs/midi'\n * freqToMidi(220)); //=> 57\n * freqToMidi(261.62)); //=> 60\n * freqToMidi(261)); //=> 59.96\n */\nexport function freqToMidi(freq: number): number {\n const v = (12 * (Math.log(freq) - L440)) / L2 + 69;\n return Math.round(v * 100) / 100;\n}\n\nexport interface ToNoteNameOptions {\n pitchClass?: boolean;\n sharps?: boolean;\n}\n\nconst SHARPS = \"C C# D D# E F F# G G# A A# B\".split(\" \");\nconst FLATS = \"C Db D Eb E F Gb G Ab A Bb B\".split(\" \");\n/**\n * Given a midi number, returns a note name. The altered notes will have\n * flats unless explicitly set with the optional `useSharps` parameter.\n *\n * @function\n * @param {number} midi - the midi note number\n * @param {Object} options = default: `{ sharps: false, pitchClass: false }`\n * @param {boolean} useSharps - (Optional) set to true to use sharps instead of flats\n * @return {string} the note name\n * @example\n * import { midiToNoteName } from '@tonaljs/midi'\n * midiToNoteName(61) // => \"Db4\"\n * midiToNoteName(61, { pitchClass: true }) // => \"Db\"\n * midiToNoteName(61, { sharps: true }) // => \"C#4\"\n * midiToNoteName(61, { pitchClass: true, sharps: true }) // => \"C#\"\n * // it rounds to nearest note\n * midiToNoteName(61.7) // => \"D4\"\n */\nexport function midiToNoteName(midi: number, options: ToNoteNameOptions = {}) {\n if (isNaN(midi) || midi === -Infinity || midi === Infinity) return \"\";\n midi = Math.round(midi);\n const pcs = options.sharps === true ? SHARPS : FLATS;\n const pc = pcs[midi % 12];\n if (options.pitchClass) {\n return pc;\n }\n const o = Math.floor(midi / 12) - 1;\n return pc + o;\n}\n\nexport function chroma(midi: number): number {\n return midi % 12;\n}\n\nfunction pcsetFromChroma(chroma: string): number[] {\n return chroma.split(\"\").reduce((pcset, val, index) => {\n if (index < 12 && val === \"1\") pcset.push(index);\n return pcset;\n }, [] as number[]);\n}\n\nfunction pcsetFromMidi(midi: number[]): number[] {\n return midi\n .map(chroma)\n .sort((a, b) => a - b)\n .filter((n, i, a) => i === 0 || n !== a[i - 1]);\n}\n\n/**\n * Given a list of midi numbers, returns the pitch class set (unique chroma numbers)\n * @param midi\n * @example\n *\n */\nexport function pcset(notes: number[] | string): number[] {\n return Array.isArray(notes) ? pcsetFromMidi(notes) : pcsetFromChroma(notes);\n}\n\n/**\n * Returns a function that finds the nearest midi note of a pitch class set.\n * Can be used to constrain a note to a scale.\n * @param notes - a list of midi numbers or a chroma string (e.g. \"100100100101\")\n * @example\n * const nearest = Midi.pcsetNearest(Scale.get(\"D dorian\").chroma);\n * [60, 61, 62, 63, 64, 65, 66].map(nearest); // => [60, 62, 62, 63, 65, 65, 67]\n */\nexport function pcsetNearest(notes: number[] | string) {\n const set = pcset(notes);\n return (midi: number): number | undefined => {\n const ch = chroma(midi);\n for (let i = 0; i < 12; i++) {\n const chUp = (ch + i) % 12;\n const chDown = (ch - i + 12) % 12;\n if (set.includes(chUp)) return midi + i;\n if (set.includes(chDown)) return midi - i;\n }\n return undefined;\n };\n}\n\n/**\n * Returns a function to map a pitch class set over any note.\n * Given a tonic a pitch class set, step 0 means the first note, step 1 the second, and so on.\n * @example\n * const steps = Midi.pcsetSteps(Scale.get(\"D dorian\").chroma, 60);\n * [-2, -1, 0, 1, 2, 3].map(steps); // => [ 57, 58, 60, 62, 63, 65 ]\n */\nexport function pcsetSteps(notes: number[] | string, tonic: number) {\n const set = pcset(notes);\n const len = set.length;\n return (step: number): number => {\n const index = step < 0 ? (len - (-step % len)) % len : step % len;\n const octaves = Math.floor(step / len);\n return set[index] + octaves * 12 + tonic;\n };\n}\n\n/**\n * Returns a function to map a pitch class set over any note.\n * Same as pcsetSteps, but returns 1 for the first step\n */\nexport function pcsetDegrees(notes: number[] | string, tonic: number) {\n const steps = pcsetSteps(notes, tonic);\n return (degree: number): number | undefined => {\n if (degree === 0) return undefined;\n return steps(degree > 0 ? degree - 1 : degree);\n };\n}\n\n/** @deprecated */\nexport default {\n chroma,\n freqToMidi,\n isMidi,\n midiToFreq,\n midiToNoteName,\n pcsetNearest,\n pcset,\n pcsetDegrees,\n pcsetSteps,\n toMidi,\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { freqToMidi, midiToNoteName } from \"@tonaljs/midi\";\nimport { Pitch } from \"@tonaljs/pitch\";\nimport { distance as _dist, transpose as _tr } from \"@tonaljs/pitch-distance\";\nimport { IntervalName } from \"@tonaljs/pitch-interval\";\nimport {\n Note,\n NoteLiteral,\n NoteName,\n note as props,\n} from \"@tonaljs/pitch-note\";\n\nexport type { NoteType } from \"@tonaljs/pitch-note\";\n\nconst NAMES = [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"];\n\nconst toName = (n: Note) => n.name;\nconst onlyNotes = (array: any[]) =>\n array.map(props).filter((n) => !n.empty) as Note[];\n\n/**\n * Return the natural note names without octave\n * @function\n * @example\n * Note.names(); // => [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"]\n */\nexport function names(array?: any[]): string[] {\n if (array === undefined) {\n return NAMES.slice();\n } else if (!Array.isArray(array)) {\n return [];\n } else {\n return onlyNotes(array).map(toName);\n }\n}\n\n/**\n * Get a note from a note name\n *\n * @function\n * @example\n * Note.get('Bb4') // => { name: \"Bb4\", midi: 70, chroma: 10, ... }\n */\nexport const get = props;\n\n/**\n * Get the note name\n * @function\n */\nexport const name = (note: NoteLiteral) => get(note).name;\n\n/**\n * Get the note pitch class name\n * @function\n */\nexport const pitchClass = (note: NoteLiteral) => get(note).pc;\n\n/**\n * Get the note accidentals\n * @function\n */\nexport const accidentals = (note: NoteLiteral) => get(note).acc;\n\n/**\n * Get the note octave\n * @function\n */\nexport const octave = (note: NoteLiteral) => get(note).oct;\n\n/**\n * Get the note midi\n * @function\n */\nexport const midi = (note: NoteLiteral) => get(note).midi;\n\n/**\n * Get the note midi\n * @function\n */\nexport const freq = (note: NoteLiteral) => get(note).freq;\n\n/**\n * Get the note chroma\n * @function\n */\nexport const chroma = (note: NoteLiteral) => get(note).chroma;\n\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n *\n * @function\n * @param {number} midi - the midi note number\n * @return {string} the note name\n * @example\n * Note.fromMidi(61) // => \"Db4\"\n * Note.fromMidi(61.7) // => \"D4\"\n */\nexport function fromMidi(midi: number) {\n return midiToNoteName(midi);\n}\n\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n */\nexport function fromFreq(freq: number) {\n return midiToNoteName(freqToMidi(freq));\n}\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n */\nexport function fromFreqSharps(freq: number) {\n return midiToNoteName(freqToMidi(freq), { sharps: true });\n}\n\n/**\n * Given a midi number, returns a note name. Uses flats for altered notes.\n *\n * @function\n * @param {number} midi - the midi note number\n * @return {string} the note name\n * @example\n * Note.fromMidiSharps(61) // => \"C#4\"\n */\n\nexport function fromMidiSharps(midi: number) {\n return midiToNoteName(midi, { sharps: true });\n}\n\nexport const distance = _dist;\n\n/**\n * Transpose a note by an interval\n */\nexport const transpose = _tr;\nexport const tr = _tr;\n\n/**\n * Transpose by an interval.\n * @function\n * @param {string} interval\n * @return {function} a function that transposes by the given interval\n * @example\n * [\"C\", \"D\", \"E\"].map(Note.transposeBy(\"5P\"));\n * // => [\"G\", \"A\", \"B\"]\n */\nexport const transposeBy = (interval: IntervalName) => (note: NoteName) =>\n transpose(note, interval);\nexport const trBy = transposeBy;\n\n/**\n * Transpose from a note\n * @function\n * @param {string} note\n * @return {function} a function that transposes the the note by an interval\n * [\"1P\", \"3M\", \"5P\"].map(Note.transposeFrom(\"C\"));\n * // => [\"C\", \"E\", \"G\"]\n */\nexport const transposeFrom = (note: NoteName) => (interval: IntervalName) =>\n transpose(note, interval);\nexport const trFrom = transposeFrom;\n\n/**\n * Transpose a note by a number of perfect fifths.\n *\n * @function\n * @param {string} note - the note name\n * @param {number} fifths - the number of fifths\n * @return {string} the transposed note name\n *\n * @example\n * import { transposeFifths } from \"@tonaljs/note\"\n * transposeFifths(\"G4\", 1) // => \"D\"\n * [0, 1, 2, 3, 4].map(fifths => transposeFifths(\"C\", fifths)) // => [\"C\", \"G\", \"D\", \"A\", \"E\"]\n */\nexport function transposeFifths(noteName: NoteName, fifths: number): NoteName {\n return transpose(noteName, [fifths, 0]);\n}\nexport const trFifths = transposeFifths;\n\n// TODO: documentation\nexport function transposeOctaves(\n noteName: NoteName,\n octaves: number,\n): NoteName {\n return transpose(noteName, [0, octaves]);\n}\n\nexport type NoteComparator = (a: Note, b: Note) => number;\n\nexport const ascending: NoteComparator = (a, b) => a.height - b.height;\nexport const descending: NoteComparator = (a, b) => b.height - a.height;\n\nexport function sortedNames(\n notes: any[],\n comparator?: NoteComparator,\n): string[] {\n comparator = comparator || ascending;\n return onlyNotes(notes).sort(comparator).map(toName);\n}\n\nexport function sortedUniqNames(notes: any[]): string[] {\n return sortedNames(notes, ascending).filter(\n (n, i, a) => i === 0 || n !== a[i - 1],\n );\n}\n\n/**\n * Simplify a note\n *\n * @function\n * @param {string} note - the note to be simplified\n * - sameAccType: default true. Use same kind of accidentals that source\n * @return {string} the simplified note or '' if not valid note\n * @example\n * simplify(\"C##\") // => \"D\"\n * simplify(\"C###\") // => \"D#\"\n * simplify(\"C###\")\n * simplify(\"B#4\") // => \"C5\"\n */\nexport const simplify = (noteName: NoteName | Pitch): string => {\n const note = get(noteName);\n if (note.empty) {\n return \"\";\n }\n return midiToNoteName(note.midi || note.chroma, {\n sharps: note.alt > 0,\n pitchClass: note.midi === null,\n });\n};\n/**\n * Get enharmonic of a note\n *\n * @function\n * @param {string} note\n * @param [string] - [optional] Destination pitch class\n * @return {string} the enharmonic note name or '' if not valid note\n * @example\n * Note.enharmonic(\"Db\") // => \"C#\"\n * Note.enharmonic(\"C\") // => \"C\"\n * Note.enharmonic(\"F2\",\"E#\") // => \"E#2\"\n * Note.enharmonic(\"C##b\"); // => \"\"\n */\nexport function enharmonic(noteName: string, destName?: string) {\n const src = get(noteName);\n if (src.empty) {\n return \"\";\n }\n\n // destination: use given or generate one\n const dest = get(\n destName ||\n midiToNoteName(src.midi || src.chroma, {\n sharps: src.alt < 0,\n pitchClass: true,\n }),\n );\n\n // ensure destination is valid\n if (dest.empty || dest.chroma !== src.chroma) {\n return \"\";\n }\n\n // if src has no octave, no need to calculate anything else\n if (src.oct === undefined) {\n return dest.pc;\n }\n\n // detect any octave overflow\n const srcChroma = src.chroma - src.alt;\n const destChroma = dest.chroma - dest.alt;\n const destOctOffset =\n srcChroma > 11 || destChroma < 0\n ? -1\n : srcChroma < 0 || destChroma > 11\n ? +1\n : 0;\n // calculate the new octave\n const destOct = src.oct + destOctOffset;\n return dest.pc + destOct;\n}\n\n/** @deprecated */\nexport default {\n names,\n get,\n name,\n pitchClass,\n accidentals,\n octave,\n midi,\n ascending,\n descending,\n distance,\n sortedNames,\n sortedUniqNames,\n fromMidi,\n fromMidiSharps,\n freq,\n fromFreq,\n fromFreqSharps,\n chroma,\n transpose,\n tr,\n transposeBy,\n trBy,\n transposeFrom,\n trFrom,\n transposeFifths,\n transposeOctaves,\n trFifths,\n simplify,\n enharmonic,\n};\n", "import { isNamedPitch, isPitch, Pitch } from \"@tonaljs/pitch\";\nimport { interval } from \"@tonaljs/pitch-interval\";\nimport { accToAlt, altToAcc } from \"@tonaljs/pitch-note\";\n\nexport interface RomanNumeral extends Pitch {\n readonly name: string;\n readonly empty: boolean;\n readonly roman: string;\n readonly interval: string;\n readonly acc: string;\n readonly chordType: string;\n readonly major: boolean;\n readonly dir: 1;\n}\n\nexport interface NoRomanNumeral extends Partial {\n readonly empty: true;\n readonly name: \"\";\n readonly chordType: \"\";\n}\nconst NO_ROMAN_NUMERAL: NoRomanNumeral = {\n empty: true,\n name: \"\",\n chordType: \"\",\n};\n\nconst cache: Record = {};\n\n/**\n * Get properties of a roman numeral string\n *\n * @function\n * @param {string} - the roman numeral string (can have type, like: Imaj7)\n * @return {Object} - the roman numeral properties\n * @param {string} name - the roman numeral (tonic)\n * @param {string} type - the chord type\n * @param {string} num - the number (1 = I, 2 = II...)\n * @param {boolean} major - major or not\n *\n * @example\n * romanNumeral(\"VIIb5\") // => { name: \"VII\", type: \"b5\", num: 7, major: true }\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function get(src: any): RomanNumeral | NoRomanNumeral {\n return typeof src === \"string\"\n ? cache[src] || (cache[src] = parse(src))\n : typeof src === \"number\"\n ? get(NAMES[src] || \"\")\n : isPitch(src)\n ? fromPitch(src)\n : isNamedPitch(src)\n ? get(src.name)\n : NO_ROMAN_NUMERAL;\n}\n\n/**\n * @deprecated\n * @use RomanNumeral.get\n */\nexport const romanNumeral = get;\n\n/**\n * Get roman numeral names\n *\n * @function\n * @param {boolean} [isMajor=true]\n * @return {Array}\n *\n * @example\n * names() // => [\"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\"]\n */\nexport function names(major = true) {\n return (major ? NAMES : NAMES_MINOR).slice();\n}\n\nfunction fromPitch(pitch: Pitch): RomanNumeral | NoRomanNumeral {\n return get(altToAcc(pitch.alt) + NAMES[pitch.step]);\n}\n\nconst REGEX =\n /^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;\n\n// [name, accidentals, romanNumeral, chordType]\ntype RomanNumeralTokens = [string, string, string, string];\nexport function tokenize(str: string): RomanNumeralTokens {\n return (REGEX.exec(str) || [\"\", \"\", \"\", \"\"]) as RomanNumeralTokens;\n}\n\nconst ROMANS = \"I II III IV V VI VII\";\nconst NAMES = ROMANS.split(\" \");\nconst NAMES_MINOR = ROMANS.toLowerCase().split(\" \");\n\nfunction parse(src: string): RomanNumeral | NoRomanNumeral {\n const [name, acc, roman, chordType] = tokenize(src);\n if (!roman) {\n return NO_ROMAN_NUMERAL;\n }\n\n const upperRoman = roman.toUpperCase();\n const step = NAMES.indexOf(upperRoman);\n const alt = accToAlt(acc);\n const dir = 1;\n return {\n empty: false,\n name,\n roman,\n interval: interval({ step, alt, dir }).name,\n acc,\n chordType,\n alt,\n step,\n major: roman === upperRoman,\n oct: 0,\n dir,\n };\n}\n\n/** @deprecated */\nexport default {\n names,\n get,\n // deprecated\n romanNumeral,\n};\n", "import { transpose, transposeFifths } from \"@tonaljs/note\";\nimport { accToAlt, altToAcc, note } from \"@tonaljs/pitch-note\";\nimport { get as roman } from \"@tonaljs/roman-numeral\";\n\nconst Empty: readonly string[] = Object.freeze([] as string[]);\n\nexport interface Key {\n readonly type: \"major\" | \"minor\";\n readonly tonic: string;\n readonly alteration: number;\n readonly keySignature: string;\n}\n\nconst NoKey: Key = {\n type: \"major\",\n tonic: \"\",\n alteration: 0,\n keySignature: \"\",\n};\n\nexport interface KeyScale {\n readonly tonic: string;\n readonly grades: readonly string[];\n readonly intervals: readonly string[];\n readonly scale: readonly string[];\n readonly triads: readonly string[];\n readonly chords: readonly string[];\n readonly chordsHarmonicFunction: readonly string[];\n readonly chordScales: readonly string[];\n readonly secondaryDominants: readonly string[];\n readonly secondaryDominantSupertonics: readonly string[];\n readonly substituteDominants: readonly string[];\n readonly substituteDominantSupertonics: readonly string[];\n\n // @deprecated use secondaryDominantsSupertonic\n readonly secondaryDominantsMinorRelative: readonly string[];\n // @deprecated use substituteDominantSupertonics\n readonly substituteDominantsMinorRelative: readonly string[];\n}\n\nconst NoKeyScale: KeyScale = {\n tonic: \"\",\n grades: Empty,\n intervals: Empty,\n scale: Empty,\n triads: Empty,\n chords: Empty,\n chordsHarmonicFunction: Empty,\n chordScales: Empty,\n secondaryDominants: Empty,\n secondaryDominantSupertonics: Empty,\n substituteDominantsMinorRelative: Empty,\n substituteDominants: Empty,\n substituteDominantSupertonics: Empty,\n secondaryDominantsMinorRelative: Empty,\n};\n\nexport interface MajorKey extends Key, KeyScale {\n readonly type: \"major\";\n readonly minorRelative: string;\n readonly scale: readonly string[];\n readonly substituteDominants: readonly string[];\n readonly secondaryDominantSupertonics: readonly string[];\n // @deprecated use secondaryDominantsSupertonic\n readonly substituteDominantsMinorRelative: readonly string[];\n}\n\nconst NoMajorKey: MajorKey = {\n ...NoKey,\n ...NoKeyScale,\n type: \"major\",\n minorRelative: \"\",\n scale: Empty,\n substituteDominants: Empty,\n secondaryDominantSupertonics: Empty,\n substituteDominantsMinorRelative: Empty,\n};\n\nexport interface MinorKey extends Key {\n readonly type: \"minor\";\n readonly relativeMajor: string;\n readonly natural: KeyScale;\n readonly harmonic: KeyScale;\n readonly melodic: KeyScale;\n}\n\nconst NoMinorKey: MinorKey = {\n ...NoKey,\n type: \"minor\",\n relativeMajor: \"\",\n natural: NoKeyScale,\n harmonic: NoKeyScale,\n melodic: NoKeyScale,\n};\n\nexport type KeyChord = {\n name: string;\n roles: string[];\n};\n\nconst mapScaleToType = (scale: string[], list: string[], sep = \"\") =>\n list.map((type, i) => `${scale[i]}${sep}${type}`);\n\nfunction keyScale(\n grades: string[],\n triads: string[],\n chordTypes: string[],\n harmonicFunctions: string[],\n chordScales: string[],\n) {\n return (tonic: string): KeyScale => {\n const intervals = grades.map((gr) => roman(gr).interval || \"\");\n const scale = intervals.map((interval) => transpose(tonic, interval));\n const chords = mapScaleToType(scale, chordTypes);\n const secondaryDominants = scale\n .map((note) => transpose(note, \"5P\"))\n .map((note) =>\n // A secondary dominant is a V chord which:\n // 1. is not diatonic to the key,\n // 2. it must have a diatonic root.\n scale.includes(note) && !chords.includes(note + \"7\") ? note + \"7\" : \"\",\n );\n\n const secondaryDominantSupertonics = supertonics(\n secondaryDominants,\n triads,\n );\n const substituteDominants = secondaryDominants.map((chord) => {\n if (!chord) return \"\";\n const domRoot = chord.slice(0, -1);\n const subRoot = transpose(domRoot, \"5d\");\n return subRoot + \"7\";\n });\n const substituteDominantSupertonics = supertonics(\n substituteDominants,\n triads,\n );\n\n return {\n tonic,\n grades,\n intervals,\n scale,\n triads: mapScaleToType(scale, triads),\n chords,\n chordsHarmonicFunction: harmonicFunctions.slice(),\n chordScales: mapScaleToType(scale, chordScales, \" \"),\n secondaryDominants,\n secondaryDominantSupertonics,\n substituteDominants,\n substituteDominantSupertonics,\n\n // @deprecated use secondaryDominantsSupertonic\n secondaryDominantsMinorRelative: secondaryDominantSupertonics,\n // @deprecated use secondaryDominantsSupertonic\n substituteDominantsMinorRelative: substituteDominantSupertonics,\n };\n };\n}\n\nconst supertonics = (dominants: string[], targetTriads: string[]) => {\n return dominants.map((chord, index) => {\n if (!chord) return \"\";\n const domRoot = chord.slice(0, -1);\n const minorRoot = transpose(domRoot, \"5P\");\n const target = targetTriads[index];\n const isMinor = target.endsWith(\"m\");\n return isMinor ? minorRoot + \"m7\" : minorRoot + \"m7b5\";\n });\n};\n\nconst distInFifths = (from: string, to: string) => {\n const f = note(from);\n const t = note(to);\n return f.empty || t.empty ? 0 : t.coord[0] - f.coord[0];\n};\n\nconst MajorScale = keyScale(\n \"I II III IV V VI VII\".split(\" \"),\n \" m m m dim\".split(\" \"),\n \"maj7 m7 m7 maj7 7 m7 m7b5\".split(\" \"),\n \"T SD T SD D T D\".split(\" \"),\n \"major,dorian,phrygian,lydian,mixolydian,minor,locrian\".split(\",\"),\n);\nconst NaturalScale = keyScale(\n \"I II bIII IV V bVI bVII\".split(\" \"),\n \"m dim m m \".split(\" \"),\n \"m7 m7b5 maj7 m7 m7 maj7 7\".split(\" \"),\n \"T SD T SD D SD SD\".split(\" \"),\n \"minor,locrian,major,dorian,phrygian,lydian,mixolydian\".split(\",\"),\n);\nconst HarmonicScale = keyScale(\n \"I II bIII IV V bVI VII\".split(\" \"),\n \"m dim aug m dim\".split(\" \"),\n \"mMaj7 m7b5 +maj7 m7 7 maj7 o7\".split(\" \"),\n \"T SD T SD D SD D\".split(\" \"),\n \"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian\".split(\n \",\",\n ),\n);\nconst MelodicScale = keyScale(\n \"I II bIII IV V VI VII\".split(\" \"),\n \"m m aug dim dim\".split(\" \"),\n \"m6 m7 +maj7 7 7 m7b5 m7b5\".split(\" \"),\n \"T SD T SD D \".split(\" \"),\n \"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered\".split(\n \",\",\n ),\n);\n\n/**\n * Get a major key properties in a given tonic\n * @param tonic\n */\nexport function majorKey(tonic: string): MajorKey {\n const pc = note(tonic).pc;\n if (!pc) return NoMajorKey;\n\n const keyScale = MajorScale(pc);\n const alteration = distInFifths(\"C\", pc);\n\n return {\n ...keyScale,\n type: \"major\",\n minorRelative: transpose(pc, \"-3m\"),\n alteration,\n keySignature: altToAcc(alteration),\n };\n}\n\n/**\n * Get a list of available chords for a given major key\n * @param tonic\n * @returns array of { name: string, roles: string[] }\n */\nexport function majorKeyChords(tonic: string): KeyChord[] {\n const key = majorKey(tonic);\n const chords: KeyChord[] = [];\n keyChordsOf(key, chords);\n return chords;\n}\n\n/**\n * Get a list of available chords for a given major key\n * @param tonic\n * @returns array of { name: string, roles: string[] }\n */\nexport function minorKeyChords(tonic: string): KeyChord[] {\n const key = minorKey(tonic);\n const chords: KeyChord[] = [];\n keyChordsOf(key.natural, chords);\n keyChordsOf(key.harmonic, chords);\n keyChordsOf(key.melodic, chords);\n return chords;\n}\n\nfunction keyChordsOf(key: KeyScale, chords: KeyChord[]) {\n const updateChord = (name: string, newRole: string) => {\n if (!name) return;\n let keyChord = chords.find((chord) => chord.name === name);\n if (!keyChord) {\n keyChord = { name, roles: [] };\n chords.push(keyChord);\n }\n if (newRole && !keyChord.roles.includes(newRole)) {\n keyChord.roles.push(newRole);\n }\n };\n\n key.chords.forEach((chordName, index) =>\n updateChord(chordName, key.chordsHarmonicFunction[index]),\n );\n key.secondaryDominants.forEach((chordName, index) =>\n updateChord(chordName, `V/${key.grades[index]}`),\n );\n key.secondaryDominantSupertonics.forEach((chordName, index) =>\n updateChord(chordName, `ii/${key.grades[index]}`),\n );\n key.substituteDominants.forEach((chordName, index) =>\n updateChord(chordName, `subV/${key.grades[index]}`),\n );\n key.substituteDominantSupertonics.forEach((chordName, index) =>\n updateChord(chordName, `subii/${key.grades[index]}`),\n );\n}\n\n/**\n * Get minor key properties in a given tonic\n * @param tonic\n */\nexport function minorKey(tnc: string): MinorKey {\n const pc = note(tnc).pc;\n if (!pc) return NoMinorKey;\n\n const alteration = distInFifths(\"C\", pc) - 3;\n return {\n type: \"minor\",\n tonic: pc,\n relativeMajor: transpose(pc, \"3m\"),\n alteration,\n keySignature: altToAcc(alteration),\n natural: NaturalScale(pc),\n harmonic: HarmonicScale(pc),\n melodic: MelodicScale(pc),\n };\n}\n\n/**\n * Given a key signature, returns the tonic of the major key\n * @param signature\n * @example\n * majorTonicFromKeySignature('###') // => 'A'\n */\nexport function majorTonicFromKeySignature(\n sig: string | number,\n): string | null {\n if (typeof sig === \"number\") {\n return transposeFifths(\"C\", sig);\n } else if (typeof sig === \"string\" && /^b+|#+$/.test(sig)) {\n return transposeFifths(\"C\", accToAlt(sig));\n }\n return null;\n}\n\n/** @deprecated */\nexport default { majorKey, majorTonicFromKeySignature, minorKey };\n", "import { rotate } from \"@tonaljs/collection\";\nimport { simplify, transposeFifths } from \"@tonaljs/interval\";\nimport { EmptyPcset, Pcset } from \"@tonaljs/pcset\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { NoteName } from \"@tonaljs/pitch-note\";\nimport { get as getType } from \"@tonaljs/scale-type\";\n\nconst MODES = [\n [0, 2773, 0, \"ionian\", \"\", \"Maj7\", \"major\"],\n [1, 2902, 2, \"dorian\", \"m\", \"m7\"],\n [2, 3418, 4, \"phrygian\", \"m\", \"m7\"],\n [3, 2741, -1, \"lydian\", \"\", \"Maj7\"],\n [4, 2774, 1, \"mixolydian\", \"\", \"7\"],\n [5, 2906, 3, \"aeolian\", \"m\", \"m7\", \"minor\"],\n [6, 3434, 5, \"locrian\", \"dim\", \"m7b5\"],\n] as const;\n\ntype ModeDatum = (typeof MODES)[number];\n\nexport interface Mode extends Pcset {\n readonly name: string;\n readonly modeNum: number;\n readonly alt: number; // number of alterations === number of fifths\n readonly triad: string;\n readonly seventh: string;\n readonly aliases: string[];\n}\n\nconst NoMode: Mode = {\n ...EmptyPcset,\n name: \"\",\n alt: 0,\n modeNum: NaN,\n triad: \"\",\n seventh: \"\",\n aliases: [],\n};\n\nconst modes: Mode[] = MODES.map(toMode);\nconst index: Record = {};\nmodes.forEach((mode) => {\n index[mode.name] = mode;\n mode.aliases.forEach((alias) => {\n index[alias] = mode;\n });\n});\n\ntype ModeLiteral = string | { name: string };\n\n/**\n * Get a Mode by it's name\n *\n * @example\n * get('dorian')\n * // =>\n * // {\n * // intervals: [ '1P', '2M', '3m', '4P', '5P', '6M', '7m' ],\n * // modeNum: 1,\n * // chroma: '101101010110',\n * // normalized: '101101010110',\n * // name: 'dorian',\n * // setNum: 2902,\n * // alt: 2,\n * // triad: 'm',\n * // seventh: 'm7',\n * // aliases: []\n * // }\n */\nexport function get(name: ModeLiteral): Mode {\n return typeof name === \"string\"\n ? index[name.toLowerCase()] || NoMode\n : name && name.name\n ? get(name.name)\n : NoMode;\n}\n\n/** @deprecated */\nexport const mode = get;\n\n/**\n * Get a list of all modes\n */\nexport function all() {\n return modes.slice();\n}\n\n/** @deprecated */\nexport const entries = all;\n\n/**\n * Get a list of all mode names\n */\nexport function names() {\n return modes.map((mode) => mode.name);\n}\n\nfunction toMode(mode: ModeDatum): Mode {\n const [modeNum, setNum, alt, name, triad, seventh, alias] = mode;\n const aliases = alias ? [alias] : [];\n const chroma = Number(setNum).toString(2);\n const intervals = getType(name).intervals;\n return {\n empty: false,\n intervals,\n modeNum,\n chroma,\n normalized: chroma,\n name,\n setNum,\n alt,\n triad,\n seventh,\n aliases,\n };\n}\n\nexport function notes(modeName: ModeLiteral, tonic: NoteName) {\n return get(modeName).intervals.map((ivl) => transpose(tonic, ivl));\n}\n\nfunction chords(chords: string[]) {\n return (modeName: ModeLiteral, tonic: NoteName) => {\n const mode = get(modeName);\n if (mode.empty) return [];\n const triads = rotate(mode.modeNum, chords);\n const tonics = mode.intervals.map((i) => transpose(tonic, i));\n return triads.map((triad, i) => tonics[i] + triad);\n };\n}\n\nexport const triads = chords(MODES.map((x) => x[4]));\nexport const seventhChords = chords(MODES.map((x) => x[5]));\n\nexport function distance(destination: ModeLiteral, source: ModeLiteral) {\n const from = get(source);\n const to = get(destination);\n if (from.empty || to.empty) return \"\";\n return simplify(transposeFifths(\"1P\", to.alt - from.alt));\n}\n\nexport function relativeTonic(\n destination: ModeLiteral,\n source: ModeLiteral,\n tonic: NoteName,\n) {\n return transpose(tonic, distance(destination, source));\n}\n\n/** @deprecated */\nexport default {\n get,\n names,\n all,\n distance,\n relativeTonic,\n notes,\n triads,\n seventhChords,\n // deprecated\n entries,\n mode,\n};\n", "import { tokenize } from \"@tonaljs/chord\";\nimport { distance, transpose } from \"@tonaljs/pitch-distance\";\nimport { interval } from \"@tonaljs/pitch-interval\";\nimport { NoteLiteral } from \"@tonaljs/pitch-note\";\nimport { get as romanNumeral } from \"@tonaljs/roman-numeral\";\n\n/**\n * Given a tonic and a chord list expressed with roman numeral notation\n * returns the progression expressed with leadsheet chords symbols notation\n * @example\n * fromRomanNumerals(\"C\", [\"I\", \"IIm7\", \"V7\"]);\n * // => [\"C\", \"Dm7\", \"G7\"]\n */\nexport function fromRomanNumerals(\n tonic: NoteLiteral,\n chords: string[],\n): string[] {\n const romanNumerals = chords.map(romanNumeral);\n return romanNumerals.map(\n (rn) => transpose(tonic, interval(rn)) + rn.chordType,\n );\n}\n\n/**\n * Given a tonic and a chord list with leadsheet symbols notation,\n * return the chord list with roman numeral notation\n * @example\n * toRomanNumerals(\"C\", [\"CMaj7\", \"Dm7\", \"G7\"]);\n * // => [\"IMaj7\", \"IIm7\", \"V7\"]\n */\nexport function toRomanNumerals(\n tonic: NoteLiteral,\n chords: string[],\n): string[] {\n return chords.map((chord) => {\n const [note, chordType] = tokenize(chord);\n const intervalName = distance(tonic, note);\n const roman = romanNumeral(interval(intervalName));\n return roman.name + chordType;\n });\n}\n\n/** @deprecated */\nexport default { fromRomanNumerals, toRomanNumerals };\n", "import { compact, range } from \"@tonaljs/collection\";\nimport { midiToNoteName, toMidi, ToNoteNameOptions } from \"@tonaljs/midi\";\n\n/**\n * Create a numeric range. You supply a list of notes or numbers and it will\n * be connected to create complex ranges.\n *\n * @param {Array} notes - the list of notes or midi numbers used\n * @return {Array} an array of numbers or empty array if not valid parameters\n *\n * @example\n * numeric([\"C5\", \"C4\"]) // => [ 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60 ]\n * // it works midi notes\n * numeric([10, 5]) // => [ 10, 9, 8, 7, 6, 5 ]\n * // complex range\n * numeric([\"C4\", \"E4\", \"Bb3\"]) // => [60, 61, 62, 63, 64, 63, 62, 61, 60, 59, 58]\n */\nexport function numeric(notes: (string | number)[]): number[] {\n const midi: number[] = compact(\n notes.map((note) => (typeof note === \"number\" ? note : toMidi(note))),\n );\n if (!notes.length || midi.length !== notes.length) {\n // there is no valid notes\n return [];\n }\n\n return midi.reduce(\n (result, note) => {\n const last: number = result[result.length - 1];\n return result.concat(range(last, note).slice(1));\n },\n [midi[0]],\n );\n}\n\n/**\n * Create a range of chromatic notes. The altered notes will use flats.\n *\n * @function\n * @param {Array} notes - the list of notes or midi note numbers to create a range from\n * @param {Object} options - The same as `midiToNoteName` (`{ sharps: boolean, pitchClass: boolean }`)\n * @return {Array} an array of note names\n *\n * @example\n * Range.chromatic([\"C2, \"E2\", \"D2\"]) // => [\"C2\", \"Db2\", \"D2\", \"Eb2\", \"E2\", \"Eb2\", \"D2\"]\n * // with sharps\n * Range.chromatic([\"C2\", \"C3\"], { sharps: true }) // => [ \"C2\", \"C#2\", \"D2\", \"D#2\", \"E2\", \"F2\", \"F#2\", \"G2\", \"G#2\", \"A2\", \"A#2\", \"B2\", \"C3\" ]\n */\nexport function chromatic(\n notes: (string | number)[],\n options?: ToNoteNameOptions,\n): string[] {\n return numeric(notes).map((midi) => midiToNoteName(midi, options));\n}\n\n/** @deprecated */\nexport default { numeric, chromatic };\n", "type RhythmPatternValue = 0 | 1;\n\nexport type RhythmPattern = Array;\n\n/**\n * Create a rhythm pattern from a number or concatenation of numbers in binary form\n * @param numbers one or more number\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * binary(13) // => [1, 1, 0, 1]\n * binary(12, 13) // => [1, 1, 0, 0, 1, 1, 0, 1]\n */\nexport function binary(...numbers: number[]): RhythmPattern {\n return numbers.reduce((pattern, number) => {\n number\n .toString(2)\n .split(\"\")\n .forEach((digit: string) => {\n pattern.push(parseInt(digit) as RhythmPatternValue);\n });\n return pattern;\n }, [] as RhythmPattern);\n}\n\n/**\n * Create a rhythmic pattern using an hexadecimal numbers\n * @param hexNumber string with the hexadecimal number\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * R.hex(\"8f\"); // => [1, 0, 0, 0, 1, 1, 1, 1]\n */\nexport function hex(hexNumber: string): RhythmPattern {\n const pattern: RhythmPattern = [];\n for (let i = 0; i < hexNumber.length; i++) {\n const digit = parseInt(\"0x\" + hexNumber[i]);\n const binary = isNaN(digit) ? \"0000\" : digit.toString(2).padStart(4, \"0\");\n binary.split(\"\").forEach((digit: string) => {\n pattern.push(digit === \"1\" ? 1 : 0);\n });\n }\n return pattern;\n}\n\n/**\n * Create a rhythm pattern from the onsets\n * @param numbers the onsets sizes\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * onsets(1, 2, 2, 1) // => [1, 0, 1, 0, 0, 1, 0, 0, 1, 0]\n */\nexport function onsets(...numbers: number[]): RhythmPattern {\n return numbers.reduce((pattern, number) => {\n pattern.push(1);\n for (let i = 0; i < number; i++) {\n pattern.push(0);\n }\n return pattern;\n }, [] as RhythmPattern);\n}\n\n/**\n * Create a random rhythm pattern with a specified length\n * @param length length of the pattern\n * @param probability Threshold where random number is considered a beat (defaults to 0.5)\n * @param rnd A random function (Math.random by default)\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * random(4) // => [1, 0, 0, 1]\n */\nexport function random(\n length: number,\n probability = 0.5,\n rnd: () => number = Math.random,\n): RhythmPattern {\n const pattern: RhythmPattern = [];\n for (let i = 0; i < length; i++) {\n pattern.push(rnd() >= probability ? 1 : 0);\n }\n return pattern;\n}\n\n/**\n * Create a rhythm pattern based on the given probability thresholds\n * @param probabilities An array with the probability of each step to be a beat\n * @param rnd A random function (Math.random by default)\n * @returns an array of 0s and 1s representing the rhythm pattern\n * @example\n * probability([0.6, 0, 0.2, 0.5]) // => [0, 0, 0, 1]\n */\nexport function probability(\n probabilities: number[],\n rnd: () => number = Math.random,\n): RhythmPattern {\n return probabilities.map((probability) => (rnd() <= probability ? 1 : 0));\n}\n\n/**\n * Rotate a pattern right\n * @param pattern the pattern to rotate\n * @param rotations the number of steps to rotate\n * @returns the rotated pattern (an array of 0s and 1s)\n * @example\n * rotate([1, 0, 0, 1], 2); // => [0, 1, 1, 0]\n *\n */\nexport function rotate(\n pattern: RhythmPattern,\n rotations: number,\n): RhythmPattern {\n const len = pattern.length;\n const rotated: RhythmPattern = [];\n for (let i = 0; i < len; i++) {\n const pos = (((i - rotations) % len) + len) % len;\n rotated[i] = pattern[pos];\n }\n return rotated;\n}\n\n/**\n * Generates an euclidean rhythm pattern\n * @param steps The length of the pattern\n * @param beats The number of beats\n * @returns an array with 0s and 1s representing the rhythmic pattern\n * @example\n * euclid(8, 3); // => [1, 0, 0, 1, 0, 0, 1, 0]\n */\nexport function euclid(steps: number, beats: number): RhythmPattern {\n const pattern: RhythmPattern = [];\n let d = -1;\n\n for (let i = 0; i < steps; i++) {\n const v = Math.floor(i * (beats / steps));\n pattern[i] = v !== d ? 1 : 0;\n d = v;\n }\n return pattern;\n}\n", "/**\n * References:\n * - https://www.researchgate.net/publication/327567188_An_Algorithm_for_Spelling_the_Pitches_of_Any_Musical_Scale\n * @module scale\n */\nimport { all as chordTypes } from \"@tonaljs/chord-type\";\nimport { range as nums, rotate } from \"@tonaljs/collection\";\nimport { enharmonic, fromMidi, sortedUniqNames } from \"@tonaljs/note\";\nimport {\n chroma,\n isChroma,\n isSubsetOf,\n isSupersetOf,\n modes,\n} from \"@tonaljs/pcset\";\nimport { tonicIntervalsTransposer, transpose } from \"@tonaljs/pitch-distance\";\nimport { note, NoteName } from \"@tonaljs/pitch-note\";\nimport {\n all,\n get as getScaleType,\n ScaleType,\n names as scaleTypeNames,\n all as scaleTypes,\n} from \"@tonaljs/scale-type\";\n\ntype ScaleName = string;\ntype ScaleNameTokens = [string, string]; // [TONIC, SCALE TYPE]\n\nexport interface Scale extends ScaleType {\n tonic: string | null;\n type: string;\n notes: NoteName[];\n}\n\nconst NoScale: Scale = {\n empty: true,\n name: \"\",\n type: \"\",\n tonic: null,\n setNum: NaN,\n chroma: \"\",\n normalized: \"\",\n aliases: [],\n notes: [],\n intervals: [],\n};\n\n/**\n * Given a string with a scale name and (optionally) a tonic, split\n * that components.\n *\n * It returns an array with the form [ name, tonic ] where tonic can be a\n * note name or null and name can be any arbitrary string\n * (this function doesn't check if that scale name exists)\n *\n * @function\n * @param {string} name - the scale name\n * @return {Array} an array [tonic, name]\n * @example\n * tokenize(\"C mixolydian\") // => [\"C\", \"mixolydian\"]\n * tokenize(\"anything is valid\") // => [\"\", \"anything is valid\"]\n * tokenize() // => [\"\", \"\"]\n */\nexport function tokenize(name: ScaleName): ScaleNameTokens {\n if (typeof name !== \"string\") {\n return [\"\", \"\"];\n }\n const i = name.indexOf(\" \");\n const tonic = note(name.substring(0, i));\n if (tonic.empty) {\n const n = note(name);\n return n.empty ? [\"\", name.toLowerCase()] : [n.name, \"\"];\n }\n\n const type = name.substring(tonic.name.length + 1).toLowerCase();\n return [tonic.name, type.length ? type : \"\"];\n}\n\n/**\n * Get all scale names\n * @function\n */\nexport const names = scaleTypeNames;\n\n/**\n * Get a Scale from a scale name.\n */\nexport function get(src: ScaleName | ScaleNameTokens): Scale {\n const tokens = Array.isArray(src) ? src : tokenize(src);\n const tonic = note(tokens[0]).name;\n const st = getScaleType(tokens[1]);\n if (st.empty) {\n return NoScale;\n }\n\n const type = st.name;\n const notes: string[] = tonic\n ? st.intervals.map((i) => transpose(tonic, i))\n : [];\n\n const name = tonic ? tonic + \" \" + type : type;\n\n return { ...st, name, type, tonic, notes };\n}\n\n/**\n * @deprecated\n * @use Scale.get\n */\nexport const scale = get;\n\nexport function detect(\n notes: string[],\n options: { tonic?: string; match?: \"exact\" | \"fit\" } = {},\n): string[] {\n const notesChroma = chroma(notes);\n const tonic = note(options.tonic ?? notes[0] ?? \"\");\n const tonicChroma = tonic.chroma;\n if (tonicChroma === undefined) {\n return [];\n }\n\n const pitchClasses = notesChroma.split(\"\");\n pitchClasses[tonicChroma] = \"1\";\n const scaleChroma = rotate(tonicChroma, pitchClasses).join(\"\");\n const match = all().find((scaleType) => scaleType.chroma === scaleChroma);\n\n const results: string[] = [];\n if (match) {\n results.push(tonic.name + \" \" + match.name);\n }\n if (options.match === \"exact\") {\n return results;\n }\n\n extended(scaleChroma).forEach((scaleName) => {\n results.push(tonic.name + \" \" + scaleName);\n });\n\n return results;\n}\n\n/**\n * Get all chords that fits a given scale\n *\n * @function\n * @param {string} name - the scale name\n * @return {Array} - the chord names\n *\n * @example\n * scaleChords(\"pentatonic\") // => [\"5\", \"64\", \"M\", \"M6\", \"Madd9\", \"Msus2\"]\n */\nexport function scaleChords(name: string): string[] {\n const s = get(name);\n const inScale = isSubsetOf(s.chroma);\n return chordTypes()\n .filter((chord) => inScale(chord.chroma))\n .map((chord) => chord.aliases[0]);\n}\n/**\n * Get all scales names that are a superset of the given one\n * (has the same notes and at least one more)\n *\n * @function\n * @param {string} name\n * @return {Array} a list of scale names\n * @example\n * extended(\"major\") // => [\"bebop\", \"bebop dominant\", \"bebop major\", \"chromatic\", \"ichikosucho\"]\n */\nexport function extended(name: string): string[] {\n const chroma = isChroma(name) ? name : get(name).chroma;\n const isSuperset = isSupersetOf(chroma);\n return scaleTypes()\n .filter((scale) => isSuperset(scale.chroma))\n .map((scale) => scale.name);\n}\n\n/**\n * Find all scales names that are a subset of the given one\n * (has less notes but all from the given scale)\n *\n * @function\n * @param {string} name\n * @return {Array} a list of scale names\n *\n * @example\n * reduced(\"major\") // => [\"ionian pentatonic\", \"major pentatonic\", \"ritusen\"]\n */\nexport function reduced(name: string): string[] {\n const isSubset = isSubsetOf(get(name).chroma);\n return scaleTypes()\n .filter((scale) => isSubset(scale.chroma))\n .map((scale) => scale.name);\n}\n\n/**\n * Given an array of notes, return the scale: a pitch class set starting from\n * the first note of the array\n *\n * @function\n * @param {string[]} notes\n * @return {string[]} pitch classes with same tonic\n * @example\n * scaleNotes(['C4', 'c3', 'C5', 'C4', 'c4']) // => [\"C\"]\n * scaleNotes(['D4', 'c#5', 'A5', 'F#6']) // => [\"D\", \"F#\", \"A\", \"C#\"]\n */\nexport function scaleNotes(notes: NoteName[]) {\n const pcset: string[] = notes.map((n) => note(n).pc).filter((x) => x);\n const tonic = pcset[0];\n const scale = sortedUniqNames(pcset);\n return rotate(scale.indexOf(tonic), scale);\n}\n\ntype ScaleMode = [string, string];\n/**\n * Find mode names of a scale\n *\n * @function\n * @param {string} name - scale name\n * @example\n * modeNames(\"C pentatonic\") // => [\n * [\"C\", \"major pentatonic\"],\n * [\"D\", \"egyptian\"],\n * [\"E\", \"malkos raga\"],\n * [\"G\", \"ritusen\"],\n * [\"A\", \"minor pentatonic\"]\n * ]\n */\nexport function modeNames(name: string): ScaleMode[] {\n const s = get(name);\n if (s.empty) {\n return [];\n }\n\n const tonics = s.tonic ? s.notes : s.intervals;\n return modes(s.chroma)\n .map((chroma: string, i: number): ScaleMode => {\n const modeName = get(chroma).name;\n return modeName ? [tonics[i], modeName] : [\"\", \"\"];\n })\n .filter((x) => x[0]);\n}\n\nfunction getNoteNameOf(scale: string | string[]) {\n const names = Array.isArray(scale) ? scaleNotes(scale) : get(scale).notes;\n const chromas = names.map((name) => note(name).chroma);\n\n return (noteOrMidi: string | number): string | undefined => {\n const currNote =\n typeof noteOrMidi === \"number\"\n ? note(fromMidi(noteOrMidi))\n : note(noteOrMidi);\n const height = currNote.height;\n\n if (height === undefined) return undefined;\n const chroma = height % 12;\n const position = chromas.indexOf(chroma);\n if (position === -1) return undefined;\n return enharmonic(currNote.name, names[position]);\n };\n}\n\nexport function rangeOf(scale: string | string[]) {\n const getName = getNoteNameOf(scale);\n return (fromNote: string, toNote: string) => {\n const from = note(fromNote).height;\n const to = note(toNote).height;\n if (from === undefined || to === undefined) return [];\n\n return nums(from, to)\n .map(getName)\n .filter((x) => x);\n };\n}\n\n/**\n * Returns a function to get a note name from the scale degree.\n *\n * @example\n * [1, 2, 3].map(Scale.degrees(\"C major\")) => [\"C\", \"D\", \"E\"]\n * [1, 2, 3].map(Scale.degrees(\"C4 major\")) => [\"C4\", \"D4\", \"E4\"]\n */\nexport function degrees(scaleName: string | ScaleNameTokens) {\n const { intervals, tonic } = get(scaleName);\n const transpose = tonicIntervalsTransposer(intervals, tonic);\n return (degree: number) =>\n degree ? transpose(degree > 0 ? degree - 1 : degree) : \"\";\n}\n\n/**\n * Sames as `degree` but with 0-based index\n */\nexport function steps(scaleName: string | ScaleNameTokens) {\n const { intervals, tonic } = get(scaleName);\n return tonicIntervalsTransposer(intervals, tonic);\n}\n\n/** @deprecated */\nexport default {\n degrees,\n detect,\n extended,\n get,\n modeNames,\n names,\n rangeOf,\n reduced,\n scaleChords,\n scaleNotes,\n steps,\n tokenize,\n\n // deprecated\n scale,\n};\n", "// TYPES: PARSING\nexport type TimeSignatureLiteral = string | [number, number] | [string, string];\ntype ParsedTimeSignature = [number | number[], number];\n\n// TYPES: PROPERTIES\nexport type ValidTimeSignature = {\n readonly empty: false;\n readonly name: string;\n readonly upper: number | number[];\n readonly lower: number;\n readonly type: \"simple\" | \"compound\" | \"irregular\" | \"irrational\";\n readonly additive: number[];\n};\n\nexport type InvalidTimeSignature = {\n readonly empty: true;\n readonly name: \"\";\n readonly upper: undefined;\n readonly lower: undefined;\n readonly type: undefined;\n readonly additive: [];\n};\n\nexport type TimeSignature = ValidTimeSignature | InvalidTimeSignature;\n\n// CONSTANTS\nconst NONE: InvalidTimeSignature = {\n empty: true,\n name: \"\",\n upper: undefined,\n lower: undefined,\n type: undefined,\n additive: [],\n};\n\nconst NAMES = [\"4/4\", \"3/4\", \"2/4\", \"2/2\", \"12/8\", \"9/8\", \"6/8\", \"3/8\"];\n\n// PUBLIC API\n\nexport function names() {\n return NAMES.slice();\n}\n\nconst REGEX = /^(\\d*\\d(?:\\+\\d)*)\\/(\\d+)$/;\nconst CACHE = new Map();\n\nexport function get(literal: TimeSignatureLiteral): TimeSignature {\n const stringifiedLiteral = JSON.stringify(literal);\n const cached = CACHE.get(stringifiedLiteral);\n if (cached) {\n return cached;\n }\n\n const ts = build(parse(literal));\n CACHE.set(stringifiedLiteral, ts);\n return ts;\n}\n\nexport function parse(literal: TimeSignatureLiteral): ParsedTimeSignature {\n if (typeof literal === \"string\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, up, low] = REGEX.exec(literal) || [];\n return parse([up, low]);\n }\n\n const [up, down] = literal;\n const denominator = +down;\n if (typeof up === \"number\") {\n return [up, denominator];\n }\n\n const list = up.split(\"+\").map((n) => +n);\n return list.length === 1 ? [list[0], denominator] : [list, denominator];\n}\n\n/** @deprecated */\nexport default { names, parse, get };\n\n// PRIVATE\n\nconst isPowerOfTwo = (x: number) => (Math.log(x) / Math.log(2)) % 1 === 0;\n\nfunction build([up, down]: ParsedTimeSignature): TimeSignature {\n const upper = Array.isArray(up) ? up.reduce((a, b) => a + b, 0) : up;\n const lower = down;\n if (upper === 0 || lower === 0) {\n return NONE;\n }\n\n const name = Array.isArray(up) ? `${up.join(\"+\")}/${down}` : `${up}/${down}`;\n const additive = Array.isArray(up) ? up : [];\n const type =\n lower === 4 || lower === 2\n ? \"simple\"\n : lower === 8 && upper % 3 === 0\n ? \"compound\"\n : isPowerOfTwo(lower)\n ? \"irregular\"\n : \"irrational\";\n\n return {\n empty: false,\n name,\n type,\n upper,\n lower,\n additive,\n };\n}\n", "import Note from \"@tonaljs/note\";\n\n// A function that decides which of a set of voicings is picked as a follow up to lastVoicing.\nexport declare type VoiceLeadingFunction = (\n voicings: string[][],\n lastVoicing: string[],\n) => string[];\n\nexport const topNoteDiff: VoiceLeadingFunction = (voicings, lastVoicing) => {\n if (!lastVoicing || !lastVoicing.length) {\n return voicings[0];\n }\n const topNoteMidi = (voicing: string[]) =>\n Note.midi(voicing[voicing.length - 1]) || 0;\n const diff = (voicing: string[]) =>\n Math.abs(topNoteMidi(lastVoicing) - topNoteMidi(voicing));\n return voicings.sort((a, b) => diff(a) - diff(b))[0];\n};\n\n/** @deprecated */\nexport default {\n topNoteDiff,\n};\n", "import Chord from \"@tonaljs/chord\";\nimport { all, lefthand, triads, VoicingDictionary } from \"./data\";\nexport { all, lefthand, triads } from \"./data\";\n\nexport const defaultDictionary: VoicingDictionary = lefthand;\n\nexport function lookup(\n symbol: string,\n dictionary = defaultDictionary,\n): string[] | undefined {\n if (dictionary[symbol]) {\n return dictionary[symbol];\n }\n const { aliases } = Chord.get(\"C\" + symbol);\n // TODO: find other way to get aliases of symbol\n const match =\n Object.keys(dictionary).find((_symbol) => aliases.includes(_symbol)) || \"\";\n if (match !== undefined) {\n return dictionary[match];\n }\n return undefined;\n}\n\n/** @deprecated */\nexport default {\n lookup,\n lefthand,\n triads,\n all,\n defaultDictionary,\n};\n", "export type VoicingDictionary = { [symbol: string]: string[] };\n\nexport const triads: VoicingDictionary = {\n M: [\"1P 3M 5P\", \"3M 5P 8P\", \"5P 8P 10M\"],\n m: [\"1P 3m 5P\", \"3m 5P 8P\", \"5P 8P 10m\"],\n o: [\"1P 3m 5d\", \"3m 5d 8P\", \"5d 8P 10m\"],\n aug: [\"1P 3M 5A\", \"3M 5A 8P\", \"5A 8P 10M\"],\n};\nexport const lefthand: VoicingDictionary = {\n m7: [\"3m 5P 7m 9M\", \"7m 9M 10m 12P\"],\n \"7\": [\"3M 6M 7m 9M\", \"7m 9M 10M 13M\"],\n \"^7\": [\"3M 5P 7M 9M\", \"7M 9M 10M 12P\"],\n \"69\": [\"3M 5P 6A 9M\"],\n m7b5: [\"3m 5d 7m 8P\", \"7m 8P 10m 12d\"],\n \"7b9\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n \"7b13\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n o7: [\"1P 3m 5d 6M\", \"5d 6M 8P 10m\"],\n \"7#11\": [\"7m 9M 11A 13A\"],\n \"7#9\": [\"3M 7m 9A\"],\n mM7: [\"3m 5P 7M 9M\", \"7M 9M 10m 12P\"],\n m6: [\"3m 5P 6M 9M\", \"6M 9M 10m 12P\"],\n};\nexport const all: VoicingDictionary = {\n M: [\"1P 3M 5P\", \"3M 5P 8P\", \"5P 8P 10M\"],\n m: [\"1P 3m 5P\", \"3m 5P 8P\", \"5P 8P 10m\"],\n o: [\"1P 3m 5d\", \"3m 5d 8P\", \"5d 8P 10m\"],\n aug: [\"1P 3M 5A\", \"3M 5A 8P\", \"5A 8P 10M\"],\n m7: [\"3m 5P 7m 9M\", \"7m 9M 10m 12P\"],\n \"7\": [\"3M 6M 7m 9M\", \"7m 9M 10M 13M\"],\n \"^7\": [\"3M 5P 7M 9M\", \"7M 9M 10M 12P\"],\n \"69\": [\"3M 5P 6A 9M\"],\n m7b5: [\"3m 5d 7m 8P\", \"7m 8P 10m 12d\"],\n \"7b9\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n \"7b13\": [\"3M 6m 7m 9m\", \"7m 9m 10M 13m\"], // b9 / b13\n o7: [\"1P 3m 5d 6M\", \"5d 6M 8P 10m\"],\n \"7#11\": [\"7m 9M 11A 13A\"],\n \"7#9\": [\"3M 7m 9A\"],\n mM7: [\"3m 5P 7M 9M\", \"7M 9M 10m 12P\"],\n m6: [\"3m 5P 6M 9M\", \"6M 9M 10m 12P\"],\n};\n", "import Chord from \"@tonaljs/chord\";\nimport Interval from \"@tonaljs/interval\";\nimport Note from \"@tonaljs/note\";\nimport Range from \"@tonaljs/range\";\nimport VoiceLeading from \"@tonaljs/voice-leading\";\nimport VoicingDictionary from \"@tonaljs/voicing-dictionary\";\n\nconst defaultRange = [\"C3\", \"C5\"];\nconst defaultDictionary = VoicingDictionary.all;\nconst defaultVoiceLeading = VoiceLeading.topNoteDiff;\n\nexport function get(\n chord: string,\n range: string[] = defaultRange,\n dictionary = defaultDictionary,\n voiceLeading = defaultVoiceLeading,\n lastVoicing?: string[],\n) {\n const voicings = search(chord, range, dictionary);\n if (!lastVoicing || !lastVoicing.length) {\n // notes = voicings[Math.ceil(voicings.length / 2)]; // pick middle voicing..\n return voicings[0]; // pick lowest voicing..\n } else {\n // calculates the distance between the last note and the given voicings top note\n // sort voicings with differ\n return voiceLeading(voicings, lastVoicing);\n }\n}\n\nexport function search(\n chord: string,\n range = defaultRange,\n dictionary = VoicingDictionary.triads,\n): string[][] {\n const [tonic, symbol] = Chord.tokenize(chord);\n const sets = VoicingDictionary.lookup(symbol, dictionary);\n // find equivalent symbol that is used as a key in dictionary:\n if (!sets) {\n return [];\n }\n // resolve array of interval arrays for the wanted symbol\n const voicings = sets.map((intervals) => intervals.split(\" \"));\n const notesInRange = Range.chromatic(range); // gives array of notes inside range\n return voicings.reduce((voiced: string[][], voicing: string[]) => {\n // transpose intervals relative to first interval (e.g. 3m 5P > 1P 3M)\n const relativeIntervals = voicing.map(\n (interval) => Interval.subtract(interval, voicing[0]) || \"\",\n );\n // get enharmonic correct pitch class the bottom note\n const bottomPitchClass = Note.transpose(tonic, voicing[0]);\n // get all possible start notes for voicing\n const starts = notesInRange\n // only get the start notes:\n .filter((note) => Note.chroma(note) === Note.chroma(bottomPitchClass))\n // filter out start notes that will overshoot the top end of the range\n .filter(\n (note) =>\n (Note.midi(\n Note.transpose(\n note,\n relativeIntervals[relativeIntervals.length - 1],\n ),\n ) || 0) <= (Note.midi(range[1]) || 0),\n )\n // replace Range.chromatic notes with the correct enharmonic equivalents\n .map((note) => Note.enharmonic(note, bottomPitchClass));\n // render one voicing for each start note\n const notes = starts.map((start) =>\n relativeIntervals.map((interval) => Note.transpose(start, interval)),\n );\n return voiced.concat(notes);\n }, []);\n}\n\nexport function sequence(\n chords: string[],\n range = defaultRange,\n dictionary = defaultDictionary,\n voiceLeading = defaultVoiceLeading,\n lastVoicing?: string[],\n) {\n const { voicings } = chords.reduce<{\n voicings: string[][];\n lastVoicing: string[] | undefined;\n }>(\n ({ voicings, lastVoicing }, chord) => {\n const voicing = get(chord, range, dictionary, voiceLeading, lastVoicing);\n lastVoicing = voicing;\n voicings.push(voicing);\n return { voicings, lastVoicing };\n },\n { voicings: [], lastVoicing },\n );\n return voicings;\n}\n\n/** @deprecated */\nexport default {\n get,\n search,\n sequence,\n};\n", "import { isNamedPitch } from \"@tonaljs/pitch\";\n\nexport * from \"@tonaljs/pitch\";\nexport * from \"@tonaljs/pitch-distance\";\nexport * from \"@tonaljs/pitch-interval\";\nexport * from \"@tonaljs/pitch-note\";\n\nexport const fillStr = (s: string, n: number) => Array(Math.abs(n) + 1).join(s);\n\nexport function deprecate<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ResultFn extends (this: any, ...newArgs: any[]) => ReturnType,\n>(original: string, alternative: string, fn: ResultFn) {\n return function (this: unknown, ...args: unknown[]): ReturnType {\n // tslint:disable-next-line\n console.warn(`${original} is deprecated. Use ${alternative}.`);\n return fn.apply(this, args);\n };\n}\n\nexport const isNamed = deprecate(\"isNamed\", \"isNamedPitch\", isNamedPitch);\n"], + "mappings": "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", + "names": ["index_exports", "__export", "dist_exports", "ChordDictionary", "PcSet", "ScaleDictionary", "Tonal", "accToAlt", "altToAcc", "chroma", "coordToInterval", "coordToNote", "coordinates", "deprecate", "distance", "fillStr", "height", "interval", "isNamed", "isNamedPitch", "isPitch", "midi", "note", "pitch", "stepToLetter", "tokenizeInterval", "tokenizeNote", "tonicIntervalsTransposer", "transpose", "isNamedPitch", "src", "SIZES", "chroma", "step", "alt", "height", "oct", "dir", "midi", "pitch", "h", "isPitch", "FIFTHS", "STEPS_TO_OCTS", "fifths", "coordinates", "f", "o", "FIFTHS_TO_STEPS", "coord", "unaltered", "i", "fillStr", "s", "NoInterval", "INTERVAL_TONAL_REGEX", "INTERVAL_SHORTHAND_REGEX", "REGEX", "tokenizeInterval", "str", "m", "cache", "interval", "src", "parse", "isPitch", "pitchName", "isNamedPitch", "SIZES", "TYPES", "tokens", "num", "q", "step", "t", "type", "name", "dir", "simple", "alt", "qToAlt", "oct", "semitones", "chroma", "coord", "coordinates", "coordToInterval", "forceDescending", "f", "o", "isDescending", "ivl", "pitch", "props", "calcNum", "d", "altToQ", "fillStr", "s", "NoNote", "cache", "stepToLetter", "step", "altToAcc", "alt", "accToAlt", "acc", "note", "src", "stringSrc", "cached", "value", "parse", "isPitch", "pitchName", "isNamedPitch", "REGEX", "tokenizeNote", "str", "m", "coordToNote", "noteCoord", "pitch", "mod", "n", "SEMI", "noteName", "tokens", "letter", "octStr", "oct", "coord", "coordinates", "name", "pc", "chroma", "height", "midi", "freq", "props", "transpose", "noteName", "intervalName", "note", "intervalCoord", "interval", "noteCoord", "tr", "coordToNote", "tonicIntervalsTransposer", "intervals", "tonic", "len", "normalized", "index", "octaves", "root", "distance", "fromNote", "toNote", "from", "to", "fcoord", "tcoord", "fifths", "octs", "forceDescending", "coordToInterval", "fillStr", "character", "times", "REGEX", "tokenize", "str", "m", "abcToScientificNotation", "acc", "letter", "oct", "scientificToAbcNotation", "note", "l", "o", "transpose", "interval", "distance", "from", "to", "index_default", "ascR", "b", "a", "descR", "range", "from", "to", "rotate", "times", "arr", "len", "n", "compact", "sortedNoteNames", "notes", "note", "sortedUniqNoteNames", "i", "shuffle", "rnd", "t", "m", "permutations", "acc", "perm", "e", "pos", "newPerm", "ascR", "b", "a", "descR", "range", "from", "to", "rotate", "times", "arr", "len", "n", "compact", "shuffle", "rnd", "i", "t", "m", "permutations", "acc", "perm", "e", "pos", "newPerm", "index_default", "EmptyPcset", "setNumToChroma", "num", "chromaToNumber", "chroma", "REGEX", "isChroma", "set", "isPcsetNum", "isPcset", "cache", "get", "src", "listToChroma", "chromaToPcset", "pcset", "intervals", "IVLS", "chromaToIntervals", "i", "notes", "ivl", "transpose", "chromas", "range", "modes", "normalize", "binary", "compact", "_", "r", "rotate", "isEqual", "s1", "s2", "isSubsetOf", "s", "o", "isSupersetOf", "isNoteIncludedIn", "noteName", "n", "note", "includes", "filter", "isIncluded", "index_default", "chromaRotations", "setNum", "normalizedNum", "normalized", "pitch", "interval", "CHORDS", "data_default", "NoChordType", "EmptyPcset", "dictionary", "index", "get", "type", "chordType", "names", "chord", "x", "symbols", "keys", "all", "entries", "removeAll", "add", "intervals", "aliases", "fullName", "quality", "getQuality", "alias", "addAlias", "has", "interval", "ivls", "a", "b", "index_default", "namedSet", "notes", "pcToName", "record", "n", "chroma", "note", "detect", "source", "options", "x", "findMatches", "chord", "a", "b", "BITMASK", "testChromaNumber", "bitmask", "chromaNumber", "hasAnyThird", "hasPerfectFifth", "hasAnySeventh", "hasNonPerfectFifth", "hasAnyThirdAndPerfectFifthAndAnySeventh", "chordType", "withPerfectFifth", "weight", "tonic", "tonicChroma", "noteName", "allModes", "modes", "found", "mode", "index", "modeWithPerfectFifth", "all", "chordName", "baseNote", "names", "get", "interval", "name", "semitones", "quality", "num", "simplify", "i", "invert", "step", "alt", "IN", "IQ", "fromSemitones", "d", "n", "c", "distance", "add", "combinator", "a", "b", "addTo", "other", "subtract", "transposeFifths", "fifths", "ivl", "nFifths", "nOcts", "dir", "coordToInterval", "index_default", "fn", "coordA", "coordB", "coord", "SCALES", "data_default", "NoScaleType", "EmptyPcset", "dictionary", "index", "names", "scale", "get", "type", "scaleType", "all", "entries", "keys", "removeAll", "add", "intervals", "name", "aliases", "alias", "addAlias", "ivls", "index_default", "NoChord", "tokenize", "name", "letter", "acc", "oct", "type", "tokenizeNote", "tokenizeBass", "note", "chord", "split", "get", "src", "getChord", "tonic", "bass", "typeName", "optionalTonic", "optionalBass", "bassInterval", "distance", "bassIndex", "hasRoot", "root", "rootDegree", "hasBass", "intervals", "i", "num", "quality", "newNum", "ivl", "subtract", "notes", "transpose", "symbol", "chordName", "interval", "tr", "slash", "chordScales", "s", "isChordIncluded", "isSupersetOf", "all", "scale", "extended", "isSuperset", "reduced", "isSubset", "isSubsetOf", "degrees", "tonicIntervalsTransposer", "degree", "steps", "index_default", "detect", "DATA", "data_default", "VALUES", "denominator", "shorthand", "names", "add", "NoDuration", "duration", "name", "shorthands", "dur", "REGEX", "get", "_", "simple", "dots", "base", "fraction", "calcDots", "value", "index_default", "pow", "numerator", "isMidi", "arg", "toMidi", "note", "midiToFreq", "midi", "tuning", "L2", "L440", "freqToMidi", "freq", "v", "SHARPS", "FLATS", "midiToNoteName", "options", "pc", "chroma", "pcsetFromChroma", "pcset", "val", "index", "pcsetFromMidi", "a", "b", "i", "notes", "pcsetNearest", "set", "ch", "chUp", "chDown", "pcsetSteps", "tonic", "len", "step", "octaves", "pcsetDegrees", "steps", "degree", "index_default", "NAMES", "toName", "n", "onlyNotes", "array", "note", "names", "get", "name", "pitchClass", "accidentals", "octave", "midi", "freq", "chroma", "fromMidi", "midiToNoteName", "fromFreq", "freqToMidi", "fromFreqSharps", "fromMidiSharps", "distance", "transpose", "tr", "transposeBy", "interval", "trBy", "transposeFrom", "trFrom", "transposeFifths", "noteName", "fifths", "trFifths", "transposeOctaves", "octaves", "ascending", "a", "b", "descending", "sortedNames", "notes", "comparator", "sortedUniqNames", "i", "simplify", "enharmonic", "destName", "src", "dest", "srcChroma", "destChroma", "destOctOffset", "destOct", "index_default", "NO_ROMAN_NUMERAL", "cache", "get", "src", "parse", "NAMES", "isPitch", "fromPitch", "isNamedPitch", "romanNumeral", "names", "major", "NAMES_MINOR", "pitch", "altToAcc", "REGEX", "tokenize", "str", "ROMANS", "name", "acc", "roman", "chordType", "upperRoman", "step", "alt", "accToAlt", "dir", "interval", "index_default", "Empty", "NoKey", "NoKeyScale", "NoMajorKey", "NoMinorKey", "mapScaleToType", "scale", "list", "sep", "type", "i", "keyScale", "grades", "triads", "chordTypes", "harmonicFunctions", "chordScales", "tonic", "intervals", "gr", "get", "interval", "transpose", "chords", "secondaryDominants", "note", "secondaryDominantSupertonics", "supertonics", "substituteDominants", "chord", "domRoot", "substituteDominantSupertonics", "dominants", "targetTriads", "index", "minorRoot", "distInFifths", "from", "to", "f", "t", "MajorScale", "NaturalScale", "HarmonicScale", "MelodicScale", "majorKey", "pc", "alteration", "altToAcc", "majorKeyChords", "key", "keyChordsOf", "minorKeyChords", "minorKey", "updateChord", "name", "newRole", "keyChord", "chordName", "tnc", "majorTonicFromKeySignature", "sig", "transposeFifths", "accToAlt", "index_default", "MODES", "NoMode", "EmptyPcset", "modes", "toMode", "index", "mode", "alias", "get", "name", "all", "entries", "names", "modeNum", "setNum", "alt", "triad", "seventh", "aliases", "chroma", "notes", "modeName", "tonic", "ivl", "transpose", "chords", "triads", "rotate", "tonics", "i", "x", "seventhChords", "distance", "destination", "source", "from", "to", "simplify", "transposeFifths", "relativeTonic", "index_default", "fromRomanNumerals", "tonic", "chords", "get", "rn", "transpose", "interval", "toRomanNumerals", "chord", "note", "chordType", "tokenize", "intervalName", "distance", "index_default", "numeric", "notes", "midi", "compact", "note", "toMidi", "result", "last", "range", "chromatic", "options", "midiToNoteName", "index_default", "binary", "numbers", "pattern", "number", "digit", "hex", "hexNumber", "i", "onsets", "random", "length", "probability", "rnd", "probabilities", "rotate", "rotations", "len", "rotated", "pos", "euclid", "steps", "beats", "d", "v", "NoScale", "tokenize", "name", "i", "tonic", "note", "n", "type", "names", "get", "src", "tokens", "st", "notes", "transpose", "scale", "detect", "options", "notesChroma", "chroma", "tonicChroma", "pitchClasses", "scaleChroma", "rotate", "match", "all", "scaleType", "results", "extended", "scaleName", "scaleChords", "s", "inScale", "isSubsetOf", "chord", "isChroma", "isSuperset", "isSupersetOf", "reduced", "isSubset", "scaleNotes", "pcset", "x", "sortedUniqNames", "modeNames", "tonics", "modes", "modeName", "getNoteNameOf", "chromas", "noteOrMidi", "currNote", "fromMidi", "height", "position", "enharmonic", "rangeOf", "getName", "fromNote", "toNote", "from", "to", "range", "degrees", "intervals", "tonicIntervalsTransposer", "degree", "steps", "index_default", "NONE", "NAMES", "names", "REGEX", "CACHE", "get", "literal", "stringifiedLiteral", "cached", "ts", "build", "parse", "_", "up", "low", "down", "denominator", "list", "n", "index_default", "isPowerOfTwo", "x", "upper", "a", "b", "lower", "name", "additive", "type", "topNoteDiff", "voicings", "lastVoicing", "topNoteMidi", "voicing", "index_default", "diff", "a", "b", "triads", "lefthand", "all", "defaultDictionary", "lookup", "symbol", "dictionary", "aliases", "index_default", "match", "_symbol", "defaultRange", "defaultDictionary", "index_default", "defaultVoiceLeading", "get", "chord", "range", "dictionary", "voiceLeading", "lastVoicing", "voicings", "search", "tonic", "symbol", "sets", "intervals", "notesInRange", "voiced", "voicing", "relativeIntervals", "interval", "bottomPitchClass", "notes", "note", "start", "sequence", "chords", "fillStr", "s", "deprecate", "original", "alternative", "fn", "args", "isNamed", "isNamedPitch", "Tonal", "dist_exports", "PcSet", "ChordDictionary", "ScaleDictionary"] } diff --git a/packages/tonal/test.ts b/packages/tonal/test.ts index 9355277d..20cb4707 100644 --- a/packages/tonal/test.ts +++ b/packages/tonal/test.ts @@ -1,3 +1,4 @@ +import { describe, test, expect } from "vitest"; import * as Tonal from "./index"; describe("tonal", () => { diff --git a/packages/voice-leading/test.ts b/packages/voice-leading/test.ts index b05ef788..9d550c66 100644 --- a/packages/voice-leading/test.ts +++ b/packages/voice-leading/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import { topNoteDiff } from "."; describe("VoiceLeading", () => { diff --git a/packages/voicing-dictionary/test.ts b/packages/voicing-dictionary/test.ts index 50a0935b..85f8cce7 100644 --- a/packages/voicing-dictionary/test.ts +++ b/packages/voicing-dictionary/test.ts @@ -1,4 +1,5 @@ -import VoicingDictionary from "./index"; +import { describe, expect, test } from "vitest"; +import * as VoicingDictionary from "./index"; describe("lookup", () => { test("lookup", () => { diff --git a/packages/voicing/test.ts b/packages/voicing/test.ts index 4032dcb2..51b60980 100644 --- a/packages/voicing/test.ts +++ b/packages/voicing/test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from "vitest"; import VoicingDictionary from "@tonaljs/voicing-dictionary"; import { topNoteDiff } from "@tonaljs/voice-leading"; import Voicing from "./index"; diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..cc3c35a2 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["packages/**/test.ts", "packages/**/*.test.ts"], + coverage: { + provider: "v8", + exclude: ["node_modules/", "dist/", "build/", "coverage/", "site/**"], + }, + }, +});