From 0064bf8e4c1f9e44cd716eba796fc7382b3edf7d Mon Sep 17 00:00:00 2001 From: Kim T Date: Sun, 16 Feb 2025 21:42:05 -0800 Subject: [PATCH 01/11] Open Audio Stack integration part one --- package-lock.json | 2009 ++++++++++++++++++--------- package.json | 11 +- src/{ => commands}/config.ts | 29 +- src/commands/create.ts | 16 + src/commands/filter.ts | 15 + src/commands/get.ts | 23 + src/commands/install.ts | 16 + src/commands/list.ts | 15 + src/commands/reset.ts | 15 + src/commands/scan.ts | 15 + src/commands/search.ts | 15 + src/commands/sync.ts | 15 + src/commands/uninstall.ts | 16 + src/index.ts | 75 +- src/plugin.ts | 154 -- src/project.ts | 147 -- src/types/options.ts | 10 - src/utils.ts | 49 + tests/{ => commands}/config.test.ts | 2 +- tests/plugin.test.ts | 201 --- tests/shared.ts | 8 +- vitest.config.ts | 12 + 22 files changed, 1660 insertions(+), 1208 deletions(-) rename src/{ => commands}/config.ts (52%) create mode 100644 src/commands/create.ts create mode 100644 src/commands/filter.ts create mode 100644 src/commands/get.ts create mode 100644 src/commands/install.ts create mode 100644 src/commands/list.ts create mode 100644 src/commands/reset.ts create mode 100644 src/commands/scan.ts create mode 100644 src/commands/search.ts create mode 100644 src/commands/sync.ts create mode 100644 src/commands/uninstall.ts delete mode 100644 src/plugin.ts delete mode 100644 src/project.ts create mode 100644 src/utils.ts rename tests/{ => commands}/config.test.ts (92%) delete mode 100644 tests/plugin.test.ts create mode 100644 vitest.config.ts diff --git a/package-lock.json b/package-lock.json index 17b3314..ce31fd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.2", "license": "MIT", "dependencies": { - "@studiorack/core": "^2.0.13", + "@open-audio-stack/core": "^0.1.17", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, @@ -18,7 +18,8 @@ }, "devDependencies": { "@eslint/js": "^9.12.0", - "@types/node": "^20.12.12", + "@types/node": "^22.7.8", + "@vitest/coverage-v8": "^2.1.9", "eslint": "^9.12.0", "globals": "^15.2.0", "prettier": "^3.2.5", @@ -26,12 +27,83 @@ "tsx": "^4.10.1", "typescript": "^5.6.3", "typescript-eslint": "^8.9.0", - "vitest": "^1.6.0" + "vitest": "^2.1.3" }, "engines": { "node": ">=18" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.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==", + "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, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -542,18 +614,32 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "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/@humanfs/core": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", @@ -606,6 +692,324 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@inquirer/checkbox": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.2.tgz", + "integrity": "sha512-PL9ixC5YsPXzXhAZFUPmkXGxfgjkdfZdPEPPmt4kFwQ4LBMDG9n/nHXYRGGZSKZJs+d1sGKWgS2GiPzVRKUdtQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.4", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz", + "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.7.tgz", + "integrity": "sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==", + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.4", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.7.tgz", + "integrity": "sha512-gktCSQtnSZHaBytkJKMKEuswSk2cDBuXX5rxGFv306mwHfBPjg5UAldw9zWGoEyvA9KpRDkeM4jfrx0rXn0GyA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.9.tgz", + "integrity": "sha512-Xxt6nhomWTAmuSX61kVgglLjMEFGa+7+F6UUtdEUeg7fg4r9vaFttUUKrtkViYYrQBA5Ia1tkOJj2koP9BuLig==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.10.tgz", + "integrity": "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.6.tgz", + "integrity": "sha512-1f5AIsZuVjPT4ecA8AwaxDFNHny/tSershP/cTvTDxLdiIGTeILNcKozB0LaYt6mojJLUbOYhpIxicaYf7UKIQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.9.tgz", + "integrity": "sha512-iN2xZvH3tyIYXLXBvlVh0npk1q/aVuKXZo5hj+K3W3D4ngAEq/DkLpofRzx6oebTUhBvOgryZ+rMV0yImKnG3w==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.9.tgz", + "integrity": "sha512-xBEoOw1XKb0rIN208YU7wM7oJEHhIYkfG7LpTJAEW913GZeaoQerzf5U/LSHI45EVvjAdgNXmXgH51cUXKZcJQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.9.tgz", + "integrity": "sha512-+5t6ebehKqgoxV8fXwE49HkSF2Rc9ijNiVGEQZwvbMI61/Q5RcD+jWD6Gs1tKdz5lkI8GRBL31iO0HjGK1bv+A==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.9.tgz", + "integrity": "sha512-DWmKztkYo9CvldGBaRMr0ETUHgR86zE6sPDVOHsqz4ISe9o1LuiWfgJk+2r75acFclA93J/lqzhT0dTjCzHuoA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.4", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.0.9.tgz", + "integrity": "sha512-BpJyJe7Dkhv2kz7yG7bPSbJLQuu/rqyNlF1CfiiFeFwouegfH+zh13KDyt6+d9DwucKo7hqM3wKLLyJxZMO+Xg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.4", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.4.tgz", + "integrity": "sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -673,26 +1077,81 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "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==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "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/@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": { - "@sinclair/typebox": "^0.27.8" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, "license": "MIT" }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -731,6 +1190,137 @@ "node": ">= 8" } }, + "node_modules/@open-audio-stack/core": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.17.tgz", + "integrity": "sha512-kuTqchRwJC5Tksww4HTMC6hmWjJ9NUoHZf8pe0UW7FG+ZsShXaPJ7sKbFo+X1X+NxoTP8FHqMxVMkBLORQlSEw==", + "license": "cc0-1.0", + "dependencies": { + "@vscode/sudo-prompt": "^9.3.1", + "7zip-min": "^1.4.5", + "adm-zip": "^0.5.16", + "chalk": "^5.3.0", + "fs-extra": "^11.2.0", + "glob": "^11.0.0", + "inquirer": "^12.4.1", + "js-yaml": "^4.1.0", + "semver": "^7.6.3", + "slugify": "^1.6.6", + "tar": "^7.4.3", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@open-audio-stack/core/node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/@open-audio-stack/core/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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@open-audio-stack/core/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@open-audio-stack/core/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@open-audio-stack/core/node_modules/jackspeak": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.3.tgz", + "integrity": "sha512-oSwM7q8PTHQWuZAlp995iPpPJ4Vkl7qT0ZRD+9duL9j2oBy6KcTfyxc8mEuHJYC+z/kbps80aJLkaNzTOrf/kw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@open-audio-stack/core/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@open-audio-stack/core/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@open-audio-stack/core/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -742,243 +1332,275 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", - "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", + "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", - "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", + "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", - "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", + "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", - "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", + "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", + "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", + "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", - "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", + "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", - "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", + "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", - "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", + "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", - "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", + "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", + "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", - "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", + "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", - "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", + "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", - "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", + "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", - "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", + "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", - "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", + "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", - "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", + "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", - "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", + "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", - "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", + "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@studiorack/core": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@studiorack/core/-/core-2.0.13.tgz", - "integrity": "sha512-HueyMav1efnR+oXx6mOwySwxCr1Htvd/X93MrMVHG2JwsxsF1zaWVKlcJ2Xyd+JZr3XvWYvnnxUF3YtRNQJR7A==", - "license": "MIT", - "dependencies": { - "@vscode/sudo-prompt": "^9.3.1", - "adm-zip": "^0.4.16", - "fs-extra": "^11.2.0", - "glob": "^10.3.6", - "node-fetch": "^2.6.1", - "readline-sync": "^1.4.10", - "semver": "^7.3.4", - "slugify": "^1.6.6" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "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, "license": "MIT" }, @@ -990,13 +1612,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", - "dev": true, + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -1215,104 +1837,147 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitest/expect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "node_modules/@vitest/coverage-v8": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.9.tgz", + "integrity": "sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.7", + "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.12", + "magicast": "^0.3.5", + "std-env": "^3.8.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "2.1.9", + "vitest": "2.1.9" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/@vitest/runner": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "node_modules/@vitest/expect": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", + "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", + "chai": "^5.1.2", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "node_modules/@vitest/mocker": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", + "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "@vitest/spy": "2.1.9", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12" }, - "engines": { - "node": ">=18" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "node_modules/@vitest/runner": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", + "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "dependencies": { + "@vitest/utils": "2.1.9", + "pathe": "^1.1.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "2.1.9", + "magic-string": "^0.30.12", + "pathe": "^1.1.2" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", + "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^2.2.0" + "tinyspy": "^3.0.2" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "2.1.9", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -1324,6 +1989,21 @@ "integrity": "sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==", "license": "MIT" }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "license": "MIT" + }, + "node_modules/7zip-min": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/7zip-min/-/7zip-min-1.4.5.tgz", + "integrity": "sha512-S+FzNwJFKF5LgQYs+hPQo+qeffdi+259Ak63rWEfkHP9arsU8gbe5K+4HscuWN1ih1lP1gTjDNPddbU0qhPtHQ==", + "license": "MIT", + "dependencies": { + "7zip-bin": "5.1.1" + } + }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", @@ -1347,25 +2027,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "license": "MIT", - "engines": { - "node": ">=0.3.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1383,6 +2044,21 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "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==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1411,17 +2087,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/balanced-match": { @@ -1475,22 +2150,20 @@ } }, "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "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": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "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": ">=4" + "node": ">=12" } }, "node_modules/chalk": { @@ -1510,17 +2183,29 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "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", - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/cli-table3": { @@ -1538,6 +2223,15 @@ "@colors/colors": "1.5.0" } }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1572,17 +2266,10 @@ "dev": true, "license": "MIT" }, - "node_modules/confbox": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true, - "license": "MIT" - }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -1594,13 +2281,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1612,14 +2299,11 @@ } }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "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, "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -1631,16 +2315,6 @@ "dev": true, "license": "MIT" }, - "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, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1653,6 +2327,13 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "license": "MIT" + }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -1796,13 +2477,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/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, - "license": "MIT" - }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", @@ -1903,28 +2577,28 @@ "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/expect-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", + "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=4" } }, "node_modules/fast-deep-equal": { @@ -2097,29 +2771,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-tsconfig": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", @@ -2228,14 +2879,23 @@ "node": ">=8" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">=16.17.0" + "node": ">=0.10.0" } }, "node_modules/ignore": { @@ -2275,6 +2935,32 @@ "node": ">=0.8.19" } }, + "node_modules/inquirer": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.4.2.tgz", + "integrity": "sha512-reyjHcwyK2LObXgTJH4T1Dpfhwu88LNPTZmg/KenmTsy3T8lN/kZT8Oo7UwwkB9q8+ss2qjjN7GV8oFAfyz9Xg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.7", + "@inquirer/prompts": "^7.3.2", + "@inquirer/type": "^3.0.4", + "ansi-escapes": "^4.3.2", + "mute-stream": "^2.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2317,25 +3003,66 @@ "node": ">=0.12.0" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "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": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "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": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jackspeak": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", @@ -2354,18 +3081,10 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true, - "license": "MIT" - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -2431,23 +3150,6 @@ "node": ">= 0.8.0" } }, - "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2472,14 +3174,11 @@ "license": "MIT" }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.2.2", @@ -2491,21 +3190,42 @@ } }, "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "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": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "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==", + "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" + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge2": { "version": "1.4.1", @@ -2531,19 +3251,6 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2564,118 +3271,78 @@ "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mlly": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.0.tgz", - "integrity": "sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.1.0", - "ufo": "^1.5.3" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "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/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/minizlib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">= 18" } }, - "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, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "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/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -2694,6 +3361,15 @@ "node": ">= 0.8.0" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -2726,6 +3402,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2782,20 +3464,21 @@ "license": "MIT" }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "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": "*" + "node": ">= 14.16" } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -2810,22 +3493,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-types": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz", - "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.7", - "mlly": "^1.7.0", - "pathe": "^1.1.2" - } - }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", "dev": true, "funding": [ { @@ -2841,9 +3512,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -2876,34 +3548,6 @@ "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2935,22 +3579,6 @@ ], "license": "MIT" }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2986,7 +3614,6 @@ "version": "5.0.7", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", - "dev": true, "license": "ISC", "dependencies": { "glob": "^10.3.7" @@ -3002,12 +3629,13 @@ } }, "node_modules/rollup": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", - "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", + "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -3017,25 +3645,37 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.4", - "@rollup/rollup-android-arm64": "4.22.4", - "@rollup/rollup-darwin-arm64": "4.22.4", - "@rollup/rollup-darwin-x64": "4.22.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", - "@rollup/rollup-linux-arm-musleabihf": "4.22.4", - "@rollup/rollup-linux-arm64-gnu": "4.22.4", - "@rollup/rollup-linux-arm64-musl": "4.22.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", - "@rollup/rollup-linux-riscv64-gnu": "4.22.4", - "@rollup/rollup-linux-s390x-gnu": "4.22.4", - "@rollup/rollup-linux-x64-gnu": "4.22.4", - "@rollup/rollup-linux-x64-musl": "4.22.4", - "@rollup/rollup-win32-arm64-msvc": "4.22.4", - "@rollup/rollup-win32-ia32-msvc": "4.22.4", - "@rollup/rollup-win32-x64-msvc": "4.22.4", + "@rollup/rollup-android-arm-eabi": "4.34.7", + "@rollup/rollup-android-arm64": "4.34.7", + "@rollup/rollup-darwin-arm64": "4.34.7", + "@rollup/rollup-darwin-x64": "4.34.7", + "@rollup/rollup-freebsd-arm64": "4.34.7", + "@rollup/rollup-freebsd-x64": "4.34.7", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", + "@rollup/rollup-linux-arm-musleabihf": "4.34.7", + "@rollup/rollup-linux-arm64-gnu": "4.34.7", + "@rollup/rollup-linux-arm64-musl": "4.34.7", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", + "@rollup/rollup-linux-riscv64-gnu": "4.34.7", + "@rollup/rollup-linux-s390x-gnu": "4.34.7", + "@rollup/rollup-linux-x64-gnu": "4.34.7", + "@rollup/rollup-linux-x64-musl": "4.34.7", + "@rollup/rollup-win32-arm64-msvc": "4.34.7", + "@rollup/rollup-win32-ia32-msvc": "4.34.7", + "@rollup/rollup-win32-x64-msvc": "4.34.7", "fsevents": "~2.3.2" } }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3060,10 +3700,25 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3126,6 +3781,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -3138,9 +3794,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", "dev": true, "license": "MIT" }, @@ -3198,56 +3854,88 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18" } }, - "node_modules/strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "js-tokens": "^9.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=18" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/text-table": { @@ -3258,16 +3946,33 @@ "license": "MIT" }, "node_modules/tinybench": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", - "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", + "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, "license": "MIT" }, "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", "engines": { @@ -3275,15 +3980,27 @@ } }, "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "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==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3297,12 +4014,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -3316,6 +4027,12 @@ "typescript": ">=4.2.0" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/tsx": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.11.0.tgz", @@ -3349,14 +4066,16 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", + "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==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { @@ -3397,18 +4116,11 @@ } } }, - "node_modules/ufo": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dev": true, - "license": "MIT" - }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, "license": "MIT" }, "node_modules/universalify": { @@ -3431,10 +4143,11 @@ } }, "node_modules/vite": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", - "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -3490,16 +4203,16 @@ } }, "node_modules/vite-node": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", + "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", + "debug": "^4.3.7", + "es-module-lexer": "^1.5.4", + "pathe": "^1.1.2", "vite": "^5.0.0" }, "bin": { @@ -3520,6 +4233,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -3536,6 +4250,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -3552,6 +4267,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -3568,6 +4284,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -3584,6 +4301,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3600,6 +4318,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3616,6 +4335,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -3632,6 +4352,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -3648,6 +4369,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3664,6 +4386,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3680,6 +4403,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3696,6 +4420,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3712,6 +4437,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3728,6 +4454,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3744,6 +4471,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3760,6 +4488,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3776,6 +4505,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3792,6 +4522,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -3808,6 +4539,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -3824,6 +4556,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -3840,6 +4573,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3856,6 +4590,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3872,6 +4607,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3886,6 +4622,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3919,32 +4656,32 @@ } }, "node_modules/vitest": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", + "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "1.6.0", - "@vitest/runner": "1.6.0", - "@vitest/snapshot": "1.6.0", - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", + "@vitest/expect": "2.1.9", + "@vitest/mocker": "2.1.9", + "@vitest/pretty-format": "^2.1.9", + "@vitest/runner": "2.1.9", + "@vitest/snapshot": "2.1.9", + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", + "chai": "^5.1.2", + "debug": "^4.3.7", + "expect-type": "^1.1.0", + "magic-string": "^0.30.12", + "pathe": "^1.1.2", + "std-env": "^3.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.1", + "tinypool": "^1.0.1", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "1.6.0", - "why-is-node-running": "^2.2.2" + "vite-node": "2.1.9", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" @@ -3958,8 +4695,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.0", - "@vitest/ui": "1.6.0", + "@vitest/browser": "2.1.9", + "@vitest/ui": "2.1.9", "happy-dom": "*", "jsdom": "*" }, @@ -3984,22 +4721,6 @@ } } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4016,9 +4737,9 @@ } }, "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "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": { @@ -4139,6 +4860,15 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -4151,6 +4881,27 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index 71e95f5..07fcc71 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,15 @@ "studiorack": "./build/index.js" }, "scripts": { - "build": "npm run clean && tsc", + "build": "npm run clean && tsc -p tsconfig.json", + "check": "npm run format && npm run lint && npm run build", "clean": "rimraf coverage build tmp", "dev": "tsx ./src/index.ts", "dev:cli": "rm $(which studiorack) && npm run build && npm link", "format": "prettier . --write", "lint": "eslint .", "test": "vitest run ./tests --hook-timeout=60000 --test-timeout=60000 --no-file-parallelism", + "test:watch": "vitest ./tests", "prepare": "npm run build" }, "keywords": [ @@ -37,13 +39,14 @@ "node": ">=18" }, "dependencies": { - "@studiorack/core": "^2.0.13", + "@open-audio-stack/core": "^0.1.17", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, "devDependencies": { "@eslint/js": "^9.12.0", - "@types/node": "^20.12.12", + "@types/node": "^22.7.8", + "@vitest/coverage-v8": "^2.1.9", "eslint": "^9.12.0", "globals": "^15.2.0", "prettier": "^3.2.5", @@ -51,7 +54,7 @@ "tsx": "^4.10.1", "typescript": "^5.6.3", "typescript-eslint": "^8.9.0", - "vitest": "^1.6.0" + "vitest": "^2.1.3" }, "repository": { "type": "git", diff --git a/src/config.ts b/src/commands/config.ts similarity index 52% rename from src/config.ts rename to src/commands/config.ts index f02075b..ffe5d90 100644 --- a/src/config.ts +++ b/src/commands/config.ts @@ -1,40 +1,41 @@ import { Command } from 'commander'; -import { configGet, configSet, ConfigInterface, logEnable } from '@studiorack/core'; -import { CliOptions } from './types/options.js'; +import { CliOptions } from '../types/options.js'; +import { ConfigInterface, ConfigLocal, dirApp, isTests } from '@open-audio-stack/core'; +const appDir: string = isTests() ? 'test' : dirApp(); +const config: ConfigLocal = new ConfigLocal({ appDir }); +config.logEnable(); const program = new Command(); -const config = program.command('config').description('View/update configuration'); +export const configCmd = program.command('config').description('View/update configuration'); -config +configCmd .command('get ') .option('-j, --json', 'Output results as json') .option('-l, --log', 'Enable logging') .description('Get a config setting by key') .action((key: keyof ConfigInterface, options: CliOptions) => { - if (options.log) logEnable(); + // if (options.log) config.logEnable(); if (options.json) { const obj: any = {}; - obj[key] = configGet(key); - console.log(obj); + obj[key] = config.get(key); + console.log({ key }); } else { - console.log(configGet(key)); + console.log(config.get(key)); } }); -config +configCmd .command('set ') .option('-j, --json', 'Output results as json') .option('-l, --log', 'Enable logging') .description('Set a config setting by key and value') .action((key: keyof ConfigInterface, val: any, options: CliOptions) => { - if (options.log) logEnable(); + // if (options.log) config.logEnable(); if (options.json) { const obj: any = {}; - obj[key] = configSet(key, val); + obj[key] = config.set(key, val); console.log(obj); } else { - console.log(configSet(key, val)); + console.log(config.set(key, val)); } }); - -export { config }; diff --git a/src/commands/create.ts b/src/commands/create.ts new file mode 100644 index 0000000..00efb84 --- /dev/null +++ b/src/commands/create.ts @@ -0,0 +1,16 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal } from '@open-audio-stack/core'; + +export function create(command: Command, manager: ManagerLocal) { + command + .command('create ') + .option('-l, --log', 'Enable logging') + .description('Create a new package locally') + .action(async (path: string, options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + console.log(await manager.create()); + console.log(path); + }); +} diff --git a/src/commands/filter.ts b/src/commands/filter.ts new file mode 100644 index 0000000..a711a6f --- /dev/null +++ b/src/commands/filter.ts @@ -0,0 +1,15 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal, PackageVersion } from '@open-audio-stack/core'; + +export function filter(command: Command, manager: ManagerLocal) { + command + .command('filter ') + .option('-l, --log', 'Enable logging') + .description('Filter the by field and matching value') + .action((field: keyof PackageVersion, value: string, options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + console.log(manager.filter(pkgVersion => pkgVersion[field] === value)); + }); +} diff --git a/src/commands/get.ts b/src/commands/get.ts new file mode 100644 index 0000000..60f94c8 --- /dev/null +++ b/src/commands/get.ts @@ -0,0 +1,23 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { inputGetParts, ManagerLocal, Package, PackageVersion } from '@open-audio-stack/core'; + +export function get(command: Command, manager: ManagerLocal) { + command + .command('get ') + .option('-l, --log', 'Enable logging') + .description('Get package metadata from registry') + .action((input: string, options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + const [slug, version] = inputGetParts(input); + + const pkg: Package | undefined = manager.getPackage(slug); + if (!pkg) console.error(`Package ${slug} not found in registry`); + const versionNum: string = version || pkg?.latestVersion() || '0.0.0'; + const pkgVersion: PackageVersion | undefined = pkg?.getVersion(versionNum); + if (!pkgVersion) console.error(`Package ${slug} version ${versionNum} not found in registry`); + + console.log(pkgVersion); + }); +} diff --git a/src/commands/install.ts b/src/commands/install.ts new file mode 100644 index 0000000..58c23fa --- /dev/null +++ b/src/commands/install.ts @@ -0,0 +1,16 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { inputGetParts, ManagerLocal } from '@open-audio-stack/core'; + +export function install(command: Command, manager: ManagerLocal) { + command + .command('install ') + .option('-l, --log', 'Enable logging') + .description('Install a package locally by slug/version') + .action(async (input: string, options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + const [slug, version] = inputGetParts(input); + console.log(await manager.install(slug, version)); + }); +} diff --git a/src/commands/list.ts b/src/commands/list.ts new file mode 100644 index 0000000..1f7d9c7 --- /dev/null +++ b/src/commands/list.ts @@ -0,0 +1,15 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal } from '@open-audio-stack/core'; + +export function list(command: Command, manager: ManagerLocal) { + command + .command('list') + .option('-l, --log', 'Enable logging') + .description('List all packages synced from remote registries') + .action(async (options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + console.log(manager.listPackages()); + }); +} diff --git a/src/commands/reset.ts b/src/commands/reset.ts new file mode 100644 index 0000000..1872d34 --- /dev/null +++ b/src/commands/reset.ts @@ -0,0 +1,15 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal } from '@open-audio-stack/core'; + +export function reset(command: Command, manager: ManagerLocal) { + command + .command('reset') + .option('-l, --log', 'Enable logging') + .description('Reset the synced package cache') + .action((options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + manager.reset(); + }); +} diff --git a/src/commands/scan.ts b/src/commands/scan.ts new file mode 100644 index 0000000..72c58e7 --- /dev/null +++ b/src/commands/scan.ts @@ -0,0 +1,15 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal } from '@open-audio-stack/core'; + +export function scan(command: Command, manager: ManagerLocal) { + command + .command('scan') + .option('-l, --log', 'Enable logging') + .description('Scan and aggregate locally installed packages into cache') + .action(async (options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + await manager.scan(); + }); +} diff --git a/src/commands/search.ts b/src/commands/search.ts new file mode 100644 index 0000000..0ad4e9c --- /dev/null +++ b/src/commands/search.ts @@ -0,0 +1,15 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal } from '@open-audio-stack/core'; + +export function search(command: Command, manager: ManagerLocal) { + command + .command('search ') + .option('-l, --log', 'Enable logging') + .description('Search using a lazy matching query') + .action(async (query: string, options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + console.log(manager.search(query)); + }); +} diff --git a/src/commands/sync.ts b/src/commands/sync.ts new file mode 100644 index 0000000..49c8b34 --- /dev/null +++ b/src/commands/sync.ts @@ -0,0 +1,15 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { ManagerLocal } from '@open-audio-stack/core'; + +export function sync(command: Command, manager: ManagerLocal) { + command + .command('sync') + .option('-l, --log', 'Enable logging') + .description('Sync remote registries and aggregate packages into cache') + .action(async (options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + await manager.sync(); + }); +} diff --git a/src/commands/uninstall.ts b/src/commands/uninstall.ts new file mode 100644 index 0000000..de873c3 --- /dev/null +++ b/src/commands/uninstall.ts @@ -0,0 +1,16 @@ +import { Command } from 'commander'; +import { CliOptions } from '../types/options.js'; +import { inputGetParts, ManagerLocal } from '@open-audio-stack/core'; + +export function uninstall(command: Command, manager: ManagerLocal) { + command + .command('uninstall ') + .option('-l, --log', 'Enable logging') + .description('Uninstall a package locally by slug/version') + .action(async (input: string, options: CliOptions) => { + if (options.log) manager.logEnable(); + else manager.logDisable(); + const [slug, version] = inputGetParts(input); + console.log(await manager.uninstall(slug, version)); + }); +} diff --git a/src/index.ts b/src/index.ts index ed9f9e5..bb34d49 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,50 +1,39 @@ #!/usr/bin/env node +import { dirApp, isTests, ManagerLocal, RegistryType } from '@open-audio-stack/core'; import { Command } from 'commander'; -import { config } from './config.js'; -import { plugin } from './plugin.js'; -import { project } from './project.js'; -import { logEnable, pluginValidateFolder, PluginVersion, toolFolder, toolInstall } from '@studiorack/core'; -import { CliRunOptions, CliValidateOptions } from './types/options.js'; +import { sync } from './commands/sync.js'; +import { configCmd } from './commands/config.js'; +import { create } from './commands/create.js'; +import { filter } from './commands/filter.js'; +import { get } from './commands/get.js'; +import { install } from './commands/install.js'; +import { list } from './commands/list.js'; +import { reset } from './commands/reset.js'; +import { scan } from './commands/scan.js'; +import { search } from './commands/search.js'; +import { uninstall } from './commands/uninstall.js'; +// Create based program and add static commands. +const appDir: string = isTests() ? 'test' : dirApp(); const program = new Command(); -program.addCommand(config); -program.addCommand(plugin); -program.addCommand(project); +program.addCommand(configCmd); -program - .command('run [path]') - .option('-j, --json', 'plugin json file') - .option('-l, --log', 'Enable logging') - .option('-t, --tool ', 'tool (clapinfo, pluginval or validator)') - .description('Run a command-line tool') - .action(async (pluginPath: string, options: CliRunOptions) => { - if (options.log) logEnable(); - await toolInstall(options.tool); - const results: string[] = toolFolder(options.tool, pluginPath); - if (results.length) { - results.forEach((result: string) => { - console.log(result); - }); - } - }); +// Dynamically add commands for each registry type. +const types = [RegistryType.Plugins, RegistryType.Presets, RegistryType.Projects]; +types.forEach((type: RegistryType) => { + const command: Command = program.command(type); + const manager: ManagerLocal = new ManagerLocal(type, { appDir }); + create(command, manager); + filter(command, manager); + get(command, manager); + install(command, manager); + list(command, manager); + reset(command, manager); + scan(command, manager); + search(command, manager); + sync(command, manager); + uninstall(command, manager); +}); -// Backwards compatibility with Github Actions -program - .command('validate [path]') - .option('-f, --files', 'add files (audio, video and platform)') - .option('-j, --json', 'plugin json file') - .option('-l, --log', 'Enable logging') - .option('-s, --summary', 'plugins summary json file') - .option('-t, --txt', 'plugin txt file') - .option('-z, --zip', 'create a zip file of plugin') - .description('Validate a plugin using the Steinberg VST3 SDK validator') - .action(async (pluginPath: string, options: CliValidateOptions) => { - if (options.log) logEnable(); - const result: PluginVersion[] = await pluginValidateFolder(pluginPath, options); - if (options.summary) { - console.log(result); - } - }); - -program.version('2.0.1').parse(process.argv); +program.version('3.0.0').parse(process.argv); diff --git a/src/plugin.ts b/src/plugin.ts deleted file mode 100644 index 02f3a55..0000000 --- a/src/plugin.ts +++ /dev/null @@ -1,154 +0,0 @@ -import CliTable3 from 'cli-table3'; -import { Command } from 'commander'; -import { - inputGetParts, - pluginCreate, - pluginGet, - pluginInstall, - pluginUninstall, - pluginGetLocal, - pluginsGet, - pluginsGetLocal, - pluginSearch, - pluginLatest, - logEnable, -} from '@studiorack/core'; -import { CliOptions, CliPluginCreateOptions } from './types/options.js'; - -const program = new Command(); -const plugin = program.command('plugin').description('View/add/remove individual plugins'); - -plugin - .command('create ') - .option('-l, --log', 'Enable logging') - .option('-t, --type ', 'Template type (dplug, iplug, juce, steinberg)') - .description('Create plugin using a starter template') - .action((path: string, options: CliPluginCreateOptions) => { - if (options.log) logEnable(); - console.log(pluginCreate(path, options.type)); - }); - -plugin - .command('get ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Get registry plugin by id') - .action(async (input: string, options: CliOptions) => { - if (options.log) logEnable(); - const [pluginId, pluginVersion] = inputGetParts(input); - console.log(formatOutput(await pluginGet(pluginId, pluginVersion), options.json)); - }); - -plugin - .command('getLocal ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Get local plugin details by id') - .action(async (input: string, options: CliOptions) => { - if (options.log) logEnable(); - const [pluginId, pluginVersion] = inputGetParts(input); - console.log(formatOutput(await pluginGetLocal(pluginId, pluginVersion), options.json)); - }); - -plugin - .command('install ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Install a plugin by id') - .action(async (input: string, options: CliOptions) => { - if (options.log) logEnable(); - const [pluginId, pluginVersion] = inputGetParts(input); - console.log(formatOutput(await pluginInstall(pluginId, pluginVersion), options.json)); - }); - -plugin - .command('list') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('List registry plugins') - .action(async (options: CliOptions) => { - if (options.log) logEnable(); - console.log(formatOutput(await pluginsGet(), options.json, true)); - }); - -plugin - .command('listLocal') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('List local plugins') - .action(async (options: CliOptions) => { - if (options.log) logEnable(); - console.log(formatOutput(await pluginsGetLocal(), options.json, true)); - }); - -plugin - .command('search ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Search registry plugins') - .action(async (query: string, options: CliOptions) => { - if (options.log) logEnable(); - console.log(formatOutput(await pluginSearch(query), options.json, true)); - }); - -plugin - .command('uninstall ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Uninstall a plugin by id') - .action(async (input: string, options: CliOptions) => { - if (options.log) logEnable(); - const [pluginId, pluginVersion] = inputGetParts(input); - console.log(formatOutput(await pluginUninstall(pluginId, pluginVersion), options.json)); - }); - -// Helper function to format output -function formatOutput(result: any, json?: boolean, list?: boolean): string { - if (!result) { - return `Plugin not found`; - } - if (json) { - return JSON.stringify(result, null, 2); - } - const table = new CliTable3({ - head: ['Id', 'Name', 'Version', 'Date', 'License', 'Tags'], - }); - if (list) { - if (result.length === 0) { - return `No results found`; - } - for (const key in result) { - const latest = result[key].versions ? pluginLatest(result[key]) : result[key]; - table.push([ - latest.id || key || '-', - truncateString(latest.name || '-', 40), - truncateString(result[key].version || '-', 10), - truncateString(latest.date?.split('T')[0] || '-', 10), - truncateString(latest.license || '-', 20), - truncateString(latest.tags?.join(', ') || '-', 30), - ]); - } - } else { - const latest = result.versions ? pluginLatest(result) : result; - table.push([ - latest.id || '-', - truncateString(latest.name || '-', 40), - truncateString(result.version || '-', 10), - truncateString(latest.date?.split('T')[0] || '-', 10), - truncateString(latest.license || '-', 10), - truncateString(latest.tags?.join(', ') || '-', 30), - ]); - } - return table.toString(); -} - -// Helper function to format strings -function truncateString(str: string, num: number) { - if (str.length > num) { - return str.slice(0, num) + '...'; - } else { - return str; - } -} - -export { plugin }; diff --git a/src/project.ts b/src/project.ts deleted file mode 100644 index 95c4f6f..0000000 --- a/src/project.ts +++ /dev/null @@ -1,147 +0,0 @@ -import CliTable3 from 'cli-table3'; -import { Command } from 'commander'; -import { - inputGetParts, - pathGetWithoutExt, - projectCreate, - projectInstall, - projectGetLocal, - projectsGetLocal, - projectStart, - projectUninstall, - logEnable, -} from '@studiorack/core'; -import { CliOptions, CliProjectCreateOptions } from './types/options.js'; - -const program = new Command(); -const project = program.command('project').description('View/update projects'); - -project - .command('create ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .option('-p, --prompt ', 'Prompt questions') - .description('Create project using a starter template') - .action((path: string, options: CliProjectCreateOptions) => { - if (options.log) logEnable(); - console.log(projectCreate(path, options.prompt)); - }); - -project - .command('getLocal ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Get local project details by id') - .action(async (id: string, options: CliOptions) => { - if (options.log) logEnable(); - console.log(formatOutput(await projectGetLocal(id), options.json)); - }); - -project - .command('install [input]') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Install project by id') - .action(async (id: string, input?: string, options?: CliOptions) => { - if (options?.log) logEnable(); - const projectLocal = await projectGetLocal(id); - const [pluginId, pluginVersion] = inputGetParts(input || ''); - console.log( - formatOutput( - await projectInstall( - `${projectLocal.path}/${pathGetWithoutExt(projectLocal.files.project.name || projectLocal.files.project.url)}.json`, - pluginId, - pluginVersion, - ), - options?.json, - ), - ); - }); - -project - .command('listLocal') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('List local projects') - .action(async (options: CliOptions) => { - if (options.log) logEnable(); - console.log(formatOutput(await projectsGetLocal(), options.json, true)); - }); - -project - .command('open ') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Open project by id') - .action(async (id: string, options: CliOptions) => { - if (options.log) logEnable(); - const projectLocal = await projectGetLocal(id); - await projectStart( - `${projectLocal.path}/${pathGetWithoutExt(projectLocal.files.project.name || projectLocal.files.project.url)}.json`, - ); - }); - -project - .command('uninstall [input]') - .option('-j, --json', 'Output results as json') - .option('-l, --log', 'Enable logging') - .description('Uninstall project by id') - .action(async (id: string, input?: string, options?: CliOptions) => { - if (options?.log) logEnable(); - const projectLocal = await projectGetLocal(id); - const [pluginId, pluginVersion] = inputGetParts(input || ''); - console.log( - formatOutput( - await projectUninstall( - `${projectLocal.path}/${pathGetWithoutExt(projectLocal.files.project.name || projectLocal.files.project.url)}.json`, - pluginId, - pluginVersion, - ), - options?.json, - ), - ); - }); - -// Helper function to format output -function formatOutput(result: any, json?: boolean, list?: boolean): string { - if (!result) { - return `Project not found`; - } - if (json) { - return JSON.stringify(result, null, 2); - } - const table = new CliTable3({ - head: ['Id', 'Name', 'Description', 'Date', 'Version', 'Tags'], - }); - if (list) { - if (result.length === 0) { - return `No results found`; - } - for (const key in result) { - const latest = result[key]; - table.push([ - latest.id || '-', - latest.name || '-', - latest.description || '-', - latest.date?.split('T')[0] || '-', - latest.version || '-', - latest.tags?.join(', ') || '-', - // Object.keys(latest.plugins).join(', ') || '-', - ]); - } - } else { - const latest = result; - table.push([ - latest.id || '-', - latest.name || '-', - latest.description || '-', - latest.date?.split('T')[0] || '-', - latest.version || '-', - latest.tags?.join(', ') || '-', - // Object.keys(latest.plugins).join(', ') || '-', - ]); - } - return table.toString(); -} - -export { project }; diff --git a/src/types/options.ts b/src/types/options.ts index e2c570e..0c4e32b 100644 --- a/src/types/options.ts +++ b/src/types/options.ts @@ -1,14 +1,8 @@ -import { PluginTemplate, Tools } from '@studiorack/core'; - export interface CliOptions { json?: boolean; log?: boolean; } -export interface CliRunOptions extends CliOptions { - tool: keyof Tools; -} - export interface CliValidateOptions extends CliOptions { files?: boolean; summary?: boolean; @@ -16,10 +10,6 @@ export interface CliValidateOptions extends CliOptions { zip?: boolean; } -export interface CliPluginCreateOptions extends CliOptions { - type?: keyof PluginTemplate; -} - export interface CliProjectCreateOptions extends CliOptions { prompt?: boolean; } diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..213045a --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,49 @@ +import CliTable3 from 'cli-table3'; + +export function formatOutput(result: any, json?: boolean, list?: boolean): string { + if (!result) { + return `Plugin not found`; + } + if (json) { + return JSON.stringify(result, null, 2); + } + const table = new CliTable3({ + head: ['Id', 'Name', 'Version', 'Date', 'License', 'Tags'], + }); + if (list) { + if (result.length === 0) { + return `No results found`; + } + for (const key in result) { + const latest = result[key].versions ? result[key].versions[result[key].version] : result[key]; + table.push([ + latest.id || key || '-', + truncateString(latest.name || '-', 40), + truncateString(result[key].version || '-', 10), + truncateString(latest.date?.split('T')[0] || '-', 10), + truncateString(latest.license || '-', 20), + truncateString(latest.tags?.join(', ') || '-', 30), + ]); + } + } else { + const latest = result.versions ? result.versions[result.version] : result; + table.push([ + latest.id || '-', + truncateString(latest.name || '-', 40), + truncateString(result.version || '-', 10), + truncateString(latest.date?.split('T')[0] || '-', 10), + truncateString(latest.license || '-', 10), + truncateString(latest.tags?.join(', ') || '-', 30), + ]); + } + return table.toString(); +} + +// Helper function to format strings +export function truncateString(str: string, num: number) { + if (str.length > num) { + return str.slice(0, num) + '...'; + } else { + return str; + } +} diff --git a/tests/config.test.ts b/tests/commands/config.test.ts similarity index 92% rename from tests/config.test.ts rename to tests/commands/config.test.ts index efee0f0..4c08c13 100644 --- a/tests/config.test.ts +++ b/tests/commands/config.test.ts @@ -1,5 +1,5 @@ import { expect, test } from 'vitest'; -import { cli, CliOutput } from './shared'; +import { cli, CliOutput } from '../shared'; import path from 'path'; const PLUGIN_DIR: string = path.join('test', 'plugins'); diff --git a/tests/plugin.test.ts b/tests/plugin.test.ts deleted file mode 100644 index 4d18e83..0000000 --- a/tests/plugin.test.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { beforeAll, expect, test } from 'vitest'; -import { cli, CliOutput } from './shared'; -import path from 'path'; -import { PluginVersion, PluginVersionLocal, dirDelete } from '@studiorack/core'; - -const PLUGIN_DIR: string = path.join('test', 'plugins'); -const PLUGIN_ID: string = 'studiorack/mda'; -const PLUGIN: PluginVersion = { - name: 'MDA', - author: 'Paul Kellett', - homepage: 'https://github.com/studiorack/mda', - description: 'Collection of effect plug-ins, from delay to an overdrive and a vocoder.', - date: '2020-12-20T08:00:00.000Z', - license: 'gpl-3.0', - tags: ['Effect', 'Delay', 'Vocoder'], - files: { - audio: { - url: 'https://studiorack.github.io/studiorack-registry/plugins/studiorack/mda/mda.flac', - size: 127392, - }, - image: { - url: 'https://studiorack.github.io/studiorack-registry/plugins/studiorack/mda/mda.jpg', - size: 104156, - }, - linux: { - url: 'https://github.com/studiorack/mda/releases/download/v1.0.4/mda-linux.zip', - size: 70938, - }, - mac: { - url: 'https://github.com/studiorack/mda/releases/download/v1.0.4/mda-mac.zip', - size: 5122516, - }, - win: { - url: 'https://github.com/studiorack/mda/releases/download/v1.0.4/mda-win.zip', - size: 1247768, - }, - }, - id: 'studiorack/mda', - version: '1.0.4', -}; -const PLUGIN_LOCAL: PluginVersionLocal = { - name: 'MDA', - author: 'Paul Kellett', - homepage: 'https://github.com/studiorack/mda', - description: 'Collection of effect plug-ins, from delay to an overdrive and a vocoder.', - date: '2020-12-20T08:00:00.000Z', - license: 'gpl-3.0', - tags: ['Effect', 'Delay', 'Vocoder'], - files: { - audio: { - url: 'https://studiorack.github.io/studiorack-registry/plugins/studiorack/mda/mda.flac', - size: 127392, - }, - image: { - url: 'https://studiorack.github.io/studiorack-registry/plugins/studiorack/mda/mda.jpg', - size: 104156, - }, - linux: { - url: 'https://github.com/studiorack/mda/releases/download/v1.0.4/mda-linux.zip', - size: 70938, - }, - mac: { - url: 'https://github.com/studiorack/mda/releases/download/v1.0.4/mda-mac.zip', - size: 5122516, - }, - win: { - url: 'https://github.com/studiorack/mda/releases/download/v1.0.4/mda-win.zip', - size: 1247768, - }, - }, - id: 'studiorack/mda', - version: '1.0.4', - paths: [], - status: 'installed', -}; - -if (process.platform === 'win32') { - PLUGIN_LOCAL.paths = [ - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Bandisto.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda BeatBox.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Combo.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda De-ess.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Degrade.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Delay.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Detune.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Dither.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda DubDelay.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Dynamics.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Envelope.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Image.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Leslie.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Limiter.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Loudness.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda MultiBand.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Overdrive.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda RePsycho!.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda RezFilter.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda RingMod.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda RoundPan.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Shepard.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Splitter.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Stereo.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda SubSynth.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Talkbox.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda TestTone.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda ThruZero.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Tracker.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda VocInput.dll'), - path.join('test', 'plugins', 'DLL', 'studiorack', 'mda', '1.0.4', 'mda Vocoder.dll'), - ]; -} else if (process.platform === 'darwin') { - PLUGIN_LOCAL.paths = [ - path.join('test', 'plugins', 'Components', 'studiorack', 'mda', '1.0.4', 'mda.component'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Ambience.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Bandisto.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda BeatBox.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Combo.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda DX10.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda De-ess.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Degrade.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Delay.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Detune.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Dither.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda DubDelay.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Dynamics.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Image.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda JX10.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Leslie.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Limiter.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Looplex.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Loudness.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda MultiBand.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Overdrive.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Piano.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda RePsycho!.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda RezFilter.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda RingMod.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda RoundPan.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Shepard.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Splitter.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Stereo.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda SubBass.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Talkbox.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda TestTone.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda ThruZero.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Tracker.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda VocInput.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda Vocoder.vst'), - path.join('test', 'plugins', 'VST', 'studiorack', 'mda', '1.0.4', 'mda ePiano.vst'), - ]; -} else { - PLUGIN_LOCAL.paths = [path.join('test', 'plugins', 'LV2', 'studiorack', 'mda', '1.0.4', 'mda.lv2')]; -} - -function format(obj: any) { - return JSON.stringify(obj, null, 2); -} - -beforeAll(async () => { - await cli(`config set pluginFolder "${PLUGIN_DIR}"`); - dirDelete(PLUGIN_DIR); -}); - -test('Plugin get', async () => { - const output: CliOutput = await cli(`plugin get "${PLUGIN_ID}" --json`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(format(PLUGIN)); -}); - -test('Plugin install', async () => { - const output: CliOutput = await cli(`plugin install "${PLUGIN_ID}" --json`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(format(PLUGIN_LOCAL)); -}); - -test('Plugin getLocal', async () => { - const output: CliOutput = await cli(`plugin getLocal "${PLUGIN_ID}" --json`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(format(PLUGIN_LOCAL)); -}); - -test('Plugin listLocal', async () => { - const output: CliOutput = await cli(`plugin listLocal --json`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(format([PLUGIN_LOCAL])); -}); - -test('Plugin search', async () => { - const output: CliOutput = await cli(`plugin search "mda" --json`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(format([PLUGIN])); -}); - -test('Plugin uninstall', async () => { - const PLUGIN_LOCAL_UPDATED: any = Object.assign({}, PLUGIN_LOCAL); - PLUGIN_LOCAL_UPDATED.paths = []; - PLUGIN_LOCAL_UPDATED.status = 'available'; - const output: CliOutput = await cli(`plugin uninstall "${PLUGIN_ID}" --json`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(format(PLUGIN_LOCAL_UPDATED)); -}); diff --git a/tests/shared.ts b/tests/shared.ts index ef9875e..8da6bf1 100644 --- a/tests/shared.ts +++ b/tests/shared.ts @@ -1,4 +1,3 @@ -import { dirAppData } from '@studiorack/core'; import { exec, ExecException } from 'child_process'; import path from 'path'; @@ -8,8 +7,6 @@ interface CliOutput { stdout: string; stderr: string; } - -const APP_DIR: string = path.join(dirAppData(), 'studiorack'); const CLI_PATH: string = path.resolve('./', 'build', 'index.js'); function cli(cmd: string, cwd = '.'): Promise { @@ -26,8 +23,9 @@ function cli(cmd: string, cwd = '.'): Promise { } function cleanOutput(output: string): string { - const regex: RegExp = new RegExp(APP_DIR, 'g'); - return output.replace(regex, '${APP_DIR}'); + return output; + // const regex: RegExp = new RegExp(dirApp(), 'g'); + // return output.replace(regex, '${APP_DIR}'); } export { cli, CliOutput }; diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..d89dd33 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,12 @@ +/// +import { defineConfig } from 'vite'; + +export default defineConfig({ + test: { + coverage: { + enabled: true, + include: ['**/src/**'], + exclude: ['./src/index.ts', './src/index-browser.ts'], + }, + }, +}); From dacf0df81704f21b6f71f19e31112b354df219ca Mon Sep 17 00:00:00 2001 From: Kim T Date: Mon, 24 Feb 2025 22:00:55 -0800 Subject: [PATCH 02/11] Refactor cli integration tests --- .gitignore | 1 + package-lock.json | 1347 ++++++++--------- package.json | 9 +- src/commands/config.ts | 9 +- src/data/Config.ts | 28 + src/index.ts | 6 +- .../__snapshots__/config.test.ts.snap | 24 + tests/commands/config.test.ts | 35 +- tests/data/Plugin.ts | 116 ++ tests/data/Preset.ts | 49 + tests/data/Project.ts | 61 + tests/data/Registry.ts | 66 + 12 files changed, 981 insertions(+), 770 deletions(-) create mode 100644 src/data/Config.ts create mode 100644 tests/commands/__snapshots__/config.test.ts.snap create mode 100644 tests/data/Plugin.ts create mode 100644 tests/data/Preset.ts create mode 100644 tests/data/Project.ts create mode 100644 tests/data/Registry.ts diff --git a/.gitignore b/.gitignore index 44d989f..cd379ff 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ out/ # Misc .DS_Store +test/config.json test/plugins test/projects test/tool diff --git a/package-lock.json b/package-lock.json index ce31fd1..b16e830 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.2", "license": "MIT", "dependencies": { - "@open-audio-stack/core": "^0.1.17", + "@open-audio-stack/core": "^0.1.19", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, @@ -19,15 +19,16 @@ "devDependencies": { "@eslint/js": "^9.12.0", "@types/node": "^22.7.8", - "@vitest/coverage-v8": "^2.1.9", + "@vitest/coverage-v8": "^3.0.7", "eslint": "^9.12.0", + "execa": "^9.5.2", "globals": "^15.2.0", "prettier": "^3.2.5", "rimraf": "^5.0.7", "tsx": "^4.10.1", "typescript": "^5.6.3", "typescript-eslint": "^8.9.0", - "vitest": "^2.1.3" + "vitest": "^3.0.7" }, "engines": { "node": ">=18" @@ -98,11 +99,14 @@ } }, "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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/@colors/colors": { "version": "1.5.0", @@ -115,9 +119,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], @@ -128,13 +132,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "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==", "cpu": [ "arm" ], @@ -145,13 +149,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], @@ -162,13 +166,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "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==", "cpu": [ "x64" ], @@ -179,13 +183,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], @@ -196,13 +200,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], @@ -213,13 +217,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], @@ -230,13 +234,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], @@ -247,13 +251,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], @@ -264,13 +268,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], @@ -281,13 +285,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], @@ -298,13 +302,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], @@ -315,13 +319,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], @@ -332,13 +336,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "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==", "cpu": [ "ppc64" ], @@ -349,13 +353,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "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==", "cpu": [ "riscv64" ], @@ -366,13 +370,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], @@ -383,13 +387,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "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==", "cpu": [ "x64" ], @@ -400,13 +404,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "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==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], @@ -417,13 +438,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "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==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], @@ -434,13 +472,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], @@ -451,13 +489,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], @@ -468,13 +506,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "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==", "cpu": [ "ia32" ], @@ -485,13 +523,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "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==", "cpu": [ "x64" ], @@ -502,7 +540,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1191,9 +1229,9 @@ } }, "node_modules/@open-audio-stack/core": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.17.tgz", - "integrity": "sha512-kuTqchRwJC5Tksww4HTMC6hmWjJ9NUoHZf8pe0UW7FG+ZsShXaPJ7sKbFo+X1X+NxoTP8FHqMxVMkBLORQlSEw==", + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.19.tgz", + "integrity": "sha512-i4kjxkFOKfQtZyzgvbMDhvzJOgbIT5vo97IoPLSAdOvFZWEsbKbwqvhxX5dbWZmbn3VGqkNYaX76Uh2qGhSwvw==", "license": "cc0-1.0", "dependencies": { "@vscode/sudo-prompt": "^9.3.1", @@ -1332,9 +1370,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", - "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", "cpu": [ "arm" ], @@ -1346,9 +1384,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", - "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", "cpu": [ "arm64" ], @@ -1360,9 +1398,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", - "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", "cpu": [ "arm64" ], @@ -1374,9 +1412,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", - "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", "cpu": [ "x64" ], @@ -1388,9 +1426,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", - "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", "cpu": [ "arm64" ], @@ -1402,9 +1440,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", - "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", "cpu": [ "x64" ], @@ -1416,9 +1454,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", - "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", "cpu": [ "arm" ], @@ -1430,9 +1468,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", - "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", "cpu": [ "arm" ], @@ -1444,9 +1482,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", - "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", "cpu": [ "arm64" ], @@ -1458,9 +1496,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", - "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", "cpu": [ "arm64" ], @@ -1472,9 +1510,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", - "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", "cpu": [ "loong64" ], @@ -1486,9 +1524,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", - "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", "cpu": [ "ppc64" ], @@ -1500,9 +1538,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", - "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", "cpu": [ "riscv64" ], @@ -1514,9 +1552,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", - "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", "cpu": [ "s390x" ], @@ -1528,9 +1566,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", - "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", "cpu": [ "x64" ], @@ -1542,9 +1580,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", - "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", "cpu": [ "x64" ], @@ -1556,9 +1594,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", - "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", "cpu": [ "arm64" ], @@ -1570,9 +1608,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", - "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", "cpu": [ "ia32" ], @@ -1584,9 +1622,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", - "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", "cpu": [ "x64" ], @@ -1597,6 +1635,26 @@ "win32" ] }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -1838,31 +1896,31 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.9.tgz", - "integrity": "sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.7.tgz", + "integrity": "sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.7", + "@bcoe/v8-coverage": "^1.0.2", + "debug": "^4.4.0", "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.12", + "magic-string": "^0.30.17", "magicast": "^0.3.5", "std-env": "^3.8.0", "test-exclude": "^7.0.1", - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "2.1.9", - "vitest": "2.1.9" + "@vitest/browser": "3.0.7", + "vitest": "3.0.7" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -1871,38 +1929,38 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", - "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.7.tgz", + "integrity": "sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.9", - "@vitest/utils": "2.1.9", - "chai": "^5.1.2", - "tinyrainbow": "^1.2.0" + "@vitest/spy": "3.0.7", + "@vitest/utils": "3.0.7", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", - "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.7.tgz", + "integrity": "sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.9", + "@vitest/spy": "3.0.7", "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" + "magic-string": "^0.30.17" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0" + "vite": "^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { "msw": { @@ -1914,51 +1972,51 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", - "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.7.tgz", + "integrity": "sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", - "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.7.tgz", + "integrity": "sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.9", - "pathe": "^1.1.2" + "@vitest/utils": "3.0.7", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", - "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.7.tgz", + "integrity": "sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.9", - "magic-string": "^0.30.12", - "pathe": "^1.1.2" + "@vitest/pretty-format": "3.0.7", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", - "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.7.tgz", + "integrity": "sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==", "dev": true, "license": "MIT", "dependencies": { @@ -1969,15 +2027,15 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", - "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.7.tgz", + "integrity": "sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" + "@vitest/pretty-format": "3.0.7", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2335,9 +2393,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2345,32 +2403,34 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@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/escape-string-regexp": { @@ -2577,6 +2637,33 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/expect-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", @@ -2662,6 +2749,22 @@ "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -2771,6 +2874,23 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-tsconfig": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", @@ -2886,6 +3006,16 @@ "dev": true, "license": "MIT" }, + "node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3003,6 +3133,45 @@ "node": ">=0.12.0" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3343,6 +3512,36 @@ "dev": true, "license": "MIT" }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -3421,6 +3620,19 @@ "node": ">=6" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "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", @@ -3457,9 +3669,9 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "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" }, @@ -3494,9 +3706,9 @@ } }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -3548,6 +3760,22 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3629,9 +3857,9 @@ } }, "node_modules/rollup": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", - "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3645,25 +3873,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.7", - "@rollup/rollup-android-arm64": "4.34.7", - "@rollup/rollup-darwin-arm64": "4.34.7", - "@rollup/rollup-darwin-x64": "4.34.7", - "@rollup/rollup-freebsd-arm64": "4.34.7", - "@rollup/rollup-freebsd-x64": "4.34.7", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", - "@rollup/rollup-linux-arm-musleabihf": "4.34.7", - "@rollup/rollup-linux-arm64-gnu": "4.34.7", - "@rollup/rollup-linux-arm64-musl": "4.34.7", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", - "@rollup/rollup-linux-riscv64-gnu": "4.34.7", - "@rollup/rollup-linux-s390x-gnu": "4.34.7", - "@rollup/rollup-linux-x64-gnu": "4.34.7", - "@rollup/rollup-linux-x64-musl": "4.34.7", - "@rollup/rollup-win32-arm64-msvc": "4.34.7", - "@rollup/rollup-win32-ia32-msvc": "4.34.7", - "@rollup/rollup-win32-x64-msvc": "4.34.7", + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", "fsevents": "~2.3.2" } }, @@ -3854,6 +4082,19 @@ "node": ">=8" } }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3970,9 +4211,9 @@ } }, "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "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": { @@ -4034,13 +4275,13 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.11.0.tgz", - "integrity": "sha512-vzGGELOgAupsNVssAmZjbUDfdm/pWP4R+Kg8TVdsonxbXk0bEpE1qh0yV6/QxUVXaVlNemgcPajGdJJ82n3stg==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.20.2", + "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -4123,6 +4364,19 @@ "devOptional": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -4143,21 +4397,21 @@ } }, "node_modules/vite": { - "version": "5.4.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", - "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -4166,19 +4420,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@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.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -4199,504 +4459,81 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, "node_modules/vite-node": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", - "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.7.tgz", + "integrity": "sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], + "node_modules/vitest": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.7.tgz", + "integrity": "sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "@vitest/expect": "3.0.7", + "@vitest/mocker": "3.0.7", + "@vitest/pretty-format": "^3.0.7", + "@vitest/runner": "3.0.7", + "@vitest/snapshot": "3.0.7", + "@vitest/spy": "3.0.7", + "@vitest/utils": "3.0.7", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.1.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.0.7", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/vitest": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", - "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "2.1.9", - "@vitest/mocker": "2.1.9", - "@vitest/pretty-format": "^2.1.9", - "@vitest/runner": "2.1.9", - "@vitest/snapshot": "2.1.9", - "@vitest/spy": "2.1.9", - "@vitest/utils": "2.1.9", - "chai": "^5.1.2", - "debug": "^4.3.7", - "expect-type": "^1.1.0", - "magic-string": "^0.30.12", - "pathe": "^1.1.2", - "std-env": "^3.8.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.1", - "tinypool": "^1.0.1", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.1.9", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.9", - "@vitest/ui": "2.1.9", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.0.7", + "@vitest/ui": "3.0.7", "happy-dom": "*", "jsdom": "*" }, @@ -4704,6 +4541,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, @@ -4882,6 +4722,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/yoctocolors-cjs": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", diff --git a/package.json b/package.json index 07fcc71..e53d6d1 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "dev:cli": "rm $(which studiorack) && npm run build && npm link", "format": "prettier . --write", "lint": "eslint .", - "test": "vitest run ./tests --hook-timeout=60000 --test-timeout=60000 --no-file-parallelism", + "test": "npm run build && vitest run ./tests --hook-timeout=60000 --test-timeout=60000 --no-file-parallelism", "test:watch": "vitest ./tests", "prepare": "npm run build" }, @@ -39,22 +39,23 @@ "node": ">=18" }, "dependencies": { - "@open-audio-stack/core": "^0.1.17", + "@open-audio-stack/core": "^0.1.19", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, "devDependencies": { "@eslint/js": "^9.12.0", "@types/node": "^22.7.8", - "@vitest/coverage-v8": "^2.1.9", + "@vitest/coverage-v8": "^3.0.7", "eslint": "^9.12.0", + "execa": "^9.5.2", "globals": "^15.2.0", "prettier": "^3.2.5", "rimraf": "^5.0.7", "tsx": "^4.10.1", "typescript": "^5.6.3", "typescript-eslint": "^8.9.0", - "vitest": "^2.1.3" + "vitest": "^3.0.7" }, "repository": { "type": "git", diff --git a/src/commands/config.ts b/src/commands/config.ts index ffe5d90..324e907 100644 --- a/src/commands/config.ts +++ b/src/commands/config.ts @@ -1,10 +1,9 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; -import { ConfigInterface, ConfigLocal, dirApp, isTests } from '@open-audio-stack/core'; +import { ConfigInterface, ConfigLocal, isTests } from '@open-audio-stack/core'; +import { CONFIG_LOCAL_TEST } from '../data/Config.js'; -const appDir: string = isTests() ? 'test' : dirApp(); -const config: ConfigLocal = new ConfigLocal({ appDir }); -config.logEnable(); +const config: ConfigLocal = new ConfigLocal(isTests() ? CONFIG_LOCAL_TEST : undefined); const program = new Command(); export const configCmd = program.command('config').description('View/update configuration'); @@ -14,7 +13,7 @@ configCmd .option('-l, --log', 'Enable logging') .description('Get a config setting by key') .action((key: keyof ConfigInterface, options: CliOptions) => { - // if (options.log) config.logEnable(); + if (options.log) config.logEnable(); if (options.json) { const obj: any = {}; obj[key] = config.get(key); diff --git a/src/data/Config.ts b/src/data/Config.ts new file mode 100644 index 0000000..17e18bb --- /dev/null +++ b/src/data/Config.ts @@ -0,0 +1,28 @@ +import { ConfigInterface, dirApp, dirPlugins, dirProjects } from '@open-audio-stack/core'; +import path from 'path'; + +export const CONFIG: ConfigInterface = { + registries: [ + { + name: 'Open Audio Registry', + url: 'https://open-audio-stack.github.io/open-audio-stack-registry', + }, + ], + version: '1.0.0', +}; + +export const CONFIG_LOCAL: ConfigInterface = { + ...CONFIG, + appDir: dirApp(), + pluginsDir: dirPlugins(), + presetsDir: dirPlugins(), + projectsDir: dirProjects(), +}; + +export const CONFIG_LOCAL_TEST: ConfigInterface = { + ...CONFIG, + appDir: 'test', + pluginsDir: path.join('test', 'installed', 'plugins'), + presetsDir: path.join('test', 'installed', 'presets'), + projectsDir: path.join('test', 'installed', 'projects'), +}; diff --git a/src/index.ts b/src/index.ts index bb34d49..1860f94 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node -import { dirApp, isTests, ManagerLocal, RegistryType } from '@open-audio-stack/core'; +import { isTests, ManagerLocal, RegistryType } from '@open-audio-stack/core'; import { Command } from 'commander'; import { sync } from './commands/sync.js'; import { configCmd } from './commands/config.js'; @@ -13,9 +13,9 @@ import { reset } from './commands/reset.js'; import { scan } from './commands/scan.js'; import { search } from './commands/search.js'; import { uninstall } from './commands/uninstall.js'; +import { CONFIG_LOCAL_TEST } from './data/Config.js'; // Create based program and add static commands. -const appDir: string = isTests() ? 'test' : dirApp(); const program = new Command(); program.addCommand(configCmd); @@ -23,7 +23,7 @@ program.addCommand(configCmd); const types = [RegistryType.Plugins, RegistryType.Presets, RegistryType.Projects]; types.forEach((type: RegistryType) => { const command: Command = program.command(type); - const manager: ManagerLocal = new ManagerLocal(type, { appDir }); + const manager: ManagerLocal = new ManagerLocal(type, isTests() ? CONFIG_LOCAL_TEST : undefined); create(command, manager); filter(command, manager); get(command, manager); diff --git a/tests/commands/__snapshots__/config.test.ts.snap b/tests/commands/__snapshots__/config.test.ts.snap new file mode 100644 index 0000000..e7a7d89 --- /dev/null +++ b/tests/commands/__snapshots__/config.test.ts.snap @@ -0,0 +1,24 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Config get 1`] = `"test"`; + +exports[`Config get 2`] = `"test/installed/plugins"`; + +exports[`Config get 3`] = `"test/installed/presets"`; + +exports[`Config get 4`] = `"test/installed/projects"`; + +exports[`Config get 5`] = ` +"[ + { + name: 'Open Audio Registry', + url: 'https://open-audio-stack.github.io/open-audio-stack-registry' + } +]" +`; + +exports[`Config get 6`] = `"1.0.0"`; + +exports[`Config set 1`] = `"test2"`; + +exports[`Config set 2`] = `"test"`; diff --git a/tests/commands/config.test.ts b/tests/commands/config.test.ts index 4c08c13..f4ff474 100644 --- a/tests/commands/config.test.ts +++ b/tests/commands/config.test.ts @@ -1,17 +1,30 @@ -import { expect, test } from 'vitest'; -import { cli, CliOutput } from '../shared'; import path from 'path'; +import { execa } from 'execa'; +import { expect, test } from 'vitest'; -const PLUGIN_DIR: string = path.join('test', 'plugins'); +const CLI: string = path.resolve('./', 'build', 'index.js'); -test('Config set', async () => { - const output: CliOutput = await cli(`config set pluginFolder "${PLUGIN_DIR}"`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(PLUGIN_DIR); +test('Config get', async () => { + const appDir = await execa('node', [CLI, 'config', 'get', 'appDir']); + expect(appDir.stdout).toMatchSnapshot(); + const pluginsDir = await execa('node', [CLI, 'config', 'get', 'pluginsDir']); + expect(pluginsDir.stdout).toMatchSnapshot(); + const presetsDir = await execa('node', [CLI, 'config', 'get', 'presetsDir']); + expect(presetsDir.stdout).toMatchSnapshot(); + const projectsDir = await execa('node', [CLI, 'config', 'get', 'projectsDir']); + expect(projectsDir.stdout).toMatchSnapshot(); + const registries = await execa('node', [CLI, 'config', 'get', 'registries']); + expect(registries.stdout).toMatchSnapshot(); + const version = await execa('node', [CLI, 'config', 'get', 'version']); + expect(version.stdout).toMatchSnapshot(); }); -test('Config get', async () => { - const output: CliOutput = await cli(`config get pluginFolder`); - expect(output.exitCode).toBe(0); - expect(output.stdout).toMatch(PLUGIN_DIR); +test('Config set', async () => { + await execa('node', [CLI, 'config', 'set', 'appDir', 'test2']); + const appDir = await execa('node', [CLI, 'config', 'get', 'appDir']); + expect(appDir.stdout).toMatchSnapshot(); + + await execa('node', [CLI, 'config', 'set', 'appDir', 'test']); + const appDir2 = await execa('node', [CLI, 'config', 'get', 'appDir']); + expect(appDir2.stdout).toMatchSnapshot(); }); diff --git a/tests/data/Plugin.ts b/tests/data/Plugin.ts new file mode 100644 index 0000000..7f24ae2 --- /dev/null +++ b/tests/data/Plugin.ts @@ -0,0 +1,116 @@ +import { + Architecture, + FileType, + License, + PackageInterface, + PluginInterface, + PluginFormat, + PluginType, + SystemType, +} from '@open-audio-stack/core'; + +const slug: string = 'surge-synthesizer/surge'; +const version: string = '1.3.1'; + +export const PLUGIN: PluginInterface = { + audio: 'https://open-audio-stack.github.io/open-audio-stack-registry/plugins/surge-synthesizer/surge/surge.flac', + author: 'Surge Synth Team', + changes: '- Fixed bug with audio\n- New feature added\n', + date: '2024-03-02T00:00:00.000Z', + description: + 'Hybrid synthesizer featuring many synthesis techniques, a great selection of filters, a flexible modulation engine, a smorgasbord of effects, and modern features like MPE and microtuning.', + files: [ + { + architectures: [Architecture.X64], + contains: [ + PluginFormat.LinuxStandalone, + PluginFormat.CleverAudioPlugin, + PluginFormat.LADSPAVersion2, + PluginFormat.VST3, + ], + sha256: '729d92b5a4288f4c22587b8e84244c26aef34e58312ab5b4f4d1f196699b802e', + systems: [{ type: SystemType.Linux }], + size: 220693484, + type: FileType.Installer, + url: 'https://github.com/surge-synthesizer/releases-xt/releases/download/1.3.1/surge-xt-linux-x64-1.3.1.deb', + }, + { + architectures: [Architecture.X64], + contains: [ + PluginFormat.LinuxStandalone, + PluginFormat.CleverAudioPlugin, + PluginFormat.LADSPAVersion2, + PluginFormat.VST3, + ], + sha256: '135e9b8d3e71ab4dd502eee464b99f82c733be2ae23e8fca3724773dee3d54e8', + systems: [{ type: SystemType.Linux }], + size: 346260010, + type: FileType.Installer, + url: 'https://github.com/surge-synthesizer/releases-xt/releases/download/1.3.1/surge-xt-x86_64-1.3.1.rpm', + }, + { + architectures: [Architecture.Arm64, Architecture.X64], + contains: [ + PluginFormat.MacStandalone, + PluginFormat.CleverAudioPlugin, + PluginFormat.AudioUnits, + PluginFormat.VST3, + ], + sha256: 'e30b218700d4067edb3a0eadb4128784e41f91f663cff19e3fbb38460883cf59', + systems: [{ type: SystemType.Mac }], + size: 411860016, + type: FileType.Installer, + url: 'https://github.com/surge-synthesizer/releases-xt/releases/download/1.3.1/surge-xt-macOS-1.3.1.dmg', + }, + { + architectures: [Architecture.X32], + contains: [PluginFormat.WinStandalone, PluginFormat.VST3], + sha256: '3d766adb0d04b86f7aca8c136bc4c7b0727d316ec10895f679f1c01b0c236a00', + systems: [{ type: SystemType.Win }], + size: 180270273, + type: FileType.Installer, + url: 'https://github.com/surge-synthesizer/releases-xt/releases/download/1.3.1/surge-xt-win32-1.3.1-setup.exe', + }, + { + architectures: [Architecture.X64], + contains: [PluginFormat.WinStandalone, PluginFormat.CleverAudioPlugin, PluginFormat.VST3], + sha256: '2bac9c87c3e4293ecc4110087f5bb90a5218427921613409b84673f513f02bd3', + systems: [{ type: SystemType.Win }], + size: 182890274, + type: FileType.Installer, + url: 'https://github.com/surge-synthesizer/releases-xt/releases/download/1.3.1/surge-xt-win64-1.3.1-setup.exe', + }, + ], + image: 'https://open-audio-stack.github.io/open-audio-stack-registry/plugins/surge-synthesizer/surge/surge.jpg', + license: License.GNUGeneralPublicLicensev3, + name: 'Surge XT', + tags: ['Instrument', 'Synth', 'Modulation'], + type: PluginType.Instrument, + url: 'https://github.com/surge-synthesizer/surge', +}; + +export const PLUGIN_INSTALLED: PluginInterface = structuredClone(PLUGIN); +PLUGIN_INSTALLED.installed = true; + +export const PLUGIN_PACKAGE: PackageInterface = { + slug, + version, + versions: { + [version]: PLUGIN, + }, +}; + +export const PLUGIN_PACKAGE_EMPTY: PackageInterface = { + slug, + version: '0.0.0', + versions: {}, +}; + +export const PLUGIN_PACKAGE_MULTIPLE: PackageInterface = { + slug, + version: '1.3.2', + versions: { + [version]: PLUGIN, + '1.3.2': PLUGIN, + }, +}; diff --git a/tests/data/Preset.ts b/tests/data/Preset.ts new file mode 100644 index 0000000..1382438 --- /dev/null +++ b/tests/data/Preset.ts @@ -0,0 +1,49 @@ +import { + Architecture, + FileType, + License, + PackageInterface, + PresetInterface, + PresetFormat, + PresetType, + SystemType, +} from '@open-audio-stack/core'; + +export const PRESET: PresetInterface = { + audio: 'https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.flac', + author: 'JH', + changes: '- First version\n', + date: '2024-03-02T00:00:00.000Z', + description: 'Floating Rhodes sounds.', + files: [ + { + architectures: [Architecture.Arm32, Architecture.Arm64, Architecture.X32, Architecture.X64], + contains: [PresetFormat.VSTPreset], + sha256: 'ddc328295ca5a25303a42c45b184f99b7e923bbcbb92b8061e33191f79f19ad9', + systems: [{ type: SystemType.Linux }, { type: SystemType.Mac }, { type: SystemType.Win }], + size: 3773, + type: FileType.Archive, + url: 'https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/1.0.0/floating-rhodes.zip', + }, + ], + image: 'https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.jpg', + license: License.GNUGeneralPublicLicensev3, + plugins: { + 'surge-synthesizer/surge': '1.3.1', + }, + name: 'Floating Rhodes', + tags: ['Preset', 'Synth', 'Rhodes'], + type: PresetType.Patch, + url: 'https://presetshare.com/p763', +}; + +export const PRESET_INSTALLED: PresetInterface = structuredClone(PRESET); +PRESET_INSTALLED.installed = true; + +export const PRESET_PACKAGE: PackageInterface = { + slug: 'jh/floating-rhodes', + version: '1.0.0', + versions: { + '1.0.0': PRESET, + }, +}; diff --git a/tests/data/Project.ts b/tests/data/Project.ts new file mode 100644 index 0000000..074f8f4 --- /dev/null +++ b/tests/data/Project.ts @@ -0,0 +1,61 @@ +import path from 'path'; +import { + Architecture, + FileType, + License, + PackageInterface, + ProjectInterface, + ProjectFormat, + ProjectType, + SystemType, +} from '@open-audio-stack/core'; + +export const PROJECT_PATH: string = path.join('test', 'installed', 'projects', 'kmt', 'banwer', '1.0.1', 'index.json'); + +export const PROJECT: ProjectInterface = { + audio: 'https://open-audio-stack.github.io/open-audio-stack-registry/projects/kmt/banwer/banwer.flac', + author: 'KMT', + changes: '- First version\n', + date: '2024-03-02T00:00:00.000Z', + description: 'Song idea using synthesizers.', + files: [ + { + architectures: [Architecture.Arm32, Architecture.Arm64, Architecture.X32, Architecture.X64], + contains: [ProjectFormat.AbletonLive], + sha256: '77e2d542235889b027f2ecbe66b753978a5232fabac9c97151a86173048e2eaf', + systems: [{ type: SystemType.Linux }, { type: SystemType.Mac }, { type: SystemType.Win }], + size: 216863, + type: FileType.Archive, + url: 'https://open-audio-stack.github.io/open-audio-stack-registry/projects/kmt/banwer/1.0.1/banwer.zip', + }, + ], + image: 'https://open-audio-stack.github.io/open-audio-stack-registry/projects/kmt/banwer/banwer.jpg', + license: License.GNUGeneralPublicLicensev3, + plugins: { + 'surge-synthesizer/surge': '1.3.1', + }, + name: 'Banwer', + open: 'Banwer.als', + tags: ['Idea', 'Synth', 'Modulation'], + type: ProjectType.Song, + url: 'https://soundcloud.com/kmt-london', +}; + +export const PROJECT_INSTALLED: ProjectInterface = structuredClone(PROJECT); +PROJECT_INSTALLED.installed = true; + +export const PROJECT_DEPS: ProjectInterface = structuredClone(PROJECT); +PROJECT_DEPS.installed = true; +PROJECT_DEPS.plugins['surge-synthesizer/surge'] = '1.3.4'; + +export const PROJECT_NO_DEPS: ProjectInterface = structuredClone(PROJECT); +PROJECT_NO_DEPS.installed = true; +PROJECT_NO_DEPS.plugins = {}; + +export const PROJECT_PACKAGE: PackageInterface = { + slug: 'kmt/banwer', + version: '1.0.1', + versions: { + '1.0.1': PROJECT, + }, +}; diff --git a/tests/data/Registry.ts b/tests/data/Registry.ts new file mode 100644 index 0000000..ecc5882 --- /dev/null +++ b/tests/data/Registry.ts @@ -0,0 +1,66 @@ +import { RegistryInterface } from '@open-audio-stack/core'; +import { PLUGIN_PACKAGE_MULTIPLE, PLUGIN_PACKAGE, PLUGIN_PACKAGE_EMPTY } from './Plugin'; +import { PRESET_PACKAGE } from './Preset'; +import { PROJECT_PACKAGE } from './Project'; + +const name: string = 'Open Audio Registry'; +const url: string = 'https://open-audio-stack.github.io/open-audio-stack-registry'; +const version: string = '1.0.0'; + +export const REGISTRY: RegistryInterface = { + name, + plugins: {}, + url, + version, +}; + +export const REGISTRY_MULTIPLE_TYPES: RegistryInterface = { + name, + plugins: {}, + presets: {}, + projects: {}, + url, + version, +}; + +export const REGISTRY_EMPTY_PKG: RegistryInterface = { + name, + plugins: { + [PLUGIN_PACKAGE.slug]: PLUGIN_PACKAGE_EMPTY, + }, + url, + version, +}; + +export const REGISTRY_PLUGIN_VER: RegistryInterface = { + name, + plugins: { + [PLUGIN_PACKAGE.slug]: PLUGIN_PACKAGE, + }, + url, + version, +}; + +export const REGISTRY_PLUGIN_MULTIPLE: RegistryInterface = { + name, + plugins: { + [PLUGIN_PACKAGE.slug]: PLUGIN_PACKAGE_MULTIPLE, + }, + url, + version, +}; + +export const REGISTRY_PACKAGE_TYPES: RegistryInterface = { + name, + plugins: { + [PLUGIN_PACKAGE.slug]: PLUGIN_PACKAGE, + }, + presets: { + [PRESET_PACKAGE.slug]: PRESET_PACKAGE, + }, + projects: { + [PROJECT_PACKAGE.slug]: PROJECT_PACKAGE, + }, + url, + version, +}; From 216d0412f5541e223514930c9832e80afa7d9ede Mon Sep 17 00:00:00 2001 From: Kim T Date: Tue, 25 Feb 2025 21:05:29 -0800 Subject: [PATCH 03/11] Use exec sync and share code --- tests/commands/config.test.ts | 34 +++++++++++----------------------- tests/shared.ts | 30 ++++++++---------------------- 2 files changed, 19 insertions(+), 45 deletions(-) diff --git a/tests/commands/config.test.ts b/tests/commands/config.test.ts index f4ff474..8f0b10c 100644 --- a/tests/commands/config.test.ts +++ b/tests/commands/config.test.ts @@ -1,30 +1,18 @@ -import path from 'path'; -import { execa } from 'execa'; import { expect, test } from 'vitest'; - -const CLI: string = path.resolve('./', 'build', 'index.js'); +import { cli } from '../shared'; test('Config get', async () => { - const appDir = await execa('node', [CLI, 'config', 'get', 'appDir']); - expect(appDir.stdout).toMatchSnapshot(); - const pluginsDir = await execa('node', [CLI, 'config', 'get', 'pluginsDir']); - expect(pluginsDir.stdout).toMatchSnapshot(); - const presetsDir = await execa('node', [CLI, 'config', 'get', 'presetsDir']); - expect(presetsDir.stdout).toMatchSnapshot(); - const projectsDir = await execa('node', [CLI, 'config', 'get', 'projectsDir']); - expect(projectsDir.stdout).toMatchSnapshot(); - const registries = await execa('node', [CLI, 'config', 'get', 'registries']); - expect(registries.stdout).toMatchSnapshot(); - const version = await execa('node', [CLI, 'config', 'get', 'version']); - expect(version.stdout).toMatchSnapshot(); + expect(cli('config', 'get', 'appDir')).toMatchSnapshot(); + expect(cli('config', 'get', 'pluginsDir')).toMatchSnapshot(); + expect(cli('config', 'get', 'presetsDir')).toMatchSnapshot(); + expect(cli('config', 'get', 'projectsDir')).toMatchSnapshot(); + expect(cli('config', 'get', 'registries')).toMatchSnapshot(); + expect(cli('config', 'get', 'version')).toMatchSnapshot(); }); test('Config set', async () => { - await execa('node', [CLI, 'config', 'set', 'appDir', 'test2']); - const appDir = await execa('node', [CLI, 'config', 'get', 'appDir']); - expect(appDir.stdout).toMatchSnapshot(); - - await execa('node', [CLI, 'config', 'set', 'appDir', 'test']); - const appDir2 = await execa('node', [CLI, 'config', 'get', 'appDir']); - expect(appDir2.stdout).toMatchSnapshot(); + cli('config', 'set', 'appDir', 'test2'); + expect(cli('config', 'get', 'appDir')).toMatchSnapshot(); + cli('config', 'set', 'appDir', 'test'); + expect(cli('config', 'get', 'appDir')).toMatchSnapshot(); }); diff --git a/tests/shared.ts b/tests/shared.ts index 8da6bf1..9d3c710 100644 --- a/tests/shared.ts +++ b/tests/shared.ts @@ -1,31 +1,17 @@ -import { exec, ExecException } from 'child_process'; import path from 'path'; +import { execaSync, SyncResult } from 'execa'; +import { getSystem, SystemType } from '@open-audio-stack/core'; -interface CliOutput { - exitCode: number; - error: ExecException | null; - stdout: string; - stderr: string; -} const CLI_PATH: string = path.resolve('./', 'build', 'index.js'); -function cli(cmd: string, cwd = '.'): Promise { - return new Promise(resolve => { - exec(`node ${CLI_PATH} ${cmd}`, { cwd }, (error, stdout, stderr) => { - resolve({ - exitCode: error && error.code ? error.code : 0, - error, - stdout: cleanOutput(stdout), - stderr, - }); - }); - }); +export function cli(...args: string[]): string { + const result: SyncResult = execaSync('node', [CLI_PATH, ...args]); + return cleanOutput(result.stdout as string); } function cleanOutput(output: string): string { + if (getSystem() === SystemType.Win) { + output = output.replace(/\\/g, '/'); + } return output; - // const regex: RegExp = new RegExp(dirApp(), 'g'); - // return output.replace(regex, '${APP_DIR}'); } - -export { cli, CliOutput }; From 6f6b40e8d39f903113ba50684b3a935c7eb78b69 Mon Sep 17 00:00:00 2001 From: Kim T Date: Sun, 9 Mar 2025 21:47:02 -0700 Subject: [PATCH 04/11] Tests --- .gitignore | 5 +- src/commands/filter.ts | 3 +- src/commands/get.ts | 13 +- src/commands/install.ts | 4 +- src/commands/list.ts | 3 +- src/commands/reset.ts | 2 +- src/commands/scan.ts | 2 +- src/commands/search.ts | 3 +- src/commands/sync.ts | 2 +- src/commands/uninstall.ts | 4 +- src/index.ts | 7 +- src/utils.ts | 60 ++++--- .../__snapshots__/create.test.ts.snap | 6 + .../__snapshots__/filter.test.ts.snap | 41 +++++ tests/commands/__snapshots__/get.test.ts.snap | 19 ++ .../__snapshots__/install.test.ts.snap | 19 ++ .../commands/__snapshots__/list.test.ts.snap | 163 ++++++++++++++++++ .../commands/__snapshots__/reset.test.ts.snap | 3 + .../commands/__snapshots__/scan.test.ts.snap | 3 + .../__snapshots__/search.test.ts.snap | 15 ++ .../commands/__snapshots__/sync.test.ts.snap | 3 + .../__snapshots__/uninstall.test.ts.snap | 17 ++ tests/commands/create.test.ts | 11 ++ tests/commands/filter.test.ts | 9 + tests/commands/get.test.ts | 9 + tests/commands/install.test.ts | 9 + tests/commands/list.test.ts | 7 + tests/commands/reset.test.ts | 7 + tests/commands/scan.test.ts | 7 + tests/commands/search.test.ts | 8 + tests/commands/sync.test.ts | 7 + tests/commands/uninstall.test.ts | 8 + 32 files changed, 430 insertions(+), 49 deletions(-) create mode 100644 tests/commands/__snapshots__/create.test.ts.snap create mode 100644 tests/commands/__snapshots__/filter.test.ts.snap create mode 100644 tests/commands/__snapshots__/get.test.ts.snap create mode 100644 tests/commands/__snapshots__/install.test.ts.snap create mode 100644 tests/commands/__snapshots__/list.test.ts.snap create mode 100644 tests/commands/__snapshots__/reset.test.ts.snap create mode 100644 tests/commands/__snapshots__/scan.test.ts.snap create mode 100644 tests/commands/__snapshots__/search.test.ts.snap create mode 100644 tests/commands/__snapshots__/sync.test.ts.snap create mode 100644 tests/commands/__snapshots__/uninstall.test.ts.snap create mode 100644 tests/commands/create.test.ts create mode 100644 tests/commands/filter.test.ts create mode 100644 tests/commands/get.test.ts create mode 100644 tests/commands/install.test.ts create mode 100644 tests/commands/list.test.ts create mode 100644 tests/commands/reset.test.ts create mode 100644 tests/commands/scan.test.ts create mode 100644 tests/commands/search.test.ts create mode 100644 tests/commands/sync.test.ts create mode 100644 tests/commands/uninstall.test.ts diff --git a/.gitignore b/.gitignore index cd379ff..e710512 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,4 @@ out/ # Misc .DS_Store -test/config.json -test/plugins -test/projects -test/tool +test/* diff --git a/src/commands/filter.ts b/src/commands/filter.ts index a711a6f..646782d 100644 --- a/src/commands/filter.ts +++ b/src/commands/filter.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; import { ManagerLocal, PackageVersion } from '@open-audio-stack/core'; +import { formatOutput } from '../utils.js'; export function filter(command: Command, manager: ManagerLocal) { command @@ -10,6 +11,6 @@ export function filter(command: Command, manager: ManagerLocal) { .action((field: keyof PackageVersion, value: string, options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(manager.filter(pkgVersion => pkgVersion[field] === value)); + console.log(formatOutput(manager.filter(pkgVersion => pkgVersion[field] === value))); }); } diff --git a/src/commands/get.ts b/src/commands/get.ts index 60f94c8..302cfbf 100644 --- a/src/commands/get.ts +++ b/src/commands/get.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; -import { inputGetParts, ManagerLocal, Package, PackageVersion } from '@open-audio-stack/core'; +import { inputGetParts, ManagerLocal } from '@open-audio-stack/core'; +import { formatOutput } from '../utils.js'; export function get(command: Command, manager: ManagerLocal) { command @@ -11,13 +12,7 @@ export function get(command: Command, manager: ManagerLocal) { if (options.log) manager.logEnable(); else manager.logDisable(); const [slug, version] = inputGetParts(input); - - const pkg: Package | undefined = manager.getPackage(slug); - if (!pkg) console.error(`Package ${slug} not found in registry`); - const versionNum: string = version || pkg?.latestVersion() || '0.0.0'; - const pkgVersion: PackageVersion | undefined = pkg?.getVersion(versionNum); - if (!pkgVersion) console.error(`Package ${slug} version ${versionNum} not found in registry`); - - console.log(pkgVersion); + const pkg = manager.getPackage(slug); + console.log(formatOutput(pkg, version)); }); } diff --git a/src/commands/install.ts b/src/commands/install.ts index 58c23fa..aadc74b 100644 --- a/src/commands/install.ts +++ b/src/commands/install.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; import { inputGetParts, ManagerLocal } from '@open-audio-stack/core'; +import { formatOutput } from '../utils.js'; export function install(command: Command, manager: ManagerLocal) { command @@ -11,6 +12,7 @@ export function install(command: Command, manager: ManagerLocal) { if (options.log) manager.logEnable(); else manager.logDisable(); const [slug, version] = inputGetParts(input); - console.log(await manager.install(slug, version)); + await manager.install(slug, version); + console.log(formatOutput(manager.getPackage(slug), version)); }); } diff --git a/src/commands/list.ts b/src/commands/list.ts index 1f7d9c7..c14a4fd 100644 --- a/src/commands/list.ts +++ b/src/commands/list.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; import { ManagerLocal } from '@open-audio-stack/core'; +import { formatOutput } from '../utils.js'; export function list(command: Command, manager: ManagerLocal) { command @@ -10,6 +11,6 @@ export function list(command: Command, manager: ManagerLocal) { .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(manager.listPackages()); + console.log(formatOutput(manager.listPackages())); }); } diff --git a/src/commands/reset.ts b/src/commands/reset.ts index 1872d34..024cda2 100644 --- a/src/commands/reset.ts +++ b/src/commands/reset.ts @@ -10,6 +10,6 @@ export function reset(command: Command, manager: ManagerLocal) { .action((options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - manager.reset(); + console.log(manager.reset()); }); } diff --git a/src/commands/scan.ts b/src/commands/scan.ts index 72c58e7..ecf324f 100644 --- a/src/commands/scan.ts +++ b/src/commands/scan.ts @@ -10,6 +10,6 @@ export function scan(command: Command, manager: ManagerLocal) { .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - await manager.scan(); + console.log(await manager.scan()); }); } diff --git a/src/commands/search.ts b/src/commands/search.ts index 0ad4e9c..95ec2d7 100644 --- a/src/commands/search.ts +++ b/src/commands/search.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; import { ManagerLocal } from '@open-audio-stack/core'; +import { formatOutput } from '../utils.js'; export function search(command: Command, manager: ManagerLocal) { command @@ -10,6 +11,6 @@ export function search(command: Command, manager: ManagerLocal) { .action(async (query: string, options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(manager.search(query)); + console.log(formatOutput(manager.search(query))); }); } diff --git a/src/commands/sync.ts b/src/commands/sync.ts index 49c8b34..8b43478 100644 --- a/src/commands/sync.ts +++ b/src/commands/sync.ts @@ -10,6 +10,6 @@ export function sync(command: Command, manager: ManagerLocal) { .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - await manager.sync(); + console.log(await manager.sync()); }); } diff --git a/src/commands/uninstall.ts b/src/commands/uninstall.ts index de873c3..d13aab1 100644 --- a/src/commands/uninstall.ts +++ b/src/commands/uninstall.ts @@ -1,6 +1,7 @@ import { Command } from 'commander'; import { CliOptions } from '../types/options.js'; import { inputGetParts, ManagerLocal } from '@open-audio-stack/core'; +import { formatOutput } from '../utils.js'; export function uninstall(command: Command, manager: ManagerLocal) { command @@ -11,6 +12,7 @@ export function uninstall(command: Command, manager: ManagerLocal) { if (options.log) manager.logEnable(); else manager.logDisable(); const [slug, version] = inputGetParts(input); - console.log(await manager.uninstall(slug, version)); + await manager.uninstall(slug, version); + console.log(formatOutput(manager.getPackage(slug), version)); }); } diff --git a/src/index.ts b/src/index.ts index 1860f94..eae7200 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,9 +21,10 @@ program.addCommand(configCmd); // Dynamically add commands for each registry type. const types = [RegistryType.Plugins, RegistryType.Presets, RegistryType.Projects]; -types.forEach((type: RegistryType) => { +for (const type of types) { const command: Command = program.command(type); - const manager: ManagerLocal = new ManagerLocal(type, isTests() ? CONFIG_LOCAL_TEST : undefined); + const manager: ManagerLocal = new ManagerLocal(type as RegistryType, isTests() ? CONFIG_LOCAL_TEST : undefined); + await manager.sync(); create(command, manager); filter(command, manager); get(command, manager); @@ -34,6 +35,6 @@ types.forEach((type: RegistryType) => { search(command, manager); sync(command, manager); uninstall(command, manager); -}); +} program.version('3.0.0').parse(process.argv); diff --git a/src/utils.ts b/src/utils.ts index 213045a..7ad04e6 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,39 +1,49 @@ +import { Package } from '@open-audio-stack/core'; import CliTable3 from 'cli-table3'; -export function formatOutput(result: any, json?: boolean, list?: boolean): string { - if (!result) { - return `Plugin not found`; - } - if (json) { - return JSON.stringify(result, null, 2); - } +export function formatOutput(result: Package[] | Package | undefined, version?: string, json?: boolean): string { + if (!result) return `No results found`; + if (json) return JSON.stringify(result, null, 2); + const table = new CliTable3({ head: ['Id', 'Name', 'Version', 'Date', 'License', 'Tags'], }); - if (list) { + if (result instanceof Array) { if (result.length === 0) { return `No results found`; } - for (const key in result) { - const latest = result[key].versions ? result[key].versions[result[key].version] : result[key]; - table.push([ - latest.id || key || '-', - truncateString(latest.name || '-', 40), - truncateString(result[key].version || '-', 10), - truncateString(latest.date?.split('T')[0] || '-', 10), - truncateString(latest.license || '-', 20), - truncateString(latest.tags?.join(', ') || '-', 30), - ]); + for (const index in result) { + const pkg = result[index]; + const versionNum: string = version || pkg.latestVersion(); + const pkgVersion = pkg.getVersion(versionNum); + if (pkgVersion) { + table.push([ + pkg.slug || '-', + truncateString(pkgVersion.name || '-', 40), + truncateString(versionNum || '-', 10), + truncateString(pkgVersion.date?.split('T')[0] || '-', 10), + truncateString(pkgVersion.license || '-', 20), + truncateString(pkgVersion.tags?.join(', ') || '-', 30), + ]); + } } } else { - const latest = result.versions ? result.versions[result.version] : result; + if (!result) { + return `No result found`; + } + const pkg = result; + const versionNum: string = version || pkg.latestVersion(); + const pkgVersion = pkg.getVersion(versionNum); + if (!pkgVersion) { + return `No result found`; + } table.push([ - latest.id || '-', - truncateString(latest.name || '-', 40), - truncateString(result.version || '-', 10), - truncateString(latest.date?.split('T')[0] || '-', 10), - truncateString(latest.license || '-', 10), - truncateString(latest.tags?.join(', ') || '-', 30), + '-', + truncateString(pkgVersion.name || '-', 40), + truncateString(versionNum || '-', 10), + truncateString(pkgVersion.date?.split('T')[0] || '-', 10), + truncateString(pkgVersion.license || '-', 10), + truncateString(pkgVersion.tags?.join(', ') || '-', 30), ]); } return table.toString(); diff --git a/tests/commands/__snapshots__/create.test.ts.snap b/tests/commands/__snapshots__/create.test.ts.snap new file mode 100644 index 0000000..bde4bad --- /dev/null +++ b/tests/commands/__snapshots__/create.test.ts.snap @@ -0,0 +1,6 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Create package 1`] = ` +"? Org id (org-name) +[?25h" +`; diff --git a/tests/commands/__snapshots__/filter.test.ts.snap b/tests/commands/__snapshots__/filter.test.ts.snap new file mode 100644 index 0000000..0be5aaa --- /dev/null +++ b/tests/commands/__snapshots__/filter.test.ts.snap @@ -0,0 +1,41 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Filter packages 1`] = ` +"┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; + +exports[`Filter packages 2`] = `"No results found"`; + +exports[`Filter packages 3`] = ` +"┌────────────────────────────────────────┬──────────────────────────┬─────────┬────────────┬─────────┬───────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ +└────────────────────────────────────────┴──────────────────────────┴─────────┴────────────┴─────────┴───────────────────────────────────┘" +`; diff --git a/tests/commands/__snapshots__/get.test.ts.snap b/tests/commands/__snapshots__/get.test.ts.snap new file mode 100644 index 0000000..bfe7c09 --- /dev/null +++ b/tests/commands/__snapshots__/get.test.ts.snap @@ -0,0 +1,19 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Get package 1`] = ` +"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; + +exports[`Get package 2`] = ` +"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; + +exports[`Get package 3`] = `"No result found"`; diff --git a/tests/commands/__snapshots__/install.test.ts.snap b/tests/commands/__snapshots__/install.test.ts.snap new file mode 100644 index 0000000..fce5366 --- /dev/null +++ b/tests/commands/__snapshots__/install.test.ts.snap @@ -0,0 +1,19 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Install package 1`] = ` +"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; + +exports[`Install package 2`] = ` +"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; + +exports[`Install package 3`] = `"No result found"`; diff --git a/tests/commands/__snapshots__/list.test.ts.snap b/tests/commands/__snapshots__/list.test.ts.snap new file mode 100644 index 0000000..7936655 --- /dev/null +++ b/tests/commands/__snapshots__/list.test.ts.snap @@ -0,0 +1,163 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`List packages 1`] = ` +"┌───────────────────────────────────────────┬───────────────────────────┬─────────┬────────────┬──────────────┬───────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ wolf-plugins/wolf-spectrum │ Wolf Spectrum │ 1.0.0 │ 2019-04-14 │ gpl-3.0 │ Effect, Spectrogram, Frequency │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ wolf-plugins/wolf-shaper │ Wolf Shaper │ 1.0.2 │ 2023-05-14 │ gpl-3.0 │ Effect, Distortion, Editor │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ utokusa/os-251 │ OS-251 │ 1.2.1 │ 2022-07-25 │ gpl-3.0 │ Instrument, Synth, Lo-fi │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tobanteaudio/modeq │ modEQ │ 0.4.0 │ 2019-05-17 │ gpl-3.0 │ Effect, EQ, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ thewavewarden/odin │ Odin │ 2.3.4 │ 2020-11-09 │ gpl-3.0 │ Instrument, Synth, Moog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ the-synister/synister │ Synister │ 1.0.3 │ 2016-03-19 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tesselode/mika-micro │ Mika Micro │ 2.0.1 │ 2018-05-17 │ mit │ Instrument, Synth, Oscillators │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tesselode/cocoa-delay │ Cocoa Delay │ 1.0.0 │ 2018-09-01 │ mit │ Effect, Delay, Warm │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ surge-synthesizer/monique-monosynth │ Monique │ 1.2.0 │ 2021-12-13 │ gpl-3.0 │ Instrument, Synth, Bass, Lead │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ studiorack/avl-percussions │ AVL Percussions │ 1.1.0 │ 2022-02-21 │ cc-by-sa-4.0 │ Instrument, Drums, Percussions... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ studiorack/avl-drumkits │ AVL Drumkits │ 1.1.0 │ 2022-02-20 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfztools/sfizz │ Sfizz │ 1.2.3 │ 2024-01-14 │ bsd-2-clause │ Instrument, Sampler, Synth │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/war-tuba │ War Tuba │ 1.0.2 │ 2022-11-04 │ cc-by-4.0 │ Instrument, Brass, Tuba, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/splendidgrandpiano │ Splendid Grand Piano │ 1.0.0 │ 2022-01-02 │ bsd-2-clause │ Instrument, Keys, Piano, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/samssonor │ Sam's Sonor │ 1.0.0 │ 2022-08-28 │ cc-by-sa-4.0 │ Instrument, Drums, Kit, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/salamandergrandpiano │ Salamander Grand Piano │ 1.0.0 │ 2022-01-02 │ cc-by-4.0 │ Instrument, Piano, Yamaha, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/nakeddrums │ Naked Drums │ 1.0.0 │ 2021-11-08 │ cc-by-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/jsteeldrum │ jSteelDrum │ 1.0.0 │ 2022-09-23 │ unlicense │ Instrument, Steel, Drum, Orche... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/jrhodes3c │ jRhodes3c │ 1.0.0 │ 2023-07-04 │ cc-by-sa-4.0 │ Instrument, Keys, Rhodes, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sdatkinson/neural-amp-modeler │ Neural Amp Modeler │ 0.7.12 │ 2024-12-02 │ mit │ Amp, Emulation, Noise Gate │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ resonantdsp/swankyamp │ Swanky Amp │ 1.4.0 │ 2021-04-21 │ gpl-3.0 │ Effect, Amplifier, Tube │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ reales/opl │ OPL │ 2.4.0 │ 2024-08-08 │ gpl-3.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ reales/ob-xd │ OB-Xd │ 3.5.0 │ 2021-05-30 │ gpl-3.0 │ Instrument, Synth, OB-X │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ pentagrampro/owlbass │ OwlBass │ 1.0.0 │ 2019-01-13 │ gpl-3.0 │ Instrument, Synth, Bass │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ paynebc/tunefish │ Tunefish │ 4.2.0 │ 2018-05-04 │ gpl-3.0 │ Instrument, Synth, Analog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ open-soundfonts/virtual-playing-orchestra │ Virtual Playing Orchestra │ 3.3.2 │ 2020-10-17 │ gpl-3.0 │ Instrument, Orchestral, String... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ mzuther/squeezer │ Squeezer │ 2.5.4 │ 2020-04-17 │ gpl-3.0 │ Effect, Compressor │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ mtytel/helm │ Helm │ 0.9.0 │ 2017-07-08 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ mikemorenodsp/ep-mk1 │ EP-MK1 │ 2.4.0 │ 2020-09-28 │ gpl-3.0 │ Instrument, Synth, Electric, P... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ midilab/jc303 │ jc303 │ 0.11.1 │ 2024-09-11 │ gpl-3.0 │ Instrument, Bass, Synthesizer │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ michaelwillis/dragonfly-reverb │ Dragonfly Reverb │ 3.2.10 │ 2023-04-22 │ gpl-3.0 │ Effect, Reverb, Plate │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ michael-jan/key-repeat │ Key Repeat │ 1.0.0 │ 2020-01-07 │ gpl-3.0 │ Instrument, Samplers, Repeat │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ martineastwood/mverb │ Mverb │ 1.0.0 │ 2013-03-25 │ gpl-3.0 │ Effect, Reverb │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ khrykin/blackbird │ BlackBird │ 0.1.0 │ 2020-11-11 │ gpl-3.0 │ Instrument, Synth, Analog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ keijiro/vst2413 │ VST2413 │ 1.0.2 │ 2013-04-21 │ zlib │ Instrument, Synth, Bit │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ jpcima/opnplug │ OPNplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ jpcima/adlplug │ ADLplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ joepvanlier/ysfx │ ysfx │ 0.0.33 │ 2025-02-09 │ gpl-3.0 │ Instrument, Synth, JSFX │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ igorski/regrader │ Regrader │ 1.0.5 │ 2024-03-16 │ mit │ Effect, Delay, Sync │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ igorski/fogpad │ FogPad │ 1.0.3 │ 2024-03-16 │ mit │ Effect, Pitch Shifter, Reverb │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ guitarml/smartguitaramp │ SmartGuitarAmp │ 1.3.0 │ 2022-08-31 │ apache-2.0 │ Effect, Guitar, Amp │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ greatest-ape/octasine │ OctaSine │ 0.9.1 │ 2024-07-03 │ agpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ falktx/carla │ Carla │ 2.5.9 │ 2024-09-22 │ gpl-3.0 │ Host, Player, Automation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ endolith/salamander-drumkit │ Salamander Drumkit │ 1.0.0 │ 2012-02-25 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ dropsnorz/wobbleizer │ Wobbleizer │ 2.3.2 │ 2012-02-25 │ mit │ Effect, Filter, LFO │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ distrho/dpf-plugins │ DPF Plugins │ 1.7.0 │ 2023-04-15 │ gpl-3.0 │ Effect, Delay, Feedback, Rever... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ clearly-broken-software/ninjas2 │ Ninjas 2 │ 0.2.0 │ 2020-01-17 │ gpl-3.0 │ Instrument, Sampler, Slicer │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ clearly-broken-software/drops │ Drops │ 1.0.0 │ 2022-01-15 │ gpl-3.0 │ Instrument, Sampler, Filter │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chowtapemodel │ Chow Tape Model │ 2.11.4 │ 2023-11-05 │ gpl-3.0 │ Effect, Filter, Tape │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chowmatrix │ CHOW Matrix │ 1.3.0 │ 2021-12-21 │ bsd-3-clause │ Effect, Delay, Feedback │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chow │ CHOW │ 1.0.0 │ 2019-01-11 │ gpl-3.0 │ Effect, Distortion, Noise │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ birch-san/juicysfplugin │ JuicySFplugin │ 3.1.0 │ 2022-02-13 │ gpl-3.0 │ Instrument, Sampler, Synth │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ audioplugins/iempluginsuite │ IEM Plugin Suite │ 1.14.1 │ 2023-02-23 │ gpl-3.0 │ Effect, Reverb, Delay │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ asb2m10/dexed │ Dexed │ 0.9.8 │ 2024-10-08 │ gpl-3.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ artfwo/andes │ Andes │ 0.2.0 │ 2018-06-01 │ gpl-3.0 │ Instrument, Synth, Oscillator │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/subhoofer │ Subhoofer │ 2.2.2 │ 2024-08-02 │ gpl-3.0 │ Effect, Distortion │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/scrollscope │ Scrollscope │ 1.4.1 │ 2024-07-12 │ gpl-3.0 │ Effect, Analysis │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/interleaf │ Interleaf │ 1.0.0 │ 2024-07-12 │ gpl-3.0 │ Effect, EQ │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/gladedesk │ Glade Desk │ 1.0.0 │ 2024-07-19 │ gpl-3.0 │ Effect, Console, Emulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/actuate │ Actuate │ 1.3.5 │ 2024-07-12 │ gpl-3.0 │ Instrument, Synth, Sampler │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ antonok-edm/ampli-fe │ ampli-Fe │ 0.1.1 │ 2021-11-02 │ mit │ Effect, Amplifier, Volume │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ airwindows/airwindows │ Airwindows │ 1.0.0 │ 2020-02-20 │ mit │ Effect, Chorus, Distortion, EQ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ aaronaanderson/terrain │ Terrain │ 1.2.2 │ 2024-11-01 │ gpl-3.0 │ Instrument, Synthesizer, Wavet... │ +└───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴──────────────┴───────────────────────────────────┘" +`; diff --git a/tests/commands/__snapshots__/reset.test.ts.snap b/tests/commands/__snapshots__/reset.test.ts.snap new file mode 100644 index 0000000..578369e --- /dev/null +++ b/tests/commands/__snapshots__/reset.test.ts.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Reset packages 1`] = `"undefined"`; diff --git a/tests/commands/__snapshots__/scan.test.ts.snap b/tests/commands/__snapshots__/scan.test.ts.snap new file mode 100644 index 0000000..85c6ae0 --- /dev/null +++ b/tests/commands/__snapshots__/scan.test.ts.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Scan packages 1`] = `"undefined"`; diff --git a/tests/commands/__snapshots__/search.test.ts.snap b/tests/commands/__snapshots__/search.test.ts.snap new file mode 100644 index 0000000..3411e44 --- /dev/null +++ b/tests/commands/__snapshots__/search.test.ts.snap @@ -0,0 +1,15 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Search packages 1`] = ` +"┌─────────────────────────┬─────────────┬─────────┬────────────┬─────────┬────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ +│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ +├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ +│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ +├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴─────────────┴─────────┴────────────┴─────────┴────────────────────────────────┘" +`; + +exports[`Search packages 2`] = `"No results found"`; diff --git a/tests/commands/__snapshots__/sync.test.ts.snap b/tests/commands/__snapshots__/sync.test.ts.snap new file mode 100644 index 0000000..c1870b7 --- /dev/null +++ b/tests/commands/__snapshots__/sync.test.ts.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Sync packages 1`] = `"undefined"`; diff --git a/tests/commands/__snapshots__/uninstall.test.ts.snap b/tests/commands/__snapshots__/uninstall.test.ts.snap new file mode 100644 index 0000000..f427c49 --- /dev/null +++ b/tests/commands/__snapshots__/uninstall.test.ts.snap @@ -0,0 +1,17 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Uninstall package 1`] = ` +"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; + +exports[`Uninstall package 2`] = ` +"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +`; diff --git a/tests/commands/create.test.ts b/tests/commands/create.test.ts new file mode 100644 index 0000000..30462a9 --- /dev/null +++ b/tests/commands/create.test.ts @@ -0,0 +1,11 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import path from 'path'; +import { RegistryType } from '@open-audio-stack/core'; + +const APP_DIR: string = 'test'; +const PROJECT_DIR: string = path.join(APP_DIR, 'create-project'); + +test('Create package', async () => { + expect(cli(RegistryType.Plugins, 'create', PROJECT_DIR)).toMatchSnapshot(); +}); diff --git a/tests/commands/filter.test.ts b/tests/commands/filter.test.ts new file mode 100644 index 0000000..2de1d42 --- /dev/null +++ b/tests/commands/filter.test.ts @@ -0,0 +1,9 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { License, RegistryType } from '@open-audio-stack/core'; + +test('Filter packages', async () => { + expect(cli(RegistryType.Plugins, 'filter', 'name', 'Surge XT')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'filter', 'name', 'Surge X')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'filter', 'license', License.CreativeCommonsZerov1Universal)).toMatchSnapshot(); +}); diff --git a/tests/commands/get.test.ts b/tests/commands/get.test.ts new file mode 100644 index 0000000..2f3317b --- /dev/null +++ b/tests/commands/get.test.ts @@ -0,0 +1,9 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Get package', async () => { + expect(cli(RegistryType.Plugins, 'get', 'surge-synthesizer/surge')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'get', 'surge-synthesizer/surge@1.3.1')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'get', 'surge-synthesizer/surge@0.0.0')).toMatchSnapshot(); +}); diff --git a/tests/commands/install.test.ts b/tests/commands/install.test.ts new file mode 100644 index 0000000..8c47d49 --- /dev/null +++ b/tests/commands/install.test.ts @@ -0,0 +1,9 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Install package', async () => { + expect(cli(RegistryType.Plugins, 'install', 'surge-synthesizer/surge')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'install', 'surge-synthesizer/surge@1.3.1')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'install', 'surge-synthesizer/surge@0.0.0')).toMatchSnapshot(); +}); diff --git a/tests/commands/list.test.ts b/tests/commands/list.test.ts new file mode 100644 index 0000000..7877155 --- /dev/null +++ b/tests/commands/list.test.ts @@ -0,0 +1,7 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('List packages', async () => { + expect(cli(RegistryType.Plugins, 'list')).toMatchSnapshot(); +}); diff --git a/tests/commands/reset.test.ts b/tests/commands/reset.test.ts new file mode 100644 index 0000000..b9d4a87 --- /dev/null +++ b/tests/commands/reset.test.ts @@ -0,0 +1,7 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Reset packages', async () => { + expect(cli(RegistryType.Plugins, 'reset')).toMatchSnapshot(); +}); diff --git a/tests/commands/scan.test.ts b/tests/commands/scan.test.ts new file mode 100644 index 0000000..b3b6df6 --- /dev/null +++ b/tests/commands/scan.test.ts @@ -0,0 +1,7 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Scan packages', async () => { + expect(cli(RegistryType.Plugins, 'scan')).toMatchSnapshot(); +}); diff --git a/tests/commands/search.test.ts b/tests/commands/search.test.ts new file mode 100644 index 0000000..f9b21e5 --- /dev/null +++ b/tests/commands/search.test.ts @@ -0,0 +1,8 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Search packages', async () => { + expect(cli(RegistryType.Plugins, 'search', 'XT')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'search', 'ZXT')).toMatchSnapshot(); +}); diff --git a/tests/commands/sync.test.ts b/tests/commands/sync.test.ts new file mode 100644 index 0000000..8025980 --- /dev/null +++ b/tests/commands/sync.test.ts @@ -0,0 +1,7 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Sync packages', async () => { + expect(cli(RegistryType.Plugins, 'sync')).toMatchSnapshot(); +}); diff --git a/tests/commands/uninstall.test.ts b/tests/commands/uninstall.test.ts new file mode 100644 index 0000000..9ee5ae3 --- /dev/null +++ b/tests/commands/uninstall.test.ts @@ -0,0 +1,8 @@ +import { expect, test } from 'vitest'; +import { cli } from '../shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Uninstall package', async () => { + expect(cli(RegistryType.Plugins, 'install', 'surge-synthesizer/surge')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'uninstall', 'surge-synthesizer/surge')).toMatchSnapshot(); +}); From 6b41623843a3a1db66516a863e3aff02e97a6538 Mon Sep 17 00:00:00 2001 From: Kim T Date: Mon, 10 Mar 2025 21:46:08 -0700 Subject: [PATCH 05/11] Escape ANSI color/formatting codes from snapshots --- .../__snapshots__/config.test.ts.snap | 18 +- .../__snapshots__/create.test.ts.snap | 4 +- .../__snapshots__/filter.test.ts.snap | 66 ++-- tests/commands/__snapshots__/get.test.ts.snap | 22 +- .../__snapshots__/install.test.ts.snap | 22 +- .../commands/__snapshots__/list.test.ts.snap | 318 +++++++++--------- .../commands/__snapshots__/reset.test.ts.snap | 2 +- .../commands/__snapshots__/scan.test.ts.snap | 2 +- .../__snapshots__/search.test.ts.snap | 20 +- .../commands/__snapshots__/sync.test.ts.snap | 2 +- .../__snapshots__/uninstall.test.ts.snap | 20 +- tests/shared.ts | 9 + 12 files changed, 257 insertions(+), 248 deletions(-) diff --git a/tests/commands/__snapshots__/config.test.ts.snap b/tests/commands/__snapshots__/config.test.ts.snap index e7a7d89..2ccf5c1 100644 --- a/tests/commands/__snapshots__/config.test.ts.snap +++ b/tests/commands/__snapshots__/config.test.ts.snap @@ -1,24 +1,24 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Config get 1`] = `"test"`; +exports[`Config get 1`] = `test`; -exports[`Config get 2`] = `"test/installed/plugins"`; +exports[`Config get 2`] = `test/installed/plugins`; -exports[`Config get 3`] = `"test/installed/presets"`; +exports[`Config get 3`] = `test/installed/presets`; -exports[`Config get 4`] = `"test/installed/projects"`; +exports[`Config get 4`] = `test/installed/projects`; exports[`Config get 5`] = ` -"[ +[ { name: 'Open Audio Registry', url: 'https://open-audio-stack.github.io/open-audio-stack-registry' } -]" +] `; -exports[`Config get 6`] = `"1.0.0"`; +exports[`Config get 6`] = `1.0.0`; -exports[`Config set 1`] = `"test2"`; +exports[`Config set 1`] = `test2`; -exports[`Config set 2`] = `"test"`; +exports[`Config set 2`] = `test`; diff --git a/tests/commands/__snapshots__/create.test.ts.snap b/tests/commands/__snapshots__/create.test.ts.snap index bde4bad..7c1af1a 100644 --- a/tests/commands/__snapshots__/create.test.ts.snap +++ b/tests/commands/__snapshots__/create.test.ts.snap @@ -1,6 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Create package 1`] = ` -"? Org id (org-name) -[?25h" +? Org id (org-name) + `; diff --git a/tests/commands/__snapshots__/filter.test.ts.snap b/tests/commands/__snapshots__/filter.test.ts.snap index 0be5aaa..04c85b9 100644 --- a/tests/commands/__snapshots__/filter.test.ts.snap +++ b/tests/commands/__snapshots__/filter.test.ts.snap @@ -1,41 +1,41 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Filter packages 1`] = ` -"┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; -exports[`Filter packages 2`] = `"No results found"`; +exports[`Filter packages 2`] = `No results found`; exports[`Filter packages 3`] = ` -"┌────────────────────────────────────────┬──────────────────────────┬─────────┬────────────┬─────────┬───────────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ -├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ -│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ -└────────────────────────────────────────┴──────────────────────────┴─────────┴────────────┴─────────┴───────────────────────────────────┘" +┌────────────────────────────────────────┬──────────────────────────┬─────────┬────────────┬─────────┬───────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ +├────────────────────────────────────────┼──────────────────────────┼─────────┼────────────┼─────────┼───────────────────────────────────┤ +│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ +└────────────────────────────────────────┴──────────────────────────┴─────────┴────────────┴─────────┴───────────────────────────────────┘ `; diff --git a/tests/commands/__snapshots__/get.test.ts.snap b/tests/commands/__snapshots__/get.test.ts.snap index bfe7c09..f201b1d 100644 --- a/tests/commands/__snapshots__/get.test.ts.snap +++ b/tests/commands/__snapshots__/get.test.ts.snap @@ -1,19 +1,19 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Get package 1`] = ` -"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Get package 2`] = ` -"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; -exports[`Get package 3`] = `"No result found"`; +exports[`Get package 3`] = `No result found`; diff --git a/tests/commands/__snapshots__/install.test.ts.snap b/tests/commands/__snapshots__/install.test.ts.snap index fce5366..6fee9c8 100644 --- a/tests/commands/__snapshots__/install.test.ts.snap +++ b/tests/commands/__snapshots__/install.test.ts.snap @@ -1,19 +1,19 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Install package 1`] = ` -"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Install package 2`] = ` -"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; -exports[`Install package 3`] = `"No result found"`; +exports[`Install package 3`] = `No result found`; diff --git a/tests/commands/__snapshots__/list.test.ts.snap b/tests/commands/__snapshots__/list.test.ts.snap index 7936655..0f6b080 100644 --- a/tests/commands/__snapshots__/list.test.ts.snap +++ b/tests/commands/__snapshots__/list.test.ts.snap @@ -1,163 +1,163 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`List packages 1`] = ` -"┌───────────────────────────────────────────┬───────────────────────────┬─────────┬────────────┬──────────────┬───────────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ wolf-plugins/wolf-spectrum │ Wolf Spectrum │ 1.0.0 │ 2019-04-14 │ gpl-3.0 │ Effect, Spectrogram, Frequency │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ wolf-plugins/wolf-shaper │ Wolf Shaper │ 1.0.2 │ 2023-05-14 │ gpl-3.0 │ Effect, Distortion, Editor │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ utokusa/os-251 │ OS-251 │ 1.2.1 │ 2022-07-25 │ gpl-3.0 │ Instrument, Synth, Lo-fi │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tobanteaudio/modeq │ modEQ │ 0.4.0 │ 2019-05-17 │ gpl-3.0 │ Effect, EQ, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ thewavewarden/odin │ Odin │ 2.3.4 │ 2020-11-09 │ gpl-3.0 │ Instrument, Synth, Moog │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ the-synister/synister │ Synister │ 1.0.3 │ 2016-03-19 │ gpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tesselode/mika-micro │ Mika Micro │ 2.0.1 │ 2018-05-17 │ mit │ Instrument, Synth, Oscillators │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tesselode/cocoa-delay │ Cocoa Delay │ 1.0.0 │ 2018-09-01 │ mit │ Effect, Delay, Warm │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ surge-synthesizer/monique-monosynth │ Monique │ 1.2.0 │ 2021-12-13 │ gpl-3.0 │ Instrument, Synth, Bass, Lead │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ studiorack/avl-percussions │ AVL Percussions │ 1.1.0 │ 2022-02-21 │ cc-by-sa-4.0 │ Instrument, Drums, Percussions... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ studiorack/avl-drumkits │ AVL Drumkits │ 1.1.0 │ 2022-02-20 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfztools/sfizz │ Sfizz │ 1.2.3 │ 2024-01-14 │ bsd-2-clause │ Instrument, Sampler, Synth │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/war-tuba │ War Tuba │ 1.0.2 │ 2022-11-04 │ cc-by-4.0 │ Instrument, Brass, Tuba, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/splendidgrandpiano │ Splendid Grand Piano │ 1.0.0 │ 2022-01-02 │ bsd-2-clause │ Instrument, Keys, Piano, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/samssonor │ Sam's Sonor │ 1.0.0 │ 2022-08-28 │ cc-by-sa-4.0 │ Instrument, Drums, Kit, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/salamandergrandpiano │ Salamander Grand Piano │ 1.0.0 │ 2022-01-02 │ cc-by-4.0 │ Instrument, Piano, Yamaha, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/nakeddrums │ Naked Drums │ 1.0.0 │ 2021-11-08 │ cc-by-4.0 │ Instrument, Drums, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/jsteeldrum │ jSteelDrum │ 1.0.0 │ 2022-09-23 │ unlicense │ Instrument, Steel, Drum, Orche... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/jrhodes3c │ jRhodes3c │ 1.0.0 │ 2023-07-04 │ cc-by-sa-4.0 │ Instrument, Keys, Rhodes, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sdatkinson/neural-amp-modeler │ Neural Amp Modeler │ 0.7.12 │ 2024-12-02 │ mit │ Amp, Emulation, Noise Gate │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ resonantdsp/swankyamp │ Swanky Amp │ 1.4.0 │ 2021-04-21 │ gpl-3.0 │ Effect, Amplifier, Tube │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ reales/opl │ OPL │ 2.4.0 │ 2024-08-08 │ gpl-3.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ reales/ob-xd │ OB-Xd │ 3.5.0 │ 2021-05-30 │ gpl-3.0 │ Instrument, Synth, OB-X │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ pentagrampro/owlbass │ OwlBass │ 1.0.0 │ 2019-01-13 │ gpl-3.0 │ Instrument, Synth, Bass │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ paynebc/tunefish │ Tunefish │ 4.2.0 │ 2018-05-04 │ gpl-3.0 │ Instrument, Synth, Analog │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ open-soundfonts/virtual-playing-orchestra │ Virtual Playing Orchestra │ 3.3.2 │ 2020-10-17 │ gpl-3.0 │ Instrument, Orchestral, String... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ mzuther/squeezer │ Squeezer │ 2.5.4 │ 2020-04-17 │ gpl-3.0 │ Effect, Compressor │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ mtytel/helm │ Helm │ 0.9.0 │ 2017-07-08 │ gpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ mikemorenodsp/ep-mk1 │ EP-MK1 │ 2.4.0 │ 2020-09-28 │ gpl-3.0 │ Instrument, Synth, Electric, P... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ midilab/jc303 │ jc303 │ 0.11.1 │ 2024-09-11 │ gpl-3.0 │ Instrument, Bass, Synthesizer │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ michaelwillis/dragonfly-reverb │ Dragonfly Reverb │ 3.2.10 │ 2023-04-22 │ gpl-3.0 │ Effect, Reverb, Plate │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ michael-jan/key-repeat │ Key Repeat │ 1.0.0 │ 2020-01-07 │ gpl-3.0 │ Instrument, Samplers, Repeat │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ martineastwood/mverb │ Mverb │ 1.0.0 │ 2013-03-25 │ gpl-3.0 │ Effect, Reverb │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ khrykin/blackbird │ BlackBird │ 0.1.0 │ 2020-11-11 │ gpl-3.0 │ Instrument, Synth, Analog │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ keijiro/vst2413 │ VST2413 │ 1.0.2 │ 2013-04-21 │ zlib │ Instrument, Synth, Bit │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ jpcima/opnplug │ OPNplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ jpcima/adlplug │ ADLplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ joepvanlier/ysfx │ ysfx │ 0.0.33 │ 2025-02-09 │ gpl-3.0 │ Instrument, Synth, JSFX │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ igorski/regrader │ Regrader │ 1.0.5 │ 2024-03-16 │ mit │ Effect, Delay, Sync │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ igorski/fogpad │ FogPad │ 1.0.3 │ 2024-03-16 │ mit │ Effect, Pitch Shifter, Reverb │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ guitarml/smartguitaramp │ SmartGuitarAmp │ 1.3.0 │ 2022-08-31 │ apache-2.0 │ Effect, Guitar, Amp │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ greatest-ape/octasine │ OctaSine │ 0.9.1 │ 2024-07-03 │ agpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ falktx/carla │ Carla │ 2.5.9 │ 2024-09-22 │ gpl-3.0 │ Host, Player, Automation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ endolith/salamander-drumkit │ Salamander Drumkit │ 1.0.0 │ 2012-02-25 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ dropsnorz/wobbleizer │ Wobbleizer │ 2.3.2 │ 2012-02-25 │ mit │ Effect, Filter, LFO │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ distrho/dpf-plugins │ DPF Plugins │ 1.7.0 │ 2023-04-15 │ gpl-3.0 │ Effect, Delay, Feedback, Rever... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ clearly-broken-software/ninjas2 │ Ninjas 2 │ 0.2.0 │ 2020-01-17 │ gpl-3.0 │ Instrument, Sampler, Slicer │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ clearly-broken-software/drops │ Drops │ 1.0.0 │ 2022-01-15 │ gpl-3.0 │ Instrument, Sampler, Filter │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ chowdhury-dsp/chowtapemodel │ Chow Tape Model │ 2.11.4 │ 2023-11-05 │ gpl-3.0 │ Effect, Filter, Tape │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ chowdhury-dsp/chowmatrix │ CHOW Matrix │ 1.3.0 │ 2021-12-21 │ bsd-3-clause │ Effect, Delay, Feedback │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ chowdhury-dsp/chow │ CHOW │ 1.0.0 │ 2019-01-11 │ gpl-3.0 │ Effect, Distortion, Noise │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ birch-san/juicysfplugin │ JuicySFplugin │ 3.1.0 │ 2022-02-13 │ gpl-3.0 │ Instrument, Sampler, Synth │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ audioplugins/iempluginsuite │ IEM Plugin Suite │ 1.14.1 │ 2023-02-23 │ gpl-3.0 │ Effect, Reverb, Delay │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ asb2m10/dexed │ Dexed │ 0.9.8 │ 2024-10-08 │ gpl-3.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ artfwo/andes │ Andes │ 0.2.0 │ 2018-06-01 │ gpl-3.0 │ Instrument, Synth, Oscillator │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/subhoofer │ Subhoofer │ 2.2.2 │ 2024-08-02 │ gpl-3.0 │ Effect, Distortion │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/scrollscope │ Scrollscope │ 1.4.1 │ 2024-07-12 │ gpl-3.0 │ Effect, Analysis │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/interleaf │ Interleaf │ 1.0.0 │ 2024-07-12 │ gpl-3.0 │ Effect, EQ │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/gladedesk │ Glade Desk │ 1.0.0 │ 2024-07-19 │ gpl-3.0 │ Effect, Console, Emulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/actuate │ Actuate │ 1.3.5 │ 2024-07-12 │ gpl-3.0 │ Instrument, Synth, Sampler │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ antonok-edm/ampli-fe │ ampli-Fe │ 0.1.1 │ 2021-11-02 │ mit │ Effect, Amplifier, Volume │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ airwindows/airwindows │ Airwindows │ 1.0.0 │ 2020-02-20 │ mit │ Effect, Chorus, Distortion, EQ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ aaronaanderson/terrain │ Terrain │ 1.2.2 │ 2024-11-01 │ gpl-3.0 │ Instrument, Synthesizer, Wavet... │ -└───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴──────────────┴───────────────────────────────────┘" +┌───────────────────────────────────────────┬───────────────────────────┬─────────┬────────────┬──────────────┬───────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ wolf-plugins/wolf-spectrum │ Wolf Spectrum │ 1.0.0 │ 2019-04-14 │ gpl-3.0 │ Effect, Spectrogram, Frequency │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ wolf-plugins/wolf-shaper │ Wolf Shaper │ 1.0.2 │ 2023-05-14 │ gpl-3.0 │ Effect, Distortion, Editor │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ utokusa/os-251 │ OS-251 │ 1.2.1 │ 2022-07-25 │ gpl-3.0 │ Instrument, Synth, Lo-fi │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tobanteaudio/modeq │ modEQ │ 0.4.0 │ 2019-05-17 │ gpl-3.0 │ Effect, EQ, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ thewavewarden/odin │ Odin │ 2.3.4 │ 2020-11-09 │ gpl-3.0 │ Instrument, Synth, Moog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ the-synister/synister │ Synister │ 1.0.3 │ 2016-03-19 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tesselode/mika-micro │ Mika Micro │ 2.0.1 │ 2018-05-17 │ mit │ Instrument, Synth, Oscillators │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ tesselode/cocoa-delay │ Cocoa Delay │ 1.0.0 │ 2018-09-01 │ mit │ Effect, Delay, Warm │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ surge-synthesizer/monique-monosynth │ Monique │ 1.2.0 │ 2021-12-13 │ gpl-3.0 │ Instrument, Synth, Bass, Lead │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ studiorack/avl-percussions │ AVL Percussions │ 1.1.0 │ 2022-02-21 │ cc-by-sa-4.0 │ Instrument, Drums, Percussions... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ studiorack/avl-drumkits │ AVL Drumkits │ 1.1.0 │ 2022-02-20 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfztools/sfizz │ Sfizz │ 1.2.3 │ 2024-01-14 │ bsd-2-clause │ Instrument, Sampler, Synth │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/war-tuba │ War Tuba │ 1.0.2 │ 2022-11-04 │ cc-by-4.0 │ Instrument, Brass, Tuba, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/splendidgrandpiano │ Splendid Grand Piano │ 1.0.0 │ 2022-01-02 │ bsd-2-clause │ Instrument, Keys, Piano, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/samssonor │ Sam's Sonor │ 1.0.0 │ 2022-08-28 │ cc-by-sa-4.0 │ Instrument, Drums, Kit, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/salamandergrandpiano │ Salamander Grand Piano │ 1.0.0 │ 2022-01-02 │ cc-by-4.0 │ Instrument, Piano, Yamaha, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/nakeddrums │ Naked Drums │ 1.0.0 │ 2021-11-08 │ cc-by-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/jsteeldrum │ jSteelDrum │ 1.0.0 │ 2022-09-23 │ unlicense │ Instrument, Steel, Drum, Orche... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/jrhodes3c │ jRhodes3c │ 1.0.0 │ 2023-07-04 │ cc-by-sa-4.0 │ Instrument, Keys, Rhodes, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ sdatkinson/neural-amp-modeler │ Neural Amp Modeler │ 0.7.12 │ 2024-12-02 │ mit │ Amp, Emulation, Noise Gate │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ resonantdsp/swankyamp │ Swanky Amp │ 1.4.0 │ 2021-04-21 │ gpl-3.0 │ Effect, Amplifier, Tube │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ reales/opl │ OPL │ 2.4.0 │ 2024-08-08 │ gpl-3.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ reales/ob-xd │ OB-Xd │ 3.5.0 │ 2021-05-30 │ gpl-3.0 │ Instrument, Synth, OB-X │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ pentagrampro/owlbass │ OwlBass │ 1.0.0 │ 2019-01-13 │ gpl-3.0 │ Instrument, Synth, Bass │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ paynebc/tunefish │ Tunefish │ 4.2.0 │ 2018-05-04 │ gpl-3.0 │ Instrument, Synth, Analog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ open-soundfonts/virtual-playing-orchestra │ Virtual Playing Orchestra │ 3.3.2 │ 2020-10-17 │ gpl-3.0 │ Instrument, Orchestral, String... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ mzuther/squeezer │ Squeezer │ 2.5.4 │ 2020-04-17 │ gpl-3.0 │ Effect, Compressor │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ mtytel/helm │ Helm │ 0.9.0 │ 2017-07-08 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ mikemorenodsp/ep-mk1 │ EP-MK1 │ 2.4.0 │ 2020-09-28 │ gpl-3.0 │ Instrument, Synth, Electric, P... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ midilab/jc303 │ jc303 │ 0.11.1 │ 2024-09-11 │ gpl-3.0 │ Instrument, Bass, Synthesizer │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ michaelwillis/dragonfly-reverb │ Dragonfly Reverb │ 3.2.10 │ 2023-04-22 │ gpl-3.0 │ Effect, Reverb, Plate │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ michael-jan/key-repeat │ Key Repeat │ 1.0.0 │ 2020-01-07 │ gpl-3.0 │ Instrument, Samplers, Repeat │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ martineastwood/mverb │ Mverb │ 1.0.0 │ 2013-03-25 │ gpl-3.0 │ Effect, Reverb │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ khrykin/blackbird │ BlackBird │ 0.1.0 │ 2020-11-11 │ gpl-3.0 │ Instrument, Synth, Analog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ keijiro/vst2413 │ VST2413 │ 1.0.2 │ 2013-04-21 │ zlib │ Instrument, Synth, Bit │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ jpcima/opnplug │ OPNplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ jpcima/adlplug │ ADLplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ joepvanlier/ysfx │ ysfx │ 0.0.33 │ 2025-02-09 │ gpl-3.0 │ Instrument, Synth, JSFX │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ igorski/regrader │ Regrader │ 1.0.5 │ 2024-03-16 │ mit │ Effect, Delay, Sync │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ igorski/fogpad │ FogPad │ 1.0.3 │ 2024-03-16 │ mit │ Effect, Pitch Shifter, Reverb │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ guitarml/smartguitaramp │ SmartGuitarAmp │ 1.3.0 │ 2022-08-31 │ apache-2.0 │ Effect, Guitar, Amp │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ greatest-ape/octasine │ OctaSine │ 0.9.1 │ 2024-07-03 │ agpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ falktx/carla │ Carla │ 2.5.9 │ 2024-09-22 │ gpl-3.0 │ Host, Player, Automation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ endolith/salamander-drumkit │ Salamander Drumkit │ 1.0.0 │ 2012-02-25 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ dropsnorz/wobbleizer │ Wobbleizer │ 2.3.2 │ 2012-02-25 │ mit │ Effect, Filter, LFO │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ distrho/dpf-plugins │ DPF Plugins │ 1.7.0 │ 2023-04-15 │ gpl-3.0 │ Effect, Delay, Feedback, Rever... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ clearly-broken-software/ninjas2 │ Ninjas 2 │ 0.2.0 │ 2020-01-17 │ gpl-3.0 │ Instrument, Sampler, Slicer │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ clearly-broken-software/drops │ Drops │ 1.0.0 │ 2022-01-15 │ gpl-3.0 │ Instrument, Sampler, Filter │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chowtapemodel │ Chow Tape Model │ 2.11.4 │ 2023-11-05 │ gpl-3.0 │ Effect, Filter, Tape │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chowmatrix │ CHOW Matrix │ 1.3.0 │ 2021-12-21 │ bsd-3-clause │ Effect, Delay, Feedback │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chow │ CHOW │ 1.0.0 │ 2019-01-11 │ gpl-3.0 │ Effect, Distortion, Noise │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ birch-san/juicysfplugin │ JuicySFplugin │ 3.1.0 │ 2022-02-13 │ gpl-3.0 │ Instrument, Sampler, Synth │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ audioplugins/iempluginsuite │ IEM Plugin Suite │ 1.14.1 │ 2023-02-23 │ gpl-3.0 │ Effect, Reverb, Delay │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ asb2m10/dexed │ Dexed │ 0.9.8 │ 2024-10-08 │ gpl-3.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ artfwo/andes │ Andes │ 0.2.0 │ 2018-06-01 │ gpl-3.0 │ Instrument, Synth, Oscillator │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/subhoofer │ Subhoofer │ 2.2.2 │ 2024-08-02 │ gpl-3.0 │ Effect, Distortion │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/scrollscope │ Scrollscope │ 1.4.1 │ 2024-07-12 │ gpl-3.0 │ Effect, Analysis │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/interleaf │ Interleaf │ 1.0.0 │ 2024-07-12 │ gpl-3.0 │ Effect, EQ │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/gladedesk │ Glade Desk │ 1.0.0 │ 2024-07-19 │ gpl-3.0 │ Effect, Console, Emulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ ardura/actuate │ Actuate │ 1.3.5 │ 2024-07-12 │ gpl-3.0 │ Instrument, Synth, Sampler │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ antonok-edm/ampli-fe │ ampli-Fe │ 0.1.1 │ 2021-11-02 │ mit │ Effect, Amplifier, Volume │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ airwindows/airwindows │ Airwindows │ 1.0.0 │ 2020-02-20 │ mit │ Effect, Chorus, Distortion, EQ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ +│ aaronaanderson/terrain │ Terrain │ 1.2.2 │ 2024-11-01 │ gpl-3.0 │ Instrument, Synthesizer, Wavet... │ +└───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴──────────────┴───────────────────────────────────┘ `; diff --git a/tests/commands/__snapshots__/reset.test.ts.snap b/tests/commands/__snapshots__/reset.test.ts.snap index 578369e..6618bcd 100644 --- a/tests/commands/__snapshots__/reset.test.ts.snap +++ b/tests/commands/__snapshots__/reset.test.ts.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Reset packages 1`] = `"undefined"`; +exports[`Reset packages 1`] = `undefined`; diff --git a/tests/commands/__snapshots__/scan.test.ts.snap b/tests/commands/__snapshots__/scan.test.ts.snap index 85c6ae0..bcdef1f 100644 --- a/tests/commands/__snapshots__/scan.test.ts.snap +++ b/tests/commands/__snapshots__/scan.test.ts.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Scan packages 1`] = `"undefined"`; +exports[`Scan packages 1`] = `undefined`; diff --git a/tests/commands/__snapshots__/search.test.ts.snap b/tests/commands/__snapshots__/search.test.ts.snap index 3411e44..66db22b 100644 --- a/tests/commands/__snapshots__/search.test.ts.snap +++ b/tests/commands/__snapshots__/search.test.ts.snap @@ -1,15 +1,15 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Search packages 1`] = ` -"┌─────────────────────────┬─────────────┬─────────┬────────────┬─────────┬────────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ -│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ -├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ -│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ -├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ -│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└─────────────────────────┴─────────────┴─────────┴────────────┴─────────┴────────────────────────────────┘" +┌─────────────────────────┬─────────────┬─────────┬────────────┬─────────┬────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ +│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ +├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ +│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ +├─────────────────────────┼─────────────┼─────────┼────────────┼─────────┼────────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴─────────────┴─────────┴────────────┴─────────┴────────────────────────────────┘ `; -exports[`Search packages 2`] = `"No results found"`; +exports[`Search packages 2`] = `No results found`; diff --git a/tests/commands/__snapshots__/sync.test.ts.snap b/tests/commands/__snapshots__/sync.test.ts.snap index c1870b7..c830b73 100644 --- a/tests/commands/__snapshots__/sync.test.ts.snap +++ b/tests/commands/__snapshots__/sync.test.ts.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Sync packages 1`] = `"undefined"`; +exports[`Sync packages 1`] = `undefined`; diff --git a/tests/commands/__snapshots__/uninstall.test.ts.snap b/tests/commands/__snapshots__/uninstall.test.ts.snap index f427c49..6330879 100644 --- a/tests/commands/__snapshots__/uninstall.test.ts.snap +++ b/tests/commands/__snapshots__/uninstall.test.ts.snap @@ -1,17 +1,17 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Uninstall package 1`] = ` -"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Uninstall package 2`] = ` -"┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘" +┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; diff --git a/tests/shared.ts b/tests/shared.ts index 9d3c710..3caca78 100644 --- a/tests/shared.ts +++ b/tests/shared.ts @@ -1,9 +1,18 @@ +import { expect } from 'vitest'; import path from 'path'; +import { stripVTControlCharacters } from 'util'; import { execaSync, SyncResult } from 'execa'; import { getSystem, SystemType } from '@open-audio-stack/core'; const CLI_PATH: string = path.resolve('./', 'build', 'index.js'); +// ANSI escape codes for colors and formatting vary across systems +// Sanitize output for snapshot testing +expect.addSnapshotSerializer({ + serialize: val => stripVTControlCharacters(val), + test: () => true, +}); + export function cli(...args: string[]): string { const result: SyncResult = execaSync('node', [CLI_PATH, ...args]); return cleanOutput(result.stdout as string); From 74a1cbb9d14e2991c3b5804485a7db977a2ed23d Mon Sep 17 00:00:00 2001 From: Kim T Date: Mon, 10 Mar 2025 22:19:04 -0700 Subject: [PATCH 06/11] Ensure Package Id is outputted --- src/utils.ts | 55 ++- tests/commands/__snapshots__/get.test.ts.snap | 20 +- .../__snapshots__/install.test.ts.snap | 20 +- .../commands/__snapshots__/list.test.ts.snap | 318 +++++++++--------- .../__snapshots__/uninstall.test.ts.snap | 20 +- 5 files changed, 211 insertions(+), 222 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 7ad04e6..6c616ad 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -9,46 +9,35 @@ export function formatOutput(result: Package[] | Package | undefined, version?: head: ['Id', 'Name', 'Version', 'Date', 'License', 'Tags'], }); if (result instanceof Array) { - if (result.length === 0) { - return `No results found`; - } + if (result.length === 0) return `No results found`; for (const index in result) { - const pkg = result[index]; - const versionNum: string = version || pkg.latestVersion(); - const pkgVersion = pkg.getVersion(versionNum); - if (pkgVersion) { - table.push([ - pkg.slug || '-', - truncateString(pkgVersion.name || '-', 40), - truncateString(versionNum || '-', 10), - truncateString(pkgVersion.date?.split('T')[0] || '-', 10), - truncateString(pkgVersion.license || '-', 20), - truncateString(pkgVersion.tags?.join(', ') || '-', 30), - ]); - } + const row = formatRow(result[index], version); + if (!row) return `No results found`; + table.push(row); } } else { - if (!result) { - return `No result found`; - } - const pkg = result; - const versionNum: string = version || pkg.latestVersion(); - const pkgVersion = pkg.getVersion(versionNum); - if (!pkgVersion) { - return `No result found`; - } - table.push([ - '-', - truncateString(pkgVersion.name || '-', 40), - truncateString(versionNum || '-', 10), - truncateString(pkgVersion.date?.split('T')[0] || '-', 10), - truncateString(pkgVersion.license || '-', 10), - truncateString(pkgVersion.tags?.join(', ') || '-', 30), - ]); + const row = formatRow(result, version); + if (!row) return `No result found`; + table.push(row); } return table.toString(); } +export function formatRow(pkg: Package, version?: string) { + if (!pkg) return; + const versionNum: string = version || pkg.latestVersion(); + const pkgVersion = pkg.getVersion(versionNum); + if (!pkgVersion) return; + return [ + pkg.slug || '-', + truncateString(pkgVersion.name || '-', 40), + truncateString(versionNum || '-', 10), + truncateString(pkgVersion.date?.split('T')[0] || '-', 10), + truncateString(pkgVersion.license || '-', 10), + truncateString(pkgVersion.tags?.join(', ') || '-', 30), + ]; +} + // Helper function to format strings export function truncateString(str: string, num: number) { if (str.length > num) { diff --git a/tests/commands/__snapshots__/get.test.ts.snap b/tests/commands/__snapshots__/get.test.ts.snap index f201b1d..7d391e7 100644 --- a/tests/commands/__snapshots__/get.test.ts.snap +++ b/tests/commands/__snapshots__/get.test.ts.snap @@ -1,19 +1,19 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Get package 1`] = ` -┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Get package 2`] = ` -┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Get package 3`] = `No result found`; diff --git a/tests/commands/__snapshots__/install.test.ts.snap b/tests/commands/__snapshots__/install.test.ts.snap index 6fee9c8..12c002f 100644 --- a/tests/commands/__snapshots__/install.test.ts.snap +++ b/tests/commands/__snapshots__/install.test.ts.snap @@ -1,19 +1,19 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Install package 1`] = ` -┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Install package 2`] = ` -┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Install package 3`] = `No result found`; diff --git a/tests/commands/__snapshots__/list.test.ts.snap b/tests/commands/__snapshots__/list.test.ts.snap index 0f6b080..c06f797 100644 --- a/tests/commands/__snapshots__/list.test.ts.snap +++ b/tests/commands/__snapshots__/list.test.ts.snap @@ -1,163 +1,163 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`List packages 1`] = ` -┌───────────────────────────────────────────┬───────────────────────────┬─────────┬────────────┬──────────────┬───────────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ wolf-plugins/wolf-spectrum │ Wolf Spectrum │ 1.0.0 │ 2019-04-14 │ gpl-3.0 │ Effect, Spectrogram, Frequency │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ wolf-plugins/wolf-shaper │ Wolf Shaper │ 1.0.2 │ 2023-05-14 │ gpl-3.0 │ Effect, Distortion, Editor │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ utokusa/os-251 │ OS-251 │ 1.2.1 │ 2022-07-25 │ gpl-3.0 │ Instrument, Synth, Lo-fi │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tobanteaudio/modeq │ modEQ │ 0.4.0 │ 2019-05-17 │ gpl-3.0 │ Effect, EQ, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ thewavewarden/odin │ Odin │ 2.3.4 │ 2020-11-09 │ gpl-3.0 │ Instrument, Synth, Moog │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ the-synister/synister │ Synister │ 1.0.3 │ 2016-03-19 │ gpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tesselode/mika-micro │ Mika Micro │ 2.0.1 │ 2018-05-17 │ mit │ Instrument, Synth, Oscillators │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ tesselode/cocoa-delay │ Cocoa Delay │ 1.0.0 │ 2018-09-01 │ mit │ Effect, Delay, Warm │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ surge-synthesizer/monique-monosynth │ Monique │ 1.2.0 │ 2021-12-13 │ gpl-3.0 │ Instrument, Synth, Bass, Lead │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ studiorack/avl-percussions │ AVL Percussions │ 1.1.0 │ 2022-02-21 │ cc-by-sa-4.0 │ Instrument, Drums, Percussions... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ studiorack/avl-drumkits │ AVL Drumkits │ 1.1.0 │ 2022-02-20 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfztools/sfizz │ Sfizz │ 1.2.3 │ 2024-01-14 │ bsd-2-clause │ Instrument, Sampler, Synth │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/war-tuba │ War Tuba │ 1.0.2 │ 2022-11-04 │ cc-by-4.0 │ Instrument, Brass, Tuba, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/splendidgrandpiano │ Splendid Grand Piano │ 1.0.0 │ 2022-01-02 │ bsd-2-clause │ Instrument, Keys, Piano, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/samssonor │ Sam's Sonor │ 1.0.0 │ 2022-08-28 │ cc-by-sa-4.0 │ Instrument, Drums, Kit, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/salamandergrandpiano │ Salamander Grand Piano │ 1.0.0 │ 2022-01-02 │ cc-by-4.0 │ Instrument, Piano, Yamaha, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/nakeddrums │ Naked Drums │ 1.0.0 │ 2021-11-08 │ cc-by-4.0 │ Instrument, Drums, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/jsteeldrum │ jSteelDrum │ 1.0.0 │ 2022-09-23 │ unlicense │ Instrument, Steel, Drum, Orche... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/jrhodes3c │ jRhodes3c │ 1.0.0 │ 2023-07-04 │ cc-by-sa-4.0 │ Instrument, Keys, Rhodes, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ sdatkinson/neural-amp-modeler │ Neural Amp Modeler │ 0.7.12 │ 2024-12-02 │ mit │ Amp, Emulation, Noise Gate │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ resonantdsp/swankyamp │ Swanky Amp │ 1.4.0 │ 2021-04-21 │ gpl-3.0 │ Effect, Amplifier, Tube │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ reales/opl │ OPL │ 2.4.0 │ 2024-08-08 │ gpl-3.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ reales/ob-xd │ OB-Xd │ 3.5.0 │ 2021-05-30 │ gpl-3.0 │ Instrument, Synth, OB-X │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ pentagrampro/owlbass │ OwlBass │ 1.0.0 │ 2019-01-13 │ gpl-3.0 │ Instrument, Synth, Bass │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ paynebc/tunefish │ Tunefish │ 4.2.0 │ 2018-05-04 │ gpl-3.0 │ Instrument, Synth, Analog │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ open-soundfonts/virtual-playing-orchestra │ Virtual Playing Orchestra │ 3.3.2 │ 2020-10-17 │ gpl-3.0 │ Instrument, Orchestral, String... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ mzuther/squeezer │ Squeezer │ 2.5.4 │ 2020-04-17 │ gpl-3.0 │ Effect, Compressor │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ mtytel/helm │ Helm │ 0.9.0 │ 2017-07-08 │ gpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ mikemorenodsp/ep-mk1 │ EP-MK1 │ 2.4.0 │ 2020-09-28 │ gpl-3.0 │ Instrument, Synth, Electric, P... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ midilab/jc303 │ jc303 │ 0.11.1 │ 2024-09-11 │ gpl-3.0 │ Instrument, Bass, Synthesizer │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ michaelwillis/dragonfly-reverb │ Dragonfly Reverb │ 3.2.10 │ 2023-04-22 │ gpl-3.0 │ Effect, Reverb, Plate │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ michael-jan/key-repeat │ Key Repeat │ 1.0.0 │ 2020-01-07 │ gpl-3.0 │ Instrument, Samplers, Repeat │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ martineastwood/mverb │ Mverb │ 1.0.0 │ 2013-03-25 │ gpl-3.0 │ Effect, Reverb │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ khrykin/blackbird │ BlackBird │ 0.1.0 │ 2020-11-11 │ gpl-3.0 │ Instrument, Synth, Analog │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ keijiro/vst2413 │ VST2413 │ 1.0.2 │ 2013-04-21 │ zlib │ Instrument, Synth, Bit │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ jpcima/opnplug │ OPNplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ jpcima/adlplug │ ADLplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ joepvanlier/ysfx │ ysfx │ 0.0.33 │ 2025-02-09 │ gpl-3.0 │ Instrument, Synth, JSFX │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ igorski/regrader │ Regrader │ 1.0.5 │ 2024-03-16 │ mit │ Effect, Delay, Sync │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ igorski/fogpad │ FogPad │ 1.0.3 │ 2024-03-16 │ mit │ Effect, Pitch Shifter, Reverb │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ guitarml/smartguitaramp │ SmartGuitarAmp │ 1.3.0 │ 2022-08-31 │ apache-2.0 │ Effect, Guitar, Amp │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ greatest-ape/octasine │ OctaSine │ 0.9.1 │ 2024-07-03 │ agpl-3.0 │ Instrument, Synth, Modulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ falktx/carla │ Carla │ 2.5.9 │ 2024-09-22 │ gpl-3.0 │ Host, Player, Automation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ endolith/salamander-drumkit │ Salamander Drumkit │ 1.0.0 │ 2012-02-25 │ cc-by-sa-4.0 │ Instrument, Drums, sfz │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ dropsnorz/wobbleizer │ Wobbleizer │ 2.3.2 │ 2012-02-25 │ mit │ Effect, Filter, LFO │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ distrho/dpf-plugins │ DPF Plugins │ 1.7.0 │ 2023-04-15 │ gpl-3.0 │ Effect, Delay, Feedback, Rever... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ clearly-broken-software/ninjas2 │ Ninjas 2 │ 0.2.0 │ 2020-01-17 │ gpl-3.0 │ Instrument, Sampler, Slicer │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ clearly-broken-software/drops │ Drops │ 1.0.0 │ 2022-01-15 │ gpl-3.0 │ Instrument, Sampler, Filter │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ chowdhury-dsp/chowtapemodel │ Chow Tape Model │ 2.11.4 │ 2023-11-05 │ gpl-3.0 │ Effect, Filter, Tape │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ chowdhury-dsp/chowmatrix │ CHOW Matrix │ 1.3.0 │ 2021-12-21 │ bsd-3-clause │ Effect, Delay, Feedback │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ chowdhury-dsp/chow │ CHOW │ 1.0.0 │ 2019-01-11 │ gpl-3.0 │ Effect, Distortion, Noise │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ birch-san/juicysfplugin │ JuicySFplugin │ 3.1.0 │ 2022-02-13 │ gpl-3.0 │ Instrument, Sampler, Synth │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ audioplugins/iempluginsuite │ IEM Plugin Suite │ 1.14.1 │ 2023-02-23 │ gpl-3.0 │ Effect, Reverb, Delay │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ asb2m10/dexed │ Dexed │ 0.9.8 │ 2024-10-08 │ gpl-3.0 │ Instrument, Synth, FM │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ artfwo/andes │ Andes │ 0.2.0 │ 2018-06-01 │ gpl-3.0 │ Instrument, Synth, Oscillator │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/subhoofer │ Subhoofer │ 2.2.2 │ 2024-08-02 │ gpl-3.0 │ Effect, Distortion │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/scrollscope │ Scrollscope │ 1.4.1 │ 2024-07-12 │ gpl-3.0 │ Effect, Analysis │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/interleaf │ Interleaf │ 1.0.0 │ 2024-07-12 │ gpl-3.0 │ Effect, EQ │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/gladedesk │ Glade Desk │ 1.0.0 │ 2024-07-19 │ gpl-3.0 │ Effect, Console, Emulation │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ ardura/actuate │ Actuate │ 1.3.5 │ 2024-07-12 │ gpl-3.0 │ Instrument, Synth, Sampler │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ antonok-edm/ampli-fe │ ampli-Fe │ 0.1.1 │ 2021-11-02 │ mit │ Effect, Amplifier, Volume │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ airwindows/airwindows │ Airwindows │ 1.0.0 │ 2020-02-20 │ mit │ Effect, Chorus, Distortion, EQ... │ -├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼──────────────┼───────────────────────────────────┤ -│ aaronaanderson/terrain │ Terrain │ 1.2.2 │ 2024-11-01 │ gpl-3.0 │ Instrument, Synthesizer, Wavet... │ -└───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴──────────────┴───────────────────────────────────┘ +┌───────────────────────────────────────────┬───────────────────────────┬─────────┬────────────┬───────────────┬───────────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ wolf-plugins/wolf-spectrum │ Wolf Spectrum │ 1.0.0 │ 2019-04-14 │ gpl-3.0 │ Effect, Spectrogram, Frequency │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ wolf-plugins/wolf-shaper │ Wolf Shaper │ 1.0.2 │ 2023-05-14 │ gpl-3.0 │ Effect, Distortion, Editor │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ utokusa/os-251 │ OS-251 │ 1.2.1 │ 2022-07-25 │ gpl-3.0 │ Instrument, Synth, Lo-fi │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ tote-bag-labs/valentine │ Valentine │ 1.0.1 │ 2024-04-27 │ gpl-3.0 │ Effect, Compressor, Distortion │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ tobanteaudio/modeq │ modEQ │ 0.4.0 │ 2019-05-17 │ gpl-3.0 │ Effect, EQ, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ thewavewarden/odin │ Odin │ 2.3.4 │ 2020-11-09 │ gpl-3.0 │ Instrument, Synth, Moog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ the-synister/synister │ Synister │ 1.0.3 │ 2016-03-19 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ tesselode/mika-micro │ Mika Micro │ 2.0.1 │ 2018-05-17 │ mit │ Instrument, Synth, Oscillators │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ tesselode/flutterbird │ Flutterbird │ 1.0.1 │ 2018-09-06 │ mit │ Effect, Pitch, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ tesselode/cocoa-delay │ Cocoa Delay │ 1.0.0 │ 2018-09-01 │ mit │ Effect, Delay, Warm │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ surge-synthesizer/monique-monosynth │ Monique │ 1.2.0 │ 2021-12-13 │ gpl-3.0 │ Instrument, Synth, Bass, Lead │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ studiorack/avl-percussions │ AVL Percussions │ 1.1.0 │ 2022-02-21 │ cc-by-sa-4... │ Instrument, Drums, Percussions... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ studiorack/avl-drumkits │ AVL Drumkits │ 1.1.0 │ 2022-02-20 │ cc-by-sa-4... │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfztools/sfizz │ Sfizz │ 1.2.3 │ 2024-01-14 │ bsd-2-clau... │ Instrument, Sampler, Synth │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/war-tuba │ War Tuba │ 1.0.2 │ 2022-11-04 │ cc-by-4.0 │ Instrument, Brass, Tuba, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/virtuosity_drums │ Virtuosity Drums │ 0.9.24 │ 2022-09-21 │ cc0-1.0 │ Instrument, Drums, Jazz, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/splendidgrandpiano │ Splendid Grand Piano │ 1.0.0 │ 2022-01-02 │ bsd-2-clau... │ Instrument, Keys, Piano, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/samssonor │ Sam's Sonor │ 1.0.0 │ 2022-08-28 │ cc-by-sa-4... │ Instrument, Drums, Kit, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/salamandergrandpiano │ Salamander Grand Piano │ 1.0.0 │ 2022-01-02 │ cc-by-4.0 │ Instrument, Piano, Yamaha, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/nakeddrums │ Naked Drums │ 1.0.0 │ 2021-11-08 │ cc-by-4.0 │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/jsteeldrum │ jSteelDrum │ 1.0.0 │ 2022-09-23 │ unlicense │ Instrument, Steel, Drum, Orche... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/jrhodes3c │ jRhodes3c │ 1.0.0 │ 2023-07-04 │ cc-by-sa-4... │ Instrument, Keys, Rhodes, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/hungarian-zither │ Hungarian Zither │ 1.0.1 │ 2022-09-28 │ cc0-1.0 │ Instrument, Strings, Classical... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/horse-pulse │ Horse Pulse │ 1.0.0 │ 2022-04-01 │ cc0-1.0 │ Instrument, String, Pluck, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/double-bass │ Double Bass │ 1.0.1 │ 2022-09-04 │ cc0-1.0 │ Instrument, String, Bass, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/black-and-green-guitars │ Black and Green Guitars │ 1.0.0 │ 2022-08-08 │ cc0-1.0 │ Instrument, Guitar, Electric, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sfzinstruments/bear-sax │ Bear Sax │ 1.0.4 │ 2021-09-11 │ cc0-1.0 │ Instrument, Brass, Saxophone, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ sdatkinson/neural-amp-modeler │ Neural Amp Modeler │ 0.7.12 │ 2024-12-02 │ mit │ Amp, Emulation, Noise Gate │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ resonantdsp/swankyamp │ Swanky Amp │ 1.4.0 │ 2021-04-21 │ gpl-3.0 │ Effect, Amplifier, Tube │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ reales/opl │ OPL │ 2.4.0 │ 2024-08-08 │ gpl-3.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ reales/ob-xd │ OB-Xd │ 3.5.0 │ 2021-05-30 │ gpl-3.0 │ Instrument, Synth, OB-X │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ pentagrampro/owlbass │ OwlBass │ 1.0.0 │ 2019-01-13 │ gpl-3.0 │ Instrument, Synth, Bass │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ paynebc/tunefish │ Tunefish │ 4.2.0 │ 2018-05-04 │ gpl-3.0 │ Instrument, Synth, Analog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ open-soundfonts/virtual-playing-orchestra │ Virtual Playing Orchestra │ 3.3.2 │ 2020-10-17 │ gpl-3.0 │ Instrument, Orchestral, String... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ mzuther/squeezer │ Squeezer │ 2.5.4 │ 2020-04-17 │ gpl-3.0 │ Effect, Compressor │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ mtytel/helm │ Helm │ 0.9.0 │ 2017-07-08 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ mikemorenodsp/ep-mk1 │ EP-MK1 │ 2.4.0 │ 2020-09-28 │ gpl-3.0 │ Instrument, Synth, Electric, P... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ midilab/jc303 │ jc303 │ 0.11.1 │ 2024-09-11 │ gpl-3.0 │ Instrument, Bass, Synthesizer │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ michaelwillis/dragonfly-reverb │ Dragonfly Reverb │ 3.2.10 │ 2023-04-22 │ gpl-3.0 │ Effect, Reverb, Plate │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ michael02022/basic-harmonica │ Basic Harmonica │ 1.0.0 │ 2022-10-07 │ cc0-1.0 │ Instrument, Wind, Harmonica, O... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ michael-jan/key-repeat │ Key Repeat │ 1.0.0 │ 2020-01-07 │ gpl-3.0 │ Instrument, Samplers, Repeat │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ martineastwood/mverb │ Mverb │ 1.0.0 │ 2013-03-25 │ gpl-3.0 │ Effect, Reverb │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ khrykin/blackbird │ BlackBird │ 0.1.0 │ 2020-11-11 │ gpl-3.0 │ Instrument, Synth, Analog │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ keijiro/vst2413 │ VST2413 │ 1.0.2 │ 2013-04-21 │ zlib │ Instrument, Synth, Bit │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ jpcima/opnplug │ OPNplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ jpcima/adlplug │ ADLplug │ 1.0.2 │ 2020-08-05 │ bsl-1.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ joepvanlier/ysfx │ ysfx │ 0.0.33 │ 2025-02-09 │ gpl-3.0 │ Instrument, Synth, JSFX │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ igorski/regrader │ Regrader │ 1.0.5 │ 2024-03-16 │ mit │ Effect, Delay, Sync │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ igorski/fogpad │ FogPad │ 1.0.3 │ 2024-03-16 │ mit │ Effect, Pitch Shifter, Reverb │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ guitarml/smartguitaramp │ SmartGuitarAmp │ 1.3.0 │ 2022-08-31 │ apache-2.0 │ Effect, Guitar, Amp │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ greatest-ape/octasine │ OctaSine │ 0.9.1 │ 2024-07-03 │ agpl-3.0 │ Instrument, Synth, Modulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ freepats/upright-piano-kw │ Upright Piano KW │ 1.0.0 │ 2022-02-21 │ cc0-1.0 │ Instrument, Keys, Piano, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ freepats/synthesizer-percussion │ Synthesizer Percussion │ 1.0.0 │ 2022-07-18 │ cc0-1.0 │ Instrument, Drums, Electro, sf... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ freepats/spanish-classical-guitar │ Spanish Classical Guitar │ 1.0.0 │ 2019-06-18 │ cc0-1.0 │ Instrument, Guitar, Classical,... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ freepats/hang-d-minor │ Hang D Minor │ 1.0.0 │ 2022-03-30 │ cc0-1.0 │ Instrument, Orchestra, Hang, s... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ freepats/glasses-of-water │ Glasses Of Water │ 1.0.0 │ 2019-12-27 │ cc0-1.0 │ Instrument, Orchestra, Glass, ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ falktx/carla │ Carla │ 2.5.9 │ 2024-09-22 │ gpl-3.0 │ Host, Player, Automation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ endolith/salamander-drumkit │ Salamander Drumkit │ 1.0.0 │ 2012-02-25 │ cc-by-sa-4... │ Instrument, Drums, sfz │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ dropsnorz/wobbleizer │ Wobbleizer │ 2.3.2 │ 2012-02-25 │ mit │ Effect, Filter, LFO │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ distrho/dpf-plugins │ DPF Plugins │ 1.7.0 │ 2023-04-15 │ gpl-3.0 │ Effect, Delay, Feedback, Rever... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ clearly-broken-software/ninjas2 │ Ninjas 2 │ 0.2.0 │ 2020-01-17 │ gpl-3.0 │ Instrument, Sampler, Slicer │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ clearly-broken-software/drops │ Drops │ 1.0.0 │ 2022-01-15 │ gpl-3.0 │ Instrument, Sampler, Filter │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chowtapemodel │ Chow Tape Model │ 2.11.4 │ 2023-11-05 │ gpl-3.0 │ Effect, Filter, Tape │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chowmatrix │ CHOW Matrix │ 1.3.0 │ 2021-12-21 │ bsd-3-clau... │ Effect, Delay, Feedback │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ chowdhury-dsp/chow │ CHOW │ 1.0.0 │ 2019-01-11 │ gpl-3.0 │ Effect, Distortion, Noise │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ birch-san/juicysfplugin │ JuicySFplugin │ 3.1.0 │ 2022-02-13 │ gpl-3.0 │ Instrument, Sampler, Synth │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ audioplugins/iempluginsuite │ IEM Plugin Suite │ 1.14.1 │ 2023-02-23 │ gpl-3.0 │ Effect, Reverb, Delay │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ asb2m10/dexed │ Dexed │ 0.9.8 │ 2024-10-08 │ gpl-3.0 │ Instrument, Synth, FM │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ artfwo/andes │ Andes │ 0.2.0 │ 2018-06-01 │ gpl-3.0 │ Instrument, Synth, Oscillator │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ ardura/subhoofer │ Subhoofer │ 2.2.2 │ 2024-08-02 │ gpl-3.0 │ Effect, Distortion │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ ardura/scrollscope │ Scrollscope │ 1.4.1 │ 2024-07-12 │ gpl-3.0 │ Effect, Analysis │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ ardura/interleaf │ Interleaf │ 1.0.0 │ 2024-07-12 │ gpl-3.0 │ Effect, EQ │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ ardura/gladedesk │ Glade Desk │ 1.0.0 │ 2024-07-19 │ gpl-3.0 │ Effect, Console, Emulation │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ ardura/actuate │ Actuate │ 1.3.5 │ 2024-07-12 │ gpl-3.0 │ Instrument, Synth, Sampler │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ antonok-edm/ampli-fe │ ampli-Fe │ 0.1.1 │ 2021-11-02 │ mit │ Effect, Amplifier, Volume │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ airwindows/airwindows │ Airwindows │ 1.0.0 │ 2020-02-20 │ mit │ Effect, Chorus, Distortion, EQ... │ +├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ +│ aaronaanderson/terrain │ Terrain │ 1.2.2 │ 2024-11-01 │ gpl-3.0 │ Instrument, Synthesizer, Wavet... │ +└───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴───────────────┴───────────────────────────────────┘ `; diff --git a/tests/commands/__snapshots__/uninstall.test.ts.snap b/tests/commands/__snapshots__/uninstall.test.ts.snap index 6330879..12fa34b 100644 --- a/tests/commands/__snapshots__/uninstall.test.ts.snap +++ b/tests/commands/__snapshots__/uninstall.test.ts.snap @@ -1,17 +1,17 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Uninstall package 1`] = ` -┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; exports[`Uninstall package 2`] = ` -┌────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ -│ Id │ Name │ Version │ Date │ License │ Tags │ -├────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ -│ - │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ -└────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; From cc722f6537f8f3124b62c3924fa40a170008979c Mon Sep 17 00:00:00 2001 From: Kim T Date: Mon, 10 Mar 2025 22:19:21 -0700 Subject: [PATCH 07/11] Output user-facing messages --- src/commands/reset.ts | 3 ++- src/commands/scan.ts | 3 ++- src/commands/sync.ts | 3 ++- src/index.ts | 1 + tests/commands/__snapshots__/reset.test.ts.snap | 2 +- tests/commands/__snapshots__/scan.test.ts.snap | 2 +- tests/commands/__snapshots__/sync.test.ts.snap | 2 +- 7 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/commands/reset.ts b/src/commands/reset.ts index 024cda2..339875c 100644 --- a/src/commands/reset.ts +++ b/src/commands/reset.ts @@ -10,6 +10,7 @@ export function reset(command: Command, manager: ManagerLocal) { .action((options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(manager.reset()); + manager.reset(); + console.log(`${manager.type} cache has been reset`); }); } diff --git a/src/commands/scan.ts b/src/commands/scan.ts index ecf324f..5b7fea0 100644 --- a/src/commands/scan.ts +++ b/src/commands/scan.ts @@ -10,6 +10,7 @@ export function scan(command: Command, manager: ManagerLocal) { .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(await manager.scan()); + manager.scan(); + console.log(`${manager.type} scan has been completed`); }); } diff --git a/src/commands/sync.ts b/src/commands/sync.ts index 8b43478..76550a5 100644 --- a/src/commands/sync.ts +++ b/src/commands/sync.ts @@ -10,6 +10,7 @@ export function sync(command: Command, manager: ManagerLocal) { .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(await manager.sync()); + await manager.sync(); + console.log(`${manager.type} sync has been completed`); }); } diff --git a/src/index.ts b/src/index.ts index eae7200..78ad65e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,6 +24,7 @@ const types = [RegistryType.Plugins, RegistryType.Presets, RegistryType.Projects for (const type of types) { const command: Command = program.command(type); const manager: ManagerLocal = new ManagerLocal(type as RegistryType, isTests() ? CONFIG_LOCAL_TEST : undefined); + manager.scan(); await manager.sync(); create(command, manager); filter(command, manager); diff --git a/tests/commands/__snapshots__/reset.test.ts.snap b/tests/commands/__snapshots__/reset.test.ts.snap index 6618bcd..c2b05ea 100644 --- a/tests/commands/__snapshots__/reset.test.ts.snap +++ b/tests/commands/__snapshots__/reset.test.ts.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Reset packages 1`] = `undefined`; +exports[`Reset packages 1`] = `plugins cache has been reset`; diff --git a/tests/commands/__snapshots__/scan.test.ts.snap b/tests/commands/__snapshots__/scan.test.ts.snap index bcdef1f..15fd3e5 100644 --- a/tests/commands/__snapshots__/scan.test.ts.snap +++ b/tests/commands/__snapshots__/scan.test.ts.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Scan packages 1`] = `undefined`; +exports[`Scan packages 1`] = `plugins scan has been completed`; diff --git a/tests/commands/__snapshots__/sync.test.ts.snap b/tests/commands/__snapshots__/sync.test.ts.snap index c830b73..44a591f 100644 --- a/tests/commands/__snapshots__/sync.test.ts.snap +++ b/tests/commands/__snapshots__/sync.test.ts.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Sync packages 1`] = `undefined`; +exports[`Sync packages 1`] = `plugins sync has been completed`; From b0ee158fcd2ea71cc08a9c7eca73d9e0b47e3c24 Mon Sep 17 00:00:00 2001 From: Kim T Date: Tue, 11 Mar 2025 20:29:14 -0700 Subject: [PATCH 08/11] Update README, catch cli errors, list installed packages. --- README.md | 127 +++--------------- package-lock.json | 8 +- package.json | 2 +- src/commands/list.ts | 11 +- src/commands/scan.ts | 2 +- src/commands/sync.ts | 2 +- tests/__snapshots__/index.test.ts.snap | 76 +++++++++++ .../commands/__snapshots__/list.test.ts.snap | 2 + tests/commands/list.test.ts | 1 + tests/index.test.ts | 27 ++++ tests/shared.ts | 10 +- 11 files changed, 151 insertions(+), 117 deletions(-) create mode 100644 tests/__snapshots__/index.test.ts.snap create mode 100644 tests/index.test.ts diff --git a/README.md b/README.md index a5fbfd4..2d3c3ca 100644 --- a/README.md +++ b/README.md @@ -6,133 +6,48 @@ StudioRack command line tool to manage audio DAW VST plugin dependencies. ![StudioRack Cli](/screenshot.jpg) +Powered by Open Audio Stack + ## Installation To install the tool, run the command: npm install @studiorack/cli -g -Verify the tool has been installed by running: - - studiorack --version - -Check the default configuration by running: - - studiorack config get pluginFolder - studiorack config get projectFolder - -If you need to adjust change using: - - studiorack config set pluginFolder "path/to/plugins" - studiorack config set projectFolder "path/to/projects" - -## Usage - -List the projects found in projectFolder using: - - studiorack project listLocal - -Install a project's plugins using: - - studiorack project install - -Then open the project using: - - studiorack project open - -## Creating a new project configuration - -You can create a new studiorack project .json file using: - - studiorack project create - -This will create a studiorack .json file with your configuration: - - { - "id": "example", - "author": "studiorack-user", - "homepage": "https://studiorack.github.io/studiorack-site/", - "name": "StudioRack Project", - "description": "Created using StudioRack", - "repo": "songs/april", - "tags": [ - "StudioRack" - ], - "version": "1.0.0", - "date": "2021-05-30T21:58:39.138Z", - "type": { - "name": "Ableton", - "ext": "als" - }, - "files": { - "audio": { - "name": "example.wav", - "size": 1902788 - }, - "image": { - "name": "example.png", - "size": 16360 - }, - "project": { - "name": "example.als", - "size": 253018 - } - }, - "plugins": {}, - "path": "songs/april", - "status": "installed" - } - -For a full list of commands use: +Get help: studiorack --help -## Finding, adding and removing plugins - -Search the plugin registry using: +Get version: - studiorack plugin search delay - -Add a plugin and update project.json config using: - - studiorack project install - -Remove a plugin and update project.json config using: - - studiorack plugin uninstall - -## Creating and publishing a plugin - -Create a new plugin using the starter template: - - studiorack plugin create myplugin --type steinberg - -Follow the instructions at ./myplugin/README.md to install and build your plugin - -Validate your plugin: + studiorack --version - studiorack validate ./myplugin/build/VST3/Release/myplugin.vst3 +## Usage -Convert and enrich validator report metadata into json: +StudioRack command line tool adheres to the [Open Audio Stack - Manager specification](https://github.com/open-audio-stack/open-audio-stack-core/blob/main/specification. - studiorack validate ./myplugin/build/VST3/Release/myplugin.vst3 --json +Config values can be set/get using: -Scan multiple plugins at the same time using wildcard selectors: + studiorack config set + studiorack config get + studiorack config get pluginsDir - studiorack validate "./myplugin/build/VST3/Release/**/*.{vst,vst3}" --json +Search the registry package index for lazy matching query: -When ready to release, commit your plugin to GitHub and ensure it is tagged with a topic: + studiorack search + studiorack plugins search piano - studiorack-plugin +Get a package metadata: -Then it should appear in the GitHub topic search and API: + studiorack get + studiorack plugins get surge-synthesizer/surge - https://github.com/topics/studiorack-plugin - https://api.github.com/search/repositories?q=topic:studiorack-plugin+fork:true +Install a package: -StudioRack registry updates once a day at midnight UTC, which will make your plugin available via our API at: + studiorack install @ + studiorack plugins install surge-synthesizer/surge - https://studiorack.github.io/studiorack-registry/ +For a full list of commands, please refer to the [Open Audio Stack - Manager specification](https://github.com/open-audio-stack/open-audio-stack-core/blob/main/specification.md) ## Developer information diff --git a/package-lock.json b/package-lock.json index b16e830..4780ac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.2", "license": "MIT", "dependencies": { - "@open-audio-stack/core": "^0.1.19", + "@open-audio-stack/core": "^0.1.20", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, @@ -1229,9 +1229,9 @@ } }, "node_modules/@open-audio-stack/core": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.19.tgz", - "integrity": "sha512-i4kjxkFOKfQtZyzgvbMDhvzJOgbIT5vo97IoPLSAdOvFZWEsbKbwqvhxX5dbWZmbn3VGqkNYaX76Uh2qGhSwvw==", + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.20.tgz", + "integrity": "sha512-ZYKMX/32ESwq7TlTXd7ERRx/85duZV5eht4qw7oShPq+fQtYwkKR+W6hoePwICCDETTlUACzr4NLMUT1SUpvtA==", "license": "cc0-1.0", "dependencies": { "@vscode/sudo-prompt": "^9.3.1", diff --git a/package.json b/package.json index e53d6d1..402aed7 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "node": ">=18" }, "dependencies": { - "@open-audio-stack/core": "^0.1.19", + "@open-audio-stack/core": "^0.1.20", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, diff --git a/src/commands/list.ts b/src/commands/list.ts index c14a4fd..fbb8f28 100644 --- a/src/commands/list.ts +++ b/src/commands/list.ts @@ -3,14 +3,19 @@ import { CliOptions } from '../types/options.js'; import { ManagerLocal } from '@open-audio-stack/core'; import { formatOutput } from '../utils.js'; +interface ListOptions extends CliOptions { + installed: boolean; +} + export function list(command: Command, manager: ManagerLocal) { command .command('list') + .option('-i, --installed', 'Only list installed packages') .option('-l, --log', 'Enable logging') - .description('List all packages synced from remote registries') - .action(async (options: CliOptions) => { + .description('List packages') + .action(async (options: ListOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); - console.log(formatOutput(manager.listPackages())); + console.log(formatOutput(manager.listPackages(options.installed))); }); } diff --git a/src/commands/scan.ts b/src/commands/scan.ts index 5b7fea0..b2424fd 100644 --- a/src/commands/scan.ts +++ b/src/commands/scan.ts @@ -6,7 +6,7 @@ export function scan(command: Command, manager: ManagerLocal) { command .command('scan') .option('-l, --log', 'Enable logging') - .description('Scan and aggregate locally installed packages into cache') + .description('Scan local packages into cache') .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); diff --git a/src/commands/sync.ts b/src/commands/sync.ts index 76550a5..5b08ad2 100644 --- a/src/commands/sync.ts +++ b/src/commands/sync.ts @@ -6,7 +6,7 @@ export function sync(command: Command, manager: ManagerLocal) { command .command('sync') .option('-l, --log', 'Enable logging') - .description('Sync remote registries and aggregate packages into cache') + .description('Sync remote packages into cache') .action(async (options: CliOptions) => { if (options.log) manager.logEnable(); else manager.logDisable(); diff --git a/tests/__snapshots__/index.test.ts.snap b/tests/__snapshots__/index.test.ts.snap new file mode 100644 index 0000000..74d096f --- /dev/null +++ b/tests/__snapshots__/index.test.ts.snap @@ -0,0 +1,76 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Root command 1`] = ` +Usage: index [options] [command] + +Options: + -V, --version output the version number + -h, --help display help for command + +Commands: + config View/update configuration + plugins + presets + projects + help [command] display help for command +`; + +exports[`Root command plugins 1`] = ` +Usage: index plugins [options] [command] + +Options: + -h, --help display help for command + +Commands: + create [options] Create a new package locally + filter [options] Filter the by field and matching value + get [options] Get package metadata from registry + install [options] Install a package locally by slug/version + list [options] List packages + reset [options] Reset the synced package cache + scan [options] Scan local packages into cache + search [options] Search using a lazy matching query + sync [options] Sync remote packages into cache + uninstall [options] Uninstall a package locally by slug/version + help [command] display help for command +`; + +exports[`Root command presets 1`] = ` +Usage: index presets [options] [command] + +Options: + -h, --help display help for command + +Commands: + create [options] Create a new package locally + filter [options] Filter the by field and matching value + get [options] Get package metadata from registry + install [options] Install a package locally by slug/version + list [options] List packages + reset [options] Reset the synced package cache + scan [options] Scan local packages into cache + search [options] Search using a lazy matching query + sync [options] Sync remote packages into cache + uninstall [options] Uninstall a package locally by slug/version + help [command] display help for command +`; + +exports[`Root command projects 1`] = ` +Usage: index projects [options] [command] + +Options: + -h, --help display help for command + +Commands: + create [options] Create a new package locally + filter [options] Filter the by field and matching value + get [options] Get package metadata from registry + install [options] Install a package locally by slug/version + list [options] List packages + reset [options] Reset the synced package cache + scan [options] Scan local packages into cache + search [options] Search using a lazy matching query + sync [options] Sync remote packages into cache + uninstall [options] Uninstall a package locally by slug/version + help [command] display help for command +`; diff --git a/tests/commands/__snapshots__/list.test.ts.snap b/tests/commands/__snapshots__/list.test.ts.snap index c06f797..1a94774 100644 --- a/tests/commands/__snapshots__/list.test.ts.snap +++ b/tests/commands/__snapshots__/list.test.ts.snap @@ -161,3 +161,5 @@ exports[`List packages 1`] = ` │ aaronaanderson/terrain │ Terrain │ 1.2.2 │ 2024-11-01 │ gpl-3.0 │ Instrument, Synthesizer, Wavet... │ └───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴───────────────┴───────────────────────────────────┘ `; + +exports[`List packages 2`] = `No results found`; diff --git a/tests/commands/list.test.ts b/tests/commands/list.test.ts index 7877155..8705518 100644 --- a/tests/commands/list.test.ts +++ b/tests/commands/list.test.ts @@ -4,4 +4,5 @@ import { RegistryType } from '@open-audio-stack/core'; test('List packages', async () => { expect(cli(RegistryType.Plugins, 'list')).toMatchSnapshot(); + expect(cli(RegistryType.Plugins, 'list', '--installed')).toMatchSnapshot(); }); diff --git a/tests/index.test.ts b/tests/index.test.ts new file mode 100644 index 0000000..4762817 --- /dev/null +++ b/tests/index.test.ts @@ -0,0 +1,27 @@ +import { expect, test } from 'vitest'; +import { cleanOutput, cliCatch } from './shared'; +import { RegistryType } from '@open-audio-stack/core'; + +test('Root command', async () => { + const error = cliCatch(); + expect(error.exitCode).toBe(1); + expect(cleanOutput(error.stderr)).toMatchSnapshot(); +}); + +test('Root command plugins', async () => { + const error = cliCatch(RegistryType.Plugins); + expect(error.exitCode).toBe(1); + expect(cleanOutput(error.stderr)).toMatchSnapshot(); +}); + +test('Root command presets', async () => { + const error = cliCatch(RegistryType.Presets); + expect(error.exitCode).toBe(1); + expect(cleanOutput(error.stderr)).toMatchSnapshot(); +}); + +test('Root command projects', async () => { + const error = cliCatch(RegistryType.Projects); + expect(error.exitCode).toBe(1); + expect(cleanOutput(error.stderr)).toMatchSnapshot(); +}); diff --git a/tests/shared.ts b/tests/shared.ts index 3caca78..7b76c4f 100644 --- a/tests/shared.ts +++ b/tests/shared.ts @@ -18,7 +18,15 @@ export function cli(...args: string[]): string { return cleanOutput(result.stdout as string); } -function cleanOutput(output: string): string { +export function cliCatch(...args: string[]) { + try { + cli(...args); + } catch (error: any) { + return error; + } +} + +export function cleanOutput(output: string): string { if (getSystem() === SystemType.Win) { output = output.replace(/\\/g, '/'); } From 3906b08980b2fd2db356d2958cc37559b6dc4eaa Mon Sep 17 00:00:00 2001 From: Kim T Date: Wed, 12 Mar 2025 19:59:52 -0700 Subject: [PATCH 09/11] Display multiple versions of a package --- package-lock.json | 8 +++--- package.json | 4 +-- src/commands/get.ts | 3 +- src/commands/install.ts | 2 +- src/commands/uninstall.ts | 2 +- src/utils.ts | 28 +++++++++++++------ tests/commands/__snapshots__/get.test.ts.snap | 4 ++- .../__snapshots__/install.test.ts.snap | 2 +- 8 files changed, 34 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4780ac4..407ec5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.2", "license": "MIT", "dependencies": { - "@open-audio-stack/core": "^0.1.20", + "@open-audio-stack/core": "^0.1.21", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, @@ -1229,9 +1229,9 @@ } }, "node_modules/@open-audio-stack/core": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.20.tgz", - "integrity": "sha512-ZYKMX/32ESwq7TlTXd7ERRx/85duZV5eht4qw7oShPq+fQtYwkKR+W6hoePwICCDETTlUACzr4NLMUT1SUpvtA==", + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.21.tgz", + "integrity": "sha512-AqrLKe3hFB4CGt9UTdjbbBZNooZqdcz46oqmJsoBgyfu8FKKSJXw3uXSAyv92LP3GtKLDlHAZ1zbQXlXB5NZkQ==", "license": "cc0-1.0", "dependencies": { "@vscode/sudo-prompt": "^9.3.1", diff --git a/package.json b/package.json index 402aed7..216278f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "check": "npm run format && npm run lint && npm run build", "clean": "rimraf coverage build tmp", "dev": "tsx ./src/index.ts", - "dev:cli": "rm $(which studiorack) && npm run build && npm link", + "dev:cli": "npm unlink -g && npm run build && npm link", "format": "prettier . --write", "lint": "eslint .", "test": "npm run build && vitest run ./tests --hook-timeout=60000 --test-timeout=60000 --no-file-parallelism", @@ -39,7 +39,7 @@ "node": ">=18" }, "dependencies": { - "@open-audio-stack/core": "^0.1.20", + "@open-audio-stack/core": "^0.1.21", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, diff --git a/src/commands/get.ts b/src/commands/get.ts index 302cfbf..73fcc99 100644 --- a/src/commands/get.ts +++ b/src/commands/get.ts @@ -13,6 +13,7 @@ export function get(command: Command, manager: ManagerLocal) { else manager.logDisable(); const [slug, version] = inputGetParts(input); const pkg = manager.getPackage(slug); - console.log(formatOutput(pkg, version)); + const versions = version ? [version] : Array.from(pkg?.versions.keys() || new Map().keys()); + console.log(formatOutput(pkg, versions)); }); } diff --git a/src/commands/install.ts b/src/commands/install.ts index aadc74b..d825185 100644 --- a/src/commands/install.ts +++ b/src/commands/install.ts @@ -13,6 +13,6 @@ export function install(command: Command, manager: ManagerLocal) { else manager.logDisable(); const [slug, version] = inputGetParts(input); await manager.install(slug, version); - console.log(formatOutput(manager.getPackage(slug), version)); + console.log(formatOutput(manager.getPackage(slug), [version])); }); } diff --git a/src/commands/uninstall.ts b/src/commands/uninstall.ts index d13aab1..5789340 100644 --- a/src/commands/uninstall.ts +++ b/src/commands/uninstall.ts @@ -13,6 +13,6 @@ export function uninstall(command: Command, manager: ManagerLocal) { else manager.logDisable(); const [slug, version] = inputGetParts(input); await manager.uninstall(slug, version); - console.log(formatOutput(manager.getPackage(slug), version)); + console.log(formatOutput(manager.getPackage(slug), [version])); }); } diff --git a/src/utils.ts b/src/utils.ts index 6c616ad..bbeec71 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,7 +1,7 @@ import { Package } from '@open-audio-stack/core'; import CliTable3 from 'cli-table3'; -export function formatOutput(result: Package[] | Package | undefined, version?: string, json?: boolean): string { +export function formatOutput(result: Package[] | Package | undefined, versions?: string[], json?: boolean): string { if (!result) return `No results found`; if (json) return JSON.stringify(result, null, 2); @@ -9,17 +9,29 @@ export function formatOutput(result: Package[] | Package | undefined, version?: head: ['Id', 'Name', 'Version', 'Date', 'License', 'Tags'], }); if (result instanceof Array) { - if (result.length === 0) return `No results found`; for (const index in result) { - const row = formatRow(result[index], version); - if (!row) return `No results found`; - table.push(row); + if (versions && versions.length > 0) { + versions?.forEach((version: string) => { + const row = formatRow(result[index], version); + if (row) table.push(row); + }); + } else { + const row = formatRow(result[index]); + if (row) table.push(row); + } } } else { - const row = formatRow(result, version); - if (!row) return `No result found`; - table.push(row); + if (versions && versions.length > 0) { + versions?.forEach((version: string) => { + const row = formatRow(result, version); + if (row) table.push(row); + }); + } else { + const row = formatRow(result); + if (row) table.push(row); + } } + if (table.length === 0) return `No results found`; return table.toString(); } diff --git a/tests/commands/__snapshots__/get.test.ts.snap b/tests/commands/__snapshots__/get.test.ts.snap index 7d391e7..9df40d0 100644 --- a/tests/commands/__snapshots__/get.test.ts.snap +++ b/tests/commands/__snapshots__/get.test.ts.snap @@ -5,6 +5,8 @@ exports[`Get package 1`] = ` │ Id │ Name │ Version │ Date │ License │ Tags │ ├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ │ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.1 │ 2024-03-02 │ gpl-3.0 │ Instrument, Synth, Modulation │ └─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; @@ -16,4 +18,4 @@ exports[`Get package 2`] = ` └─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; -exports[`Get package 3`] = `No result found`; +exports[`Get package 3`] = `No results found`; diff --git a/tests/commands/__snapshots__/install.test.ts.snap b/tests/commands/__snapshots__/install.test.ts.snap index 12c002f..35e44fa 100644 --- a/tests/commands/__snapshots__/install.test.ts.snap +++ b/tests/commands/__snapshots__/install.test.ts.snap @@ -16,4 +16,4 @@ exports[`Install package 2`] = ` └─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ `; -exports[`Install package 3`] = `No result found`; +exports[`Install package 3`] = `No results found`; From 251503fdbff1aa4862b876f26c073778f61f4aa9 Mon Sep 17 00:00:00 2001 From: Kim T Date: Sun, 23 Mar 2025 22:38:08 -0700 Subject: [PATCH 10/11] Various bug fixes from core package --- package-lock.json | 8 ++++---- package.json | 2 +- src/index.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 407ec5b..c4d1047 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.2", "license": "MIT", "dependencies": { - "@open-audio-stack/core": "^0.1.21", + "@open-audio-stack/core": "^0.1.24", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, @@ -1229,9 +1229,9 @@ } }, "node_modules/@open-audio-stack/core": { - "version": "0.1.21", - "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.21.tgz", - "integrity": "sha512-AqrLKe3hFB4CGt9UTdjbbBZNooZqdcz46oqmJsoBgyfu8FKKSJXw3uXSAyv92LP3GtKLDlHAZ1zbQXlXB5NZkQ==", + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.24.tgz", + "integrity": "sha512-BBEdRJ48M6h8z3gv4Evkz+hz4CR2LnhN5+UR/PD8izHW9N6aHdoPmcobnUx3sXNQNHD0k+4uUKQ9NdKa0pR6DA==", "license": "cc0-1.0", "dependencies": { "@vscode/sudo-prompt": "^9.3.1", diff --git a/package.json b/package.json index 216278f..04e1f92 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "node": ">=18" }, "dependencies": { - "@open-audio-stack/core": "^0.1.21", + "@open-audio-stack/core": "^0.1.24", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, diff --git a/src/index.ts b/src/index.ts index 78ad65e..a3326c6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,8 +24,8 @@ const types = [RegistryType.Plugins, RegistryType.Presets, RegistryType.Projects for (const type of types) { const command: Command = program.command(type); const manager: ManagerLocal = new ManagerLocal(type as RegistryType, isTests() ? CONFIG_LOCAL_TEST : undefined); - manager.scan(); await manager.sync(); + manager.scan(); create(command, manager); filter(command, manager); get(command, manager); From f2037e6bd619fd70b0acc00b7618632efb50ba2c Mon Sep 17 00:00:00 2001 From: Kim T Date: Wed, 26 Mar 2025 22:40:49 -0700 Subject: [PATCH 11/11] Windows path fixes --- package-lock.json | 14 +++++++------- package.json | 2 +- tests/commands/__snapshots__/list.test.ts.snap | 10 ++++++++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4d1047..27d6955 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.2", "license": "MIT", "dependencies": { - "@open-audio-stack/core": "^0.1.24", + "@open-audio-stack/core": "^0.1.25", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, @@ -1229,9 +1229,9 @@ } }, "node_modules/@open-audio-stack/core": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.24.tgz", - "integrity": "sha512-BBEdRJ48M6h8z3gv4Evkz+hz4CR2LnhN5+UR/PD8izHW9N6aHdoPmcobnUx3sXNQNHD0k+4uUKQ9NdKa0pR6DA==", + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@open-audio-stack/core/-/core-0.1.25.tgz", + "integrity": "sha512-wMiKSA2aYHtTtD4gEc/Rw9YW5o8kBDRMKXagk1tf7hF/mzWU8We8j8h3gXQv7XCbc3wc+CpX5ounV6Q0X4VwLw==", "license": "cc0-1.0", "dependencies": { "@vscode/sudo-prompt": "^9.3.1", @@ -4397,9 +4397,9 @@ } }, "node_modules/vite": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", - "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz", + "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 04e1f92..8fe4c24 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "node": ">=18" }, "dependencies": { - "@open-audio-stack/core": "^0.1.24", + "@open-audio-stack/core": "^0.1.25", "cli-table3": "^0.6.5", "commander": "^12.1.0" }, diff --git a/tests/commands/__snapshots__/list.test.ts.snap b/tests/commands/__snapshots__/list.test.ts.snap index 1a94774..282ef2c 100644 --- a/tests/commands/__snapshots__/list.test.ts.snap +++ b/tests/commands/__snapshots__/list.test.ts.snap @@ -32,7 +32,7 @@ exports[`List packages 1`] = ` ├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ │ studiorack/avl-drumkits │ AVL Drumkits │ 1.1.0 │ 2022-02-20 │ cc-by-sa-4... │ Instrument, Drums, sfz │ ├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ -│ sfztools/sfizz │ Sfizz │ 1.2.3 │ 2024-01-14 │ bsd-2-clau... │ Instrument, Sampler, Synth │ +│ sfztools/sfizz │ Sfizz │ 1.2.1 │ 2024-01-14 │ bsd-2-clau... │ Instrument, Sampler, Synth │ ├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ │ sfzinstruments/war-tuba │ War Tuba │ 1.0.2 │ 2022-11-04 │ cc-by-4.0 │ Instrument, Brass, Tuba, sfz │ ├───────────────────────────────────────────┼───────────────────────────┼─────────┼────────────┼───────────────┼───────────────────────────────────┤ @@ -162,4 +162,10 @@ exports[`List packages 1`] = ` └───────────────────────────────────────────┴───────────────────────────┴─────────┴────────────┴───────────────┴───────────────────────────────────┘ `; -exports[`List packages 2`] = `No results found`; +exports[`List packages 2`] = ` +┌─────────────────────────┬──────────┬─────────┬────────────┬─────────┬───────────────────────────────┐ +│ Id │ Name │ Version │ Date │ License │ Tags │ +├─────────────────────────┼──────────┼─────────┼────────────┼─────────┼───────────────────────────────┤ +│ surge-synthesizer/surge │ Surge XT │ 1.3.4 │ 2024-08-11 │ gpl-3.0 │ Instrument, Synth, Modulation │ +└─────────────────────────┴──────────┴─────────┴────────────┴─────────┴───────────────────────────────┘ +`;