diff --git a/.npmrc b/.npmrc index 36c78ee..3fedd41 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,6 @@ auto-install-peers=true public-hoist-pattern[]=*@biomejs/biome* +public-hoist-pattern[]=*@e18e/cli* public-hoist-pattern[]=*@total-typescript/tsconfig* public-hoist-pattern[]=*lefthook* diff --git a/README.md b/README.md index 2c2c29e..046d81e 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,6 @@ On macOS, you can make use of the following build commands through the [command- - AppleScript: Compile Script – Shift ⇧+Option ⌥+B - AppleScript: Compile Script bundle - AppleScript: Compile Application -- JXA: Run Script -- JXA: Compile Script -- JXA: Compile Script bundle -- JXA: Compile Application ### Settings @@ -69,8 +65,6 @@ You can tweak the defaults for this package, `osacompile` and `osascript` in the | `osacompile.stayOpen` | `false` | Stay open after run handler | | `osacompile.startupScreen` | `false` | Show startup-screen | | `osascript.outputStyle` | - | The flags argument is a string consisting of any of the modifier characters `e`, `h`, `o`, and `s` | -| `scpt.theme` | `"(none)"` | Custom syntax theme for binary AppleScript files, which are opened in a custom web-view | -| `scpt.overrideThemeBackground` | `false` | Allows overriding the syntax-theme's background color | #### File Encoding diff --git a/config/jxa.configuration.json b/config/jxa.configuration.json deleted file mode 100644 index 1285b19..0000000 --- a/config/jxa.configuration.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "comments": { - "lineComment": "//", - "blockComment": ["/*", "*/"] - }, - "brackets": [["{", "}"], ["[", "]"], ["(", ")"]] -} diff --git a/lefthook.toml b/lefthook.toml index db8ad81..0cb44e3 100644 --- a/lefthook.toml +++ b/lefthook.toml @@ -1,4 +1,8 @@ [[remotes]] git_url = "https://github.com/idleberg/configs" ref = "main" -configs = ["lefthook/biome.toml", "lefthook/commitlint.toml"] +configs = [ + "lefthook/biome.toml", + "lefthook/commitlint.toml", + "lefthook/e18e.toml", +] diff --git a/package.json b/package.json index 32bee49..1eea4c8 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "compile": "npm run build", "build": "concurrently --prefix-colors 'blue,green' 'npm:build:*'", "build:code": "tsdown", - "build:image": "sharp resize 1024 1024 --input node_modules/applescript-svg-icon/src/applescript.svg --output resources/logo.png", + "build:image": "sharp resize 1024 1024 --input node_modules/@idleberg/applescript-svg-icon/src/applescript.svg --output resources/logo.png", "dev": "npm run start", "lint": "biome check", "publish:ovsx": "ovsx publish --no-dependencies", @@ -25,8 +25,6 @@ "keywords": [ "apple", "applescript", - "jxa", - "javascript for automation", "macos" ], "repository": { @@ -37,7 +35,7 @@ "bugs": { "url": "https://github.com/idleberg/vscode-applescript/issues" }, - "main": "./lib/index.js", + "main": "./lib/index.cjs", "icon": "resources/logo.png", "engines": { "vscode": "^1.85.0" @@ -125,50 +123,6 @@ "markdownDescription": "%osascriptOutputStyle%", "order": 11 }, - "applescript.scpt.theme": { - "type": "string", - "enum": [ - "(none)", - "css-variables", - "dark-plus", - "dracula-soft", - "dracula", - "github-dark-dimmed", - "github-dark", - "github-light", - "hc_light", - "light-plus", - "material-theme-darker", - "material-theme-lighter", - "material-theme-ocean", - "material-theme-palenight", - "material-theme", - "min-dark", - "min-light", - "monokai", - "nord", - "one-dark-pro", - "poimandres", - "rose-pine-dawn", - "rose-pine-moon", - "rose-pine", - "slack-dark", - "slack-ochin", - "solarized-dark", - "solarized-light", - "vitesse-dark", - "vitesse-light" - ], - "default": "(none)", - "markdownDescription": "You can specify a syntax theme for binary AppleScript files, which are displayed in a custom web-view. Changes apply after re-opening the file or editor.", - "order": 13 - }, - "applescript.scpt.overrideThemeBackground": { - "type": "boolean", - "default": false, - "description": "Override theme background color of the syntax theme. Changes apply after re-opening the file or editor.", - "order": 14 - }, "applescript.allowMultiTermination": { "type": "boolean", "default": false, @@ -178,6 +132,10 @@ } }, "commands": [ + { + "command": "extension.applescript.openBinaryFile", + "title": "AppleScript: Open Binary File" + }, { "command": "extension.applescript.run", "title": "AppleScript: Run Script", @@ -233,54 +191,6 @@ "dark": "./resources/dark/task.svg", "light": "./resources/light/task.svg" } - }, - { - "command": "extension.jxa.run", - "title": "JXA: Run Script", - "icon": { - "dark": "./resources/dark/run.svg", - "light": "./resources/light/run.svg" - } - }, - { - "command": "extension.jxa.compile", - "title": "JXA: Compile Script", - "icon": { - "dark": "./resources/dark/script.svg", - "light": "./resources/light/script.svg" - } - }, - { - "command": "extension.jxa.compileBundle", - "title": "JXA: Compile Script bundle", - "icon": { - "dark": "./resources/dark/bundle.svg", - "light": "./resources/light/bundle.svg" - } - }, - { - "command": "extension.jxa.compileApp", - "title": "JXA: Compile Application", - "icon": { - "dark": "./resources/dark/app.svg", - "light": "./resources/light/app.svg" - } - }, - { - "command": "extension.jxa.openSettings", - "title": "JXA: Open Settings", - "icon": { - "dark": "./resources/dark/settings.svg", - "light": "./resources/light/settings.svg" - } - }, - { - "command": "extension.jxa.terminateProcess", - "title": "JXA: Terminate Process", - "icon": { - "dark": "./resources/dark/terminate.svg", - "light": "./resources/light/terminate.svg" - } } ], "menus": { @@ -319,36 +229,13 @@ "when": "resourceLangId == applescript", "command": "extension.applescript.openSettings", "group": "navigation@6" - }, - { - "when": "resourceLangId == jxa", - "command": "extension.jxa.run", - "group": "navigation@1" - }, - { - "when": "resourceLangId == jxa", - "command": "extension.jxa.compile", - "group": "navigation@2" - }, - { - "when": "resourceLangId == jxa", - "command": "extension.jxa.compileBundle", - "group": "navigation@3" - }, - { - "when": "resourceLangId == jxa", - "command": "extension.jxa.compileApp", - "group": "navigation@4" - }, - { - "when": "resourceLangId == jxa", - "command": "extension.applescript.terminateProcess", - "group": "navigation@5" - }, + } + ], + "explorer/context": [ { - "when": "resourceLangId == jxa", - "command": "extension.applescript.openSettings", - "group": "navigation@6" + "when": "resourceExtname == .scpt || resourceExtname == .scptd", + "command": "extension.applescript.openBinaryFile", + "group": "navigation" } ] }, @@ -398,18 +285,6 @@ ], "configuration": "./config/applescript.configuration.json" }, - { - "id": "jxa", - "aliases": [ - "JavaScript for Automation (JXA)", - "jxa" - ], - "extensions": [ - ".jxa", - ".jxainc" - ], - "configuration": "./config/jxa.configuration.json" - }, { "id": "applescript-injection" } @@ -435,14 +310,6 @@ "scopeName": "source.applescript", "path": "./syntaxes/applescript.tmLanguage" }, - { - "language": "jxa", - "scopeName": "source.js.jxa", - "path": "./syntaxes/jxa.tmLanguage", - "embeddedLanguages": { - "source.js": "javascript" - } - }, { "language": "applescript-injection", "scopeName": "markdown.applescript.codeblock", @@ -467,23 +334,25 @@ ] }, "dependencies": { - "acorn": "^8.15.0", "line-column": "^1.0.2", - "vscode-get-config": "^0.5.0" + "vscode-get-config": "^0.6.2" }, "devDependencies": { - "@commitlint/cli": "^20.1.0", - "@commitlint/config-conventional": "^20.0.0", - "@idleberg/configs": "^0.3.1", + "@commitlint/cli": "^20.2.0", + "@commitlint/config-conventional": "^20.2.0", + "@idleberg/applescript-svg-icon": "github:idleberg/applescript-svg-icon", + "@idleberg/configs": "^0.4.1", "@types/line-column": "^1.0.2", "@types/node": "^24.7.0", "@types/vscode": "1.85.0", - "applescript-svg-icon": "github:idleberg/applescript-svg-icon", "concurrently": "^9.2.1", "cross-env": "^10.1.0", "sharp-cli": "^5.2.0", - "tsdown": "^0.15.6", + "tsdown": "^0.18.1", "typescript": "^5.9.3" }, - "packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67" + "extensionDependencies": [ + "idleberg.jxa" + ], + "packageManager": "pnpm@10.26.1+sha512.664074abc367d2c9324fdc18037097ce0a8f126034160f709928e9e9f95d98714347044e5c3164d65bd5da6c59c6be362b107546292a8eecb7999196e5ce58fa" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff85aa5..2808657 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,25 +8,25 @@ importers: .: dependencies: - acorn: - specifier: ^8.15.0 - version: 8.15.0 line-column: specifier: ^1.0.2 version: 1.0.2 vscode-get-config: - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.6.2 + version: 0.6.2 devDependencies: '@commitlint/cli': - specifier: ^20.1.0 - version: 20.1.0(@types/node@24.7.0)(typescript@5.9.3) + specifier: ^20.2.0 + version: 20.2.0(@types/node@24.7.0)(typescript@5.9.3) '@commitlint/config-conventional': - specifier: ^20.0.0 - version: 20.0.0 + specifier: ^20.2.0 + version: 20.2.0 + '@idleberg/applescript-svg-icon': + specifier: github:idleberg/applescript-svg-icon + version: applescript-svg-icon@https://codeload.github.com/idleberg/applescript-svg-icon/tar.gz/497c0e8c87460bb6ebf86334edce0c139c3080c5 '@idleberg/configs': - specifier: ^0.3.1 - version: 0.3.1 + specifier: ^0.4.1 + version: 0.4.1(picomatch@4.0.3) '@types/line-column': specifier: ^1.0.2 version: 1.0.2 @@ -36,9 +36,6 @@ importers: '@types/vscode': specifier: 1.85.0 version: 1.85.0 - applescript-svg-icon: - specifier: github:idleberg/applescript-svg-icon - version: https://codeload.github.com/idleberg/applescript-svg-icon/tar.gz/497c0e8c87460bb6ebf86334edce0c139c3080c5 concurrently: specifier: ^9.2.1 version: 9.2.1 @@ -49,147 +46,373 @@ importers: specifier: ^5.2.0 version: 5.2.0 tsdown: - specifier: ^0.15.6 - version: 0.15.6(typescript@5.9.3) + specifier: ^0.18.1 + version: 0.18.1(@arethetypeswrong/core@0.18.2)(publint@0.3.16)(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 packages: + '@andrewbranch/untar.js@1.0.3': + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} + + '@arethetypeswrong/core@0.18.2': + resolution: {integrity: sha512-GiwTmBFOU1/+UVNqqCGzFJYfBXEytUkiI+iRZ6Qx7KmUVtLm00sYySkfe203C9QtPG11yOz1ZaMek8dT/xnlgg==} + engines: {node: '>=20'} + + '@ast-grep/napi-darwin-arm64@0.25.7': + resolution: {integrity: sha512-qqI1JvB6ULgOUOVE3YviQNQ6KAYOnkiE8W5fNwVJGUgMkUuM8tUm1Nal3vfKCI7dnYgpcNlKxdTWGlbt7aHKNg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@ast-grep/napi-darwin-x64@0.25.7': + resolution: {integrity: sha512-gq1Cf7US322ZJYPrVnAnn6eBLS6xi5catb5t99Wu6Rbm67XadEc81gtPTbPeNIu8FGgPjvKUc010rts2ZZbJeA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@ast-grep/napi-linux-arm64-gnu@0.25.7': + resolution: {integrity: sha512-q+BzEC7wB7pkK+pQKbn4TVJThrEtvxjObz0okscPtxTNYvSJGv9jr3Nde5SYjdkfk8Ab4NgDMshVjKWVz2TSbQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@ast-grep/napi-linux-arm64-musl@0.25.7': + resolution: {integrity: sha512-SEqZ6y0UhzmvZS938jIgR04kgHAW70hJ8yF4x9AkcqEhbeyqgElxIE7ve50ukDzs70fAKccdV8zYmebYN/7iPg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@ast-grep/napi-linux-x64-gnu@0.25.7': + resolution: {integrity: sha512-8YuE/zTywTBb/iTm601JXTdWV2Redy9L9ab27aRD0hwX8FLmKUy8gK0fSo3xx+FyvSET49xkoR9tYdNaG2Wrkw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@ast-grep/napi-linux-x64-musl@0.25.7': + resolution: {integrity: sha512-sT3eslR50IU6lHfqvq/c7vpxksJiB3h1NjEy1LpG+CYPuoLsQaB8j9OQlX8TqgVlDty/d/13cSls1Y3n/pm9xw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@ast-grep/napi-win32-arm64-msvc@0.25.7': + resolution: {integrity: sha512-pDi9vyXzUbpiRwFTif6+R7ZIIVB1ZKcRUJLKSIPyYb39DcSX7aOuxQcSZderWnBrwPGxZKzdgztdQ16TuAz2IQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@ast-grep/napi-win32-ia32-msvc@0.25.7': + resolution: {integrity: sha512-WFSNDMI5L9N9dK5zFQ6N900nhraOSYtKns/2p/EKZIKPBDXJSzzhT/jBakCSDix1GUs8K0XgkDoq2rXmuiBqXA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@ast-grep/napi-win32-x64-msvc@0.25.7': + resolution: {integrity: sha512-HlsoVwQ9XrgNZ0JAmXgV5t8Ltx9tGyWZNS2UMY/2cvNU/SG9EpJLm1Bu9Mlk5seiJLbl28QTTbhZdfPKBzGTVQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@ast-grep/napi@0.25.7': + resolution: {integrity: sha512-kDw/JNyOLttVbm2hl+55C9lXuUcuIFt31LQIpSptUkyTgI+2Cdqdeah2bNPe4/GQM2ysDjBDS4y1+9iQxMdJiw==} + engines: {node: '>= 10'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.5': + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + '@babel/plugin-syntax-flow@7.27.1': + resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.28.5': + resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.5': + resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-flow@7.27.1': + resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/register@7.28.3': + resolution: {integrity: sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.2.4': - resolution: {integrity: sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg==} + '@biomejs/biome@2.3.10': + resolution: {integrity: sha512-/uWSUd1MHX2fjqNLHNL6zLYWBbrJeG412/8H7ESuK8ewoRoMPUgHDebqKrPTx/5n6f17Xzqc9hdg3MEqA5hXnQ==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.2.4': - resolution: {integrity: sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA==} + '@biomejs/cli-darwin-arm64@2.3.10': + resolution: {integrity: sha512-M6xUjtCVnNGFfK7HMNKa593nb7fwNm43fq1Mt71kpLpb+4mE7odO8W/oWVDyBVO4ackhresy1ZYO7OJcVo/B7w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.2.4': - resolution: {integrity: sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg==} + '@biomejs/cli-darwin-x64@2.3.10': + resolution: {integrity: sha512-Vae7+V6t/Avr8tVbFNjnFSTKZogZHFYl7MMH62P/J1kZtr0tyRQ9Fe0onjqjS2Ek9lmNLmZc/VR5uSekh+p1fg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.2.4': - resolution: {integrity: sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ==} + '@biomejs/cli-linux-arm64-musl@2.3.10': + resolution: {integrity: sha512-B9DszIHkuKtOH2IFeeVkQmSMVUjss9KtHaNXquYYWCjH8IstNgXgx5B0aSBQNr6mn4RcKKRQZXn9Zu1rM3O0/A==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@2.2.4': - resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==} + '@biomejs/cli-linux-arm64@2.3.10': + resolution: {integrity: sha512-hhPw2V3/EpHKsileVOFynuWiKRgFEV48cLe0eA+G2wO4SzlwEhLEB9LhlSrVeu2mtSn205W283LkX7Fh48CaxA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@2.2.4': - resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==} + '@biomejs/cli-linux-x64-musl@2.3.10': + resolution: {integrity: sha512-QTfHZQh62SDFdYc2nfmZFuTm5yYb4eO1zwfB+90YxUumRCR171tS1GoTX5OD0wrv4UsziMPmrePMtkTnNyYG3g==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@2.2.4': - resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==} + '@biomejs/cli-linux-x64@2.3.10': + resolution: {integrity: sha512-wwAkWD1MR95u+J4LkWP74/vGz+tRrIQvr8kfMMJY8KOQ8+HMVleREOcPYsQX82S7uueco60L58Wc6M1I9WA9Dw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@2.2.4': - resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==} + '@biomejs/cli-win32-arm64@2.3.10': + resolution: {integrity: sha512-o7lYc9n+CfRbHvkjPhm8s9FgbKdYZu5HCcGVMItLjz93EhgJ8AM44W+QckDqLA9MKDNFrR8nPbO4b73VC5kGGQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.2.4': - resolution: {integrity: sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg==} + '@biomejs/cli-win32-x64@2.3.10': + resolution: {integrity: sha512-pHEFgq7dUEsKnqG9mx9bXihxGI49X+ar+UBrEIj3Wqj3UCZp1rNgV+OoyjFgcXsjCWpuEAF4VJdkZr3TrWdCbQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@commitlint/cli@20.1.0': - resolution: {integrity: sha512-pW5ujjrOovhq5RcYv5xCpb4GkZxkO2+GtOdBW2/qrr0Ll9tl3PX0aBBobGQl3mdZUbOBgwAexEQLeH6uxL0VYg==} + '@braidai/lang@1.1.2': + resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} + + '@clack/core@1.0.0-alpha.7': + resolution: {integrity: sha512-3vdh6Ar09D14rVxJZIm3VQJkU+ZOKKT5I5cC0cOVazy70CNyYYjiwRj9unwalhESndgxx6bGc/m6Hhs4EKF5XQ==} + + '@clack/prompts@1.0.0-alpha.8': + resolution: {integrity: sha512-YZGC4BmTKSF5OturNKEz/y4xNjYGmGk6NI785CQucJ7OEdX0qbMmL/zok+9bL6c7qE3WSYffyK5grh2RnkGNtQ==} + + '@commitlint/cli@20.2.0': + resolution: {integrity: sha512-l37HkrPZ2DZy26rKiTUvdq/LZtlMcxz+PeLv9dzK9NzoFGuJdOQyYU7IEkEQj0pO++uYue89wzOpZ0hcTtoqUA==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@20.0.0': - resolution: {integrity: sha512-q7JroPIkDBtyOkVe9Bca0p7kAUYxZMxkrBArCfuD3yN4KjRAenP9PmYwnn7rsw8Q+hHq1QB2BRmBh0/Z19ZoJw==} + '@commitlint/config-conventional@20.2.0': + resolution: {integrity: sha512-MsRac+yNIbTB4Q/psstKK4/ciVzACHicSwz+04Sxve+4DW+PiJeTjU0JnS4m/oOnulrXYN+yBPlKaBSGemRfgQ==} engines: {node: '>=v18'} - '@commitlint/config-validator@20.0.0': - resolution: {integrity: sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==} + '@commitlint/config-validator@20.2.0': + resolution: {integrity: sha512-SQCBGsL9MFk8utWNSthdxd9iOD1pIVZSHxGBwYIGfd67RTjxqzFOSAYeQVXOu3IxRC3YrTOH37ThnTLjUlyF2w==} engines: {node: '>=v18'} - '@commitlint/ensure@20.0.0': - resolution: {integrity: sha512-WBV47Fffvabe68n+13HJNFBqiMH5U1Ryls4W3ieGwPC0C7kJqp3OVQQzG2GXqOALmzrgAB+7GXmyy8N9ct8/Fg==} + '@commitlint/ensure@20.2.0': + resolution: {integrity: sha512-+8TgIGv89rOWyt3eC6lcR1H7hqChAKkpawytlq9P1i/HYugFRVqgoKJ8dhd89fMnlrQTLjA5E97/4sF09QwdoA==} engines: {node: '>=v18'} '@commitlint/execute-rule@20.0.0': resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} engines: {node: '>=v18'} - '@commitlint/format@20.0.0': - resolution: {integrity: sha512-zrZQXUcSDmQ4eGGrd+gFESiX0Rw+WFJk7nW4VFOmxub4mAATNKBQ4vNw5FgMCVehLUKG2OT2LjOqD0Hk8HvcRg==} + '@commitlint/format@20.2.0': + resolution: {integrity: sha512-PhNoLNhxpfIBlW/i90uZ3yG3hwSSYx7n4d9Yc+2FAorAHS0D9btYRK4ZZXX+Gm3W5tDtu911ow/eWRfcRVgNWg==} engines: {node: '>=v18'} - '@commitlint/is-ignored@20.0.0': - resolution: {integrity: sha512-ayPLicsqqGAphYIQwh9LdAYOVAQ9Oe5QCgTNTj+BfxZb9b/JW222V5taPoIBzYnAP0z9EfUtljgBk+0BN4T4Cw==} + '@commitlint/is-ignored@20.2.0': + resolution: {integrity: sha512-Lz0OGeZCo/QHUDLx5LmZc0EocwanneYJUM8z0bfWexArk62HKMLfLIodwXuKTO5y0s6ddXaTexrYHs7v96EOmw==} engines: {node: '>=v18'} - '@commitlint/lint@20.0.0': - resolution: {integrity: sha512-kWrX8SfWk4+4nCexfLaQT3f3EcNjJwJBsSZ5rMBw6JCd6OzXufFHgel2Curos4LKIxwec9WSvs2YUD87rXlxNQ==} + '@commitlint/lint@20.2.0': + resolution: {integrity: sha512-cQEEB+jlmyQbyiji/kmh8pUJSDeUmPiWq23kFV0EtW3eM+uAaMLMuoTMajbrtWYWQpPzOMDjYltQ8jxHeHgITg==} engines: {node: '>=v18'} - '@commitlint/load@20.1.0': - resolution: {integrity: sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==} + '@commitlint/load@20.2.0': + resolution: {integrity: sha512-iAK2GaBM8sPFTSwtagI67HrLKHIUxQc2BgpgNc/UMNme6LfmtHpIxQoN1TbP+X1iz58jq32HL1GbrFTCzcMi6g==} engines: {node: '>=v18'} '@commitlint/message@20.0.0': resolution: {integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==} engines: {node: '>=v18'} - '@commitlint/parse@20.0.0': - resolution: {integrity: sha512-j/PHCDX2bGM5xGcWObOvpOc54cXjn9g6xScXzAeOLwTsScaL4Y+qd0pFC6HBwTtrH92NvJQc+2Lx9HFkVi48cg==} + '@commitlint/parse@20.2.0': + resolution: {integrity: sha512-LXStagGU1ivh07X7sM+hnEr4BvzFYn1iBJ6DRg2QsIN8lBfSzyvkUcVCDwok9Ia4PWiEgei5HQjju6xfJ1YaSQ==} engines: {node: '>=v18'} - '@commitlint/read@20.0.0': - resolution: {integrity: sha512-Ti7Y7aEgxsM1nkwA4ZIJczkTFRX/+USMjNrL9NXwWQHqNqrBX2iMi+zfuzZXqfZ327WXBjdkRaytJ+z5vNqTOA==} + '@commitlint/read@20.2.0': + resolution: {integrity: sha512-+SjF9mxm5JCbe+8grOpXCXMMRzAnE0WWijhhtasdrpJoAFJYd5UgRTj/oCq5W3HJTwbvTOsijEJ0SUGImECD7Q==} engines: {node: '>=v18'} - '@commitlint/resolve-extends@20.1.0': - resolution: {integrity: sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==} + '@commitlint/resolve-extends@20.2.0': + resolution: {integrity: sha512-KVoLDi9BEuqeq+G0wRABn4azLRiCC22/YHR2aCquwx6bzCHAIN8hMt3Nuf1VFxq/c8ai6s8qBxE8+ZD4HeFTlQ==} engines: {node: '>=v18'} - '@commitlint/rules@20.0.0': - resolution: {integrity: sha512-gvg2k10I/RfvHn5I5sxvVZKM1fl72Sqrv2YY/BnM7lMHcYqO0E2jnRWoYguvBfEcZ39t+rbATlciggVe77E4zA==} + '@commitlint/rules@20.2.0': + resolution: {integrity: sha512-27rHGpeAjnYl/A+qUUiYDa7Yn1WIjof/dFJjYW4gA1Ug+LUGa1P0AexzGZ5NBxTbAlmDgaxSZkLLxtLVqtg8PQ==} engines: {node: '>=v18'} '@commitlint/to-lines@20.0.0': @@ -200,24 +423,31 @@ packages: resolution: {integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==} engines: {node: '>=v18'} - '@commitlint/types@20.0.0': - resolution: {integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==} + '@commitlint/types@20.2.0': + resolution: {integrity: sha512-KTy0OqRDLR5y/zZMnizyx09z/rPlPC/zKhYgH8o/q6PuAjoQAKlRfY4zzv0M64yybQ//6//4H1n14pxaLZfUnA==} engines: {node: '>=v18'} - '@emnapi/core@1.5.0': - resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@e18e/cli@0.3.1': + resolution: {integrity: sha512-o1jliM8zUNaaP+EbHADYJ/YhbCVnhmYsGnlWM6udJ4gr9cWoRozWw7kdm81OjVqInhZ0dZLfBi8eW1Rsj2hdkQ==} + hasBin: true + + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - '@idleberg/configs@0.3.1': - resolution: {integrity: sha512-Mo3Q4vkjtvDZzw+0jvCVyAc/ykXJQSZfS3izXU7ggHJckW/DodBPdlPqDLNv6gXASKt1oiiZj/Abb9yztn7zsg==} + '@idleberg/configs@0.4.1': + resolution: {integrity: sha512-oLVZPHOrhgxdeXsxukD1vB30eDkF0UidfhthsBBKksF7GM0lhQNTWNThsJojrazI/0OZV9giQCeVxsm3/cUK0Q==} '@img/sharp-darwin-arm64@0.34.2': resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} @@ -350,6 +580,9 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -360,100 +593,101 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@napi-rs/wasm-runtime@1.0.6': - resolution: {integrity: sha512-DXj75ewm11LIWUk198QSKUTxjyRjsBwk09MuMk5DGK+GDUtyPhhEHOGP/Xwwj3DjQXXkivoBirmOnKrLfc0+9g==} + '@loaderkit/resolve@1.0.4': + resolution: {integrity: sha512-rJzYKVcV4dxJv+vW6jlvagF8zvGxHJ2+HTr1e2qOejfmGhAApgJHl8Aog4mMszxceTRiKTTbnpgmTO1bEZHV/A==} - '@oxc-project/types@0.94.0': - resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} + '@napi-rs/wasm-runtime@1.1.0': + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} - '@quansync/fs@0.1.5': - resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} + '@oxc-project/types@0.103.0': + resolution: {integrity: sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg==} - '@rolldown/binding-android-arm64@1.0.0-beta.42': - resolution: {integrity: sha512-W5ZKF3TP3bOWuBfotAGp+UGjxOkGV7jRmIRbBA7NFjggx7Oi6vOmGDqpHEIX7kDCiry1cnIsWQaxNvWbMdkvzQ==} + '@publint/pack@0.1.2': + resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} + engines: {node: '>=18'} + + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rolldown/binding-android-arm64@1.0.0-beta.55': + resolution: {integrity: sha512-5cPpHdO+zp+klznZnIHRO1bMHDq5hS9cqXodEKAaa/dQTPDjnE91OwAsy3o1gT2x4QaY8NzdBXAvutYdaw0WeA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.42': - resolution: {integrity: sha512-abw/wtgJA8OCgaTlL+xJxnN/Z01BwV1rfzIp5Hh9x+IIO6xOBfPsQ0nzi0+rWx3TyZ9FZXyC7bbC+5NpQ9EaXQ==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.55': + resolution: {integrity: sha512-l0887CGU2SXZr0UJmeEcXSvtDCOhDTTYXuoWbhrEJ58YQhQk24EVhDhHMTyjJb1PBRniUgNc1G0T51eF8z+TWw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.42': - resolution: {integrity: sha512-Y/UrZIRVr8CvXVEB88t6PeC46r1K9/QdPEo2ASE/b/KBEyXIx+QbM6kv9QfQVWU2Atly2+SVsQzxQsIvuk3lZQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.55': + resolution: {integrity: sha512-d7qP2AVYzN0tYIP4vJ7nmr26xvmlwdkLD/jWIc9Z9dqh5y0UGPigO3m5eHoHq9BNazmwdD9WzDHbQZyXFZjgtA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.42': - resolution: {integrity: sha512-zRM0oOk7BZiy6DoWBvdV4hyEg+j6+WcBZIMHVirMEZRu8hd18kZdJkg+bjVMfCEhwpWeFUfBfZ1qcaZ5UdYzlQ==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.55': + resolution: {integrity: sha512-j311E4NOB0VMmXHoDDZhrWidUf7L/Sa6bu/+i2cskvHKU40zcUNPSYeD2YiO2MX+hhDFa5bJwhliYfs+bTrSZw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': - resolution: {integrity: sha512-6RjFaC52QNwo7ilU8C5H7swbGlgfTkG9pudXwzr3VYyT18s0C9gLg3mvc7OMPIGqNxnQ0M5lU8j6aQCk2DTRVg==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.55': + resolution: {integrity: sha512-lAsaYWhfNTW2A/9O7zCpb5eIJBrFeNEatOS/DDOZ5V/95NHy50g4b/5ViCqchfyFqRb7MKUR18/+xWkIcDkeIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': - resolution: {integrity: sha512-LMYHM5Sf6ROq+VUwHMDVX2IAuEsWTv4SnlFEedBnMGpvRuQ14lCmD4m5Q8sjyAQCgyha9oghdGoK8AEg1sXZKg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.55': + resolution: {integrity: sha512-2x6ffiVLZrQv7Xii9+JdtyT1U3bQhKj59K3eRnYlrXsKyjkjfmiDUVx2n+zSyijisUqD62fcegmx2oLLfeTkCA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': - resolution: {integrity: sha512-/bNTYb9aKNhzdbPn3O4MK2aLv55AlrkUKPE4KNfBYjkoZUfDr4jWp7gsSlvTc5A/99V1RCm9axvt616ZzeXGyA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.55': + resolution: {integrity: sha512-QbNncvqAXziya5wleI+OJvmceEE15vE4yn4qfbI/hwT/+8ZcqxyfRZOOh62KjisXxp4D0h3JZspycXYejxAU3w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': - resolution: {integrity: sha512-n/SLa4h342oyeGykZdch7Y3GNCNliRPL4k5wkeZ/5eQZs+c6/ZG1SHCJQoy7bZcmxiMyaXs9HoFmv1PEKrZgWg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.55': + resolution: {integrity: sha512-YZCTZZM+rujxwVc6A+QZaNMJXVtmabmFYLG2VGQTKaBfYGvBKUgtbMEttnp/oZ88BMi2DzadBVhOmfQV8SuHhw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': - resolution: {integrity: sha512-4PSd46sFzqpLHSGdaSViAb1mk55sCUMpJg+X8ittXaVocQsV3QLG/uydSH8RyL0ngHX5fy3D70LcCzlB15AgHw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.55': + resolution: {integrity: sha512-28q9OQ/DDpFh2keS4BVAlc3N65/wiqKbk5K1pgLdu/uWbKa8hgUJofhXxqO+a+Ya2HVTUuYHneWsI2u+eu3N5Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': - resolution: {integrity: sha512-BmWoeJJyeZXmZBcfoxG6J9+rl2G7eO47qdTkAzEegj4n3aC6CBIHOuDcbE8BvhZaEjQR0nh0nJrtEDlt65Q7Sw==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.55': + resolution: {integrity: sha512-LiCA4BjCnm49B+j1lFzUtlC+4ZphBv0d0g5VqrEJua/uyv9Ey1v9tiaMql1C8c0TVSNDUmrkfHQ71vuQC7YfpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': - resolution: {integrity: sha512-2Ft32F7uiDTrGZUKws6CLNTlvTWHC33l4vpXrzUucf9rYtUThAdPCOt89Pmn13tNX6AulxjGEP2R0nZjTSW3eQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.55': + resolution: {integrity: sha512-nZ76tY7T0Oe8vamz5Cv5CBJvrqeQxwj1WaJ2GxX8Msqs0zsQMMcvoyxOf0glnJlxxgKjtoBxAOxaAU8ERbW6Tg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': - resolution: {integrity: sha512-hC1kShXW/z221eG+WzQMN06KepvPbMBknF0iGR3VMYJLOe9gwnSTfGxFT5hf8XrPv7CEZqTWRd0GQpkSHRbGsw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.55': + resolution: {integrity: sha512-TFVVfLfhL1G+pWspYAgPK/FSqjiBtRKYX9hixfs508QVEZPQlubYAepHPA7kEa6lZXYj5ntzF87KC6RNhxo+ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': - resolution: {integrity: sha512-AICBYromawouGjj+GS33369E8Vwhy6UwhQEhQ5evfS8jPCsyVvoICJatbDGDGH01dwtVGLD5eDFzPicUOVpe4g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': - resolution: {integrity: sha512-XpZ0M+tjoEiSc9c+uZR7FCnOI0uxDRNs1elGOMjeB0pUP1QmvVbZGYNsyLbLoP4u7e3VQN8rie1OQ8/mB6rcJg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.55': + resolution: {integrity: sha512-j1WBlk0p+ISgLzMIgl0xHp1aBGXenoK2+qWYc/wil2Vse7kVOdFq9aeQ8ahK6/oxX2teQ5+eDvgjdywqTL+daA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.42': - resolution: {integrity: sha512-N7pQzk9CyE7q0bBN/q0J8s6Db279r5kUZc6d7/wWRe9/zXqC52HQovVyu6iXPIDY4BEzzgbVLhVFXrOuGJ22ZQ==} + '@rolldown/pluginutils@1.0.0-beta.55': + resolution: {integrity: sha512-vajw/B3qoi7aYnnD4BQ4VoCcXQWnF0roSwE2iynbNxgW4l9mFwtLmLmUhpDdcTBfKyZm1p/T0D13qG94XBLohA==} '@total-typescript/tsconfig@1.0.4': resolution: {integrity: sha512-fO4ctMPGz1kOFOQ4RCPBRBfMy3gDn+pegUfrGyUFRMv/Rd0ZM3/SHH3hFCYG4u6bPLG8OlmOGcBLDexvyr3A5w==} @@ -461,8 +695,8 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/conventional-commits-parser@5.0.1': - resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + '@types/conventional-commits-parser@5.0.2': + resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} '@types/line-column@1.0.2': resolution: {integrity: sha512-099oFQmp/Tlf20xW5XI5R4F69N6lF/zQ09XDzc3R5BOLFlqIotgKoNIyj0HD4fQLWcGDreDJv8k/BkLJscrDrw==} @@ -477,11 +711,6 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -512,20 +741,50 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + args-tokens@0.20.1: + resolution: {integrity: sha512-pQ5R5TsJyx94zsgSCCQ9kzOgUfMmI4bkqNjgSSt2C92mzPCvovoUMMW6HqR+35mHZ0cb1++MD2uAOLm62sGC+Q==} + engines: {node: '>= 20'} + array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - ast-kit@2.1.3: - resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} - birpc@2.6.1: - resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.9.11: + resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} + hasBin: true + + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true bubble-stream-error@1.0.0: resolution: {integrity: sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==} engines: {node: '>= 0.4.0'} + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -534,6 +793,9 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + caniuse-lite@1.0.30001761: + resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -542,14 +804,17 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -564,9 +829,15 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concurrently@9.2.1: resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} engines: {node: '>=18'} @@ -585,8 +856,11 @@ packages: engines: {node: '>=16'} hasBin: true - cosmiconfig-typescript-loader@6.1.0: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cosmiconfig-typescript-loader@6.2.0: + resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} engines: {node: '>=v18'} peerDependencies: '@types/node': '*' @@ -631,21 +905,16 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} - diff@8.0.2: - resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} - engines: {node: '>=0.3.1'} - - dot-prop@10.1.0: - resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} - engines: {node: '>=20'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dts-resolver@2.1.2: - resolution: {integrity: sha512-xeXHBQkn2ISSXxbJWD828PFjtyg+/UrMDo7W4Ffcs7+YWCquxU8YjV1KoxuiL+eJ5pg3ll+bC6flVv61L3LKZg==} - engines: {node: '>=20.18.0'} + dts-resolver@2.1.3: + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} peerDependencies: oxc-resolver: '>=11.0.0' peerDependenciesMeta: @@ -655,6 +924,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -676,6 +948,11 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -691,20 +968,46 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + find-up@7.0.0: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} + flow-parser@0.295.0: + resolution: {integrity: sha512-M4GVdl9SIKQEGULoEh/PO5K1REnXvHT6XOEthuKMUDWsLCi576mOWo3Xe8BfKdy2e2aMaW5rKGfMDlMDOA9RqA==} + engines: {node: '>=0.4.0'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-tsconfig@4.11.0: - resolution: {integrity: sha512-sNsqf7XKQ38IawiVGPOoAlqZo1DMrO7TU+ZcZwi7yLl7/7S0JwmoBMKz/IkUPhSoXM0Ng3vT0yB1iCe5XavDeQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} git-raw-commits@4.0.0: resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} @@ -716,10 +1019,21 @@ packages: engines: {node: 20 || >=22} hasBin: true + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gunshi@0.26.3: + resolution: {integrity: sha512-x/CaxovzDA3KMkrjqow7M1dnsO1CxGMNabBaeGTGdVNtjOMN1G/eK7vjKeJ+zHdFIsWHmo47YQ2DQIESUut2+A==} + engines: {node: '>= 20'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -734,6 +1048,21 @@ packages: import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + import-without-cache@0.2.4: + resolution: {integrity: sha512-b/Ke0y4n26ffQhkLvgBxV/NVO/QEE6AZlrMj8DYuxBWNAAu4iMQWZTFWzKcCTEmv7VQ0ae0j8KwrlGzSy8sYQQ==} + engines: {node: '>=20.19.0'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -752,10 +1081,18 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + is-text-path@2.0.0: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} @@ -770,6 +1107,10 @@ packages: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + jackspeak@4.1.1: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} @@ -781,10 +1122,19 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jscodeshift@0.16.1: + resolution: {integrity: sha512-oMQXySazy63awNBzMpXbbVv73u3irdxTeX2L5ueRyFRxi32qb9uzdZdOY5fTBYADBG19l5M/wnGknZSV1dzCdA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -796,62 +1146,71 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - lefthook-darwin-arm64@1.13.0: - resolution: {integrity: sha512-mhD4zOj2VRx34tptEc/lP643n5YAAVP95f/TiP6geQz4kpLwUrsTwQxzoXUIauU2DGSNbFtp9hVSE++0e4ESEA==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + lefthook-darwin-arm64@2.0.12: + resolution: {integrity: sha512-tuBz1sNLien+nKKb8BDopKjS6EnbXU8rQzhMVBY+bnVfsTiYDfbBr4wo/IzA5TcwoTL/b5somCJhljEw6DvSyg==} cpu: [arm64] os: [darwin] - lefthook-darwin-x64@1.13.0: - resolution: {integrity: sha512-uspgWrhh9Xoyb+x0hVeMnYkSA1K/cEov4QHxcBBTIvTvjEuijSLIQEzULsHvg7a6xNM/8E3SBzOwBRK44jM2Mw==} + lefthook-darwin-x64@2.0.12: + resolution: {integrity: sha512-FnuUMPPRMJyTEPXg6PotSrFJ8qf8FDLhhD1zLh74D+9Cye5j9n3lcrCQEjXubPT8du/GZLxMBjjffRbcZ8eYDA==} cpu: [x64] os: [darwin] - lefthook-freebsd-arm64@1.13.0: - resolution: {integrity: sha512-UUY+UlGuwAkO8hEY4+SGYfM1OeXSI4i2/8ROwBpu6fz0LrTL1OUYRVhLIRNJvWrF2XabfgXVUrnjGY7YSq4zpg==} + lefthook-freebsd-arm64@2.0.12: + resolution: {integrity: sha512-DXElB0qR5e6a8cXkFNYakhwCieypbfh6Y4QG39pzMnLsG03g/nhe093o6owfiUZ4mUFyDM6+0xmy0steOooF2g==} cpu: [arm64] os: [freebsd] - lefthook-freebsd-x64@1.13.0: - resolution: {integrity: sha512-wdF/Cwmbiblz+UaLb3a0trSKEmaY5z20latrmhim98M1H48iBHhUyUUJWaSEauyFMJWPwu7rSVZl5KktPxCxVA==} + lefthook-freebsd-x64@2.0.12: + resolution: {integrity: sha512-iJN1ZxFeaDi4Fi3b9jcW9wgyNl19LOv2NaVOaAi/tG6mlIn196cmSdXkOA3+943ZbqbdfV9I+bBcIKwneXDA3Q==} cpu: [x64] os: [freebsd] - lefthook-linux-arm64@1.13.0: - resolution: {integrity: sha512-tpg4pA0JTeLxGAZDFJVOGyIMjQAE7F8HcM31tj+3KOogahspOffpmSoS1SlHzUSZ8Jm+Bvoqcis/sW68HkmWHw==} + lefthook-linux-arm64@2.0.12: + resolution: {integrity: sha512-byvmO4Iri6P0COwM8c3lGgeCV3Q0hh1XJpRfrcZDr4Wslq9O63t6J3T6i87oOtY+UjC9pXLl6xGk6hlUcHZ3BQ==} cpu: [arm64] os: [linux] - lefthook-linux-x64@1.13.0: - resolution: {integrity: sha512-5JUhlDaYqt9vBTSQ5gkA00+0ktUSRyL60AhZID6OR4ML39SidzMTu/GrgHscPT4sD3TfSODEdGZ28sNKdLg6jA==} + lefthook-linux-x64@2.0.12: + resolution: {integrity: sha512-KBaiinmf336rA+/dmYs7H7TTeAOByB0CyLA7k8IecTCuaiuKr6ez7ktSjht19poa5G+V0mts4GgEGcx6HViR0w==} cpu: [x64] os: [linux] - lefthook-openbsd-arm64@1.13.0: - resolution: {integrity: sha512-UNCoKrbH0Yv61jCCUIPRr7ErS3yYt2VNCFdzLf752O9K0yrfn9FzYUsyxQFEn1Ah/kq+TNgZw90gVLg5fv1t4g==} + lefthook-openbsd-arm64@2.0.12: + resolution: {integrity: sha512-1QBMXX1UW5rtgC4TB52OKWB7Rz/kCBRB+bKKLT/gDD79aPzLgJANTitQQzgFNIWoa7aM9UvzvIAJzOo6FcFIbg==} cpu: [arm64] os: [openbsd] - lefthook-openbsd-x64@1.13.0: - resolution: {integrity: sha512-iyvE+jgHYnLvOoHsLykgf98lftewsQzEBciYxygna9sLZ9nLvfbwp9mWUk09yMRmPCFGDeeDecERaUa2SICWLA==} + lefthook-openbsd-x64@2.0.12: + resolution: {integrity: sha512-zPcvUzs65GexRA37UHmaZqWuEGSU/zpBaPIY98MybXzzcJfCIf+O0oUQe2riMllwYGvNW0B1y3NOYRziDNe/vA==} cpu: [x64] os: [openbsd] - lefthook-windows-arm64@1.13.0: - resolution: {integrity: sha512-+u0GyvZouKGcecFsayIbzq1KIoDcrSqVhivLfJUq7vpMXbSHV5HbhrkdkfqkuGjGgGnWulQY29/bDubTQoqfOA==} + lefthook-windows-arm64@2.0.12: + resolution: {integrity: sha512-kgwxguS2GssoHM4SMTp+ArD/Gjg9q5MinD6iI5vSFpuJygD13ZWiXQQfESMHq9y/v1XkD0BdHTJej49dx8P+Vw==} cpu: [arm64] os: [win32] - lefthook-windows-x64@1.13.0: - resolution: {integrity: sha512-RG8dfOkszk6BaOA7k26NO0R1/vy1tno7/wgdg+Wjt0pYFiBo0DhmPMoAVB4kzjObqBKDd1KWidzsEv4/R0oFIg==} + lefthook-windows-x64@2.0.12: + resolution: {integrity: sha512-Tf/VtSOtF3rBTc9dzRWROa+HuhqaiIV+Xp+1gzlx5+uCueLM0m87Rz6yd4IN5mL7TrDaNkiRXI3FvjCp0dUE4Q==} cpu: [x64] os: [win32] - lefthook@1.13.0: - resolution: {integrity: sha512-6pno+NjfBrKKt3XQmFUvwDdKXzBVh5JvzAIwcCOu9mqg81nAMCZd2FtTuU1fmDzXFNdsxjW8mwwKB+S8t5ucOQ==} + lefthook@2.0.12: + resolution: {integrity: sha512-I2FdA9cdnq1icwlNz4RADs7exuqe47q1N9+p2LmcP/WfchWh16mvTB82OAD7w7zK9GxblS9GpF7pASaOSl4c7A==} hasBin: true line-column@1.0.2: @@ -860,6 +1219,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -926,17 +1289,32 @@ packages: resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} engines: {node: 20 || >=22} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + minimatch@10.0.3: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -944,23 +1322,65 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + module-replacements-codemods@1.2.1: + resolution: {integrity: sha512-EKUCgQWOap+KPeZmUtNErGN7DhoV4GbZZRwtmCgdcMjTrZzGm3TltwDII7kmaioi8pKZy51X9ITcivhmJT0K5A==} + + module-replacements@2.10.1: + resolution: {integrity: sha512-qkKuLpMHDqRSM676OPL7HUpCiiP3NSxgf8NNR1ga2h/iJLNKTsOSjMEwrcT85DMSti2vmOqxknOVBGWj6H6etQ==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -969,10 +1389,18 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -987,16 +1415,37 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + publint@0.3.16: + resolution: {integrity: sha512-MFqyfRLAExPVZdTQFwkAQELzA8idyXzROVOytg6nEJ/GEypXBUmMGrVaID8cTuzRS1U5L8yTOdOJtMXgFUJAeA==} + engines: {node: '>=18'} + hasBin: true + + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -1017,13 +1466,18 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rolldown-plugin-dts@0.16.11: - resolution: {integrity: sha512-9IQDaPvPqTx3RjG2eQCK5GYZITo203BxKunGI80AGYicu1ySFTUyugicAaTZWRzFWh9DSnzkgNeMNbDWBbSs0w==} - engines: {node: '>=20.18.0'} + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rolldown-plugin-dts@0.19.1: + resolution: {integrity: sha512-6z501zDTGq6ZrIEdk57qNUwq7kBRGzv3I3SAN2HMJ2KFYjHLnAuPYOmvfiwdxbRZMJ0iMdkV9rYdC3GjurT2cg==} + engines: {node: '>=20.19.0'} peerDependencies: '@ts-macro/tsc': ^0.3.6 '@typescript/native-preview': '>=7.0.0-dev.20250601.1' - rolldown: ^1.0.0-beta.9 + rolldown: ^1.0.0-beta.55 typescript: ^5.0.0 vue-tsc: ~3.1.0 peerDependenciesMeta: @@ -1036,19 +1490,40 @@ packages: vue-tsc: optional: true - rolldown@1.0.0-beta.42: - resolution: {integrity: sha512-xaPcckj+BbJhYLsv8gOqezc8EdMcKKe/gk8v47B0KPvgABDrQ0qmNPAiT/gh9n9Foe0bUkEv2qzj42uU5q1WRg==} + rolldown@1.0.0-beta.55: + resolution: {integrity: sha512-r8Ws43aYCnfO07ao0SvQRz4TBAtZJjGWNvScRBOHuiNHvjfECOJBIqJv0nUkL1GYcltjvvHswRilDF1ocsC0+g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + sharp-cli@5.2.0: resolution: {integrity: sha512-0DQyABFTWkla4FYvjguCQloSgm2htOPfGFur88HXiGu8BPfhb77frWn+E87w8Oog0eSHF4/uMt5AFhpvfY/Zrg==} engines: {node: '>=18.17'} @@ -1077,9 +1552,19 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + sliced@1.0.1: resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -1108,9 +1593,9 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - tagged-tag@1.0.0: - resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} - engines: {node: '>=20'} + temp@0.9.4: + resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} + engines: {node: '>=6.0.0'} text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} @@ -1119,23 +1604,32 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - tsdown@0.15.6: - resolution: {integrity: sha512-W6++O3JeV9gm3JY6P/vLiC7zzTcJbZhQxXb+p3AvRMpDOPBIg82yXULyZCcwjsihY/bFG+Qw37HkezZbP7fzUg==} + tsdown@0.18.1: + resolution: {integrity: sha512-na4MdVA8QS9Zw++0KovGpjvw1BY5WvoCWcE4Aw0dyfff9nWK8BPzniQEVs+apGUg3DHaYMDfs+XiFaDDgqDDzQ==} engines: {node: '>=20.19.0'} hasBin: true peerDependencies: '@arethetypeswrong/core': ^0.18.1 + '@vitejs/devtools': '*' publint: ^0.3.0 typescript: ^5.0.0 unplugin-lightningcss: ^0.4.0 @@ -1143,6 +1637,8 @@ packages: peerDependenciesMeta: '@arethetypeswrong/core': optional: true + '@vitejs/devtools': + optional: true publint: optional: true typescript: @@ -1155,17 +1651,18 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - type-fest@5.0.1: - resolution: {integrity: sha512-9MpwAI52m8H6ssA542UxSLnSiSD2dsC3/L85g6hVubLSXd82wdI80eZwTWhdOfN67NlA+D+oipAs1MlcTcu3KA==} - engines: {node: '>=20'} + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} + engines: {node: '>=14.17'} + hasBin: true typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true - unconfig@7.3.3: - resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} + unconfig-core@7.4.2: + resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} @@ -1174,13 +1671,33 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - vscode-get-config@0.5.0: - resolution: {integrity: sha512-+Rr5aaN8/W9OrRXSs7fD83eLgdjMYEzZ+uzCy+/vvr/L6CCyTbVnvQQm4uNnYTXJLDKblW43DFQgr/A7xSaDhQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + unrun@0.2.20: + resolution: {integrity: sha512-YhobStTk93HYRN/4iBs3q3/sd7knvju1XrzwwrVVfRujyTG1K88hGONIxCoJN0PWBuO+BX7fFiHH0sVDfE3MWw==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vscode-get-config@0.6.2: + resolution: {integrity: sha512-Kc5FnI+ZE5dxF7IVb4cEqC/uJ5fg3f5VdAMKi+1FZ3d9Gdi3zRTOSN6uImDnVKUSbR6vn/LE9TSxuGp/YuVR7Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true wrap-ansi@7.0.0: @@ -1194,10 +1711,17 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -1206,100 +1730,380 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} snapshots: + '@andrewbranch/untar.js@1.0.3': {} + + '@arethetypeswrong/core@0.18.2': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + '@loaderkit/resolve': 1.0.4 + cjs-module-lexer: 1.4.3 + fflate: 0.8.2 + lru-cache: 11.2.4 + semver: 7.7.3 + typescript: 5.6.1-rc + validate-npm-package-name: 5.0.1 + + '@ast-grep/napi-darwin-arm64@0.25.7': + optional: true + + '@ast-grep/napi-darwin-x64@0.25.7': + optional: true + + '@ast-grep/napi-linux-arm64-gnu@0.25.7': + optional: true + + '@ast-grep/napi-linux-arm64-musl@0.25.7': + optional: true + + '@ast-grep/napi-linux-x64-gnu@0.25.7': + optional: true + + '@ast-grep/napi-linux-x64-musl@0.25.7': + optional: true + + '@ast-grep/napi-win32-arm64-msvc@0.25.7': + optional: true + + '@ast-grep/napi-win32-ia32-msvc@0.25.7': + optional: true + + '@ast-grep/napi-win32-x64-msvc@0.25.7': + optional: true + + '@ast-grep/napi@0.25.7': + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.25.7 + '@ast-grep/napi-darwin-x64': 0.25.7 + '@ast-grep/napi-linux-arm64-gnu': 0.25.7 + '@ast-grep/napi-linux-arm64-musl': 0.25.7 + '@ast-grep/napi-linux-x64-gnu': 0.25.7 + '@ast-grep/napi-linux-x64-musl': 0.25.7 + '@ast-grep/napi-win32-arm64-msvc': 0.25.7 + '@ast-grep/napi-win32-ia32-msvc': 0.25.7 + '@ast-grep/napi-win32-x64-msvc': 0.25.7 + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.28.3': + '@babel/compat-data@7.28.5': {} + + '@babel/core@7.28.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.5 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.5 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.5 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5) + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + '@babel/preset-flow@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) + + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color - '@babel/parser@7.28.4': + '@babel/register@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/types': 7.28.4 + '@babel/core': 7.28.5 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.7 + source-map-support: 0.5.21 - '@babel/types@7.28.4': + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + + '@babel/traverse@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@biomejs/biome@2.2.4': + '@biomejs/biome@2.3.10': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.2.4 - '@biomejs/cli-darwin-x64': 2.2.4 - '@biomejs/cli-linux-arm64': 2.2.4 - '@biomejs/cli-linux-arm64-musl': 2.2.4 - '@biomejs/cli-linux-x64': 2.2.4 - '@biomejs/cli-linux-x64-musl': 2.2.4 - '@biomejs/cli-win32-arm64': 2.2.4 - '@biomejs/cli-win32-x64': 2.2.4 - - '@biomejs/cli-darwin-arm64@2.2.4': + '@biomejs/cli-darwin-arm64': 2.3.10 + '@biomejs/cli-darwin-x64': 2.3.10 + '@biomejs/cli-linux-arm64': 2.3.10 + '@biomejs/cli-linux-arm64-musl': 2.3.10 + '@biomejs/cli-linux-x64': 2.3.10 + '@biomejs/cli-linux-x64-musl': 2.3.10 + '@biomejs/cli-win32-arm64': 2.3.10 + '@biomejs/cli-win32-x64': 2.3.10 + + '@biomejs/cli-darwin-arm64@2.3.10': optional: true - '@biomejs/cli-darwin-x64@2.2.4': + '@biomejs/cli-darwin-x64@2.3.10': optional: true - '@biomejs/cli-linux-arm64-musl@2.2.4': + '@biomejs/cli-linux-arm64-musl@2.3.10': optional: true - '@biomejs/cli-linux-arm64@2.2.4': + '@biomejs/cli-linux-arm64@2.3.10': optional: true - '@biomejs/cli-linux-x64-musl@2.2.4': + '@biomejs/cli-linux-x64-musl@2.3.10': optional: true - '@biomejs/cli-linux-x64@2.2.4': + '@biomejs/cli-linux-x64@2.3.10': optional: true - '@biomejs/cli-win32-arm64@2.2.4': + '@biomejs/cli-win32-arm64@2.3.10': optional: true - '@biomejs/cli-win32-x64@2.2.4': + '@biomejs/cli-win32-x64@2.3.10': optional: true - '@commitlint/cli@20.1.0(@types/node@24.7.0)(typescript@5.9.3)': + '@braidai/lang@1.1.2': {} + + '@clack/core@1.0.0-alpha.7': dependencies: - '@commitlint/format': 20.0.0 - '@commitlint/lint': 20.0.0 - '@commitlint/load': 20.1.0(@types/node@24.7.0)(typescript@5.9.3) - '@commitlint/read': 20.0.0 - '@commitlint/types': 20.0.0 - tinyexec: 1.0.1 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@1.0.0-alpha.8': + dependencies: + '@clack/core': 1.0.0-alpha.7 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@commitlint/cli@20.2.0(@types/node@24.7.0)(typescript@5.9.3)': + dependencies: + '@commitlint/format': 20.2.0 + '@commitlint/lint': 20.2.0 + '@commitlint/load': 20.2.0(@types/node@24.7.0)(typescript@5.9.3) + '@commitlint/read': 20.2.0 + '@commitlint/types': 20.2.0 + tinyexec: 1.0.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - typescript - '@commitlint/config-conventional@20.0.0': + '@commitlint/config-conventional@20.2.0': dependencies: - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 conventional-changelog-conventionalcommits: 7.0.2 - '@commitlint/config-validator@20.0.0': + '@commitlint/config-validator@20.2.0': dependencies: - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 ajv: 8.17.1 - '@commitlint/ensure@20.0.0': + '@commitlint/ensure@20.2.0': dependencies: - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -1308,32 +2112,32 @@ snapshots: '@commitlint/execute-rule@20.0.0': {} - '@commitlint/format@20.0.0': + '@commitlint/format@20.2.0': dependencies: - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 chalk: 5.6.2 - '@commitlint/is-ignored@20.0.0': + '@commitlint/is-ignored@20.2.0': dependencies: - '@commitlint/types': 20.0.0 - semver: 7.7.2 + '@commitlint/types': 20.2.0 + semver: 7.7.3 - '@commitlint/lint@20.0.0': + '@commitlint/lint@20.2.0': dependencies: - '@commitlint/is-ignored': 20.0.0 - '@commitlint/parse': 20.0.0 - '@commitlint/rules': 20.0.0 - '@commitlint/types': 20.0.0 + '@commitlint/is-ignored': 20.2.0 + '@commitlint/parse': 20.2.0 + '@commitlint/rules': 20.2.0 + '@commitlint/types': 20.2.0 - '@commitlint/load@20.1.0(@types/node@24.7.0)(typescript@5.9.3)': + '@commitlint/load@20.2.0(@types/node@24.7.0)(typescript@5.9.3)': dependencies: - '@commitlint/config-validator': 20.0.0 + '@commitlint/config-validator': 20.2.0 '@commitlint/execute-rule': 20.0.0 - '@commitlint/resolve-extends': 20.1.0 - '@commitlint/types': 20.0.0 + '@commitlint/resolve-extends': 20.2.0 + '@commitlint/types': 20.2.0 chalk: 5.6.2 cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -1343,35 +2147,35 @@ snapshots: '@commitlint/message@20.0.0': {} - '@commitlint/parse@20.0.0': + '@commitlint/parse@20.2.0': dependencies: - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 - '@commitlint/read@20.0.0': + '@commitlint/read@20.2.0': dependencies: '@commitlint/top-level': 20.0.0 - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 git-raw-commits: 4.0.0 minimist: 1.2.8 - tinyexec: 1.0.1 + tinyexec: 1.0.2 - '@commitlint/resolve-extends@20.1.0': + '@commitlint/resolve-extends@20.2.0': dependencies: - '@commitlint/config-validator': 20.0.0 - '@commitlint/types': 20.0.0 + '@commitlint/config-validator': 20.2.0 + '@commitlint/types': 20.2.0 global-directory: 4.0.1 import-meta-resolve: 4.2.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - '@commitlint/rules@20.0.0': + '@commitlint/rules@20.2.0': dependencies: - '@commitlint/ensure': 20.0.0 + '@commitlint/ensure': 20.2.0 '@commitlint/message': 20.0.0 '@commitlint/to-lines': 20.0.0 - '@commitlint/types': 20.0.0 + '@commitlint/types': 20.2.0 '@commitlint/to-lines@20.0.0': {} @@ -1379,12 +2183,32 @@ snapshots: dependencies: find-up: 7.0.0 - '@commitlint/types@20.0.0': + '@commitlint/types@20.2.0': dependencies: - '@types/conventional-commits-parser': 5.0.1 + '@types/conventional-commits-parser': 5.0.2 chalk: 5.6.2 - '@emnapi/core@1.5.0': + '@e18e/cli@0.3.1(picomatch@4.0.3)': + dependencies: + '@arethetypeswrong/core': 0.18.2 + '@clack/prompts': 1.0.0-alpha.8 + '@publint/pack': 0.1.2 + debug: 4.4.3 + fdir: 6.5.0(picomatch@4.0.3) + gunshi: 0.26.3 + module-replacements: 2.10.1 + module-replacements-codemods: 1.2.1 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + publint: 0.3.16 + semver: 7.7.3 + tinyglobby: 0.2.15 + transitivePeerDependencies: + - '@babel/preset-env' + - picomatch + - supports-color + + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 @@ -1395,6 +2219,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 @@ -1402,11 +2231,16 @@ snapshots: '@epic-web/invariant@1.0.0': {} - '@idleberg/configs@0.3.1': + '@idleberg/configs@0.4.1(picomatch@4.0.3)': dependencies: - '@biomejs/biome': 2.2.4 + '@biomejs/biome': 2.3.10 + '@e18e/cli': 0.3.1(picomatch@4.0.3) '@total-typescript/tsconfig': 1.0.4 - lefthook: 1.13.0 + lefthook: 2.0.12 + transitivePeerDependencies: + - '@babel/preset-env' + - picomatch + - supports-color '@img/sharp-darwin-arm64@0.34.2': optionalDependencies: @@ -1509,6 +2343,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -1518,64 +2357,67 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@napi-rs/wasm-runtime@1.0.6': + '@loaderkit/resolve@1.0.4': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 + '@braidai/lang': 1.1.2 + + '@napi-rs/wasm-runtime@1.1.0': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 optional: true - '@oxc-project/types@0.94.0': {} + '@oxc-project/types@0.103.0': {} + + '@publint/pack@0.1.2': {} - '@quansync/fs@0.1.5': + '@quansync/fs@1.0.0': dependencies: - quansync: 0.2.11 + quansync: 1.0.0 - '@rolldown/binding-android-arm64@1.0.0-beta.42': + '@rolldown/binding-android-arm64@1.0.0-beta.55': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.42': + '@rolldown/binding-darwin-arm64@1.0.0-beta.55': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.42': + '@rolldown/binding-darwin-x64@1.0.0-beta.55': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.42': + '@rolldown/binding-freebsd-x64@1.0.0-beta.55': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.55': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.55': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.55': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.55': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.55': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.55': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.55': dependencies: - '@napi-rs/wasm-runtime': 1.0.6 + '@napi-rs/wasm-runtime': 1.1.0 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.55': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.55': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': - optional: true - - '@rolldown/pluginutils@1.0.0-beta.42': {} + '@rolldown/pluginutils@1.0.0-beta.55': {} '@total-typescript/tsconfig@1.0.4': {} @@ -1584,7 +2426,7 @@ snapshots: tslib: 2.8.1 optional: true - '@types/conventional-commits-parser@5.0.1': + '@types/conventional-commits-parser@5.0.2': dependencies: '@types/node': 24.7.0 @@ -1601,8 +2443,6 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - acorn@8.15.0: {} - ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -1626,24 +2466,55 @@ snapshots: argparse@2.0.1: {} + args-tokens@0.20.1: {} + array-ify@1.0.0: {} - ast-kit@2.1.3: + ast-kit@2.2.0: dependencies: - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 pathe: 2.0.3 - birpc@2.6.1: {} + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.9.11: {} + + birpc@4.0.0: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.11 + caniuse-lite: 1.0.30001761 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) bubble-stream-error@1.0.0: dependencies: once: 1.4.0 sliced: 1.0.1 + buffer-from@1.1.2: {} + cac@6.7.14: {} callsites@3.1.0: {} + caniuse-lite@1.0.30001761: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -1651,9 +2522,7 @@ snapshots: chalk@5.6.2: {} - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 + cjs-module-lexer@1.4.3: {} cliui@8.0.1: dependencies: @@ -1661,6 +2530,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -1677,11 +2552,15 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 + commondir@1.0.1: {} + compare-func@2.0.0: dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 + concat-map@0.0.1: {} + concurrently@9.2.1: dependencies: chalk: 4.1.2 @@ -1706,7 +2585,9 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - cosmiconfig-typescript-loader@6.1.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + convert-source-map@2.0.0: {} + + cosmiconfig-typescript-loader@6.2.0(@types/node@24.7.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: '@types/node': 24.7.0 cosmiconfig: 9.0.0(typescript@5.9.3) @@ -1717,7 +2598,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 @@ -1743,20 +2624,18 @@ snapshots: detect-libc@2.0.4: {} - diff@8.0.2: {} - - dot-prop@10.1.0: - dependencies: - type-fest: 5.0.1 + dlv@1.1.3: {} dot-prop@5.3.0: dependencies: is-obj: 2.0.0 - dts-resolver@2.1.2: {} + dts-resolver@2.1.3: {} eastasianwidth@0.2.0: {} + electron-to-chromium@1.5.267: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -1771,6 +2650,8 @@ snapshots: escalade@3.2.0: {} + esprima@4.0.1: {} + fast-deep-equal@3.1.3: {} fast-uri@3.1.0: {} @@ -1779,20 +2660,42 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fflate@0.8.2: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-cache-dir@2.1.0: + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + find-up@7.0.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 unicorn-magic: 0.1.0 + flow-parser@0.295.0: {} + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 + fs.realpath@1.0.0: {} + + gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} - get-tsconfig@4.11.0: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -1811,10 +2714,25 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + global-directory@4.0.1: dependencies: ini: 4.1.1 + graceful-fs@4.2.11: {} + + gunshi@0.26.3: + dependencies: + args-tokens: 0.20.1 + has-flag@4.0.0: {} hookable@5.5.3: {} @@ -1826,6 +2744,17 @@ snapshots: import-meta-resolve@4.2.0: {} + import-without-cache@0.2.4: {} + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + ini@4.1.1: {} is-arrayish@0.2.1: {} @@ -1836,8 +2765,14 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-number@7.0.0: {} + is-obj@2.0.0: {} + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + is-text-path@2.0.0: dependencies: text-extensions: 2.4.0 @@ -1850,6 +2785,8 @@ snapshots: dependencies: isarray: 1.0.0 + isobject@3.0.1: {} + jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 @@ -1858,60 +2795,88 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 + jscodeshift@0.16.1: + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) + '@babel/register': 7.28.3(@babel/core@7.28.5) + chalk: 4.1.2 + flow-parser: 0.295.0 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.23.11 + temp: 0.9.4 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + jsesc@3.1.0: {} json-parse-even-better-errors@2.3.1: {} json-schema-traverse@1.0.0: {} + json5@2.2.3: {} + jsonparse@1.3.1: {} - lefthook-darwin-arm64@1.13.0: + kind-of@6.0.3: {} + + lefthook-darwin-arm64@2.0.12: optional: true - lefthook-darwin-x64@1.13.0: + lefthook-darwin-x64@2.0.12: optional: true - lefthook-freebsd-arm64@1.13.0: + lefthook-freebsd-arm64@2.0.12: optional: true - lefthook-freebsd-x64@1.13.0: + lefthook-freebsd-x64@2.0.12: optional: true - lefthook-linux-arm64@1.13.0: + lefthook-linux-arm64@2.0.12: optional: true - lefthook-linux-x64@1.13.0: + lefthook-linux-x64@2.0.12: optional: true - lefthook-openbsd-arm64@1.13.0: + lefthook-openbsd-arm64@2.0.12: optional: true - lefthook-openbsd-x64@1.13.0: + lefthook-openbsd-x64@2.0.12: optional: true - lefthook-windows-arm64@1.13.0: + lefthook-windows-arm64@2.0.12: optional: true - lefthook-windows-x64@1.13.0: + lefthook-windows-x64@2.0.12: optional: true - lefthook@1.13.0: + lefthook@2.0.12: optionalDependencies: - lefthook-darwin-arm64: 1.13.0 - lefthook-darwin-x64: 1.13.0 - lefthook-freebsd-arm64: 1.13.0 - lefthook-freebsd-x64: 1.13.0 - lefthook-linux-arm64: 1.13.0 - lefthook-linux-x64: 1.13.0 - lefthook-openbsd-arm64: 1.13.0 - lefthook-openbsd-x64: 1.13.0 - lefthook-windows-arm64: 1.13.0 - lefthook-windows-x64: 1.13.0 + lefthook-darwin-arm64: 2.0.12 + lefthook-darwin-x64: 2.0.12 + lefthook-freebsd-arm64: 2.0.12 + lefthook-freebsd-x64: 2.0.12 + lefthook-linux-arm64: 2.0.12 + lefthook-linux-x64: 2.0.12 + lefthook-openbsd-arm64: 2.0.12 + lefthook-openbsd-x64: 2.0.12 + lefthook-windows-arm64: 2.0.12 + lefthook-windows-x64: 2.0.12 line-column@1.0.2: dependencies: @@ -1920,6 +2885,11 @@ snapshots: lines-and-columns@1.2.4: {} + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + locate-path@7.2.0: dependencies: p-locate: 6.0.0 @@ -1979,36 +2949,90 @@ snapshots: lru-cache@11.2.1: {} - magic-string@0.30.19: + lru-cache@11.2.4: {} + + lru-cache@5.1.1: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + yallist: 3.1.1 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 meow@12.1.1: {} + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + minimatch@10.0.3: dependencies: '@isaacs/brace-expansion': 5.0.0 + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + minimist@1.2.8: {} minipass@7.1.2: {} + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + module-replacements-codemods@1.2.1: + dependencies: + '@ast-grep/napi': 0.25.7 + jscodeshift: 0.16.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + module-replacements@2.10.1: {} + + mri@1.2.0: {} + ms@2.1.3: {} + neo-async@2.6.2: {} + + node-dir@0.1.17: + dependencies: + minimatch: 3.1.2 + + node-releases@2.0.27: {} + + obug@2.1.1: {} + once@1.4.0: dependencies: wrappy: 1.0.2 + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@4.0.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 p-locate@6.0.0: dependencies: p-limit: 4.0.0 + p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -2020,8 +3044,12 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + path-exists@3.0.0: {} + path-exists@5.0.0: {} + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-scurry@2.0.0: @@ -2033,11 +3061,34 @@ snapshots: picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.3: {} - quansync@0.2.11: {} + pify@4.0.1: {} - readdirp@4.1.2: {} + pirates@4.0.7: {} + + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + + publint@0.3.16: + dependencies: + '@publint/pack': 0.1.2 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + sade: 1.8.1 + + quansync@1.0.0: {} + + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 require-directory@2.1.1: {} @@ -2049,51 +3100,65 @@ snapshots: resolve-pkg-maps@1.0.0: {} - rolldown-plugin-dts@0.16.11(rolldown@1.0.0-beta.42)(typescript@5.9.3): + rimraf@2.6.3: dependencies: - '@babel/generator': 7.28.3 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - ast-kit: 2.1.3 - birpc: 2.6.1 - debug: 4.4.3 - dts-resolver: 2.1.2 - get-tsconfig: 4.11.0 - magic-string: 0.30.19 - rolldown: 1.0.0-beta.42 + glob: 7.2.3 + + rolldown-plugin-dts@0.19.1(rolldown@1.0.0-beta.55)(typescript@5.9.3): + dependencies: + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + ast-kit: 2.2.0 + birpc: 4.0.0 + dts-resolver: 2.1.3 + get-tsconfig: 4.13.0 + obug: 2.1.1 + rolldown: 1.0.0-beta.55 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver - - supports-color - rolldown@1.0.0-beta.42: + rolldown@1.0.0-beta.55: dependencies: - '@oxc-project/types': 0.94.0 - '@rolldown/pluginutils': 1.0.0-beta.42 - ansis: 4.2.0 + '@oxc-project/types': 0.103.0 + '@rolldown/pluginutils': 1.0.0-beta.55 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.42 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.42 - '@rolldown/binding-darwin-x64': 1.0.0-beta.42 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.42 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.42 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.42 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.42 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.42 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.42 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.42 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.42 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.42 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 + '@rolldown/binding-android-arm64': 1.0.0-beta.55 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.55 + '@rolldown/binding-darwin-x64': 1.0.0-beta.55 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.55 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.55 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.55 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.55 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.55 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.55 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.55 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.55 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.55 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.55 rxjs@7.8.2: dependencies: tslib: 2.8.1 + sade@1.8.1: + dependencies: + mri: 1.2.0 + + semver@5.7.2: {} + + semver@6.3.1: {} + semver@7.7.2: {} + semver@7.7.3: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + sharp-cli@5.2.0: dependencies: bubble-stream-error: 1.0.0 @@ -2145,8 +3210,17 @@ snapshots: dependencies: is-arrayish: 0.3.2 + sisteransi@1.0.5: {} + sliced@1.0.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + split2@4.2.0: {} string-width@4.2.3: @@ -2177,68 +3251,89 @@ snapshots: dependencies: has-flag: 4.0.0 - tagged-tag@1.0.0: {} + temp@0.9.4: + dependencies: + mkdirp: 0.5.6 + rimraf: 2.6.3 text-extensions@2.4.0: {} through@2.3.8: {} - tinyexec@1.0.1: {} + tiny-invariant@1.3.3: {} + + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + tree-kill@1.2.2: {} - tsdown@0.15.6(typescript@5.9.3): + tsdown@0.18.1(@arethetypeswrong/core@0.18.2)(publint@0.3.16)(typescript@5.9.3): dependencies: ansis: 4.2.0 cac: 6.7.14 - chokidar: 4.0.3 - debug: 4.4.3 - diff: 8.0.2 + defu: 6.1.4 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-beta.42 - rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-beta.42)(typescript@5.9.3) - semver: 7.7.2 - tinyexec: 1.0.1 + import-without-cache: 0.2.4 + obug: 2.1.1 + picomatch: 4.0.3 + rolldown: 1.0.0-beta.55 + rolldown-plugin-dts: 0.19.1(rolldown@1.0.0-beta.55)(typescript@5.9.3) + semver: 7.7.3 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tree-kill: 1.2.2 - unconfig: 7.3.3 + unconfig-core: 7.4.2 + unrun: 0.2.20 optionalDependencies: + '@arethetypeswrong/core': 0.18.2 + publint: 0.3.16 typescript: 5.9.3 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' - oxc-resolver - - supports-color + - synckit - vue-tsc tslib@2.8.1: {} - type-fest@5.0.1: - dependencies: - tagged-tag: 1.0.0 + typescript@5.6.1-rc: {} typescript@5.9.3: {} - unconfig@7.3.3: + unconfig-core@7.4.2: dependencies: - '@quansync/fs': 0.1.5 - defu: 6.1.4 - jiti: 2.6.1 - quansync: 0.2.11 + '@quansync/fs': 1.0.0 + quansync: 1.0.0 undici-types@7.14.0: {} unicorn-magic@0.1.0: {} - vscode-get-config@0.5.0: + unrun@0.2.20: + dependencies: + rolldown: 1.0.0-beta.55 + + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - dot-prop: 10.1.0 + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + validate-npm-package-name@5.0.1: {} + + vscode-get-config@0.6.2: + dependencies: + dlv: 1.1.3 which@2.0.2: dependencies: @@ -2258,8 +3353,15 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + y18n@5.0.8: {} + yallist@3.1.1: {} + yargs-parser@21.1.1: {} yargs@17.7.2: @@ -2272,4 +3374,4 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} diff --git a/src/editor.ts b/src/editor.ts new file mode 100644 index 0000000..43d7753 --- /dev/null +++ b/src/editor.ts @@ -0,0 +1,282 @@ +import * as vscode from 'vscode'; +import { fileUriToScptUri } from './util.ts'; + +/** + * Custom editor provider for binary AppleScript (.scpt) files + * + * Shows a warning card view before allowing users to edit the file. + * When the user clicks "Edit File", it opens the file using the scpt: + * FileSystemProvider for decompilation and editing. + */ +export class ScptEditorProvider implements vscode.CustomReadonlyEditorProvider { + public static readonly viewType = 'applescript.binary'; + + constructor( + private readonly context: vscode.ExtensionContext, + // private readonly osaToolsAvailable: boolean, + ) {} + + /** + * Called when a .scpt file is opened + */ + async openCustomDocument(uri: vscode.Uri): Promise { + return new ScptDocument(uri); + } + + /** + * Called to resolve the custom editor view + */ + async resolveCustomEditor(document: ScptDocument, webviewPanel: vscode.WebviewPanel): Promise { + // Configure webview + webviewPanel.webview.options = { + enableScripts: true, + }; + + // Set the HTML content + webviewPanel.webview.html = this.getHtmlForWebview(webviewPanel.webview, document); + + // Handle messages from the webview + webviewPanel.webview.onDidReceiveMessage(async (message) => { + switch (message.command) { + case 'editFile': + await this.openFileForEditing(document.uri, webviewPanel); + break; + + case 'cancel': + // Just close the webview panel + webviewPanel.dispose(); + break; + } + }); + } + + /** + * Opens the file for editing using the scpt: FileSystemProvider + */ + private async openFileForEditing(uri: vscode.Uri, webviewPanel: vscode.WebviewPanel): Promise { + if (!this.context) { + vscode.window.showErrorMessage('Binary AppleScript files require macOS with osadecompile/osacompile tools'); + return; + } + + try { + // Convert file: URI to scpt: URI for virtual filesystem + const scptUri = fileUriToScptUri(uri); + + // Open in editor with AppleScript language + const doc = await vscode.workspace.openTextDocument(scptUri); + await vscode.languages.setTextDocumentLanguage(doc, 'applescript'); + await vscode.window.showTextDocument(doc, { + preview: false, + viewColumn: webviewPanel.viewColumn, + }); + + // Close the warning view + webviewPanel.dispose(); + } catch (error) { + vscode.window.showErrorMessage(`Failed to open file: ${error instanceof Error ? error.message : error}`); + } + } + + /** + * Generates a random nonce for CSP + */ + private getNonce(): string { + let text = ''; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + for (let i = 0; i < 32; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; + } + + /** + * Generates the HTML content for the warning view + */ + private getHtmlForWebview(webview: vscode.Webview, _document: ScptDocument): string { + const nonce = this.getNonce(); + + return ` + + + + + + Binary AppleScript File + + + +
+
+ + + +
+
+ The file is not displayed in the text editor because it is binary AppleScript. It will be decompiled when you click on "Edit File". +
+
+

What happens when you edit:

+
    +
  • The file will be decompiled using osadecompile
  • +
  • You can edit the source code in the editor
  • +
  • On save, the code will be compiled back to binary using osacompile
  • +
+

Things to note:

+
    +
  • Decompiled code may differ slightly from the original source
  • +
  • Comments and formatting might not be preserved
  • +
  • Compilation errors will prevent saving
  • +
+
+ +
+ + + + `; + } +} + +/** + * Represents a .scpt document in the custom editor + */ +class ScptDocument implements vscode.CustomDocument { + constructor(public readonly uri: vscode.Uri) {} + + dispose(): void { + // No resources to clean up + } +} diff --git a/src/filesystem.ts b/src/filesystem.ts new file mode 100644 index 0000000..1949f87 --- /dev/null +++ b/src/filesystem.ts @@ -0,0 +1,220 @@ +import { type FSWatcher, watch as watchSync } from 'node:fs'; +import { readFile, rename, stat, unlink } from 'node:fs/promises'; +import * as vscode from 'vscode'; +import { osacompileFromSource, osadecompile } from './osa.ts'; +import { scptUriToFileUri } from './util.ts'; + +/** + * Virtual FileSystemProvider for binary AppleScript (.scpt) files + * + * This provider intercepts file operations on scpt: URIs and handles + * decompilation on read and compilation on write, allowing users to + * edit binary .scpt files as text in the native VSCode editor. + */ +export class ScptFileSystemProvider implements vscode.FileSystemProvider { + private _emitter = new vscode.EventEmitter(); + private _watchers = new Map(); + + readonly onDidChangeFile: vscode.Event = this._emitter.event; + + /** + * Watch for changes to the underlying .scpt file + */ + watch(uri: vscode.Uri): vscode.Disposable { + const fileUri = scptUriToFileUri(uri); + const filePath = fileUri.fsPath; + + // If already watching, return existing watcher + if (this._watchers.has(filePath)) { + return new vscode.Disposable(() => { + // Don't actually dispose - other watchers might exist + }); + } + + // Watch the actual file for changes + const watcher = watchSync(filePath, async (eventType) => { + if (eventType === 'change' || eventType === 'rename') { + this._emitter.fire([ + { + type: vscode.FileChangeType.Changed, + uri: uri, + }, + ]); + } + }); + + this._watchers.set(filePath, watcher); + + return new vscode.Disposable(() => { + const w = this._watchers.get(filePath); + if (w) { + w.close(); + this._watchers.delete(filePath); + } + }); + } + + /** + * Get file metadata from the underlying .scpt file + */ + async stat(uri: vscode.Uri): Promise { + const fileUri = scptUriToFileUri(uri); + const filePath = fileUri.fsPath; + + try { + const stats = await stat(filePath); + + return { + type: vscode.FileType.File, + ctime: stats.ctimeMs, + mtime: stats.mtimeMs, + size: stats.size, // Note: This is the binary size, not decompiled size + }; + } catch { + throw vscode.FileSystemError.FileNotFound(uri); + } + } + + /** + * Read and decompile a .scpt file + */ + async readFile(uri: vscode.Uri): Promise { + const fileUri = scptUriToFileUri(uri); + const filePath = fileUri.fsPath; + + try { + // Decompile the binary file + const sourceCode = await osadecompile(filePath); + + // Return as UTF-8 bytes + return Buffer.from(sourceCode, 'utf-8'); + } catch { + // If decompilation fails, try reading as text (might be a plain text file) + try { + const buffer = await readFile(filePath); + return new Uint8Array(buffer); + } catch { + throw vscode.FileSystemError.FileNotFound(uri); + } + } + } + + /** + * Compile and write a .scpt file + */ + async writeFile( + uri: vscode.Uri, + content: Uint8Array, + options: { create: boolean; overwrite: boolean }, + ): Promise { + const fileUri = scptUriToFileUri(uri); + const filePath = fileUri.fsPath; + + try { + // Check if file exists + const exists = await stat(filePath) + .then(() => true) + .catch(() => false); + + if (!exists && !options.create) { + throw vscode.FileSystemError.FileNotFound(uri); + } + + if (exists && !options.overwrite) { + throw vscode.FileSystemError.FileExists(uri); + } + + // Convert content to string + const sourceCode = Buffer.from(content).toString('utf-8'); + + // Compile to binary .scpt + await osacompileFromSource(sourceCode, filePath); + + // Fire change event + this._emitter.fire([ + { + type: exists ? vscode.FileChangeType.Changed : vscode.FileChangeType.Created, + uri: uri, + }, + ]); + } catch (error) { + if (error instanceof vscode.FileSystemError) { + throw error; + } + + // Intentionally keeping minimal JXA compability + if ((error as Error).message.includes('A unknown token can’t go after this identifier')) { + vscode.window.showErrorMessage( + 'Failed to write file. If you are trying to compile JXA to binary AppleScript, you will need to set the correct language for the source.', + ); + return; + } + + throw vscode.FileSystemError.Unavailable((error as Error).message); + } + } + + /** + * Rename operation (move the underlying .scpt file) + */ + async rename(oldUri: vscode.Uri, newUri: vscode.Uri): Promise { + const oldFileUri = scptUriToFileUri(oldUri); + const newFileUri = scptUriToFileUri(newUri); + + try { + await rename(oldFileUri.fsPath, newFileUri.fsPath); + + this._emitter.fire([ + { type: vscode.FileChangeType.Deleted, uri: oldUri }, + { type: vscode.FileChangeType.Created, uri: newUri }, + ]); + } catch (error) { + throw vscode.FileSystemError.Unavailable(`Failed to rename: ${(error as Error).message}`); + } + } + + /** + * Delete the underlying .scpt file + */ + async delete(uri: vscode.Uri): Promise { + const fileUri = scptUriToFileUri(uri); + + try { + await unlink(fileUri.fsPath); + + this._emitter.fire([ + { + type: vscode.FileChangeType.Deleted, + uri: uri, + }, + ]); + } catch { + throw vscode.FileSystemError.FileNotFound(uri); + } + } + + /** + * Create directory (not supported for .scpt files) + */ + async createDirectory(): Promise { + throw vscode.FileSystemError.NoPermissions('Cannot create directory in scpt: filesystem'); + } + + /** + * Read directory (not supported for .scpt files) + */ + async readDirectory(uri: vscode.Uri): Promise<[string, vscode.FileType][]> { + throw vscode.FileSystemError.FileNotADirectory(uri); + } + + /** + * Dispose of all watchers + */ + dispose(): void { + for (const watcher of this._watchers.values()) { + watcher.close(); + } + this._watchers.clear(); + this._emitter.dispose(); + } +} diff --git a/src/index.ts b/src/index.ts index bed3a03..39083d3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,22 +1,71 @@ -import { commands, type ExtensionContext, languages } from 'vscode'; +import { commands, type ExtensionContext, languages, type Uri, window, workspace } from 'vscode'; +import { ScptEditorProvider } from './editor.ts'; +import { ScptFileSystemProvider } from './filesystem.ts'; import { osacompile, osascript } from './osa.ts'; import { appleScriptSymbolProvider } from './outline.ts'; -import { jxaSymbolProvider } from './outline-jxa.ts'; import { pick } from './processes.ts'; import { createBuildTask } from './task.ts'; +import { fileUriToScptUri } from './util.ts'; /** * Activate the VS Code extension. * - * This registers editor/command handlers for AppleScript and JXA workflows + * This registers editor/command handlers for AppleScript workflows * (run, compile, build task creation, termination) and hooks the document - * symbol providers for the `applescript` and `jxa` languages. + * symbol providers for the `applescript` and languages. */ async function activate(context: ExtensionContext): Promise { + // Register virtual filesystem provider for binary .scpt files + const scptFs = new ScptFileSystemProvider(); + context.subscriptions.push( + workspace.registerFileSystemProvider('scpt', scptFs, { + isCaseSensitive: true, + isReadonly: false, + }), + ); + + // Register custom editor for binary .scpt files (shows warning card) + const scptEditorProvider = new ScptEditorProvider(context); + context.subscriptions.push( + window.registerCustomEditorProvider(ScptEditorProvider.viewType, scptEditorProvider, { + webviewOptions: { + retainContextWhenHidden: true, + }, + supportsMultipleEditorsPerDocument: false, + }), + ); + context.subscriptions.push( /** - * AppleScript + * Binary .scpt file support */ + commands.registerCommand('extension.applescript.openBinaryFile', async (uri?: Uri) => { + // Resolve the target URI + const targetUri = + uri ?? + (await (async () => { + const selected = await window.showOpenDialog({ + canSelectFiles: true, + canSelectFolders: false, + canSelectMany: false, + filters: { 'AppleScript Binary': ['scpt', 'scptd'] }, + title: 'Open Binary AppleScript File', + }); + return selected?.[0]; + })()); + + if (!targetUri) { + return; + } + + // Convert file: URI to scpt: URI for virtual filesystem + const scptUri = fileUriToScptUri(targetUri); + + // Open in editor with AppleScript language + const doc = await workspace.openTextDocument(scptUri); + await languages.setTextDocumentLanguage(doc, 'applescript'); + await window.showTextDocument(doc, { preview: false }); + }), commands.registerTextEditorCommand('extension.applescript.run', async () => { return await osascript(); }), @@ -45,39 +94,7 @@ async function activate(context: ExtensionContext): Promise { await pick(); }), - /** - * JXA - */ - commands.registerTextEditorCommand('extension.jxa.run', async () => { - return await osascript({ isJXA: true }); - }), - - commands.registerTextEditorCommand('extension.jxa.compile', async () => { - return await osacompile('scpt', { isJXA: true }); - }), - - commands.registerTextEditorCommand('extension.jxa.compileBundle', async () => { - return await osacompile('scptd', { isJXA: true }); - }), - - commands.registerTextEditorCommand('extension.jxa.compileApp', async () => { - return await osacompile('app', { isJXA: true }); - }), - - commands.registerTextEditorCommand('extension.jxa.createBuildTask', async () => { - return await createBuildTask(true); - }), - - commands.registerCommand('extension.jxa.openSettings', () => { - commands.executeCommand('workbench.action.openSettings', '@ext:idleberg.applescript'); - }), - - commands.registerTextEditorCommand('extension.jxa.terminateProcess', async () => { - await pick(); - }), - languages.registerDocumentSymbolProvider({ language: 'applescript' }, appleScriptSymbolProvider), - languages.registerDocumentSymbolProvider({ language: 'jxa' }, jxaSymbolProvider), ); } diff --git a/src/osa.ts b/src/osa.ts index e1d2634..fc33db7 100644 --- a/src/osa.ts +++ b/src/osa.ts @@ -5,11 +5,11 @@ import { getOutName, spawnPromise } from './util.ts'; const outputChannel = window.createOutputChannel('AppleScript'); -async function osacompile(compileTarget: string, userOptions: CommandFlags = { isJXA: false }): Promise { +async function osacompile(compileTarget: string): Promise { const { ignoreOS, osacompile, showNotifications } = await getConfig('applescript'); // might become useful in a future release - const options = { ...userOptions, ...osacompile }; + const options = { ...osacompile }; if (platform() !== 'darwin' && ignoreOS !== true) { window.showWarningMessage('This command is only available on macOS'); @@ -23,14 +23,18 @@ async function osacompile(compileTarget: string, userOptions: CommandFlags = { i return; } + // Intentionally keeping minimal JXA compability + if (doc.uri.scheme === 'scpt') { + window.showErrorMessage( + 'You are trying to build a decompiled AppleScript file. Please use the save dialog instead.', + ); + return; + } + doc.save().then(() => { const outName = getOutName(doc.fileName, compileTarget); const args: string[] = ['-o', outName]; - if (options.isJXA === true) { - args.push('-l', 'JavaScript'); - } - if (options.executeOnly === true) { args.push('-x'); } @@ -63,7 +67,7 @@ async function osacompile(compileTarget: string, userOptions: CommandFlags = { i }); } -async function osascript(options: CommandFlags = { isJXA: false }): Promise { +async function osascript(): Promise { const { ignoreOS, osascript, showNotifications } = await getConfig('applescript'); if (platform() !== 'darwin' && ignoreOS !== true) { @@ -94,10 +98,6 @@ async function osascript(options: CommandFlags = { isJXA: false }): Promise { console.error('[idleberg.applescript]', error instanceof Error ? error.message : error); outputChannel.show(); @@ -108,4 +108,111 @@ async function osascript(options: CommandFlags = { isJXA: false }): Promise { + const { ignoreOS } = await getConfig('applescript'); + + if (platform() !== 'darwin' && ignoreOS !== true) { + throw new Error('osadecompile is only available on macOS'); + } + + return new Promise((resolve, reject) => { + const { spawn } = require('node:child_process'); + const process = spawn('osadecompile', [filePath]); + + const stdout: string[] = []; + const stderr: string[] = []; + + process.stdout.on('data', (data: Buffer) => { + stdout.push(data.toString()); + }); + + process.stderr.on('data', (data: Buffer) => { + stderr.push(data.toString()); + }); + + process.on('close', (code: number) => { + if (code !== 0) { + const error = stderr || 'Unknown error'; + console.error('[idleberg.applescript] osadecompile failed:', error); + reject(new Error(`Failed to decompile ${filePath}: ${error}`)); + } else { + resolve(stdout.join('')); + } + }); + + process.on('error', (error: Error) => { + console.error('[idleberg.applescript] osadecompile error:', error); + reject(error); + }); + }); +} + +/** + * Compiles AppleScript source to a binary file using stdin + * @param sourceCode AppleScript source code + * @param outputPath Path where the compiled .scpt should be written + */ +async function osacompileFromSource(sourceCode: string, outputPath: string): Promise { + const { ignoreOS } = await getConfig('applescript'); + + if (platform() !== 'darwin' && ignoreOS !== true) { + throw new Error('osacompile is only available on macOS'); + } + + const args: string[] = []; + const textEditor = window.activeTextEditor; + + if (textEditor) { + const scope = textEditor.document.languageId; + + // Intentionally keeping minimal JXA compability + if (['javascript', 'jxa'].includes(scope)) { + args.push('-l', 'JavaScript'); + } + } + + // Default arguments + args.push('-o', outputPath, '-'); + + return new Promise((resolve, reject) => { + const { spawn } = require('node:child_process'); + const process = spawn('osacompile', args); + + const stdout: string[] = []; + const stderr: string[] = []; + + process.stdout.on('data', (data: Buffer) => { + stdout.push(data.toString()); + }); + + process.stderr.on('data', (data: Buffer) => { + stderr.push(data.toString()); + }); + + process.on('close', (code: number) => { + if (code !== 0) { + const error = stderr || 'Unknown error'; + console.error('[idleberg.applescript] osacompile failed:', error); + reject(new Error(`Failed to compile to ${outputPath}: ${error}`)); + } else { + resolve(stdout.join('')); + } + }); + + process.on('error', (error: Error) => { + console.error('[idleberg.applescript] osacompile error:', error); + reject(error); + }); + + // Write source code to stdin + process.stdin.write(sourceCode); + process.stdin.end(); + }); +} + +export { osacompile, osacompileFromSource, osadecompile, osascript }; diff --git a/src/outline-jxa.ts b/src/outline-jxa.ts deleted file mode 100644 index 07a2592..0000000 --- a/src/outline-jxa.ts +++ /dev/null @@ -1,330 +0,0 @@ -import type { Node } from 'acorn'; -import { DocumentSymbol, type DocumentSymbolProvider, Range, SymbolKind } from 'vscode'; -import type { - ArrowFunctionExpression, - BaseNode, - BlockStatement, - ClassDeclaration, - DoWhileStatement, - ForInStatement, - ForOfStatement, - ForStatement, - FunctionDeclaration, - FunctionExpression, - Identifier, - IfStatement, - Program, - Statement, - SwitchStatement, - TryStatement, - VariableDeclaration, - WhileStatement, - WithStatement, -} from '../types/acorn-types'; - -/** - * Creates a DocumentSymbol from an acorn AST node. - * - * @param node - The acorn AST node with location information - * @param name - The name to display for this symbol - * @param kind - The VS Code SymbolKind for this symbol - * @returns A DocumentSymbol with proper range and empty children array - */ -function createSymbol(node: BaseNode, name: string, kind: SymbolKind): DocumentSymbol { - const range = new Range(node.loc.start.line - 1, node.loc.start.column, node.loc.end.line - 1, node.loc.end.column); - const symbol = new DocumentSymbol(name, '', kind, range, range); - symbol.children = []; - return symbol; -} - -/** - * Processes the body of conditional statements and loops. - * - * Handles both block statements (with curly braces) and single statements. - * For block statements, processes all statements within the block. - * For single statements, wraps them in an array and processes them. - * - * @param stmt - The statement node (either BlockStatement or any other statement) - * @param parent - The parent DocumentSymbol to add nested symbols to - * @param processedNodes - WeakSet tracking already processed nodes to avoid duplicates - */ -function processConditionalBody(stmt: Statement, parent: DocumentSymbol, processedNodes: WeakSet) { - if (stmt.type === 'BlockStatement') { - const blockStmt = stmt as BlockStatement; - processBlockContent(blockStmt.body, parent, processedNodes); - } else { - processBlockContent([stmt], parent, processedNodes); - } -} - -/** - * Processes variable declaration statements to extract symbols. - * - * Handles const, let, and var declarations. Determines the appropriate - * SymbolKind based on the declaration type and initializer: - * - Functions (arrow or regular) become Function symbols with nested content - * - Classes become Class symbols - * - Constants become Constant symbols - * - Regular variables become Variable symbols - * - * @param node - The VariableDeclaration AST node - * @param parentArray - Either an array of symbols or a parent symbol with children - * @param processedNodes - WeakSet tracking already processed nodes to avoid duplicates - */ -function processVariableDeclaration( - node: VariableDeclaration, - parentArray: DocumentSymbol[] | DocumentSymbol, - processedNodes: WeakSet, -) { - const targetArray = Array.isArray(parentArray) ? parentArray : parentArray.children || []; - - for (const decl of node.declarations) { - // Skip destructuring patterns for now - if (decl.id.type !== 'Identifier') continue; - - const id = decl.id as Identifier; - let kind = SymbolKind.Variable; - - // Determine the symbol kind based on the initializer - if (decl.init) { - if (decl.init.type === 'ArrowFunctionExpression' || decl.init.type === 'FunctionExpression') { - kind = SymbolKind.Function; - const funcSymbol = createSymbol(decl, id.name, kind); - targetArray.push(funcSymbol); - - // Process function body if it exists - const funcExpr = decl.init as ArrowFunctionExpression | FunctionExpression; - if (funcExpr.body.type === 'BlockStatement') { - processBlockContent(funcExpr.body.body, funcSymbol, processedNodes); - } - continue; - } - if (decl.init.type === 'ClassExpression') { - kind = SymbolKind.Class; - } else if (node.kind === 'const') { - kind = SymbolKind.Constant; - } - } else if (node.kind === 'const') { - kind = SymbolKind.Constant; - } - - targetArray.push(createSymbol(decl, id.name, kind)); - } -} - -/** - * Recursively processes an array of statements to extract nested symbols. - * - * This is the core function that walks through the AST and builds the symbol hierarchy. - * It handles various JavaScript/JXA constructs including: - * - Function declarations (with nested content) - * - Variable declarations (const, let, var) - * - Control flow statements (if/else, for, while, try/catch, switch) - * - Block statements - * - * Uses a WeakSet to track processed nodes and avoid duplicate processing, - * which is important when dealing with nested structures. - * - * @param statements - Array of AST statement nodes to process - * @param parent - The parent DocumentSymbol to add discovered symbols to - * @param processedNodes - WeakSet tracking already processed nodes to avoid duplicates - */ -function processBlockContent(statements: Statement[], parent: DocumentSymbol, processedNodes: WeakSet) { - for (const stmt of statements) { - // Skip if already processed - if (processedNodes.has(stmt)) continue; - processedNodes.add(stmt); - - switch (stmt.type) { - case 'FunctionDeclaration': { - const funcDecl = stmt as FunctionDeclaration; - if (funcDecl.id) { - const funcSymbol = createSymbol(funcDecl, funcDecl.id.name, SymbolKind.Function); - parent.children?.push(funcSymbol); - - // Recursively process nested content - processBlockContent(funcDecl.body.body, funcSymbol, processedNodes); - } - break; - } - - case 'VariableDeclaration': - processVariableDeclaration(stmt as VariableDeclaration, parent, processedNodes); - break; - - case 'IfStatement': { - const ifStmt = stmt as IfStatement; - // Process if/else blocks - processConditionalBody(ifStmt.consequent, parent, processedNodes); - if (ifStmt.alternate) { - processConditionalBody(ifStmt.alternate, parent, processedNodes); - } - break; - } - - case 'ForStatement': { - const forStmt = stmt as ForStatement; - processConditionalBody(forStmt.body, parent, processedNodes); - break; - } - - case 'ForInStatement': { - const forInStmt = stmt as ForInStatement; - processConditionalBody(forInStmt.body, parent, processedNodes); - break; - } - - case 'ForOfStatement': { - const forOfStmt = stmt as ForOfStatement; - processConditionalBody(forOfStmt.body, parent, processedNodes); - break; - } - - case 'WhileStatement': { - const whileStmt = stmt as WhileStatement; - processConditionalBody(whileStmt.body, parent, processedNodes); - break; - } - - case 'DoWhileStatement': { - const doWhileStmt = stmt as DoWhileStatement; - processConditionalBody(doWhileStmt.body, parent, processedNodes); - break; - } - - case 'TryStatement': { - const tryStmt = stmt as TryStatement; - // Process try/catch/finally blocks - processBlockContent(tryStmt.block.body, parent, processedNodes); - if (tryStmt.handler) { - processBlockContent(tryStmt.handler.body.body, parent, processedNodes); - } - if (tryStmt.finalizer) { - processBlockContent(tryStmt.finalizer.body, parent, processedNodes); - } - break; - } - - case 'SwitchStatement': { - const switchStmt = stmt as SwitchStatement; - // Process switch cases - for (const switchCase of switchStmt.cases) { - processBlockContent(switchCase.consequent, parent, processedNodes); - } - break; - } - - case 'WithStatement': { - const withStmt = stmt as WithStatement; - processConditionalBody(withStmt.body, parent, processedNodes); - break; - } - - case 'BlockStatement': { - const blockStmt = stmt as BlockStatement; - // Process nested block statements - processBlockContent(blockStmt.body, parent, processedNodes); - break; - } - } - } -} - -/** - * JXA (JavaScript for Automation) Document Symbol Provider. - * - * Uses the acorn JavaScript parser to build a proper symbol hierarchy for JXA files. - * This implementation manually walks the AST to extract symbols and maintain their - * hierarchical relationships, ensuring that: - * - Nested functions within classes are properly shown - * - Variables are scoped correctly to their containing functions - * - All JavaScript constructs (classes, methods, functions, variables) are recognized - * - * The provider handles various edge cases including: - * - Arrow functions and function expressions - * - Class declarations and expressions - * - Destructuring patterns (currently skipped) - * - Control flow statements with nested content - * - Duplicate symbol prevention using WeakSet tracking - */ -export const jxaSymbolProvider: DocumentSymbolProvider = { - async provideDocumentSymbols(document) { - try { - const text = document.getText(); - - // Use acorn to parse JavaScript/JXA code - const acorn = await import('acorn'); - - // Parse the code into an AST - const ast = acorn.parse(text, { - ecmaVersion: 'latest', - sourceType: 'script', // JXA behaves more like a script than a module - locations: true, - allowReturnOutsideFunction: true, - allowImportExportEverywhere: true, - allowAwaitOutsideFunction: true, - }) as Program; - - const symbols: DocumentSymbol[] = []; - const processedNodes = new WeakSet(); - - // Process top-level declarations only - for (const node of ast.body) { - switch (node.type) { - case 'ClassDeclaration': { - const classDecl = node as ClassDeclaration; - if (classDecl.id) { - const classSymbol = createSymbol(classDecl, classDecl.id.name, SymbolKind.Class); - symbols.push(classSymbol); - processedNodes.add(node); - - // Process class methods - for (const member of classDecl.body.body) { - if (member.type === 'MethodDefinition' && member.key) { - const key = member.key as Identifier; - const methodName = key.name; - if (methodName) { - const methodSymbol = createSymbol( - member, - methodName, - member.kind === 'constructor' ? SymbolKind.Constructor : SymbolKind.Method, - ); - classSymbol.children.push(methodSymbol); - - // Process method body - if (member.value.body) { - processBlockContent(member.value.body.body, methodSymbol, processedNodes); - } - } - } - } - } - break; - } - - case 'FunctionDeclaration': { - const funcDecl = node as FunctionDeclaration; - if (funcDecl.id) { - const funcSymbol = createSymbol(funcDecl, funcDecl.id.name, SymbolKind.Function); - symbols.push(funcSymbol); - processedNodes.add(node); - - // Process function body - processBlockContent(funcDecl.body.body, funcSymbol, processedNodes); - } - break; - } - - case 'VariableDeclaration': - processVariableDeclaration(node as VariableDeclaration, symbols, processedNodes); - break; - } - } - - return symbols; - } catch (error) { - console.error('Error parsing JXA file:', error); - return []; - } - }, -}; diff --git a/src/processes.ts b/src/processes.ts index 0650043..6c3c4a4 100644 --- a/src/processes.ts +++ b/src/processes.ts @@ -2,6 +2,12 @@ import { kill } from 'node:process'; import { window } from 'vscode'; import { getConfig } from 'vscode-get-config'; +type ActiveProcess = { + created: number; + file: string; + process: string; +}; + const activeProcesses = new Map(); export let lastKilledProcessId = 0; diff --git a/src/util.ts b/src/util.ts index 3f6e51f..6b34aec 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,10 +1,9 @@ import { spawn } from 'node:child_process'; import { constants } from 'node:fs'; import { access } from 'node:fs/promises'; -// Dependencies import { basename, dirname, extname, join } from 'node:path'; import lineColumn from 'line-column'; -import { type OutputChannel, window } from 'vscode'; +import { type OutputChannel, type Uri, window } from 'vscode'; import { getConfig } from 'vscode-get-config'; import * as activeProcesses from './processes.ts'; @@ -120,3 +119,17 @@ export async function fileExists(filePath: string): Promise { return true; } + +/** + * Converts a file: URI to a scpt: URI for the virtual filesystem + */ +export function fileUriToScptUri(uri: Uri): Uri { + return uri.with({ scheme: 'scpt' }); +} + +/** + * Converts a scpt: URI back to a file: URI + */ +export function scptUriToFileUri(uri: Uri): Uri { + return uri.with({ scheme: 'file' }); +} diff --git a/syntaxes/jxa.tmLanguage b/syntaxes/jxa.tmLanguage deleted file mode 100644 index 7481f2b..0000000 --- a/syntaxes/jxa.tmLanguage +++ /dev/null @@ -1,27 +0,0 @@ - - - - - fileTypes - - jxa - jxainc - js - - name - JavaScript for Automation (JXA) - comment - https://github.com/idleberg/vscode-applescript - patterns - - - include - source.js - - - scopeName - source.js.jxa - uuid - 1d9fb1ad-346c-4b80-9b9f-5daff26885d7 - - \ No newline at end of file diff --git a/tsdown.config.ts b/tsdown.config.ts index 2f430c9..274335e 100644 --- a/tsdown.config.ts +++ b/tsdown.config.ts @@ -8,7 +8,7 @@ export default defineConfig({ external: ['vscode'], format: 'cjs', minify: true, - noExternal: ['acorn', 'line-column', 'vscode-get-config'], + noExternal: ['line-column', 'vscode-get-config'], outDir: 'lib', platform: 'node', target: 'es2020', diff --git a/types/acorn-types.ts b/types/acorn-types.ts deleted file mode 100644 index 93ebe7d..0000000 --- a/types/acorn-types.ts +++ /dev/null @@ -1,329 +0,0 @@ -/** - * Extended Acorn AST type definitions for the specific nodes we use. - * These extend the base acorn types with the properties we need to access. - */ - -import type { Node, SourceLocation } from 'acorn'; - -export interface BaseNode extends Node { - loc: SourceLocation; -} - -export interface Identifier extends BaseNode { - type: 'Identifier'; - name: string; -} - -export interface VariableDeclarator extends BaseNode { - type: 'VariableDeclarator'; - id: Identifier | Pattern; - init?: Expression; -} - -export interface VariableDeclaration extends BaseNode { - type: 'VariableDeclaration'; - declarations: VariableDeclarator[]; - kind: 'const' | 'let' | 'var'; -} - -export interface BlockStatement extends BaseNode { - type: 'BlockStatement'; - body: Statement[]; -} - -export interface FunctionDeclaration extends BaseNode { - type: 'FunctionDeclaration'; - id: Identifier | null; - params: Pattern[]; - body: BlockStatement; -} - -export interface FunctionExpression extends BaseNode { - type: 'FunctionExpression'; - id?: Identifier | null; - params: Pattern[]; - body: BlockStatement; -} - -export interface ArrowFunctionExpression extends BaseNode { - type: 'ArrowFunctionExpression'; - params: Pattern[]; - body: BlockStatement | Expression; -} - -export interface ClassDeclaration extends BaseNode { - type: 'ClassDeclaration'; - id: Identifier | null; - body: ClassBody; -} - -export interface ClassExpression extends BaseNode { - type: 'ClassExpression'; - id?: Identifier | null; - body: ClassBody; -} - -export interface ClassBody extends BaseNode { - type: 'ClassBody'; - body: MethodDefinition[]; -} - -export interface MethodDefinition extends BaseNode { - type: 'MethodDefinition'; - key: Identifier | Expression; - value: FunctionExpression; - kind: 'constructor' | 'method' | 'get' | 'set'; - static: boolean; -} - -export interface IfStatement extends BaseNode { - type: 'IfStatement'; - test: Expression; - consequent: Statement; - alternate?: Statement | null; -} - -export interface ForStatement extends BaseNode { - type: 'ForStatement'; - init?: VariableDeclaration | Expression | null; - test?: Expression | null; - update?: Expression | null; - body: Statement; -} - -export interface ForInStatement extends BaseNode { - type: 'ForInStatement'; - left: VariableDeclaration | Pattern; - right: Expression; - body: Statement; -} - -export interface ForOfStatement extends BaseNode { - type: 'ForOfStatement'; - left: VariableDeclaration | Pattern; - right: Expression; - body: Statement; -} - -export interface WhileStatement extends BaseNode { - type: 'WhileStatement'; - test: Expression; - body: Statement; -} - -export interface DoWhileStatement extends BaseNode { - type: 'DoWhileStatement'; - body: Statement; - test: Expression; -} - -export interface TryStatement extends BaseNode { - type: 'TryStatement'; - block: BlockStatement; - handler?: CatchClause | null; - finalizer?: BlockStatement | null; -} - -export interface CatchClause extends BaseNode { - type: 'CatchClause'; - param?: Pattern | null; - body: BlockStatement; -} - -export interface SwitchStatement extends BaseNode { - type: 'SwitchStatement'; - discriminant: Expression; - cases: SwitchCase[]; -} - -export interface SwitchCase extends BaseNode { - type: 'SwitchCase'; - test?: Expression | null; - consequent: Statement[]; -} - -export interface WithStatement extends BaseNode { - type: 'WithStatement'; - object: Expression; - body: Statement; -} - -export interface NewExpression extends BaseNode { - type: 'NewExpression'; - callee: Expression | Identifier; - arguments: Expression[]; -} - -export interface Program extends BaseNode { - type: 'Program'; - body: Statement[]; - sourceType: 'script' | 'module'; -} - -// Union types for categories -export type Statement = - | BlockStatement - | VariableDeclaration - | FunctionDeclaration - | ClassDeclaration - | IfStatement - | ForStatement - | ForInStatement - | ForOfStatement - | WhileStatement - | DoWhileStatement - | TryStatement - | SwitchStatement - | WithStatement - | ExpressionStatement - | ReturnStatement - | ThrowStatement - | BreakStatement - | ContinueStatement; - -export type Expression = - | Identifier - | FunctionExpression - | ArrowFunctionExpression - | ClassExpression - | NewExpression - | CallExpression - | MemberExpression - | AssignmentExpression - | BinaryExpression - | UnaryExpression - | UpdateExpression - | LogicalExpression - | ConditionalExpression - | ArrayExpression - | ObjectExpression - | Literal; - -export type Pattern = Identifier | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern; - -// Additional types we reference but don't fully define -export interface ExpressionStatement extends BaseNode { - type: 'ExpressionStatement'; - expression: Expression; -} - -export interface ReturnStatement extends BaseNode { - type: 'ReturnStatement'; - argument?: Expression | null; -} - -export interface ThrowStatement extends BaseNode { - type: 'ThrowStatement'; - argument: Expression; -} - -export interface BreakStatement extends BaseNode { - type: 'BreakStatement'; - label?: Identifier | null; -} - -export interface ContinueStatement extends BaseNode { - type: 'ContinueStatement'; - label?: Identifier | null; -} - -export interface CallExpression extends BaseNode { - type: 'CallExpression'; - callee: Expression; - arguments: Expression[]; -} - -export interface MemberExpression extends BaseNode { - type: 'MemberExpression'; - object: Expression; - property: Expression; - computed: boolean; -} - -export interface AssignmentExpression extends BaseNode { - type: 'AssignmentExpression'; - operator: string; - left: Pattern | Expression; - right: Expression; -} - -export interface BinaryExpression extends BaseNode { - type: 'BinaryExpression'; - operator: string; - left: Expression; - right: Expression; -} - -export interface UnaryExpression extends BaseNode { - type: 'UnaryExpression'; - operator: string; - argument: Expression; - prefix: boolean; -} - -export interface UpdateExpression extends BaseNode { - type: 'UpdateExpression'; - operator: '++' | '--'; - argument: Expression; - prefix: boolean; -} - -export interface LogicalExpression extends BaseNode { - type: 'LogicalExpression'; - operator: '||' | '&&' | '??'; - left: Expression; - right: Expression; -} - -export interface ConditionalExpression extends BaseNode { - type: 'ConditionalExpression'; - test: Expression; - consequent: Expression; - alternate: Expression; -} - -export interface ArrayExpression extends BaseNode { - type: 'ArrayExpression'; - elements: (Expression | null)[]; -} - -export interface ObjectExpression extends BaseNode { - type: 'ObjectExpression'; - properties: Property[]; -} - -export interface Property extends BaseNode { - type: 'Property'; - key: Expression; - value: Expression; - kind: 'init' | 'get' | 'set'; - shorthand: boolean; - computed: boolean; -} - -export interface Literal extends BaseNode { - type: 'Literal'; - value: string | number | boolean | null | RegExp; - raw: string; -} - -export interface ObjectPattern extends BaseNode { - type: 'ObjectPattern'; - properties: Property[]; -} - -export interface ArrayPattern extends BaseNode { - type: 'ArrayPattern'; - elements: (Pattern | null)[]; -} - -export interface RestElement extends BaseNode { - type: 'RestElement'; - argument: Pattern; -} - -export interface AssignmentPattern extends BaseNode { - type: 'AssignmentPattern'; - left: Pattern; - right: Expression; -} diff --git a/types/index.d.ts b/types/index.d.ts deleted file mode 100644 index f9d70b7..0000000 --- a/types/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -type CommandFlags = { - executeOnly?: boolean; - isJXA?: boolean; - startupScreen?: boolean; - stayOpen?: boolean; -}; - -type ActiveProcess = { - created: number; - file: string; - process: string; -};