From 2fcc74aa54817a2629d1fd6b1c7149a6e6f705b2 Mon Sep 17 00:00:00 2001 From: Aviel Lanzman Date: Mon, 27 Apr 2026 08:42:55 +0300 Subject: [PATCH 01/21] feat: add Windsurf support --- README.md | 1 + packages/launch-editor/editor-info/linux.js | 3 ++- packages/launch-editor/editor-info/macos.js | 3 ++- packages/launch-editor/editor-info/windows.js | 3 ++- packages/launch-editor/get-args.js | 3 ++- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 61bae53..5c46e9c 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ To launch files, send requests to the server like the following: | `code-insiders` | [Visual Studio Code Insiders](https://code.visualstudio.com/insiders/) | ✓ | ✓ | ✓ | | `codium` | [VSCodium](https://github.com/VSCodium/vscodium) | ✓ | ✓ | ✓ | | `cursor` | [Cursor](https://www.cursor.com/) | ✓ | ✓ | ✓ | +| `windsurf` | [Windsurf](https://windsurf.ai/) | ✓ | ✓ | ✓ | | `emacs` | [Emacs](https://www.gnu.org/software/emacs/) | ✓ | | | | `idea` | [IDEA](https://www.jetbrains.com/idea/) | ✓ | ✓ | ✓ | | `notepad++` | [Notepad++](https://notepad-plus-plus.org/download/v7.5.4.html) | | ✓ | | diff --git a/packages/launch-editor/editor-info/linux.js b/packages/launch-editor/editor-info/linux.js index 226d9bc..8a90c43 100644 --- a/packages/launch-editor/editor-info/linux.js +++ b/packages/launch-editor/editor-info/linux.js @@ -26,5 +26,6 @@ module.exports = { 'goland.sh': 'goland', rider: 'rider', 'rider.sh': 'rider', - zed: 'zed' + zed: 'zed', + windsurf: 'windsurf' } diff --git a/packages/launch-editor/editor-info/macos.js b/packages/launch-editor/editor-info/macos.js index 64ef300..8cf66ee 100644 --- a/packages/launch-editor/editor-info/macos.js +++ b/packages/launch-editor/editor-info/macos.js @@ -46,5 +46,6 @@ module.exports = { '/Applications/GoLand.app/Contents/MacOS/goland', '/Applications/Rider.app/Contents/MacOS/rider': '/Applications/Rider.app/Contents/MacOS/rider', - '/Applications/Zed.app/Contents/MacOS/zed': 'zed' + '/Applications/Zed.app/Contents/MacOS/zed': 'zed', + '/Applications/Windsurf.app/Contents/MacOS/Windsurf': 'windsurf' } diff --git a/packages/launch-editor/editor-info/windows.js b/packages/launch-editor/editor-info/windows.js index 17340c9..5a29b0b 100644 --- a/packages/launch-editor/editor-info/windows.js +++ b/packages/launch-editor/editor-info/windows.js @@ -25,5 +25,6 @@ module.exports = [ 'rider64.exe', 'Trae.exe', 'zed.exe', - 'Antigravity.exe' + 'Antigravity.exe', + 'Windsurf.exe' ] diff --git a/packages/launch-editor/get-args.js b/packages/launch-editor/get-args.js index 45836b9..34a9a41 100644 --- a/packages/launch-editor/get-args.js +++ b/packages/launch-editor/get-args.js @@ -1,7 +1,7 @@ const path = require('path') // normalize file/line numbers into command line args for specific editors -module.exports = function getArgumentsForPosition ( +module.exports = function getArgumentsForPosition( editor, fileName, lineNumber, @@ -44,6 +44,7 @@ module.exports = function getArgumentsForPosition ( case 'cursor': case 'vscodium': case 'VSCodium': + case 'windsurf': return ['-r', '-g', `${fileName}:${lineNumber}:${columnNumber}`] case 'appcode': case 'clion': From f1829bf525617701bc8e65c86d7e79c4fafde4be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Thu, 28 May 2026 12:53:45 +0900 Subject: [PATCH 02/21] ci: add renovate (#120) --- .github/renovate.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/renovate.json diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..0120e66 --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended", "schedule:monthly", "group:allNonMajor"], + "labels": ["dependencies"], + "rangeStrategy": "bump", + "postUpdateOptions": ["pnpmDedupe"], + "packageRules": [ + { + "matchDepTypes": ["action"], + "pinDigests": true + } + ], + "ignoreDeps": [ + "node" + ] +} From 48e7ff5cbb7d8c2f607b72f1b182fffc6bb6706b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 12:59:03 +0900 Subject: [PATCH 03/21] chore(deps): pin dependencies (#122) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | pinDigest | → `de0fac2` | | [actions/setup-node](https://redirect.github.com/actions/setup-node) | action | pinDigest | → `48b55a0` | | [pnpm/action-setup](https://redirect.github.com/pnpm/action-setup) | action | pinDigest | → `fc06bc1` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/vitejs/launch-editor). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 57545a3..edc0014 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -14,15 +14,15 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Setup pnpm - uses: pnpm/action-setup@v5 + uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5 with: run_install: false - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: node-version: 24 registry-url: https://registry.npmjs.org From 68c70f9de035f946530c030208aac7585200fd94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Thu, 28 May 2026 17:10:01 +0900 Subject: [PATCH 04/21] chore: add oxfmt (#123) --- .github/renovate.json | 4 +- .github/workflows/ci.yml | 36 +++ .oxfmtrc.json | 6 + README.md | 44 ++-- eslint.config.mjs | 4 +- package.json | 15 +- packages/launch-editor-middleware/index.js | 4 +- .../launch-editor-middleware/index.test.js | 10 +- .../launch-editor-middleware/package.json | 28 +-- packages/launch-editor/editor-info/macos.js | 9 +- packages/launch-editor/get-args.js | 7 +- packages/launch-editor/guess.js | 14 +- packages/launch-editor/index.d.ts | 6 +- packages/launch-editor/index.js | 30 +-- packages/launch-editor/package.json | 20 +- pnpm-lock.yaml | 217 ++++++++++++++++++ pnpm-workspace.yaml | 2 +- 17 files changed, 349 insertions(+), 107 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .oxfmtrc.json diff --git a/.github/renovate.json b/.github/renovate.json index 0120e66..2c84a44 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -10,7 +10,5 @@ "pinDigests": true } ], - "ignoreDeps": [ - "node" - ] + "ignoreDeps": ["node"] } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..532738d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +on: + push: + branches: + - main + pull_request: + +permissions: {} + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.sha }} + cancel-in-progress: true + +jobs: + lint: + timeout-minutes: 10 + runs-on: ubuntu-latest + name: 'Lint: node-24, ubuntu-latest' + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false + + - name: Install pnpm + uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + + - name: Set node version to 24 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + with: + node-version: 24 + cache: 'pnpm' + + - name: Install deps + run: pnpm install + + - name: Check formatting + run: pnpm format --check diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 0000000..457ac6d --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,6 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "singleQuote": true, + "semi": false, + "ignorePatterns": [] +} diff --git a/README.md b/README.md index 5c46e9c..19683b9 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ launch( // callback if failed to launch (optional) (fileName, errorMsg) => { // log error if any - } + }, ) ``` @@ -40,7 +40,7 @@ launch( An express/connect/webpack-dev-server compatible middleware is also available: -``` js +```js const launchMiddleware = require('launch-editor-middleware') app.use('/__open-in-editor', launchMiddleware()) @@ -61,29 +61,29 @@ To launch files, send requests to the server like the following: ### Supported editors | Value | Editor | Linux | Windows | macOS | -| --------------- | ---------------------------------------------------------------------- | :---: | :-----: | :-: | +| --------------- | ---------------------------------------------------------------------- | :---: | :-----: | :---: | | `appcode` | [AppCode](https://www.jetbrains.com/objc/) | | | ✓ | -| `atom` | [Atom](https://atom.io/) | ✓ | ✓ | ✓ | +| `atom` | [Atom](https://atom.io/) | ✓ | ✓ | ✓ | | `atom-beta` | [Atom Beta](https://atom.io/beta) | | | ✓ | -| `brackets` | [Brackets](http://brackets.io/) | ✓ | ✓ | ✓ | -| `clion` | [Clion](https://www.jetbrains.com/clion/) | | ✓ | ✓ | -| `code` | [Visual Studio Code](https://code.visualstudio.com/) | ✓ | ✓ | ✓ | -| `code-insiders` | [Visual Studio Code Insiders](https://code.visualstudio.com/insiders/) | ✓ | ✓ | ✓ | -| `codium` | [VSCodium](https://github.com/VSCodium/vscodium) | ✓ | ✓ | ✓ | -| `cursor` | [Cursor](https://www.cursor.com/) | ✓ | ✓ | ✓ | -| `windsurf` | [Windsurf](https://windsurf.ai/) | ✓ | ✓ | ✓ | -| `emacs` | [Emacs](https://www.gnu.org/software/emacs/) | ✓ | | | -| `idea` | [IDEA](https://www.jetbrains.com/idea/) | ✓ | ✓ | ✓ | -| `notepad++` | [Notepad++](https://notepad-plus-plus.org/download/v7.5.4.html) | | ✓ | | -| `pycharm` | [PyCharm](https://www.jetbrains.com/pycharm/) | ✓ | ✓ | ✓ | -| `phpstorm` | [PhpStorm](https://www.jetbrains.com/phpstorm/) | ✓ | ✓ | ✓ | -| `rider` | [Rider](https://www.jetbrains.com/rider/) | ✓ | ✓ | ✓ | -| `rubymine` | [RubyMine](https://www.jetbrains.com/ruby/) | ✓ | ✓ | ✓ | -| `sublime` | [Sublime Text](https://www.sublimetext.com/) | ✓ | ✓ | ✓ | -| `vim` | [Vim](http://www.vim.org/) | ✓ | | | +| `brackets` | [Brackets](http://brackets.io/) | ✓ | ✓ | ✓ | +| `clion` | [Clion](https://www.jetbrains.com/clion/) | | ✓ | ✓ | +| `code` | [Visual Studio Code](https://code.visualstudio.com/) | ✓ | ✓ | ✓ | +| `code-insiders` | [Visual Studio Code Insiders](https://code.visualstudio.com/insiders/) | ✓ | ✓ | ✓ | +| `codium` | [VSCodium](https://github.com/VSCodium/vscodium) | ✓ | ✓ | ✓ | +| `cursor` | [Cursor](https://www.cursor.com/) | ✓ | ✓ | ✓ | +| `windsurf` | [Windsurf](https://windsurf.ai/) | ✓ | ✓ | ✓ | +| `emacs` | [Emacs](https://www.gnu.org/software/emacs/) | ✓ | | | +| `idea` | [IDEA](https://www.jetbrains.com/idea/) | ✓ | ✓ | ✓ | +| `notepad++` | [Notepad++](https://notepad-plus-plus.org/download/v7.5.4.html) | | ✓ | | +| `pycharm` | [PyCharm](https://www.jetbrains.com/pycharm/) | ✓ | ✓ | ✓ | +| `phpstorm` | [PhpStorm](https://www.jetbrains.com/phpstorm/) | ✓ | ✓ | ✓ | +| `rider` | [Rider](https://www.jetbrains.com/rider/) | ✓ | ✓ | ✓ | +| `rubymine` | [RubyMine](https://www.jetbrains.com/ruby/) | ✓ | ✓ | ✓ | +| `sublime` | [Sublime Text](https://www.sublimetext.com/) | ✓ | ✓ | ✓ | +| `vim` | [Vim](http://www.vim.org/) | ✓ | | | | `visualstudio` | [Visual Studio](https://www.visualstudio.com/vs/) | | | ✓ | -| `webstorm` | [WebStorm](https://www.jetbrains.com/webstorm/) | ✓ | ✓ | ✓ | -| `zed` | [Zed](https://zed.dev/) | ✓ | ✓ | ✓ | +| `webstorm` | [WebStorm](https://www.jetbrains.com/webstorm/) | ✓ | ✓ | ✓ | +| `zed` | [Zed](https://zed.dev/) | ✓ | ✓ | ✓ | ### Custom editor support diff --git a/eslint.config.mjs b/eslint.config.mjs index 0f83941..98b3461 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,4 +1,4 @@ -import js from "@eslint/js" +import js from '@eslint/js' import globals from 'globals' export default [ @@ -6,7 +6,7 @@ export default [ { files: ['packages/**/*.js'], languageOptions: { - ecmaVersion: 2018, // Node.js 10 + ecmaVersion: 2018, // Node.js 10 sourceType: 'commonjs', globals: globals.node, }, diff --git a/package.json b/package.json index 7c23b84..ac8d20a 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "packageManager": "pnpm@10.4.1", "private": true, "scripts": { "test": "pnpm -r test", "release": "bumpp", - "lint": "eslint packages --fix" + "lint": "eslint packages --fix", + "format": "oxfmt" }, "devDependencies": { "@eslint/js": "^9.32.0", @@ -12,15 +12,20 @@ "eslint": "^9.32.0", "globals": "^16.3.0", "lint-staged": "^6.1.1", + "oxfmt": "^0.52.0", "yorkie": "^1.0.3" }, - "gitHooks": { - "pre-commit": "lint-staged" - }, "lint-staged": { + "*": [ + "oxfmt --no-error-on-unmatched-pattern" + ], "*.js": [ "eslint --fix", "git add" ] + }, + "packageManager": "pnpm@10.4.1", + "gitHooks": { + "pre-commit": "lint-staged" } } diff --git a/packages/launch-editor-middleware/index.js b/packages/launch-editor-middleware/index.js index 13e6a9b..dffe13e 100644 --- a/packages/launch-editor-middleware/index.js +++ b/packages/launch-editor-middleware/index.js @@ -30,9 +30,7 @@ module.exports = (specifiedEditor, srcRoot, onErrorCallback) => { const file = url.searchParams.get('file') if (!file) { res.statusCode = 500 - res.end( - `launch-editor-middleware: required query param "file" is missing.` - ) + res.end(`launch-editor-middleware: required query param "file" is missing.`) } else { const resolved = file.startsWith('file://') ? file : path.resolve(srcRoot, file) launch(resolved, specifiedEditor, onErrorCallback) diff --git a/packages/launch-editor-middleware/index.test.js b/packages/launch-editor-middleware/index.test.js index 7bdf838..31a2021 100644 --- a/packages/launch-editor-middleware/index.test.js +++ b/packages/launch-editor-middleware/index.test.js @@ -36,10 +36,7 @@ describe('launchEditorMiddleware', () => { middleware(req, res) assert.equal(res.statusCode, 500) - assert.equal( - res.body, - 'launch-editor-middleware: required query param "file" is missing.' - ) + assert.equal(res.body, 'launch-editor-middleware: required query param "file" is missing.') }) test('launches editor with specified file', async () => { @@ -64,10 +61,7 @@ describe('launchEditorMiddleware', () => { middleware(req, res) assert.equal(res.statusCode, 500) - assert.equal( - res.body, - 'launch-editor-middleware: required query param "file" is missing.' - ) + assert.equal(res.body, 'launch-editor-middleware: required query param "file" is missing.') }) test('returns 500 on invalid URL', async () => { diff --git a/packages/launch-editor-middleware/package.json b/packages/launch-editor-middleware/package.json index f21eec4..81df444 100644 --- a/packages/launch-editor-middleware/package.json +++ b/packages/launch-editor-middleware/package.json @@ -2,28 +2,28 @@ "name": "launch-editor-middleware", "version": "2.13.2", "description": "express middleware for launching editor", - "main": "index.js", - "files": [ - "index.js" + "keywords": [ + "editor", + "express", + "middleware" ], - "scripts": { - "test": "node --test --experimental-test-module-mocks" + "homepage": "https://github.com/yyx990803/launch-editor#readme", + "bugs": { + "url": "https://github.com/yyx990803/launch-editor/issues" }, + "license": "MIT", + "author": "Evan You", "repository": { "type": "git", "url": "git+https://github.com/yyx990803/launch-editor.git" }, - "keywords": [ - "express", - "middleware", - "editor" + "files": [ + "index.js" ], - "author": "Evan You", - "license": "MIT", - "bugs": { - "url": "https://github.com/yyx990803/launch-editor/issues" + "main": "index.js", + "scripts": { + "test": "node --test --experimental-test-module-mocks" }, - "homepage": "https://github.com/yyx990803/launch-editor#readme", "dependencies": { "launch-editor": "workspace:^" } diff --git a/packages/launch-editor/editor-info/macos.js b/packages/launch-editor/editor-info/macos.js index 8cf66ee..466ef14 100644 --- a/packages/launch-editor/editor-info/macos.js +++ b/packages/launch-editor/editor-info/macos.js @@ -13,18 +13,15 @@ module.exports = { '/Applications/Sublime Text Dev.app/Contents/SharedSupport/bin/subl', '/Applications/Visual Studio Code.app/Contents/MacOS/Code': 'code', '/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code', - '/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Code - Insiders': - 'code-insiders', - '/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron': - 'code-insiders', + '/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Code - Insiders': 'code-insiders', + '/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron': 'code-insiders', '/Applications/VSCodium.app/Contents/MacOS/Electron': 'codium', '/Applications/Cursor.app/Contents/MacOS/Cursor': 'cursor', '/Applications/Trae.app/Contents/MacOS/Electron': 'trae', '/Applications/Antigravity.app/Contents/MacOS/Electron': 'antigravity', '/Applications/AppCode.app/Contents/MacOS/appcode': '/Applications/AppCode.app/Contents/MacOS/appcode', - '/Applications/CLion.app/Contents/MacOS/clion': - '/Applications/CLion.app/Contents/MacOS/clion', + '/Applications/CLion.app/Contents/MacOS/clion': '/Applications/CLion.app/Contents/MacOS/clion', '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea': '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea', '/Applications/IntelliJ IDEA Ultimate.app/Contents/MacOS/idea': diff --git a/packages/launch-editor/get-args.js b/packages/launch-editor/get-args.js index 34a9a41..4eca169 100644 --- a/packages/launch-editor/get-args.js +++ b/packages/launch-editor/get-args.js @@ -1,12 +1,7 @@ const path = require('path') // normalize file/line numbers into command line args for specific editors -module.exports = function getArgumentsForPosition( - editor, - fileName, - lineNumber, - columnNumber = 1 -) { +module.exports = function getArgumentsForPosition(editor, fileName, lineNumber, columnNumber = 1) { const editorBasename = path.basename(editor).replace(/\.(exe|cmd|bat)$/i, '') switch (editorBasename) { case 'atom': diff --git a/packages/launch-editor/guess.js b/packages/launch-editor/guess.js index 3f57ead..20d7053 100644 --- a/packages/launch-editor/guess.js +++ b/packages/launch-editor/guess.js @@ -9,7 +9,7 @@ const COMMON_EDITORS_MACOS = require('./editor-info/macos') const COMMON_EDITORS_LINUX = require('./editor-info/linux') const COMMON_EDITORS_WIN = require('./editor-info/windows') -module.exports = function guessEditor (specifiedEditor) { +module.exports = function guessEditor(specifiedEditor) { if (specifiedEditor) { return shellQuote.parse(specifiedEditor) } @@ -29,7 +29,7 @@ module.exports = function guessEditor (specifiedEditor) { if (process.platform === 'darwin') { const output = childProcess .execSync('ps x -o comm=', { - stdio: ['pipe', 'pipe', 'ignore'] + stdio: ['pipe', 'pipe', 'ignore'], }) .toString() const processNames = Object.keys(COMMON_EDITORS_MACOS) @@ -49,7 +49,9 @@ module.exports = function guessEditor (specifiedEditor) { } // Use a partial match to find the running process path. If one is found, use the // existing path since it can be running from anywhere. - const runningProcess = processList.find((procName) => procName.endsWith(processNameWithoutApplications)) + const runningProcess = processList.find((procName) => + procName.endsWith(processNameWithoutApplications), + ) if (runningProcess !== undefined) { return [runningProcess] } @@ -63,8 +65,8 @@ module.exports = function guessEditor (specifiedEditor) { 'Get-CimInstance -Query \\"select executablepath from win32_process where executablepath is not null\\" | % { $_.ExecutablePath }' + '"', { - stdio: ['pipe', 'pipe', 'ignore'] - } + stdio: ['pipe', 'pipe', 'ignore'], + }, ) .toString() const runningProcesses = output.split('\r\n') @@ -82,7 +84,7 @@ module.exports = function guessEditor (specifiedEditor) { // -o comm Need only names column const output = childProcess .execSync('ps x --no-heading -o comm --sort=comm', { - stdio: ['pipe', 'pipe', 'ignore'] + stdio: ['pipe', 'pipe', 'ignore'], }) .toString() const processNames = Object.keys(COMMON_EDITORS_LINUX) diff --git a/packages/launch-editor/index.d.ts b/packages/launch-editor/index.d.ts index 405030f..53e3833 100644 --- a/packages/launch-editor/index.d.ts +++ b/packages/launch-editor/index.d.ts @@ -10,7 +10,7 @@ declare function launchEditor( file: string, specifiedEditor?: string | ((fileName: string, errorMessage: string | null) => void), - onErrorCallback?: (fileName: string, errorMessage: string | null) => void -): void; + onErrorCallback?: (fileName: string, errorMessage: string | null) => void, +): void -export = launchEditor; +export = launchEditor diff --git a/packages/launch-editor/index.js b/packages/launch-editor/index.js index 6e27b1b..bd994da 100644 --- a/packages/launch-editor/index.js +++ b/packages/launch-editor/index.js @@ -17,26 +17,22 @@ const childProcess = require('child_process') const guessEditor = require('./guess') const getArgumentsForPosition = require('./get-args') -function wrapErrorCallback (cb) { +function wrapErrorCallback(cb) { return (fileName, errorMessage) => { console.log() - console.log( - colors.red('Could not open ' + path.basename(fileName) + ' in the editor.') - ) + console.log(colors.red('Could not open ' + path.basename(fileName) + ' in the editor.')) if (errorMessage) { if (errorMessage[errorMessage.length - 1] !== '.') { errorMessage += '.' } - console.log( - colors.red('The editor process exited with an error: ' + errorMessage) - ) + console.log(colors.red('The editor process exited with an error: ' + errorMessage)) } console.log() if (cb) cb(fileName, errorMessage) } } -function isTerminalEditor (editor) { +function isTerminalEditor(editor) { switch (editor) { case 'vim': case 'emacs': @@ -47,7 +43,7 @@ function isTerminalEditor (editor) { } const positionRE = /:(\d+)(:(\d+))?$/ -function parseFile (file) { +function parseFile(file) { // support `file://` protocol if (file.startsWith('file://')) { file = require('url').fileURLToPath(file) @@ -60,13 +56,13 @@ function parseFile (file) { return { fileName, lineNumber, - columnNumber + columnNumber, } } let _childProcess = null -function launchEditor (file, specifiedEditor, onErrorCallback) { +function launchEditor(file, specifiedEditor, onErrorCallback) { const parsed = parseFile(file) let { fileName } = parsed const { lineNumber, columnNumber } = parsed @@ -139,7 +135,7 @@ function launchEditor (file, specifiedEditor, onErrorCallback) { // According to https://ss64.com/nt/syntax-esc.html, // we can use `^` to escape `&`, `<`, `>`, `|`, `%`, and `^` // I'm not sure if we have to escape all of these, but let's do it anyway - function escapeCmdArgs (cmdArgs) { + function escapeCmdArgs(cmdArgs) { return cmdArgs.replace(/([&|<>,;=^])/g, '^$1') } @@ -155,16 +151,14 @@ function launchEditor (file, specifiedEditor, onErrorCallback) { return `^"${str}^"` } else if (str.includes(' ')) { return `"${str}"` - } + } return str } - const launchCommand = [editor, ...args.map(escapeCmdArgs)] - .map(doubleQuoteIfNeeded) - .join(' ') + const launchCommand = [editor, ...args.map(escapeCmdArgs)].map(doubleQuoteIfNeeded).join(' ') _childProcess = childProcess.exec(launchCommand, { stdio: 'inherit', - shell: true + shell: true, }) } else { _childProcess = childProcess.spawn(editor, args, { stdio: 'inherit' }) @@ -182,7 +176,7 @@ function launchEditor (file, specifiedEditor, onErrorCallback) { if ('ENOENT' === code) { message = `${message} ('${editor}' command does not exist in 'PATH')` } - onErrorCallback(fileName, message); + onErrorCallback(fileName, message) }) } diff --git a/packages/launch-editor/package.json b/packages/launch-editor/package.json index ed02c13..a0db077 100644 --- a/packages/launch-editor/package.json +++ b/packages/launch-editor/package.json @@ -2,21 +2,21 @@ "name": "launch-editor", "version": "2.13.2", "description": "launch editor from node.js", - "main": "index.js", - "repository": { - "type": "git", - "url": "git+https://github.com/yyx990803/launch-editor.git" - }, "keywords": [ - "launch", - "editor" + "editor", + "launch" ], - "author": "Evan You", - "license": "MIT", + "homepage": "https://github.com/yyx990803/launch-editor#readme", "bugs": { "url": "https://github.com/yyx990803/launch-editor/issues" }, - "homepage": "https://github.com/yyx990803/launch-editor#readme", + "license": "MIT", + "author": "Evan You", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/launch-editor.git" + }, + "main": "index.js", "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18e5889..faf86fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: lint-staged: specifier: ^6.1.1 version: 6.1.1 + oxfmt: + specifier: ^0.52.0 + version: 0.52.0 yorkie: specifier: ^1.0.3 version: 1.0.3 @@ -102,6 +105,120 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@oxfmt/binding-android-arm-eabi@0.52.0': + resolution: {integrity: sha512-17EMSJnQ9g+upVHrAUYDMfH5lvRKQ9Nvg8WtEoH72oDr1VpWz+7/o3tD97U1EToen2YAQ/68JmtDYkQUi20dfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.52.0': + resolution: {integrity: sha512-A2G1IdwGEW2lLJkIxcvuirRH1CzSl/e0NX11zTlW1gvxJThfwbI/BEoaKrTNpm7M2FchvIf6guvIQU7d5iz+OQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.52.0': + resolution: {integrity: sha512-f9+bLvOYxy7NttCLFTvQ7afmqDOWY4wIP9xdvfj5trQ1qj6f2UFAGwZESlfsMjvJNTyRpXfIlOanCI9FOvoeQA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.52.0': + resolution: {integrity: sha512-YSTB9sJ5nnQd/Q0ddHkgof0ZCHPAnWZT1IW2SJ8omz7CP7KluJhO1fNHrpqdxCtpztJwSs4hY1uAee35wKxxaw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.52.0': + resolution: {integrity: sha512-NIrRNTTPCs4UbmVs0bxLSCDlLCtIRMJIXklNKaXa5Oj2/K1UIMBvgE8+uPVo01Io3N9HF0+GAX+aAHjUgZS7vA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.52.0': + resolution: {integrity: sha512-JXUCde8mn3GpgQouz2PXUokgy/uT1QrRJBL2s983VWcSQp62wTFYiNXgTKdeo1Jgbr0IgUnKKvzIk/YBlj/nVQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.52.0': + resolution: {integrity: sha512-psbUXaRZ+V8DaXz10Qf7LSHtdtdKAmC8fxXgeU608jjzrmWK4quamZMOpl6sf+dikoFHA85uE93Q0BqxrCdQrQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.52.0': + resolution: {integrity: sha512-Jw7MgWUU9lcLCcy82updISP3EthTlfvAwR6gWNxPzqly7+fLvOi2gHQE9xXQjpqaVLm/8P+gOzlv9ODuoVlaaw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-arm64-musl@0.52.0': + resolution: {integrity: sha512-wZg6bLjDvh2KibyI3QFUYo8GTXneIFsd0JvehtvJiUmQ8WRPERgxd/VM4ctWb86U5FT1FkqgS8/wZKVB+AZScg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-ppc64-gnu@0.52.0': + resolution: {integrity: sha512-IngE8uxhNvxcMrLjZNDo9xNLY7rEK33AKnaMd2B46he1e/mz2CfcW6If/U1wUjdRZddm1QzQaciqZkuMkdh1FA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-gnu@0.52.0': + resolution: {integrity: sha512-H3+DdFMv/efN3Efmhsv18jDrpiWWqKG7wsfAlQBqAt6z/E2Bx+TwEj2Nowe51CPOWB8/mFBC2dAMSgVFLvvowA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-musl@0.52.0': + resolution: {integrity: sha512-zji+1kb7lJKohSDjzC1IsS+K/cKRs1hdVf0ZH0VbdbiakmtLvN9twBoXo/k8VdjFax7kfo+DyPxS7vv52br1aw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-s390x-gnu@0.52.0': + resolution: {integrity: sha512-hcLBYedpCy7ToUvvBidWk7+11Yhg1oAZ4+6hKPic/mQI6NaqXJSXMps5nFlwUuX2ewhtLZZDPg63TI042qGKBg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxfmt/binding-linux-x64-gnu@0.52.0': + resolution: {integrity: sha512-IDO2loXK2OtTOhSPchU9MW25mWL2QCDGdJbjN8MXKZVS80qXe5gMTwQWu/gMJ3juoBHbkuUZNB2N1LHzNT7DoA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-linux-x64-musl@0.52.0': + resolution: {integrity: sha512-mAV2Hjn0SatJ+KoAzKUC3eJhdJ8wv+3m1KyuS0dTsbF0c5weq+QrCt/DRZZM+uj/XiKzCDEUKYsBF30e2qkcyw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-openharmony-arm64@0.52.0': + resolution: {integrity: sha512-vd4npaUIwChxp7XzkqmepBWTT9YMcSe/NBApVGPC30/lLyOVaV3dvma1SKo03t8O73BPRAG7EyJzGlN5cJM5hQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.52.0': + resolution: {integrity: sha512-k2sz6gWQdMfh5HPpIS+Bw/0UEV/kaK2xuqJRrWL233sEHx9WLlsmvlPFM4HUNThkYbSN0U0vPW7LVKZWDS8hPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.52.0': + resolution: {integrity: sha512-rhke69GTcArodLHpjMTfNnvjTEBryDeZcUCKK/VjXDMtfTULl6QRh0ymX5/hbCUv2WjYm9h/QbW++q2vE15gWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.52.0': + resolution: {integrity: sha512-q5xL7oeXkZdEtNZWBdvehJcmt+GRu9l2bK40yJs1jJXlqq+r0Hygb1rTjq+FM2o/2xyt4cufH6KRplHp3Jjsvw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} @@ -629,6 +746,19 @@ packages: resolution: {integrity: sha512-MYGyg17e2GcoDlFrAP39zu4nrAQ+STzl4fosWjR8vAlT0a2wKuuAGZTecffdVLPsnEfxXVlrUcDZ1DU5skr+QQ==} engines: {node: '>=0.10.0'} + oxfmt@0.52.0: + resolution: {integrity: sha512-nJlYM35F64zTDMecCNhoHNkf+D/eHv7xcjj9XDSj+bFAVtN93m7v8DQMdHd6nDG6Akf/kEYYHmDUBs2Dz27Sug==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} @@ -813,6 +943,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -914,6 +1048,63 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@oxfmt/binding-android-arm-eabi@0.52.0': + optional: true + + '@oxfmt/binding-android-arm64@0.52.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.52.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.52.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.52.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.52.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.52.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.52.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.52.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.52.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.52.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.52.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.52.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.52.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.52.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.52.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.52.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.52.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.52.0': + optional: true + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 @@ -1449,6 +1640,30 @@ snapshots: cli-spinners: 0.1.2 object-assign: 4.1.1 + oxfmt@0.52.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.52.0 + '@oxfmt/binding-android-arm64': 0.52.0 + '@oxfmt/binding-darwin-arm64': 0.52.0 + '@oxfmt/binding-darwin-x64': 0.52.0 + '@oxfmt/binding-freebsd-x64': 0.52.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.52.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.52.0 + '@oxfmt/binding-linux-arm64-gnu': 0.52.0 + '@oxfmt/binding-linux-arm64-musl': 0.52.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.52.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.52.0 + '@oxfmt/binding-linux-riscv64-musl': 0.52.0 + '@oxfmt/binding-linux-s390x-gnu': 0.52.0 + '@oxfmt/binding-linux-x64-gnu': 0.52.0 + '@oxfmt/binding-linux-x64-musl': 0.52.0 + '@oxfmt/binding-openharmony-arm64': 0.52.0 + '@oxfmt/binding-win32-arm64-msvc': 0.52.0 + '@oxfmt/binding-win32-ia32-msvc': 0.52.0 + '@oxfmt/binding-win32-x64-msvc': 0.52.0 + p-finally@1.0.0: {} p-limit@3.1.0: @@ -1590,6 +1805,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinypool@2.1.0: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index dee51e9..18ec407 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,2 @@ packages: - - "packages/*" + - 'packages/*' From 58ab6e0dba3bf92bcb5eed3014d4f7abd31c8408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 14:12:41 +0900 Subject: [PATCH 05/21] ci: add zizmor (#125) --- .github/workflows/publish.yml | 5 ++++- .github/workflows/zizmor.yml | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/zizmor.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index edc0014..a3fe89d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,6 +15,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false - name: Setup pnpm uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5 @@ -26,7 +28,8 @@ jobs: with: node-version: 24 registry-url: https://registry.npmjs.org - cache: pnpm + # disable cache, to avoid cache poisoning (https://docs.zizmor.sh/audits/#cache-poisoning) + package-manager-cache: false - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml new file mode 100644 index 0000000..67c4a15 --- /dev/null +++ b/.github/workflows/zizmor.yml @@ -0,0 +1,30 @@ +name: Zizmor + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + paths: + - '.github/workflows/**' + +permissions: {} + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: ${{ github.ref_name != 'main' }} + +jobs: + zizmor: + name: Run zizmor + runs-on: ubuntu-latest + permissions: + security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files. + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false + + - name: Run zizmor 🌈 + uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6 From 61fd2e630b4242bf57a57a3c9708353d8c686e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 14:30:38 +0900 Subject: [PATCH 06/21] chore: add oxlint (#126) --- .github/workflows/ci.yml | 3 + .oxlintrc.json | 28 ++++ eslint.config.mjs | 18 --- package.json | 5 +- packages/launch-editor/get-args.js | 2 +- packages/launch-editor/index.js | 16 +-- pnpm-lock.yaml | 209 +++++++++++++++++++++++++++++ 7 files changed, 252 insertions(+), 29 deletions(-) create mode 100644 .oxlintrc.json delete mode 100644 eslint.config.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 532738d..b4cbe6b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,3 +34,6 @@ jobs: - name: Check formatting run: pnpm format --check + + - name: Check linting + run: pnpm oxlint diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000..377a14b --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,28 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["eslint", "node", "oxc"], + "categories": { + "correctness": "error", + "suspicious": "error" + }, + "env": { + "builtin": true, + "es2018": true, + "node": true, + "commonjs": true + }, + "rules": { + "no-case-declarations": "error", + "no-empty": "error", + "no-fallthrough": "error", + "no-prototype-builtins": "error", + "no-redeclare": "error", + "no-regex-spaces": "error", + "no-unused-vars": [ + "error", + { + "caughtErrorsIgnorePattern": "^ignore" + } + ] + } +} diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 98b3461..0000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' - -export default [ - js.configs.recommended, - { - files: ['packages/**/*.js'], - languageOptions: { - ecmaVersion: 2018, // Node.js 10 - sourceType: 'commonjs', - globals: globals.node, - }, - rules: { - // Optional catch binding isn't supported until ES2019 - 'no-unused-vars': ['error', { caughtErrorsIgnorePattern: '^ignore' }], - }, - }, -] diff --git a/package.json b/package.json index ac8d20a..e3a5583 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "scripts": { "test": "pnpm -r test", "release": "bumpp", - "lint": "eslint packages --fix", + "lint": "oxlint --fix", "format": "oxfmt" }, "devDependencies": { @@ -13,6 +13,7 @@ "globals": "^16.3.0", "lint-staged": "^6.1.1", "oxfmt": "^0.52.0", + "oxlint": "^1.67.0", "yorkie": "^1.0.3" }, "lint-staged": { @@ -20,7 +21,7 @@ "oxfmt --no-error-on-unmatched-pattern" ], "*.js": [ - "eslint --fix", + "oxlint --fix", "git add" ] }, diff --git a/packages/launch-editor/get-args.js b/packages/launch-editor/get-args.js index 4eca169..482ac0f 100644 --- a/packages/launch-editor/get-args.js +++ b/packages/launch-editor/get-args.js @@ -21,7 +21,7 @@ module.exports = function getArgumentsForPosition(editor, fileName, lineNumber, return [`+call cursor(${lineNumber}, ${columnNumber})`, fileName] case 'joe': case 'gvim': - return ['+' + `${lineNumber}`, fileName] + return [`+${lineNumber}`, fileName] case 'emacs': case 'emacsclient': return [`+${lineNumber}:${columnNumber}`, fileName] diff --git a/packages/launch-editor/index.js b/packages/launch-editor/index.js index bd994da..9f58052 100644 --- a/packages/launch-editor/index.js +++ b/packages/launch-editor/index.js @@ -60,7 +60,7 @@ function parseFile(file) { } } -let _childProcess = null +let currentChildProcess = null function launchEditor(file, specifiedEditor, onErrorCallback) { const parsed = parseFile(file) @@ -105,11 +105,11 @@ function launchEditor(file, specifiedEditor, onErrorCallback) { args.push(fileName) } - if (_childProcess && isTerminalEditor(editor)) { + if (currentChildProcess && isTerminalEditor(editor)) { // There's an existing editor process already and it's attached // to the terminal, so go kill it. Otherwise two separate editor // instances attach to the stdin/stdout which gets confusing. - _childProcess.kill('SIGKILL') + currentChildProcess.kill('SIGKILL') } if (process.platform === 'win32') { @@ -156,22 +156,22 @@ function launchEditor(file, specifiedEditor, onErrorCallback) { } const launchCommand = [editor, ...args.map(escapeCmdArgs)].map(doubleQuoteIfNeeded).join(' ') - _childProcess = childProcess.exec(launchCommand, { + currentChildProcess = childProcess.exec(launchCommand, { stdio: 'inherit', shell: true, }) } else { - _childProcess = childProcess.spawn(editor, args, { stdio: 'inherit' }) + currentChildProcess = childProcess.spawn(editor, args, { stdio: 'inherit' }) } - _childProcess.on('exit', function (errorCode) { - _childProcess = null + currentChildProcess.on('exit', function (errorCode) { + currentChildProcess = null if (errorCode) { onErrorCallback(fileName, '(code ' + errorCode + ')') } }) - _childProcess.on('error', function (error) { + currentChildProcess.on('error', function (error) { let { code, message } = error if ('ENOENT' === code) { message = `${message} ('${editor}' command does not exist in 'PATH')` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index faf86fa..4bbcf89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,9 @@ importers: oxfmt: specifier: ^0.52.0 version: 0.52.0 + oxlint: + specifier: ^1.67.0 + version: 1.67.0 yorkie: specifier: ^1.0.3 version: 1.0.3 @@ -219,6 +222,120 @@ packages: cpu: [x64] os: [win32] + '@oxlint/binding-android-arm-eabi@1.67.0': + resolution: {integrity: sha512-VrSi571rDv1N8HaEDM+DEX8nmT0y9jJo8tzzW13vsOWTx59xQczCIJx68n2zWOXRT5YKZsOZXp4qkHN/10x4mw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.67.0': + resolution: {integrity: sha512-l6+NdYxMoRohix5r5bbigW16LPicceCwGcQ6LKKuE1kUdjgFfQolJjrJsQYPFetIs78Gxj/G/f5TEGoTCwj9nQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.67.0': + resolution: {integrity: sha512-jOzXxS1AxFxhImLIRbtGIMrEwaXcgMw3gR57WB1cRk8ai+vpr6726kxXqVvlNsrXtJ/FrmOm8RxlC0m8SW24Qg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.67.0': + resolution: {integrity: sha512-3DFAVY94OqjIZHXIPz37yGRSWwOFTAqChQ64/M69GYLawzP0KiwdhDNfqdKKYT0bTR/DNxmMnQsj3ns+8+X/Lg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.67.0': + resolution: {integrity: sha512-e4dDKZuLu8TR9DEBssWSDahlPgZBwojTTHZUvnjBRJfJJbpxYCjfjKfi0Z1+CSLMiJBwI2yCDtRM1XJQaARjmg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.67.0': + resolution: {integrity: sha512-BKytFdcQzbITV3xlnzDUDTEDtbUMCCiC4EaNTDZ4FyT8gdNvBC4gfiLucXp/sQl0XU3p7syTlorUWVVVBZab2g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.67.0': + resolution: {integrity: sha512-XYAv0esBDX7BpTzRDjVX2Vdj+zndd8ll2dFQiaeQ6zTZr7A8GRDTN7fH3FP3jU+O0vCDx85oH/EtG7BzPgAXuw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.67.0': + resolution: {integrity: sha512-zizRMjA0i6u/2B0evgda04iycu+MoNuf1pBy6Eh+1CjC5wMEG7qN5zdDKTCvFc0KSYSDM9QTG3gjZHirgtQuKg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-arm64-musl@1.67.0': + resolution: {integrity: sha512-zB/Tf6sUjmmvvbva9Gj3JTJ8rJ9t4I8/U0o6vSRtd0DRIsIuyegBwJAzhSUFQHdMijIRJkW0exs/yBhpw2S20w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-ppc64-gnu@1.67.0': + resolution: {integrity: sha512-kgU40Gt74CK0TCsF51KZymkIwN9U0BajKsMijB52zPqOeZU9NAHkA/NSQkZDHEaCakx42DxhXkODiAqf2b4Gug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxlint/binding-linux-riscv64-gnu@1.67.0': + resolution: {integrity: sha512-tOYhkk/iaG9aD3FvGpBFd1Lrw0x0RaVoJBxjUkfNzS50rC5NS5BteNCwgr8A2zCdADrIIoze6D7u6U5Ic++/iQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-riscv64-musl@1.67.0': + resolution: {integrity: sha512-sEtywrPb+0b+tHYl1SDCrw903fiC4eyKoNqzP3v+f2JT3Xcv4NEYG+P8rj+eEnX7IWhqV/xj8/JmcmVj21CXaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-s390x-gnu@1.67.0': + resolution: {integrity: sha512-BvR8Moa0zCLxroOx4vZaZN9nUfwAUpSTwjZdxZyKy4bv3PrzrXrxKR/ZQ0L9wNSvlPhnMJeZfa3q5w6ZCTuN6Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxlint/binding-linux-x64-gnu@1.67.0': + resolution: {integrity: sha512-mm2cxM6fksOpq6l0uFws8BUGKAR4dNa/cZCn37Npq7PFbhD5HDJqWfnoIvTaeRKMy5XdS2tO0MA0qbHDrnXAAA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-linux-x64-musl@1.67.0': + resolution: {integrity: sha512-WmbMuLapKyDlobMkXAaAL0Y+Uczh4LETfIfQsUpbId4Ip8Ai82/jqeYTOoUCkuuhBFapgqP253+d83tLKOksJg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-openharmony-arm64@1.67.0': + resolution: {integrity: sha512-9g/PqxYJelzzTAOR5Y+RiRqdeydhEuXv2KxNeFcAKQ7UsvnWSY1OP4MsuPMbTO2Pf70tz7mFhl1j13H3fyh+8g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.67.0': + resolution: {integrity: sha512-2VhwE6Gatb0vJGnN0TBuQMbKCOiZlSQ/zJvVWYLK4a9d4iDiJOen/yVQkGpmsJ90MuH66fzi0kEKI0jRQMDxGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.67.0': + resolution: {integrity: sha512-EQ3VExXfeM1InbE5+JjufhZZTWy+kHUwgt3yZR7gQ47Je/mE0WspQPan0OJznh493L5anM210YNJtH1PXjTSFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.67.0': + resolution: {integrity: sha512-bw24y+/1MHS4QDkons3YyHkPT9uCMoLHHgQhb+mb8NOjTYwub1CZ+K9Ngr8aO5DMrDrkqHwTzlTwFP2vS8Y/ZQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} @@ -759,6 +876,19 @@ packages: vite-plus: optional: true + oxlint@1.67.0: + resolution: {integrity: sha512-blwwaHPdoH8piQ5/z0KHeoHFR7FZgl12WluKJfu4qFLPkZl6mK04PkLE45Fw1NxfBRSlh40Gu7MkxHUw++ociQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.22.1' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} @@ -1105,6 +1235,63 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.52.0': optional: true + '@oxlint/binding-android-arm-eabi@1.67.0': + optional: true + + '@oxlint/binding-android-arm64@1.67.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.67.0': + optional: true + + '@oxlint/binding-darwin-x64@1.67.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.67.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.67.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.67.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.67.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.67.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.67.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.67.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.67.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.67.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.67.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.67.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.67.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.67.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.67.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.67.0': + optional: true + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 @@ -1664,6 +1851,28 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.52.0 '@oxfmt/binding-win32-x64-msvc': 0.52.0 + oxlint@1.67.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.67.0 + '@oxlint/binding-android-arm64': 1.67.0 + '@oxlint/binding-darwin-arm64': 1.67.0 + '@oxlint/binding-darwin-x64': 1.67.0 + '@oxlint/binding-freebsd-x64': 1.67.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.67.0 + '@oxlint/binding-linux-arm-musleabihf': 1.67.0 + '@oxlint/binding-linux-arm64-gnu': 1.67.0 + '@oxlint/binding-linux-arm64-musl': 1.67.0 + '@oxlint/binding-linux-ppc64-gnu': 1.67.0 + '@oxlint/binding-linux-riscv64-gnu': 1.67.0 + '@oxlint/binding-linux-riscv64-musl': 1.67.0 + '@oxlint/binding-linux-s390x-gnu': 1.67.0 + '@oxlint/binding-linux-x64-gnu': 1.67.0 + '@oxlint/binding-linux-x64-musl': 1.67.0 + '@oxlint/binding-openharmony-arm64': 1.67.0 + '@oxlint/binding-win32-arm64-msvc': 1.67.0 + '@oxlint/binding-win32-ia32-msvc': 1.67.0 + '@oxlint/binding-win32-x64-msvc': 1.67.0 + p-finally@1.0.0: {} p-limit@3.1.0: From 1fc7052e8426356a2e7303c0f4c336c8a0802691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 14:39:21 +0900 Subject: [PATCH 07/21] ci: run test ci (#127) --- .github/workflows/ci.yml | 24 ++++++++++++++++++++++++ .github/workflows/publish.yml | 3 --- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4cbe6b..e9ac1c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,3 +37,27 @@ jobs: - name: Check linting run: pnpm oxlint + + test: + timeout-minutes: 20 + runs-on: ubuntu-latest + name: 'Test: node-24, ubuntu-latest' + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + persist-credentials: false + + - name: Install pnpm + uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + + - name: Set node version to 24 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + with: + node-version: 24 + cache: 'pnpm' + + - name: Install deps + run: pnpm install + + - name: Run tests + run: pnpm test diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a3fe89d..1853b9f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -34,8 +34,5 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Run tests - run: pnpm test - - name: Publish packages run: pnpm -r publish --access public --provenance --no-git-checks From b4992fad4eee27cf64648834e7522849c098fac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 14:45:29 +0900 Subject: [PATCH 08/21] chore: update repo link (#128) --- MAINTENANCE.md | 4 ++-- packages/launch-editor-middleware/package.json | 6 +++--- packages/launch-editor/package.json | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/MAINTENANCE.md b/MAINTENANCE.md index 28d67b5..20f1418 100644 --- a/MAINTENANCE.md +++ b/MAINTENANCE.md @@ -39,8 +39,8 @@ It will: Both packages need to trust the GitHub Actions workflow in this repository: ```bash -npm trust github launch-editor --repo yyx990803/launch-editor --file publish.yml -npm trust github launch-editor-middleware --repo yyx990803/launch-editor --file publish.yml +npm trust github launch-editor --repo vitejs/launch-editor --file publish.yml +npm trust github launch-editor-middleware --repo vitejs/launch-editor --file publish.yml ``` This only needs to be done once per package unless the workflow file is renamed or the publishing setup changes. diff --git a/packages/launch-editor-middleware/package.json b/packages/launch-editor-middleware/package.json index 81df444..101a383 100644 --- a/packages/launch-editor-middleware/package.json +++ b/packages/launch-editor-middleware/package.json @@ -7,15 +7,15 @@ "express", "middleware" ], - "homepage": "https://github.com/yyx990803/launch-editor#readme", + "homepage": "https://github.com/vitejs/launch-editor#readme", "bugs": { - "url": "https://github.com/yyx990803/launch-editor/issues" + "url": "https://github.com/vitejs/launch-editor/issues" }, "license": "MIT", "author": "Evan You", "repository": { "type": "git", - "url": "git+https://github.com/yyx990803/launch-editor.git" + "url": "git+https://github.com/vitejs/launch-editor.git" }, "files": [ "index.js" diff --git a/packages/launch-editor/package.json b/packages/launch-editor/package.json index a0db077..83b53be 100644 --- a/packages/launch-editor/package.json +++ b/packages/launch-editor/package.json @@ -6,15 +6,15 @@ "editor", "launch" ], - "homepage": "https://github.com/yyx990803/launch-editor#readme", + "homepage": "https://github.com/vitejs/launch-editor#readme", "bugs": { - "url": "https://github.com/yyx990803/launch-editor/issues" + "url": "https://github.com/vitejs/launch-editor/issues" }, "license": "MIT", "author": "Evan You", "repository": { "type": "git", - "url": "git+https://github.com/yyx990803/launch-editor.git" + "url": "git+https://github.com/vitejs/launch-editor.git" }, "main": "index.js", "dependencies": { From a8ea2b5b2647f81589dada13a587d047ec7f80ba Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Fri, 29 May 2026 13:53:28 +0800 Subject: [PATCH 09/21] feat: add and improve package types (#116) 1. Add types for `launch-editor-middleware` 2. Improve types for `launch-editor`: use overloads for stricter typings. Note: I didn't export the `ErrorCallback` or `Middleware` types because it's a bit finicky to do so with CJS-style dts code (`export =`). Ideally these dts should be written in modern ESM-style (which works in CJS), but probably these could be used with very old TS versions, so I didn't change it. --- packages/launch-editor-middleware/index.d.ts | 45 +++++++++++++++++++ .../launch-editor-middleware/package.json | 3 +- packages/launch-editor/index.d.ts | 15 ++++++- 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 packages/launch-editor-middleware/index.d.ts diff --git a/packages/launch-editor-middleware/index.d.ts b/packages/launch-editor-middleware/index.d.ts new file mode 100644 index 0000000..bc2b42e --- /dev/null +++ b/packages/launch-editor-middleware/index.d.ts @@ -0,0 +1,45 @@ +import http from 'http' + +type Middleware = (req: http.IncomingMessage, res: http.ServerResponse) => void +type ErrorCallback = (fileName: string, errorMessage: string | null) => void + +/** + * A middleware to launch an editor to open a file at a specific line and column. + * The request url should have a `file` query parameter with the file path and + * optional line and column numbers (e.g. "?file=/path/to/file.js:10:2"). + * + * @param onErrorCallback Optional callback for handling errors. + */ +declare function launchEditorMiddleware(onErrorCallback?: ErrorCallback): Middleware + +/** + * A middleware to launch an editor to open a file at a specific line and column. + * The request url should have a `file` query parameter with the file path and + * optional line and column numbers (e.g. "?file=/path/to/file.js:10:2"). + * + * @param specifiedEditor Optional editor command or path to use. Will be + * parsed using `shell-quote`. + * @param onErrorCallback Optional callback for handling errors. + */ +declare function launchEditorMiddleware( + specifiedEditor?: string, + onErrorCallback?: ErrorCallback, +): Middleware + +/** + * A middleware to launch an editor to open a file at a specific line and column. + * The request url should have a `file` query parameter with the file path and + * optional line and column numbers (e.g. "?file=/path/to/file.js:10:2"). + * + * @param specifiedEditor Optional editor command or path to use. Will be + * parsed using `shell-quote`. + * @param srcRoot Optional source root directory to resolve relative file paths. + * @param onErrorCallback Optional callback for handling errors. + */ +declare function launchEditorMiddleware( + specifiedEditor?: string, + srcRoot?: string, + onErrorCallback?: ErrorCallback, +): Middleware + +export = launchEditorMiddleware diff --git a/packages/launch-editor-middleware/package.json b/packages/launch-editor-middleware/package.json index 101a383..d8d6df2 100644 --- a/packages/launch-editor-middleware/package.json +++ b/packages/launch-editor-middleware/package.json @@ -18,7 +18,8 @@ "url": "git+https://github.com/vitejs/launch-editor.git" }, "files": [ - "index.js" + "index.js", + "index.d.ts" ], "main": "index.js", "scripts": { diff --git a/packages/launch-editor/index.d.ts b/packages/launch-editor/index.d.ts index 53e3833..c2ae404 100644 --- a/packages/launch-editor/index.d.ts +++ b/packages/launch-editor/index.d.ts @@ -1,3 +1,14 @@ +type ErrorCallback = (fileName: string, errorMessage: string | null) => void + +/** + * Launch an editor to open a file at a specific line and column. + * + * @param file File path with optional line and column numbers (e.g. + * "/path/to/file.js:10:2"). + * @param onErrorCallback Optional callback for handling errors. + */ +declare function launchEditor(file: string, onErrorCallback?: ErrorCallback): void + /** * Launch an editor to open a file at a specific line and column. * @@ -9,8 +20,8 @@ */ declare function launchEditor( file: string, - specifiedEditor?: string | ((fileName: string, errorMessage: string | null) => void), - onErrorCallback?: (fileName: string, errorMessage: string | null) => void, + specifiedEditor?: string, + onErrorCallback?: ErrorCallback, ): void export = launchEditor From ae007bbe3b214bee55d59a1793bc008bcb4952dd Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Fri, 29 May 2026 14:59:52 +0900 Subject: [PATCH 10/21] chore: remove unused deps --- package.json | 3 - pnpm-lock.yaml | 627 ------------------------------------------------- 2 files changed, 630 deletions(-) diff --git a/package.json b/package.json index e3a5583..8d6714b 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,7 @@ "format": "oxfmt" }, "devDependencies": { - "@eslint/js": "^9.32.0", "bumpp": "^11.0.1", - "eslint": "^9.32.0", - "globals": "^16.3.0", "lint-staged": "^6.1.1", "oxfmt": "^0.52.0", "oxlint": "^1.67.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4bbcf89..8f9459f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,18 +8,9 @@ importers: .: devDependencies: - '@eslint/js': - specifier: ^9.32.0 - version: 9.32.0 bumpp: specifier: ^11.0.1 version: 11.0.1 - eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.6.1) - globals: - specifier: ^16.3.0 - version: 16.3.0 lint-staged: specifier: ^6.1.1 version: 6.1.1 @@ -50,64 +41,6 @@ importers: packages: - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.0': - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.3.0': - resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.15.1': - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.32.0': - resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.3.4': - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - '@oxfmt/binding-android-arm-eabi@0.52.0': resolution: {integrity: sha512-17EMSJnQ9g+upVHrAUYDMfH5lvRKQ9Nvg8WtEoH72oDr1VpWz+7/o3tD97U1EToen2YAQ/68JmtDYkQUi20dfQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -339,25 +272,6 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-escapes@1.4.0: resolution: {integrity: sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==} engines: {node: '>=0.10.0'} @@ -378,10 +292,6 @@ packages: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - any-observable@0.2.0: resolution: {integrity: sha512-JDQTIRCBZjz2eBLZXOf1H4HREhD1sKSCZk+OUKxwY/HEew2DI7tccV30tmSW8o5UcRMVVEoUk+g7/BuEMnct1A==} engines: {node: '>=0.10.0'} @@ -401,9 +311,6 @@ packages: argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - args-tokenizer@0.3.0: resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} @@ -422,10 +329,6 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -434,10 +337,6 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - ci-info@1.6.0: resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} @@ -460,16 +359,9 @@ packages: color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -483,10 +375,6 @@ packages: cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - date-fns@1.30.1: resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} @@ -498,21 +386,9 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -527,57 +403,11 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.32.0: - resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - execa@0.8.0: resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} engines: {node: '>=4'} @@ -586,15 +416,6 @@ packages: resolution: {integrity: sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==} engines: {node: '>=0.10.0'} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -608,24 +429,9 @@ packages: resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} engines: {node: '>=0.10.0'} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - find-parent-dir@0.3.1: resolution: {integrity: sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -633,18 +439,6 @@ packages: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@16.3.0: - resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} - engines: {node: '>=18'} - has-ansi@2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} @@ -653,22 +447,6 @@ packages: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - indent-string@2.1.0: resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} engines: {node: '>=0.10.0'} @@ -740,36 +518,16 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - leven@2.1.0: resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} engines: {node: '>=0.10.0'} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - lint-staged@6.1.1: resolution: {integrity: sha512-M/7bwLdXbeG7ZNLcasGeLMBDg60/w6obj3KOtINwJyxAxb53XGY0yH5FSZlWklEzuVbTtqtIfAajh6jYIN90AA==} engines: {node: '>=4.2.0'} @@ -791,13 +549,6 @@ packages: resolution: {integrity: sha512-e7ylpHUq3t2ECJaOJ8myJu2O/U69rbwkRqoNY8I2jdtE8E/B+i2Oo2lt6p/Zwhy5QYU0nXHN8YCzlny389XHQA==} engines: {node: '>=4'} - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -822,9 +573,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - normalize-path@1.0.0: resolution: {integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==} engines: {node: '>=0.10.0'} @@ -855,10 +603,6 @@ packages: resolution: {integrity: sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==} engines: {node: '>=0.10.0'} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - ora@0.2.3: resolution: {integrity: sha512-MYGyg17e2GcoDlFrAP39zu4nrAQ+STzl4fosWjR8vAlT0a2wKuuAGZTecffdVLPsnEfxXVlrUcDZ1DU5skr+QQ==} engines: {node: '>=0.10.0'} @@ -893,14 +637,6 @@ packages: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - p-map@1.2.0: resolution: {integrity: sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==} engines: {node: '>=4'} @@ -908,18 +644,10 @@ packages: 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'} - parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} @@ -927,10 +655,6 @@ packages: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -942,20 +666,12 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - pretty-format@21.2.1: resolution: {integrity: sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==} pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - quansync@1.0.0: resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} @@ -967,10 +683,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - restore-cursor@1.0.1: resolution: {integrity: sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==} engines: {node: '>=0.10.0'} @@ -988,18 +700,10 @@ packages: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - shell-quote@1.8.3: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} @@ -1041,10 +745,6 @@ packages: resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} engines: {node: '>=4'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -1053,10 +753,6 @@ packages: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - symbol-observable@0.2.4: resolution: {integrity: sha512-6WFhZ1sqIAG3g55T6RJcOYldJmFrdsnM7adeuFUp1aJwo9EWwMFC0zYHNGGyDvJU/aqPzkQyIsMdNek1u9oRzQ==} engines: {node: '>=0.10.0'} @@ -1077,32 +773,16 @@ packages: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} unconfig@7.5.0: resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -1111,73 +791,12 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - yorkie@1.0.3: resolution: {integrity: sha512-D6MU1N72vv/as9VvDBS8syz8FS9gDPUwP6ILp/vU/PYnTdHrK4qeC7qNabc/CrEtI4mNpWX2dxVvzktQBh8BAA==} engines: {node: '>=4'} snapshots: - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.6.1))': - dependencies: - eslint: 9.32.0(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.21.0': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.3.0': {} - - '@eslint/core@0.15.1': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.32.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.3.4': - dependencies: - '@eslint/core': 0.15.1 - levn: 0.4.1 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.3': {} - '@oxfmt/binding-android-arm-eabi@0.52.0': optional: true @@ -1296,23 +915,6 @@ snapshots: dependencies: quansync: 1.0.0 - '@types/estree@1.0.8': {} - - '@types/json-schema@7.0.15': {} - - acorn-jsx@5.3.2(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn@8.15.0: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - ansi-escapes@1.4.0: {} ansi-regex@2.1.1: {} @@ -1325,10 +927,6 @@ snapshots: dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - any-observable@0.2.0(rxjs@5.5.12): optionalDependencies: rxjs: 5.5.12 @@ -1339,8 +937,6 @@ snapshots: dependencies: sprintf-js: 1.0.3 - argparse@2.0.1: {} - args-tokenizer@0.3.0: {} balanced-match@1.0.2: {} @@ -1364,8 +960,6 @@ snapshots: cac@7.0.0: {} - callsites@3.1.0: {} - chalk@1.1.3: dependencies: ansi-styles: 2.2.1 @@ -1380,11 +974,6 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - ci-info@1.6.0: {} cli-cursor@1.0.2: @@ -1404,14 +993,8 @@ snapshots: dependencies: color-name: 1.1.3 - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} - commander@2.20.3: {} concat-map@0.0.1: {} @@ -1429,26 +1012,14 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - date-fns@1.30.1: {} debug@3.2.7: dependencies: ms: 2.1.3 - debug@4.4.1: - dependencies: - ms: 2.1.3 - dedent@0.7.0: {} - deep-is@0.1.4: {} - defu@6.1.4: {} elegant-spinner@1.0.1: {} @@ -1459,79 +1030,8 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint@9.32.0(jiti@2.6.1): - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.15.1 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.32.0 - '@eslint/plugin-kit': 0.3.4 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.6.1 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - esprima@4.0.1: {} - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - execa@0.8.0: dependencies: cross-spawn: 5.1.0 @@ -1544,12 +1044,6 @@ snapshots: exit-hook@1.1.1: {} - fast-deep-equal@3.1.3: {} - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -1559,53 +1053,18 @@ snapshots: escape-string-regexp: 1.0.5 object-assign: 4.1.1 - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - find-parent-dir@0.3.1: {} - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flatted@3.3.3: {} - get-own-enumerable-property-symbols@3.0.2: {} get-stream@3.0.0: {} - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - globals@14.0.0: {} - - globals@16.3.0: {} - has-ansi@2.0.0: dependencies: ansi-regex: 2.1.1 has-flag@3.0.0: {} - has-flag@4.0.0: {} - - ignore@5.3.2: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - indent-string@2.1.0: dependencies: repeating: 2.0.1 @@ -1662,31 +1121,12 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-buffer@3.0.1: {} - json-parse-better-errors@1.0.2: {} - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - jsonc-parser@3.3.1: {} - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - leven@2.1.0: {} - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - lint-staged@6.1.1: dependencies: app-root-path: 2.2.1 @@ -1755,12 +1195,6 @@ snapshots: transitivePeerDependencies: - zenObservable - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.merge@4.6.2: {} - lodash@4.17.21: {} log-symbols@1.0.2: @@ -1787,8 +1221,6 @@ snapshots: ms@2.1.3: {} - natural-compare@1.4.0: {} - normalize-path@1.0.0: {} npm-path@2.0.4: @@ -1811,15 +1243,6 @@ snapshots: onetime@1.1.0: {} - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - ora@0.2.3: dependencies: chalk: 1.1.3 @@ -1875,43 +1298,25 @@ snapshots: p-finally@1.0.0: {} - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - p-map@1.2.0: {} package-manager-detector@1.6.0: {} - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - parse-json@4.0.0: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - path-exists@4.0.0: {} - path-is-inside@1.0.2: {} path-key@2.0.1: {} - path-key@3.1.1: {} - picocolors@1.1.1: {} picomatch@4.0.3: {} pify@3.0.0: {} - prelude-ls@1.2.1: {} - pretty-format@21.2.1: dependencies: ansi-regex: 3.0.1 @@ -1919,8 +1324,6 @@ snapshots: pseudomap@1.0.2: {} - punycode@2.3.1: {} - quansync@1.0.0: {} repeating@2.0.1: @@ -1929,8 +1332,6 @@ snapshots: require-from-string@2.0.2: {} - resolve-from@4.0.0: {} - restore-cursor@1.0.1: dependencies: exit-hook: 1.1.1 @@ -1946,14 +1347,8 @@ snapshots: dependencies: shebang-regex: 1.0.0 - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} - shell-quote@1.8.3: {} signal-exit@3.0.7: {} @@ -1991,18 +1386,12 @@ snapshots: strip-indent@2.0.0: {} - strip-json-comments@3.1.1: {} - supports-color@2.0.0: {} supports-color@5.5.0: dependencies: has-flag: 3.0.0 - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - symbol-observable@0.2.4: {} symbol-observable@1.0.1: {} @@ -2016,10 +1405,6 @@ snapshots: tinypool@2.1.0: {} - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - unconfig-core@7.5.0: dependencies: '@quansync/fs': 1.0.0 @@ -2033,26 +1418,14 @@ snapshots: quansync: 1.0.0 unconfig-core: 7.5.0 - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - which@1.3.1: dependencies: isexe: 2.0.0 - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - yallist@2.1.2: {} yaml@2.8.3: {} - yocto-queue@0.1.0: {} - yorkie@1.0.3: dependencies: execa: 0.8.0 From 99cfb2d9bb0bbe65a828c6f033810328244e7ea2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 17:28:45 +0900 Subject: [PATCH 11/21] chore(deps): update pnpm/action-setup action to v6 (#133) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [pnpm/action-setup](https://redirect.github.com/pnpm/action-setup) | action | major | `v5` → `v6` | --- ### Release Notes
pnpm/action-setup (pnpm/action-setup) ### [`v6.0.8`](https://redirect.github.com/pnpm/action-setup/compare/v6.0.7...v6.0.8) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.7...v6.0.8) ### [`v6.0.7`](https://redirect.github.com/pnpm/action-setup/compare/v6.0.6...v6.0.7) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.6...v6.0.7) ### [`v6.0.6`](https://redirect.github.com/pnpm/action-setup/releases/tag/v6.0.6) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.5...v6.0.6) ##### What's Changed - fix: bin\_dest output points to self-updated pnpm, not bootstrap by [@​zkochan](https://redirect.github.com/zkochan) in [#​249](https://redirect.github.com/pnpm/action-setup/pull/249) **Full Changelog**: ### [`v6.0.5`](https://redirect.github.com/pnpm/action-setup/releases/tag/v6.0.5) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.4...v6.0.5) ##### What's Changed - fix: append (not prepend) action node dir to PATH for npm bootstrap by [@​zkochan](https://redirect.github.com/zkochan) in [#​241](https://redirect.github.com/pnpm/action-setup/pull/241) **Full Changelog**: ### [`v6.0.4`](https://redirect.github.com/pnpm/action-setup/releases/tag/v6.0.4) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.3...v6.0.4) ##### What's Changed - fix: use npm co-located with the action node binary by [@​benquarmby](https://redirect.github.com/benquarmby) in [#​239](https://redirect.github.com/pnpm/action-setup/pull/239) ##### New Contributors - [@​benquarmby](https://redirect.github.com/benquarmby) made their first contribution in [#​239](https://redirect.github.com/pnpm/action-setup/pull/239) **Full Changelog**: ### [`v6.0.3`](https://redirect.github.com/pnpm/action-setup/releases/tag/v6.0.3) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.2...v6.0.3) Updated pnpm to v11.0.0-rc.5 **Full Changelog**: ### [`v6.0.2`](https://redirect.github.com/pnpm/action-setup/releases/tag/v6.0.2) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6.0.1...v6.0.2) ##### What's Changed - fix: pnpm self-update binary shadowed by bootstrap on PATH by [@​oniani1](https://redirect.github.com/oniani1) in [#​230](https://redirect.github.com/pnpm/action-setup/pull/230) ##### New Contributors - [@​oniani1](https://redirect.github.com/oniani1) made their first contribution in [#​230](https://redirect.github.com/pnpm/action-setup/pull/230) **Full Changelog**: ### [`v6.0.1`](https://redirect.github.com/pnpm/action-setup/releases/tag/v6.0.1) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6...v6.0.1) Update pnpm to v11.0.0-rc.2. `pnpm-lock.yaml` will not be saved with two documents unless the `packageManager` is set via `devEngines.packageManager`. Related issue: [#​228](https://redirect.github.com/pnpm/action-setup/issues/228) ### [`v6.0.0`]() [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v6...v6) ### [`v6`](https://redirect.github.com/pnpm/action-setup/compare/v5...v6) [Compare Source](https://redirect.github.com/pnpm/action-setup/compare/v5.0.0...v6)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/vitejs/launch-editor). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1853b9f..576cf58 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,7 +19,7 @@ jobs: persist-credentials: false - name: Setup pnpm - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5 + uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6 with: run_install: false From a2c383327b573c98863b40985ceb64554005c4f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 17:29:50 +0900 Subject: [PATCH 12/21] chore(deps): update dependency yorkie to v2 (#131) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [yorkie](https://redirect.github.com/yyx990803/yorkie) | [`^1.0.3` → `^2.0.0`](https://renovatebot.com/diffs/npm/yorkie/1.0.3/2.0.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/yorkie/2.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/yorkie/1.0.3/2.0.0?slim=true) | --- ### Release Notes
yyx990803/yorkie (yorkie) ### [`v2.0.0`](https://redirect.github.com/yyx990803/yorkie/compare/37321cd1340d70d4f8959b60d8553be2fc958774...a4cf01d789da2633a33a888b496fa35395e72109) [Compare Source](https://redirect.github.com/yyx990803/yorkie/compare/37321cd1340d70d4f8959b60d8553be2fc958774...a4cf01d789da2633a33a888b496fa35395e72109)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/vitejs/launch-editor). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 8d6714b..c2f80e1 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "lint-staged": "^6.1.1", "oxfmt": "^0.52.0", "oxlint": "^1.67.0", - "yorkie": "^1.0.3" + "yorkie": "^2.0.0" }, "lint-staged": { "*": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f9459f..e29aa97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: specifier: ^1.67.0 version: 1.67.0 yorkie: - specifier: ^1.0.3 - version: 1.0.3 + specifier: ^2.0.0 + version: 2.0.0 packages/launch-editor: dependencies: @@ -791,8 +791,8 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yorkie@1.0.3: - resolution: {integrity: sha512-D6MU1N72vv/as9VvDBS8syz8FS9gDPUwP6ILp/vU/PYnTdHrK4qeC7qNabc/CrEtI4mNpWX2dxVvzktQBh8BAA==} + yorkie@2.0.0: + resolution: {integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==} engines: {node: '>=4'} snapshots: @@ -1426,7 +1426,7 @@ snapshots: yaml@2.8.3: {} - yorkie@1.0.3: + yorkie@2.0.0: dependencies: execa: 0.8.0 is-ci: 1.2.1 From c7438d3666a328191503b2f2e19c876afc10e3a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 17:37:44 +0900 Subject: [PATCH 13/21] chore(deps): update dependency lint-staged to v17 (#130) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [lint-staged](https://redirect.github.com/lint-staged/lint-staged) | [`^6.1.1` → `^17.0.5`](https://renovatebot.com/diffs/npm/lint-staged/6.1.1/17.0.5) | ![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/17.0.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/6.1.1/17.0.5?slim=true) | --- ### Release Notes
lint-staged/lint-staged (lint-staged) ### [`v17.0.5`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1705) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.4...v17.0.5) ##### Patch Changes - [#​1792](https://redirect.github.com/lint-staged/lint-staged/pull/1792) [`1f67271`](https://redirect.github.com/lint-staged/lint-staged/commit/1f672718b6fa67e0f00aafe107cb9f084f4d9102) - Correctly set the `--max-arg-length` default value based on the running platform. This controls how very long lists of staged files are split into multiple chunks. ### [`v17.0.4`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1704) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.3...v17.0.4) ##### Patch Changes - [#​1788](https://redirect.github.com/lint-staged/lint-staged/pull/1788) [`f95c1f8`](https://redirect.github.com/lint-staged/lint-staged/commit/f95c1f8df3368758c44c2052e568aac1b3d4c767) - Another fix for making sure *lint-staged* adds task modifications correctly to the commit in the following cases: - after editing `` it is staged with `git add `, and then committed with `git commit` - after editing `` it is committed with `git commit --all` without explicit `git add` - after editing `` it is committed with `git commit ` without explicit `git add` There's new test cases which actually setup the Git `pre_commit` hook to run *lint-staged* and verify them. These issues started in **v17.0.0** when trying to improve support for committig without having explicitly staged files. ### [`v17.0.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1703) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.2...v17.0.3) ##### Patch Changes - [#​1782](https://redirect.github.com/lint-staged/lint-staged/pull/1782) [`06813f9`](https://redirect.github.com/lint-staged/lint-staged/commit/06813f9ab661db987e7720086ef9ec3f552ee097) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Fix *lint-staged* behavior when implicitly committing files without using `git add` by either: - `git commit -am "my commit message"` where `-a` (`--all`) means to automatically stage all tracked modified and deleted files - `git commit -m "my commit message" .` where `.` is an example of a [*pathspec*](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt-pathspec) where matching files will be staged ### [`v17.0.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1702) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.1...v17.0.2) ##### Patch Changes - [#​1779](https://redirect.github.com/lint-staged/lint-staged/pull/1779) [`88670ca`](https://redirect.github.com/lint-staged/lint-staged/commit/88670ca2278200f6348ed663358895ddc4bfff3c) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Enable immutable GitHub releases ### [`v17.0.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1701) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v17.0.0...v17.0.1) ##### Patch Changes - [#​1776](https://redirect.github.com/lint-staged/lint-staged/pull/1776) [`4a5664b`](https://redirect.github.com/lint-staged/lint-staged/commit/4a5664be63af19590ec37940f705dad870ac5cfb) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Adjust GitHub Actions workflow so that automatic publishing works with signed commits. ### [`v17.0.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1700) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.4.0...v17.0.0) ##### Major Changes - [#​1745](https://redirect.github.com/lint-staged/lint-staged/pull/1745) [`e244adf`](https://redirect.github.com/lint-staged/lint-staged/commit/e244adfab430be95803e74b20acf518517054c9f) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - **Node.js v20 is no longer supported, and the oldest supported version is now `22.22.1`**, which is an active LTS version at the time of this release. Node.js 20 will be EOL after April 2026. Please upgrade your Node.js version! - [#​1676](https://redirect.github.com/lint-staged/lint-staged/pull/1676) [`0584e0b`](https://redirect.github.com/lint-staged/lint-staged/commit/0584e0b8824a07ea4d0151f2c17fc37c4905a421) Thanks [@​outslept](https://redirect.github.com/outslept)! - *Lint-staged* now tries to verify the installed Git version is at least `2.32.0`, released in 2021. If you're using an even older Git version, you need to [upgrade](https://git-scm.com/install/mac) it before running *lint-staged*! - [#​1745](https://redirect.github.com/lint-staged/lint-staged/pull/1745) [`2dcc40a`](https://redirect.github.com/lint-staged/lint-staged/commit/2dcc40a1a98aea20d38f76031ac30b278f81682a) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - The dependency `yaml` is now marked as optional and probably won't be installed by default. If you're using a YAML configuration file you should install the package separately: ```shell npm install --development yaml ``` If you're using `.lintstagedrc` as the config file name (without a file extension), it will be treated as a YAML file. If the content is JSON, consider renaming it to `.lintstagedrc.json` to avoid needing to install `yaml`. ##### Minor Changes - [#​1748](https://redirect.github.com/lint-staged/lint-staged/pull/1748) [`809d5ef`](https://redirect.github.com/lint-staged/lint-staged/commit/809d5ef0a66edb2b26b233d33ce8e14af6c978e7) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Add new option `--hide-all` for hiding all unstaged changes and untracked files, before running tasks. This makes it easier to run tools like [Knip](https://knip.dev) which check for unused code. Untracked files are included in the backup stash and restored automatically after running. - [#​1759](https://redirect.github.com/lint-staged/lint-staged/pull/1759) [`f13045a`](https://redirect.github.com/lint-staged/lint-staged/commit/f13045a5eae28c3233fc37146b0e1f51739c254b) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Update dependencies, including [`tinyexec@1.1.1`](https://redirect.github.com/tinylibs/tinyexec/releases/tag/1.1.1) to fix the following issues: - When using a Node.js version manager with multiple versions installed ([nvm](https://redirect.github.com/nvm-sh/nvm), [n](https://redirect.github.com/tj/n), for example), scripts with the `#!/usr/bin/env node` shebang ([Prettier](https://redirect.github.com/prettier/prettier), [ESLint](https://redirect.github.com/eslint/eslint), for example) were previously spawned using the default Node.js version configured by the version manager (the one `which node` points to) on POSIX systems. Now, they will be spawned with the same version that *lint-staged* itself was started with. - For example, if your default Node.js version is 24.14.1 but *lint-staged* is run with the latest version 25.9.0, the tasks spawned by *lint-staged* will now also use version 25.9.0. Previously they were spawned using 24.14.1. - When installing Node.js from the Ubuntu App Center ([Snap store](https://snapcraft.io/store)), the `node` executable available in `PATH` is a symlink pointing to Snap itself. The sandboxing features of Snap prevented *lint-staged* from spawning scripts with the `#!/usr/bin/env node` shebang, because it meant *lint-staged* tried to spawn Snap via the symlink. This resulted in an `ENOENT` error when trying to run `prettier`, for example. Now, since the real `node` executable's directory is available in the `PATH`, *lint-staged* will instead spawn the script with the real `node` binary succesfully. - [#​1761](https://redirect.github.com/lint-staged/lint-staged/pull/1761) [`d3251b1`](https://redirect.github.com/lint-staged/lint-staged/commit/d3251b192d7116f059e7cabeffa3bfd7788dedeb) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - *Lint-staged* now runs `git update-index --again` after running tasks, instead of `git add `. This should improve compatibility when using non-default indexes, for example when committing with a pathspec `git commit -m "message" .` instead of adding files to the index. - [#​1745](https://redirect.github.com/lint-staged/lint-staged/pull/1745) [`a9585ac`](https://redirect.github.com/lint-staged/lint-staged/commit/a9585ac7ce0162c5c6c9aa88a28c11c812abedaf) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove `commander` as a dependency and use the built-in `parseArgs` from `node:util` to parse CLI flags. ##### Patch Changes - [#​1755](https://redirect.github.com/lint-staged/lint-staged/pull/1755) [`c82d30b`](https://redirect.github.com/lint-staged/lint-staged/commit/c82d30bda8c80f886bdfead2e7aa123f7337aa76) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - All tests now pass on the [Bun](https://bun.com) runtime (latest). - [#​1750](https://redirect.github.com/lint-staged/lint-staged/pull/1750) [`a401818`](https://redirect.github.com/lint-staged/lint-staged/commit/a4018185016617b02e4473d14e036a5f1a9b3f85) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove manual handling for `git stash --keep-index` resurrecting deleted files, because the issue was fixed in Git `2.23.0` and *lint-staged* requires at least Git `2.32.0`. - [#​1771](https://redirect.github.com/lint-staged/lint-staged/pull/1771) [`c4b8936`](https://redirect.github.com/lint-staged/lint-staged/commit/c4b893665bf39670650ae71b4ec2073025e9984e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Fix documentation about multiple config files and the `--cwd` option. When using it, all tasks will be run in the specified directory. For example, to run everything in the actual `process.cwd()`, use `lint-staged --cwd="."`. ### [`v16.4.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1640) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.3.4...v16.4.0) ##### Minor Changes - [#​1739](https://redirect.github.com/lint-staged/lint-staged/pull/1739) [`687fc90`](https://redirect.github.com/lint-staged/lint-staged/commit/687fc9069a312ac83ca48f035a1bbf453db91814) Thanks [@​hyperz111](https://redirect.github.com/hyperz111)! - Replace `micromatch` with `picomatch` to reduce dependencies. ### [`v16.3.4`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1634) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.3.3...v16.3.4) ##### Patch Changes - [#​1742](https://redirect.github.com/lint-staged/lint-staged/pull/1742) [`9d6e827`](https://redirect.github.com/lint-staged/lint-staged/commit/9d6e827b0c55da5b091c989111f6c55dd76539d9) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Update dependencies, including [`tinyexec@1.0.4`](https://redirect.github.com/tinylibs/tinyexec/releases/tag/1.0.4) to make sure local `node_modules/.bin` are preferred to global locations (released in [`tinyexec@1.0.3`](https://redirect.github.com/tinylibs/tinyexec/releases/tag/1.0.3)). ### [`v16.3.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1633) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.3.2...v16.3.3) ##### Patch Changes - [#​1740](https://redirect.github.com/lint-staged/lint-staged/pull/1740) [`0109e8d`](https://redirect.github.com/lint-staged/lint-staged/commit/0109e8d1507409d950dab0d65ce27bd40b1137c7) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Make sure Git's warning about CRLF line-endings doesn't interfere with creating initial backup stash. ### [`v16.3.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1632) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.3.1...v16.3.2) ##### Patch Changes - [#​1735](https://redirect.github.com/lint-staged/lint-staged/pull/1735) [`2adaf6c`](https://redirect.github.com/lint-staged/lint-staged/commit/2adaf6c3a76152abddbf23b749dfa5d62982f3cf) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Hide the extra `cmd` window on Windows by spawning tasks without the `detached` option. ### [`v16.3.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1631) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.3.0...v16.3.1) ##### Patch Changes - [#​1729](https://redirect.github.com/lint-staged/lint-staged/pull/1729) [`cd5d762`](https://redirect.github.com/lint-staged/lint-staged/commit/cd5d762c288bcfe36274c32f018cea97dfe11280) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove `nano-spawn` as a dependency from `package.json` as it was replaced with `tinyexec` and is no longer used. ### [`v16.3.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1630) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.7...v16.3.0) ##### Minor Changes - [#​1698](https://redirect.github.com/lint-staged/lint-staged/pull/1698) [`feda37a`](https://redirect.github.com/lint-staged/lint-staged/commit/feda37aa590789e847f32a4aabc346af1d79c547) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Run external processes with [`tinyexec`](https://redirect.github.com/tinylibs/tinyexec) instead of [`nano-spawn`](https://redirect.github.com/sindresorhus/nano-spawn). `nano-spawn` replaced [`execa`](https://redirect.github.com/sindresorhus/execa) in *lint-staged* version 16 to limit the amount of npm dependencies required, but caused some unknown issues related to spawning tasks. Let's hope `tinyexec` improves the situation. - [#​1699](https://redirect.github.com/lint-staged/lint-staged/pull/1699) [`1346d16`](https://redirect.github.com/lint-staged/lint-staged/commit/1346d16387e188911ef64e8bad6b8a6252cb6d71) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove `pidtree` as a dependency. When a task fails, its sub-processes are killed more efficiently via the process group on Unix systems, and the `taskkill` command on Windows. ##### Patch Changes - [#​1726](https://redirect.github.com/lint-staged/lint-staged/pull/1726) [`87467aa`](https://redirect.github.com/lint-staged/lint-staged/commit/87467aaa76e1edc2547f3f3d462a4495afa5337d) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Incorrect brace expansions like `*.{js}` (*nothing to expand*) are detected exhaustively, instead of just a single pass. ### [`v16.2.7`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1627) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.6...v16.2.7) ##### Patch Changes - [#​1711](https://redirect.github.com/lint-staged/lint-staged/pull/1711) [`ef74c8d`](https://redirect.github.com/lint-staged/lint-staged/commit/ef74c8d165d5acd3ce88567e02b891e0e9af8e0e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Do not display a "*failed to spawn*" error message when a task fails normally. This message is reserved for when the task didn't run because spawning it failed. ### [`v16.2.6`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1626) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.5...v16.2.6) ##### Patch Changes - [#​1693](https://redirect.github.com/lint-staged/lint-staged/pull/1693) [`33d4502`](https://redirect.github.com/lint-staged/lint-staged/commit/33d4502ef9c939a9c6f41fc630a34e0985220f8e) Thanks [@​Adrian-Baran-GY](https://redirect.github.com/Adrian-Baran-GY)! - Fix problems with `--continue-on-error` option, where tasks might have still been killed (`SIGINT`) when one of them failed. ### [`v16.2.5`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1625) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.4...v16.2.5) ##### Patch Changes - [#​1687](https://redirect.github.com/lint-staged/lint-staged/pull/1687) [`9e02d9d`](https://redirect.github.com/lint-staged/lint-staged/commit/9e02d9dc8a84bfeb7995520f00f7080b07a2e839) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Fix unhandled promise rejection when spawning tasks (*instead of the tasks themselves failing*). Previously when a task failed to spawn, *lint-staged* also failed and the backup stash might not have been automatically restored. ### [`v16.2.4`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1624) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.3...v16.2.4) ##### Patch Changes - [#​1682](https://redirect.github.com/lint-staged/lint-staged/pull/1682) [`0176038`](https://redirect.github.com/lint-staged/lint-staged/commit/01760380e57080d136cc396455346c36aef5770e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Update dependencies, including [`nano-spawn@2.0.0`](https://redirect.github.com/sindresorhus/nano-spawn/releases/tag/v2.0.0) with bug fixes. - [#​1671](https://redirect.github.com/lint-staged/lint-staged/pull/1671) [`581a54e`](https://redirect.github.com/lint-staged/lint-staged/commit/581a54eea6ba3a3a1b715407c895f63a961903f3) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Speed up execution by only importing the `yaml` depedency if using YAML configuration files. ### [`v16.2.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1623) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.2...v16.2.3) ##### Patch Changes - [#​1669](https://redirect.github.com/lint-staged/lint-staged/pull/1669) [`27cd541`](https://redirect.github.com/lint-staged/lint-staged/commit/27cd5413d973baea6b4f3da704fb3bee8298e751) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - When using `--fail-on-changes`, automatically hidden (partially) unstaged changes are no longer counted to make *lint-staged* fail. ### [`v16.2.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1622) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.1...v16.2.2) ##### Patch Changes - [#​1667](https://redirect.github.com/lint-staged/lint-staged/pull/1667) [`699f95d`](https://redirect.github.com/lint-staged/lint-staged/commit/699f95df8f89ac7f7d360bbf93740d19d5899ac5) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - The backup stash will not be dropped when using `--fail-on-changes` and there are errors. When reverting to original state is disabled (via `--no-revert` or `--fail-on-changes`), hidden (partially) unstaged changes are still restored automatically so that it's easier to resolve the situation manually. Additionally, the example for using the backup stash manually now uses the correct backup hash, if available: ```shell % npx lint-staged --fail-on-changes ✔ Backed up original state in git stash (c18d55a3) ✔ Running tasks for staged files... ✖ Tasks modified files and --fail-on-changes was used! ↓ Cleaning up temporary files... ✖ lint-staged failed because `--fail-on-changes` was used. Any lost modifications can be restored from a git stash: > git stash list --format="%h %s" c18d55a3 On main: lint-staged automatic backup > git apply --index c18d55a3 ``` ### [`v16.2.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1621) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.2.0...v16.2.1) ##### Patch Changes - [#​1664](https://redirect.github.com/lint-staged/lint-staged/pull/1664) [`8277b3b`](https://redirect.github.com/lint-staged/lint-staged/commit/8277b3b298421ebbb39c43d7e3538481e15c4659) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - The built-in TypeScript types have been updated to more closely match the implementation. Notably, the list of staged files supplied to task functions is `readonly string[]` and can't be mutated. Thanks [@​outslept](https://redirect.github.com/outslept)! ```diff export default { --- "*": (files: string[]) => void console.log('staged files', files) +++ "*": (files: readonly string[]) => void console.log('staged files', files) } ``` - [#​1654](https://redirect.github.com/lint-staged/lint-staged/pull/1654) [`70b9af3`](https://redirect.github.com/lint-staged/lint-staged/commit/70b9af3ac3fd66af94936e55bb3e91381937b41f) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - This version has been published from GitHub Actions using [Trusted Publishing for npm packages](https://docs.npmjs.com/trusted-publishers). - [#​1659](https://redirect.github.com/lint-staged/lint-staged/pull/1659) [`4996817`](https://redirect.github.com/lint-staged/lint-staged/commit/49968170abb3bab7ac8dc0a6bc5ea92850337baa) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Fix searching configuration files when the working directory is a subdirectory of a git repository, and there are `package.json` files in the working directory. This situation might happen when running *lint-staged* for a single package in a monorepo. - [#​1654](https://redirect.github.com/lint-staged/lint-staged/pull/1654) [`7021f0a`](https://redirect.github.com/lint-staged/lint-staged/commit/7021f0af40ac1d5787501894c0f2222980023703) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Return the caret semver range (`^`) to direct dependencies so that future patch and minor versions are allowed. This enables projects to better maintain and deduplicate their own transitive dependencies while not requiring direct updates to *lint-staged*. This was changed in [16.2.0](https://redirect.github.com/lint-staged/lint-staged/releases/tag/v16.2.0) after the vulnerability issues with `chalk` and `debug`, which were also removed in the same version. Given the recent vulnerabilities in the *npm* ecosystem, it's best to be very careful when updating dependencies. ### [`v16.2.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1620) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.6...v16.2.0) ##### Minor Changes - [#​1615](https://redirect.github.com/lint-staged/lint-staged/pull/1615) [`99eb742`](https://redirect.github.com/lint-staged/lint-staged/commit/99eb74200e8db69e72dba45314025953b8b0794e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Added a new option `--fail-on-changes` to make *lint-staged* exit with code 1 when tasks modify any files, making the `precommit` hook fail. This is similar to the `git diff --exit-code` option. Using this flag also implies the `--no-revert` flag which means any changes made by tasks will be left in the working tree after failing, so that they can be manually staged and the commit tried again. - [#​1611](https://redirect.github.com/lint-staged/lint-staged/pull/1611) [`cd05fd3`](https://redirect.github.com/lint-staged/lint-staged/commit/cd05fd349594baf586fbafb05588ff07d86060b7) Thanks [@​rlorenzo](https://redirect.github.com/rlorenzo)! - Added a new option `--continue-on-error` so that *lint-staged* will run all tasks to completion even if some of them fail. By default, *lint-staded* will exit early on the first failure. - [#​1637](https://redirect.github.com/lint-staged/lint-staged/pull/1637) [`82fcc07`](https://redirect.github.com/lint-staged/lint-staged/commit/82fcc0789c17bf6b2ea2649147abec77fa619375) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Internal *lint-staged* errors are now thrown and visible in the console output. Previously they were caught with the process exit code set to 1, but not logged. This happens when, for example, there's a syntax error in the *lint-staged* configuration file. - [#​1647](https://redirect.github.com/lint-staged/lint-staged/pull/1647) [`a5ecc06`](https://redirect.github.com/lint-staged/lint-staged/commit/a5ecc0605d52756167417c84cb0007ea7bceaaa3) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove [debug](https://redirect.github.com/debug-js/debug) as a dependency due to recent malware issue; read more at [debug-js/debug#1005](https://redirect.github.com/debug-js/debug/issues/1005). Because of this, the `DEBUG` environment variable is no longer supported — use the `--debug` to enable debugging - [#​1636](https://redirect.github.com/lint-staged/lint-staged/pull/1636) [`8db2717`](https://redirect.github.com/lint-staged/lint-staged/commit/8db2717574ebfa2b80e0fc4eb0b24d705fd264fc) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Added a new option `--hide-unstaged` so that *lint-staged* will hide all unstaged changes to tracked files before running tasks. The changes will be applied back after running the tasks. Note that the combination of flags `--hide-unstaged --no-hide-partially-staged` isn't meaningful and behaves the same as just `--hide-unstaged`. Thanks to [@​ItsNickBarry](https://redirect.github.com/ItsNickBarry) for the idea and initial implementation in [#​1552](https://redirect.github.com/lint-staged/lint-staged/pull/1552). - [#​1648](https://redirect.github.com/lint-staged/lint-staged/pull/1648) [`7900b3b`](https://redirect.github.com/lint-staged/lint-staged/commit/7900b3b79c5e2e69662cb8b1bcbcae79c3549421) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove [lilconfig](https://redirect.github.com/antonk52/lilconfig) to reduce reliance on third-party dependencies. It was used to find possible config files outside of those tracked in Git, including from the parent directories. This behavior has been moved directly into *lint-staged* and should work about the same. ##### Patch Changes - [#​1633](https://redirect.github.com/lint-staged/lint-staged/pull/1633) [`7f9e485`](https://redirect.github.com/lint-staged/lint-staged/commit/7f9e485a981707897e0d417f6a62008f0c098e00) Thanks [@​dependabot](https://redirect.github.com/apps/dependabot)! - Bumps [listr2](https://redirect.github.com/listr2/listr2) from 9.0.3 to 9.0.4. - [#​1626](https://redirect.github.com/lint-staged/lint-staged/pull/1626) [`99d5a9b`](https://redirect.github.com/lint-staged/lint-staged/commit/99d5a9b0ddcba7d471d39ff3969d37988f1e2705) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Due to recent phishing attacks, for example [chalk@5.6.1](https://redirect.github.com/chalk/chalk/issues/656) was released with malware. To avoid *lint-staged*'s users being at risk the **direct dependencies are pinned to exact versions**, instead of allowing future patch versions with the [caret (`^`) range](https://docs.npmjs.com/cli/v6/using-npm/semver#caret-ranges-123-025-004). - [#​1588](https://redirect.github.com/lint-staged/lint-staged/pull/1588) [`035bbf2`](https://redirect.github.com/lint-staged/lint-staged/commit/035bbf268ac47bbaf2cfa737c3b2240d38feb22e) Thanks [@​outslept](https://redirect.github.com/outslept)! - Increase performance by listing staged files and searching for configuration concurrently. - [#​1645](https://redirect.github.com/lint-staged/lint-staged/pull/1645) [`deba3ad`](https://redirect.github.com/lint-staged/lint-staged/commit/deba3ad83581938dd71b86b563e62827b5fc2a0a) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Remove [chalk](https://redirect.github.com/chalk/chalk) as a dependency due to recent malware issue; read more at [chalk/chalk#656](https://redirect.github.com/chalk/chalk/issues/656). If you are having trouble with ANSI color codes when using *lint-staged*, you can try setting either `FORCE_COLOR=true` or `NO_COLOR=true` env variables. ### [`v16.1.6`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1616) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.5...v16.1.6) ##### Patch Changes - [#​1610](https://redirect.github.com/lint-staged/lint-staged/pull/1610) [`e93578e`](https://redirect.github.com/lint-staged/lint-staged/commit/e93578e265a69ed6b02fcaa11486078c1bdbdaaa) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Try to improve terminating of subprocess of tasks by using `SIGKILL`, and only calling `pidtree` when the the main task process has a known pid. ### [`v16.1.5`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1615) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.4...v16.1.5) ##### Patch Changes - [#​1608](https://redirect.github.com/lint-staged/lint-staged/pull/1608) [`4e3ce22`](https://redirect.github.com/lint-staged/lint-staged/commit/4e3ce225b33f759f78a84d156189dc38e536cdc6) Thanks [@​srsatt](https://redirect.github.com/srsatt)! - Detect the git repo's top-level directory correctly when in a worktree. ### [`v16.1.4`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1614) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.3...v16.1.4) ##### Patch Changes - [#​1604](https://redirect.github.com/lint-staged/lint-staged/pull/1604) [`90b37b0`](https://redirect.github.com/lint-staged/lint-staged/commit/90b37b00c2c30b9cacf6c080f6a0885e1151eb7a) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Add another `types` field to `package.json` to make even more sure NPM detects that *lint-staged* includes built-in TypeScript type definitions. ### [`v16.1.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1613) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.2...v16.1.3) ##### Patch Changes - [#​1602](https://redirect.github.com/lint-staged/lint-staged/pull/1602) [`7ea700b`](https://redirect.github.com/lint-staged/lint-staged/commit/7ea700bcf3d0078a01720a9c8dc13a271387afbd) Thanks [@​dword-design](https://redirect.github.com/dword-design)! - Add the `types` field to `package.json` to make sure NPM detects *lint-staged* includes built-in TypeScript type definitions. ### [`v16.1.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1612) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.1...v16.1.2) ##### Patch Changes - [#​1570](https://redirect.github.com/lint-staged/lint-staged/pull/1570) [`a7c0c88`](https://redirect.github.com/lint-staged/lint-staged/commit/a7c0c88bcfe94e695528cb33e69fea58586691fc) Thanks [@​ItsNickBarry](https://redirect.github.com/ItsNickBarry)! - When using `--diff-filter` with the `D` option to include deleted staged files, *lint-staged* no longer tries to stage the deleted files, unless they're no longer deleted. Previously this caused an error from `git add` like `fatal: pathspec 'deleted-file' did not match any files`. - [`38f942e`](https://redirect.github.com/lint-staged/lint-staged/commit/38f942ecc456355d5f12af68db1696f3411f65c2) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Removed an extraneous log entry that printed `shouldHidePArtiallyStagedFiles` to console output. ### [`v16.1.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1611) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.0...v16.1.1) ##### Patch Changes - [#​1565](https://redirect.github.com/lint-staged/lint-staged/pull/1565) [`3686977`](https://redirect.github.com/lint-staged/lint-staged/commit/3686977ccdadf70b709c16c0346ef6c2b18e2376) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - *Lint-staged* now explicitly warns about potential data loss when using `--no-stash`. - [#​1571](https://redirect.github.com/lint-staged/lint-staged/pull/1571) [`02299a9`](https://redirect.github.com/lint-staged/lint-staged/commit/02299a9e4f98a05c13beb27f3596af73aaa8c150) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Function tasks (introduced in v16.0.0) only receive the staged files matching the configured glob, instead of all staged files. - [#​1563](https://redirect.github.com/lint-staged/lint-staged/pull/1563) [`bc61c74`](https://redirect.github.com/lint-staged/lint-staged/commit/bc61c74383b6d100c55b8d275b979d583ffbe5a1) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - This version fixes incorrect behavior where unstaged changes were committed when using the `--no-stash` option. This happened because `--no-stash` implied `--no-hide-partially-staged`, meaning unstaged changes to files which also had other staged changes were added to the commit by *lint-staged*; this is no longer the case. The previous (incorrect) behavior can still be achieved by using both options `--no-stash --no-hide-partially-staged` at the same time. ### [`v16.1.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1610) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v16.0.0...v16.1.0) ##### Minor Changes - [#​1536](https://redirect.github.com/lint-staged/lint-staged/pull/1536) [`e729daa`](https://redirect.github.com/lint-staged/lint-staged/commit/e729daa3b3ae28e613f63e730652dbfad5d1c594) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - A new flag `--no-revert` has been introduced for when task modifications should be applied to the index before aborting the commit in case of errors. By default, *lint-staged* will clear all task modifications and revert to the original state. - [#​1550](https://redirect.github.com/lint-staged/lint-staged/pull/1550) [`b27fa3f`](https://redirect.github.com/lint-staged/lint-staged/commit/b27fa3fecb75bcdcaa4bcd483c9d5c0755a22607) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - *Lint-staged* now ignores symlinks and leaves them out from the list of staged files. ##### Patch Changes - [#​1558](https://redirect.github.com/lint-staged/lint-staged/pull/1558) [`c37dc38`](https://redirect.github.com/lint-staged/lint-staged/commit/c37dc38dddbdebc41df4dbd909d79c98c3f69eb3) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - The minimum required Node.js version is lowered to `20.17` following [nano-spawn@1.0.2](https://redirect.github.com/sindresorhus/nano-spawn/releases/tag/v1.0.2). ### [`v16.0.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1600) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.5.2...v16.0.0) ##### Major Changes - [#​1546](https://redirect.github.com/lint-staged/lint-staged/pull/1546) [`158d15c`](https://redirect.github.com/lint-staged/lint-staged/commit/158d15c9aea0a3a87790ec3766442763cf387dba) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Processes are spawned using [nano-spawn](https://redirect.github.com/sindresorhus/nano-spawn) instead of [execa](https://redirect.github.com/sindresorhus/execa). If you are using Node.js scripts as tasks, you might need to explicitly run them with `node`, especially when using Windows: ```json { "*.js": "node my-js-linter.js" } ``` - [#​1546](https://redirect.github.com/lint-staged/lint-staged/pull/1546) [`158d15c`](https://redirect.github.com/lint-staged/lint-staged/commit/158d15c9aea0a3a87790ec3766442763cf387dba) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - The `--shell` flag has been removed and *lint-staged* no longer supports evaluating commands directly via a shell. To migrate existing commands, you can create a shell script and invoke it instead. Lint-staged will pass matched staged files as a list of arguments, accessible via `"$@​"`: ```shell ``` ### [`v15.5.2`]() [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.5.1...v15.5.2) ### [`v15.5.1`]() [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.5.0...v15.5.1) ### [`v15.5.0`]() [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.3...v15.5.0) ### [`v15.4.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1543) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.2...v15.4.3) ##### Patch Changes - [#​1512](https://redirect.github.com/lint-staged/lint-staged/pull/1512) [`cbfed1d`](https://redirect.github.com/lint-staged/lint-staged/commit/cbfed1dfd2465c4198c692955281f0836600bea1) Thanks [@​tarik02](https://redirect.github.com/tarik02)! - Adjust TypeScript types for the default export so that it can be used as a value without error TS2693. ### [`v15.4.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1542) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.1...v15.4.2) ##### Patch Changes - [#​1509](https://redirect.github.com/lint-staged/lint-staged/pull/1509) [`8827ebf`](https://redirect.github.com/lint-staged/lint-staged/commit/8827ebf29dc8f25149a36450b4a0023425202e18) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Change *lint-staged*'s dependencies to use [caret (`^`) ranges](https://docs.npmjs.com/cli/v6/using-npm/semver#caret-ranges-123-025-004) instead of [tilde (`~`)](https://docs.npmjs.com/cli/v6/using-npm/semver#tilde-ranges-123-12-1). This makes it easier for package managers to perform dependency management when minor-level updates are also permitted instead of just patch-level. ### [`v15.4.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1541) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.0...v15.4.1) ##### Patch Changes - [#​1504](https://redirect.github.com/lint-staged/lint-staged/pull/1504) [`1c7a45e`](https://redirect.github.com/lint-staged/lint-staged/commit/1c7a45ed2c7fee9d5f55337be16a51e4c9b240e1) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Default TypeScript config filenames match JS equivalents. - [#​1504](https://redirect.github.com/lint-staged/lint-staged/pull/1504) [`9cc18c9`](https://redirect.github.com/lint-staged/lint-staged/commit/9cc18c9debb185490f9ae4f9c1d21ec8c2587393) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Add missing conditional exports syntax for TypeScript types. ### [`v15.4.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1540) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.3.0...v15.4.0) ##### Minor Changes - [#​1500](https://redirect.github.com/lint-staged/lint-staged/pull/1500) [`a8ec1dd`](https://redirect.github.com/lint-staged/lint-staged/commit/a8ec1ddb587d2c1c2420dbb4baff8160f0ac46c9) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - *Lint-staged* now provides TypeScript types for the configuration and main Node.js API. You can use the JSDoc syntax in your JS configuration files: ```js /** * @​filename: lint-staged.config.js * @​type {import('lint-staged').Configuration} */ export default { '*': 'prettier --write', } ``` It's also possible to use the `.ts` file extension for the configuration if your Node.js version supports it. The `--experimental-strip-types` flag was introduced in [Node.js v22.6.0](https://redirect.github.com/nodejs/node/releases/tag/v22.6.0) and unflagged in [v23.6.0](https://redirect.github.com/nodejs/node/releases/tag/v23.6.0), enabling Node.js to execute TypeScript files without additional configuration. ```shell export NODE_OPTIONS="--experimental-strip-types" npx lint-staged --config lint-staged.config.ts ``` ##### Patch Changes - [#​1501](https://redirect.github.com/lint-staged/lint-staged/pull/1501) [`9b79364`](https://redirect.github.com/lint-staged/lint-staged/commit/9b793640e1f87b46e4f40fcfc1ecf9d6f6013ac9) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Handle possible failures when logging user shell for debug info. ### [`v15.3.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1530) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.11...v15.3.0) ##### Minor Changes - [#​1495](https://redirect.github.com/lint-staged/lint-staged/pull/1495) [`e69da9e`](https://redirect.github.com/lint-staged/lint-staged/commit/e69da9e614db2d45f56e113d45d5ec0157813423) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Added more info to the debug logs so that "environment" info doesn't need to be added separately to GitHub issues. - [#​1493](https://redirect.github.com/lint-staged/lint-staged/pull/1493) [`fa0fe98`](https://redirect.github.com/lint-staged/lint-staged/commit/fa0fe98104f8885f673b98b8b49ae586de699c5e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Added more help messages around the automatic `git stash` that *lint-staged* creates as a backup (by default). The console output also displays the short git *hash* of the stash so that it's easier to recover lost files in case some fatal errors are encountered, or the process is killed before completing. For example: ``` % npx lint-staged ✔ Backed up original state in git stash (20addf8) ✔ Running tasks for staged files... ✔ Applying modifications from tasks... ✔ Cleaning up temporary files... ``` where the backup can be seen with `git show 20addf8`, or `git stash list`: ``` % git stash list stash@{0}: lint-staged automatic backup (20addf8) ``` ### [`v15.2.11`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#15211) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.10...v15.2.11) ##### Patch Changes - [#​1484](https://redirect.github.com/lint-staged/lint-staged/pull/1484) [`bcfe309`](https://redirect.github.com/lint-staged/lint-staged/commit/bcfe309fca88aedf42b6a321383de49eb361c5a0) Thanks [@​wormsik](https://redirect.github.com/wormsik)! - Escape paths containing spaces when using the "shell" option. - [#​1487](https://redirect.github.com/lint-staged/lint-staged/pull/1487) [`7dd8caa`](https://redirect.github.com/lint-staged/lint-staged/commit/7dd8caa8f80fe1a6ce40939c1224b6774000775a) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Do not treat submodule root paths as "staged files". This caused *lint-staged* to fail to a Git error when only updating the revision of a submodule. ### [`v15.2.10`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#15210) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.9...v15.2.10) ##### Patch Changes - [#​1471](https://redirect.github.com/lint-staged/lint-staged/pull/1471) [`e3f283b`](https://redirect.github.com/lint-staged/lint-staged/commit/e3f283b250868b7c15ceb54d2a51b2e5fb3a18a9) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Update minor dependencies, including `micromatch@~4.0.8`. ### [`v15.2.9`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1529) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.8...v15.2.9) ##### Patch Changes - [#​1463](https://redirect.github.com/lint-staged/lint-staged/pull/1463) [`b69ce2d`](https://redirect.github.com/lint-staged/lint-staged/commit/b69ce2ddfd5a7ae576f4fef4afc60b8a81f3c945) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Set the maximum number of event listeners to the number of tasks. This should silence the console warning `MaxListenersExceededWarning: Possible EventEmitter memory leak detected`. ### [`v15.2.8`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1528) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.7...v15.2.8) ##### Patch Changes - [`f0480f0`](https://redirect.github.com/lint-staged/lint-staged/commit/f0480f01b24b9f6443a12515d413a7ba4dda3981) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - In the previous version the native `git rev-parse --show-toplevel` command was taken into use for resolving the current git repo root. This version switched the `--show-toplevel` flag with `--show-cdup`, because on Git installed via MSYS2 the former was returning absolute paths that do not work with Node.js `child_process`. The new flag returns a path relative to the working directory, avoiding the issue. The GitHub Actions workflow has been updated to install Git via MSYS2, to ensure better future compatibility; using the default Git binary in the GitHub Actions runner was working correctly even with MSYS2. ### [`v15.2.7`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1527) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.6...v15.2.7) ##### Patch Changes - [#​1440](https://redirect.github.com/lint-staged/lint-staged/pull/1440) [`a51be80`](https://redirect.github.com/lint-staged/lint-staged/commit/a51be804b63307ac7af3c82f4cb2d43dbe92daac) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - In the previous version the native `git rev-parse --show-toplevel` command was taken into use for resolving the current git repo root. This version drops the `--path-format=absolute` option to support earlier git versions since it's also the default behavior. If you are still having trouble, please try upgrading `git` to the latest version. ### [`v15.2.6`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1526) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.5...v15.2.6) ##### Patch Changes - [#​1433](https://redirect.github.com/lint-staged/lint-staged/pull/1433) [`119adb2`](https://redirect.github.com/lint-staged/lint-staged/commit/119adb29854cabddbfcf0469d7c8a0126184a5d4) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Use native "git rev-parse" commands to determine git repo root directory and the .git config directory, instead of using custom logic. This hopefully makes path resolution more robust on non-POSIX systems. ### [`v15.2.5`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1525) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.4...v15.2.5) ##### Patch Changes - [#​1424](https://redirect.github.com/lint-staged/lint-staged/pull/1424) [`31a1f95`](https://redirect.github.com/lint-staged/lint-staged/commit/31a1f9548ea8202bc5bd718076711f747396e3ca) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Allow approximately equivalent versions of direct dependencies by using the "\~" character in the version ranges. This means a more recent patch version of a dependency is allowed if available. - [#​1423](https://redirect.github.com/lint-staged/lint-staged/pull/1423) [`91abea0`](https://redirect.github.com/lint-staged/lint-staged/commit/91abea0d298154d92113ba34bae4020704e22918) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Improve error logging when failing to read or parse a configuration file - [#​1424](https://redirect.github.com/lint-staged/lint-staged/pull/1424) [`ee43f15`](https://redirect.github.com/lint-staged/lint-staged/commit/ee43f154097753dd5448766f792387e60e0ea453) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Upgrade micromatch\@​4.0.7 ### [`v15.2.4`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1524) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.2...v15.2.4) ##### Patch Changes - [`4f4537a`](https://redirect.github.com/lint-staged/lint-staged/commit/4f4537a75ebfba816826f6f67a325dbc7f25908a) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Fix release issue with previous version; update dependencies ### [`v15.2.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1522) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.1...v15.2.2) ##### Patch Changes - [#​1391](https://redirect.github.com/lint-staged/lint-staged/pull/1391) [`fdcdad4`](https://redirect.github.com/lint-staged/lint-staged/commit/fdcdad42ff96fea3c05598e378d3c44ad4a51bde) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - *Lint-staged* no longer tries to load configuration from files that are not checked out. This might happen when using sparse-checkout. ### [`v15.2.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#15211) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.0...v15.2.1) ##### Patch Changes - [#​1484](https://redirect.github.com/lint-staged/lint-staged/pull/1484) [`bcfe309`](https://redirect.github.com/lint-staged/lint-staged/commit/bcfe309fca88aedf42b6a321383de49eb361c5a0) Thanks [@​wormsik](https://redirect.github.com/wormsik)! - Escape paths containing spaces when using the "shell" option. - [#​1487](https://redirect.github.com/lint-staged/lint-staged/pull/1487) [`7dd8caa`](https://redirect.github.com/lint-staged/lint-staged/commit/7dd8caa8f80fe1a6ce40939c1224b6774000775a) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Do not treat submodule root paths as "staged files". This caused *lint-staged* to fail to a Git error when only updating the revision of a submodule. ### [`v15.2.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1520) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.1.0...v15.2.0) ##### Minor Changes - [#​1371](https://redirect.github.com/lint-staged/lint-staged/pull/1371) [`f3378be`](https://redirect.github.com/lint-staged/lint-staged/commit/f3378be894fb84800341800b1e4f6f8bc8dfd904) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Using the `--no-stash` flag no longer discards all unstaged changes to partially staged files, which resulted in inadvertent data loss. This fix is available with a new flag `--no-hide-partially-staged` that is automatically enabled when `--no-stash` is used. ##### Patch Changes - [#​1362](https://redirect.github.com/lint-staged/lint-staged/pull/1362) [`17bc480`](https://redirect.github.com/lint-staged/lint-staged/commit/17bc480c0f8767407a87527931558de8d1d1551d) Thanks [@​antonk52](https://redirect.github.com/antonk52)! - update lilconfig\@​3.0.0 - [#​1368](https://redirect.github.com/lint-staged/lint-staged/pull/1368) [`7c55ca9`](https://redirect.github.com/lint-staged/lint-staged/commit/7c55ca9f410043016e8b33b3b523b9b7e764acf4) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Update most dependencies - [#​1368](https://redirect.github.com/lint-staged/lint-staged/pull/1368) [`777d4e9`](https://redirect.github.com/lint-staged/lint-staged/commit/777d4e976852af4c181ffbe055f3531343349695) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - To improve performance, only use `lilconfig` when searching for config files outside the git repo. In the regular case, *lint-staged* finds the config files from the Git index and loads them directly. - [#​1373](https://redirect.github.com/lint-staged/lint-staged/pull/1373) [`85eb0dd`](https://redirect.github.com/lint-staged/lint-staged/commit/85eb0ddab1eba0c0bcc8cc109e17dc2bbb3d044e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - When determining git directory, use `fs.realpath()` only for symlinks. It looks like `fs.realpath()` changes some Windows mapped network filepaths unexpectedly, causing issues. ### [`v15.1.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1510) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.0.2...v15.1.0) ##### Minor Changes - [#​1344](https://redirect.github.com/lint-staged/lint-staged/pull/1344) [`0423311`](https://redirect.github.com/lint-staged/lint-staged/commit/04233115a5e25d6fa7d357cbe9d42173ae8a1acf) Thanks [@​danielbayley](https://redirect.github.com/danielbayley)! - Add support for loading configuration from `package.yaml` and `package.yml` files, supported by `pnpm`. ##### Patch Changes - [#​1355](https://redirect.github.com/lint-staged/lint-staged/pull/1355) [`105d901`](https://redirect.github.com/lint-staged/lint-staged/commit/105d9012fc92fca549987816406450075cf255f3) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Suppress some warnings when using the "--quiet" flag ### [`v15.0.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1502) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.0.1...v15.0.2) ##### Patch Changes - [#​1339](https://redirect.github.com/lint-staged/lint-staged/pull/1339) [`8e82364`](https://redirect.github.com/lint-staged/lint-staged/commit/8e82364dd89155e96de574cfb38a94d28b8635af) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Update dependencies, including listr2\@​7.0.2 to fix an upstream issue affecting lint-staged. ### [`v15.0.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1501) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.0.0...v15.0.1) ##### Patch Changes - [#​1217](https://redirect.github.com/lint-staged/lint-staged/pull/1217) [`d2e6f8b`](https://redirect.github.com/lint-staged/lint-staged/commit/d2e6f8b1e1cd84ba6eb2f3f6a7f650c882987041) Thanks [@​louneskmt](https://redirect.github.com/louneskmt)! - Previously it was possible for a function task to mutate the list of staged files passed to the function, and accidentally affect the generation of other tasks. This is now fixed by passing a copy of the original file list instead. ### [`v15.0.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1500) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v14.0.1...v15.0.0) ##### Major Changes - [#​1322](https://redirect.github.com/okonet/lint-staged/pull/1322) [`66b93aa`](https://redirect.github.com/okonet/lint-staged/commit/66b93aac870d155ca81302b2574617da99409ca7) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - **Require at least Node.js 18.12.0** This release drops support for Node.js 16, which is EOL after 2023-09-11. Please upgrade your Node.js to the latest version. Additionally, all dependencies have been updated to their latest versions. ### [`v14.0.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#v1401---21-Aug-2023) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v14.0.0...v14.0.1) ##### Bug Fixes - fix reading config from stdin, introduced in v14.0.0 ([#​1317](https://redirect.github.com/okonet/lint-staged/issues/1317)) ([fc3bfea](https://redirect.github.com/okonet/lint-staged/commit/fc3bfeabae29b65f99b6911a989b0b41d3d1128e)) ### [`v14.0.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#v1400---13-Aug-2023) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v13.3.0...v14.0.0) ##### Features - drop support for Node.js 14 ([#​1312](https://redirect.github.com/okonet/lint-staged/issues/1312)) ([9da8777](https://redirect.github.com/okonet/lint-staged/commit/9da877711a7547b9122c6af91683fb2a2f398184)) ##### BREAKING CHANGES - Please upgrade your Node.js version to at least `16.14.0`. ### [`v13.3.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#v1330---13-Aug-2023) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v13.2.3...v13.3.0) ##### Bug Fixes - **dependencies:** update most dependencies ([7443870](https://redirect.github.com/okonet/lint-staged/commit/7443870b2c24ead8613295cbfa1fe80f96167e1c)) - detect duplicate redundant braces in pattern ([d895aa8](https://redirect.github.com/okonet/lint-staged/commit/d895aa8382b769f8 > ✂ **Note** > > PR body was truncated to here.
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/vitejs/launch-editor). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: sapphi-red <49056869+sapphi-red@users.noreply.github.com> --- package.json | 5 +- pnpm-lock.yaml | 806 ++++++++++--------------------------------------- 2 files changed, 168 insertions(+), 643 deletions(-) diff --git a/package.json b/package.json index c2f80e1..bd4c845 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "bumpp": "^11.0.1", - "lint-staged": "^6.1.1", + "lint-staged": "^17.0.5", "oxfmt": "^0.52.0", "oxlint": "^1.67.0", "yorkie": "^2.0.0" @@ -18,8 +18,7 @@ "oxfmt --no-error-on-unmatched-pattern" ], "*.js": [ - "oxlint --fix", - "git add" + "oxlint --fix" ] }, "packageManager": "pnpm@10.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e29aa97..7cf37b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^11.0.1 version: 11.0.1 lint-staged: - specifier: ^6.1.1 - version: 6.1.1 + specifier: ^17.0.5 + version: 17.0.5 oxfmt: specifier: ^0.52.0 version: 0.52.0 @@ -272,54 +272,21 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - ansi-escapes@1.4.0: - resolution: {integrity: sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==} - engines: {node: '>=0.10.0'} - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - any-observable@0.2.0: - resolution: {integrity: sha512-JDQTIRCBZjz2eBLZXOf1H4HREhD1sKSCZk+OUKxwY/HEew2DI7tccV30tmSW8o5UcRMVVEoUk+g7/BuEMnct1A==} - engines: {node: '>=0.10.0'} - peerDependencies: - rxjs: '*' - zenObservable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zenObservable: - optional: true + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} - app-root-path@2.2.1: - resolution: {integrity: sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==} - engines: {node: '>= 6.0.0'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} args-tokenizer@0.3.0: resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - bumpp@11.0.1: resolution: {integrity: sha512-X0ti27I/ewsx/u0EJSyl0IZWWOE95q+wIpAG/60kc5gqMNR4a23YJdd3lL7JsBN11TgLbCM4KpfGMuFfdigb4g==} engines: {node: '>=20.19.0'} @@ -329,93 +296,37 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - ci-info@1.6.0: resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} - cli-cursor@1.0.2: - resolution: {integrity: sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==} - engines: {node: '>=0.10.0'} - - cli-spinners@0.1.2: - resolution: {integrity: sha512-t22oC6e068eEBQ86SO3arUtd1ojcA3/lz3Fp2g/oL/lmDlFz/2yD8JHiebeCGYmoAovYpwKq4T64Uq5j+28Q9w==} - engines: {node: '>=0.10.0'} - - cli-truncate@0.2.1: - resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} - engines: {node: '>=0.10.0'} - - code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} - cosmiconfig@4.0.0: - resolution: {integrity: sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==} - engines: {node: '>=4'} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - date-fns@1.30.1: - resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - elegant-spinner@1.0.1: - resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} - engines: {node: '>=0.10.0'} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} execa@0.8.0: resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} engines: {node: '>=4'} - exit-hook@1.1.1: - resolution: {integrity: sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==} - engines: {node: '>=0.10.0'} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -425,77 +336,21 @@ packages: picomatch: optional: true - figures@1.7.0: - resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} - engines: {node: '>=0.10.0'} - - find-parent-dir@0.3.1: - resolution: {integrity: sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==} - - get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} get-stream@3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - indent-string@2.1.0: - resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} - engines: {node: '>=0.10.0'} - - indent-string@3.2.0: - resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} - engines: {node: '>=4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-ci@1.2.1: resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} hasBin: true - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - - is-observable@0.2.0: - resolution: {integrity: sha512-4JymFIKLU+QyN0J+Q1YMWGXGF/FbL/RPkr5R9UlTdvWmSYRQPeoub00WZ4EiWOEVxWz/djoPxNFF+iuBSJzYCw==} - engines: {node: '>=0.10.0'} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} @@ -504,108 +359,44 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jest-get-type@21.2.0: - resolution: {integrity: sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==} - - jest-validate@21.2.1: - resolution: {integrity: sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==} - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - leven@2.1.0: - resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} - engines: {node: '>=0.10.0'} - - lint-staged@6.1.1: - resolution: {integrity: sha512-M/7bwLdXbeG7ZNLcasGeLMBDg60/w6obj3KOtINwJyxAxb53XGY0yH5FSZlWklEzuVbTtqtIfAajh6jYIN90AA==} - engines: {node: '>=4.2.0'} + lint-staged@17.0.5: + resolution: {integrity: sha512-d12yC+/e8RhBjZtaxZn71FyrgU/P5e+uAPifhCLwdosQZP/zamSdKRWDC30ocVIbzDKiFG1McHc/LUgB92GIPw==} + engines: {node: '>=22.22.1'} hasBin: true - listr-silent-renderer@1.1.1: - resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==} - engines: {node: '>=4'} - - listr-update-renderer@0.4.0: - resolution: {integrity: sha512-NHGR+IqpcarRDrsYMTHD+M6QsTZNFcKe5JGlsGcpkN4yfgPJ+d4nuEQx52eDq+DOBv3H7WRTHqLEd1chUJ1lZA==} - engines: {node: '>=4'} + listr2@10.2.1: + resolution: {integrity: sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==} + engines: {node: '>=22.13.0'} - listr-verbose-renderer@0.4.1: - resolution: {integrity: sha512-tWEhvyB9UUq+4fkEwQ2NQK2JfYhsc3slSeYRkuc9CiJ3GFMRa5CRUcmqo+IIF+L95uZqv5dzZDC6vCggC28C0g==} - engines: {node: '>=4'} - - listr@0.13.0: - resolution: {integrity: sha512-e7ylpHUq3t2ECJaOJ8myJu2O/U69rbwkRqoNY8I2jdtE8E/B+i2Oo2lt6p/Zwhy5QYU0nXHN8YCzlny389XHQA==} - engines: {node: '>=4'} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@1.0.2: - resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} - engines: {node: '>=0.10.0'} - - log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} - - log-update@1.0.2: - resolution: {integrity: sha512-4vSow8gbiGnwdDNrpy1dyNaXWKSCIPop0EHdE8GrnngHoJujM3QhvHUN/igsYCgPoHo7pFOezlJ61Hlln0KHyA==} - engines: {node: '>=0.10.0'} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} normalize-path@1.0.0: resolution: {integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==} engines: {node: '>=0.10.0'} - npm-path@2.0.4: - resolution: {integrity: sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==} - engines: {node: '>=0.8'} - hasBin: true - npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} - npm-which@3.0.1: - resolution: {integrity: sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==} - engines: {node: '>=4.2.0'} - hasBin: true - - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - onetime@1.1.0: - resolution: {integrity: sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==} - engines: {node: '>=0.10.0'} - - ora@0.2.3: - resolution: {integrity: sha512-MYGyg17e2GcoDlFrAP39zu4nrAQ+STzl4fosWjR8vAlT0a2wKuuAGZTecffdVLPsnEfxXVlrUcDZ1DU5skr+QQ==} - engines: {node: '>=0.10.0'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} oxfmt@0.52.0: resolution: {integrity: sha512-nJlYM35F64zTDMecCNhoHNkf+D/eHv7xcjj9XDSj+bFAVtN93m7v8DQMdHd6nDG6Akf/kEYYHmDUBs2Dz27Sug==} @@ -637,20 +428,9 @@ packages: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - p-map@1.2.0: - resolution: {integrity: sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==} - engines: {node: '>=4'} - package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} @@ -658,38 +438,22 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pretty-format@21.2.1: - resolution: {integrity: sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==} - pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} quansync@1.0.0: resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} - repeating@2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - restore-cursor@1.0.1: - resolution: {integrity: sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==} - engines: {node: '>=0.10.0'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} - rxjs@5.5.12: - resolution: {integrity: sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==} - engines: {npm: '>=2.0.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} @@ -711,31 +475,33 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - slice-ansi@0.0.4: - resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==} - engines: {node: '>=0.10.0'} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} - staged-git-files@1.0.0: - resolution: {integrity: sha512-JteBov6z4WRyqrskIHV+ZV5UDzKaKzin/Q7a9jjcQJphNpu4596tC20aWBwJcZBoz9kQ5DRLDZqAyTaXy0TvtA==} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} - stream-to-observable@0.2.0: - resolution: {integrity: sha512-S3WOxuMOVRPy93iWSbkSqMuAhiPLthslx/iR4GK4rIyqE53SdHTjOUq8eV1uTmogUjWN4uc/2v6sOeDkYy5KaQ==} - engines: {node: '>=0.12.0'} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} - string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} - stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} @@ -745,24 +511,8 @@ packages: resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} engines: {node: '>=4'} - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - symbol-observable@0.2.4: - resolution: {integrity: sha512-6WFhZ1sqIAG3g55T6RJcOYldJmFrdsnM7adeuFUp1aJwo9EWwMFC0zYHNGGyDvJU/aqPzkQyIsMdNek1u9oRzQ==} - engines: {node: '>=0.10.0'} - - symbol-observable@1.0.1: - resolution: {integrity: sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==} - engines: {node: '>=0.10.0'} - - tinyexec@1.0.4: - resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + tinyexec@1.2.2: + resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} engines: {node: '>=18'} tinyglobby@0.2.15: @@ -783,11 +533,19 @@ packages: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true + wrap-ansi@10.0.0: + resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} + engines: {node: '>=20'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yaml@2.8.3: - resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -915,37 +673,16 @@ snapshots: dependencies: quansync: 1.0.0 - ansi-escapes@1.4.0: {} - - ansi-regex@2.1.1: {} - - ansi-regex@3.0.1: {} - - ansi-styles@2.2.1: {} - - ansi-styles@3.2.1: + ansi-escapes@7.3.0: dependencies: - color-convert: 1.9.3 + environment: 1.1.0 - any-observable@0.2.0(rxjs@5.5.12): - optionalDependencies: - rxjs: 5.5.12 + ansi-regex@6.2.2: {} - app-root-path@2.2.1: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 + ansi-styles@6.2.3: {} args-tokenizer@0.3.0: {} - balanced-match@1.0.2: {} - - brace-expansion@1.1.12: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - bumpp@11.0.1: dependencies: args-tokenizer: 0.3.0 @@ -953,58 +690,23 @@ snapshots: jsonc-parser: 3.3.1 package-manager-detector: 1.6.0 semver: 7.7.4 - tinyexec: 1.0.4 + tinyexec: 1.2.2 tinyglobby: 0.2.15 unconfig: 7.5.0 - yaml: 2.8.3 + yaml: 2.9.0 cac@7.0.0: {} - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - ci-info@1.6.0: {} - cli-cursor@1.0.2: + cli-cursor@5.0.0: dependencies: - restore-cursor: 1.0.1 - - cli-spinners@0.1.2: {} - - cli-truncate@0.2.1: - dependencies: - slice-ansi: 0.0.4 - string-width: 1.0.2 - - code-point-at@1.1.0: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-name@1.1.3: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} + restore-cursor: 5.1.0 - cosmiconfig@4.0.0: + cli-truncate@5.2.0: dependencies: - is-directory: 0.3.1 - js-yaml: 3.14.1 - parse-json: 4.0.0 - require-from-string: 2.0.2 + slice-ansi: 8.0.0 + string-width: 8.2.1 cross-spawn@5.1.0: dependencies: @@ -1012,25 +714,13 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - date-fns@1.30.1: {} - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - dedent@0.7.0: {} - defu@6.1.4: {} - elegant-spinner@1.0.1: {} + emoji-regex@10.6.0: {} - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - escape-string-regexp@1.0.5: {} + environment@1.1.0: {} - esprima@4.0.1: {} + eventemitter3@5.0.4: {} execa@0.8.0: dependencies: @@ -1042,213 +732,71 @@ snapshots: signal-exit: 3.0.7 strip-eof: 1.0.0 - exit-hook@1.1.1: {} - - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 - figures@1.7.0: - dependencies: - escape-string-regexp: 1.0.5 - object-assign: 4.1.1 - - find-parent-dir@0.3.1: {} - - get-own-enumerable-property-symbols@3.0.2: {} + get-east-asian-width@1.6.0: {} get-stream@3.0.0: {} - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-flag@3.0.0: {} - - indent-string@2.1.0: - dependencies: - repeating: 2.0.1 - - indent-string@3.2.0: {} - - is-arrayish@0.2.1: {} - is-ci@1.2.1: dependencies: ci-info: 1.6.0 - is-directory@0.3.1: {} - - is-extglob@2.1.1: {} - - is-finite@1.1.0: {} - - is-fullwidth-code-point@1.0.0: - dependencies: - number-is-nan: 1.0.1 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-obj@1.0.1: {} - - is-observable@0.2.0: + is-fullwidth-code-point@5.1.0: dependencies: - symbol-observable: 0.2.4 - - is-promise@2.2.2: {} - - is-regexp@1.0.0: {} + get-east-asian-width: 1.6.0 is-stream@1.1.0: {} isexe@2.0.0: {} - jest-get-type@21.2.0: {} - - jest-validate@21.2.1: - dependencies: - chalk: 2.4.2 - jest-get-type: 21.2.0 - leven: 2.1.0 - pretty-format: 21.2.1 - jiti@2.6.1: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - json-parse-better-errors@1.0.2: {} - jsonc-parser@3.3.1: {} - leven@2.1.0: {} - - lint-staged@6.1.1: - dependencies: - app-root-path: 2.2.1 - chalk: 2.4.2 - commander: 2.20.3 - cosmiconfig: 4.0.0 - debug: 3.2.7 - dedent: 0.7.0 - execa: 0.8.0 - find-parent-dir: 0.3.1 - is-glob: 4.0.3 - jest-validate: 21.2.1 - listr: 0.13.0 - lodash: 4.17.21 - log-symbols: 2.2.0 - minimatch: 3.1.2 - npm-which: 3.0.1 - p-map: 1.2.0 - path-is-inside: 1.0.2 - pify: 3.0.0 - staged-git-files: 1.0.0 - stringify-object: 3.3.0 - transitivePeerDependencies: - - supports-color - - zenObservable - - listr-silent-renderer@1.1.1: {} - - listr-update-renderer@0.4.0: - dependencies: - chalk: 1.1.3 - cli-truncate: 0.2.1 - elegant-spinner: 1.0.1 - figures: 1.7.0 - indent-string: 3.2.0 - log-symbols: 1.0.2 - log-update: 1.0.2 - strip-ansi: 3.0.1 - - listr-verbose-renderer@0.4.1: - dependencies: - chalk: 1.1.3 - cli-cursor: 1.0.2 - date-fns: 1.30.1 - figures: 1.7.0 - - listr@0.13.0: + lint-staged@17.0.5: dependencies: - chalk: 1.1.3 - cli-truncate: 0.2.1 - figures: 1.7.0 - indent-string: 2.1.0 - is-observable: 0.2.0 - is-promise: 2.2.2 - is-stream: 1.1.0 - listr-silent-renderer: 1.1.1 - listr-update-renderer: 0.4.0 - listr-verbose-renderer: 0.4.1 - log-symbols: 1.0.2 - log-update: 1.0.2 - ora: 0.2.3 - p-map: 1.2.0 - rxjs: 5.5.12 - stream-to-observable: 0.2.0(rxjs@5.5.12) - strip-ansi: 3.0.1 - transitivePeerDependencies: - - zenObservable - - lodash@4.17.21: {} - - log-symbols@1.0.2: - dependencies: - chalk: 1.1.3 + listr2: 10.2.1 + picomatch: 4.0.4 + string-argv: 0.3.2 + tinyexec: 1.2.2 + optionalDependencies: + yaml: 2.9.0 - log-symbols@2.2.0: + listr2@10.2.1: dependencies: - chalk: 2.4.2 + cli-truncate: 5.2.0 + eventemitter3: 5.0.4 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 10.0.0 - log-update@1.0.2: + log-update@6.1.0: dependencies: - ansi-escapes: 1.4.0 - cli-cursor: 1.0.2 + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.12 - - ms@2.1.3: {} + mimic-function@5.0.1: {} normalize-path@1.0.0: {} - npm-path@2.0.4: - dependencies: - which: 1.3.1 - npm-run-path@2.0.2: dependencies: path-key: 2.0.1 - npm-which@3.0.1: - dependencies: - commander: 2.20.3 - npm-path: 2.0.4 - which: 1.3.1 - - number-is-nan@1.0.1: {} - - object-assign@4.1.1: {} - - onetime@1.1.0: {} - - ora@0.2.3: + onetime@7.0.0: dependencies: - chalk: 1.1.3 - cli-cursor: 1.0.2 - cli-spinners: 0.1.2 - object-assign: 4.1.1 + mimic-function: 5.0.1 oxfmt@0.52.0: dependencies: @@ -1298,48 +846,24 @@ snapshots: p-finally@1.0.0: {} - p-map@1.2.0: {} - package-manager-detector@1.6.0: {} - parse-json@4.0.0: - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - - path-is-inside@1.0.2: {} - path-key@2.0.1: {} picocolors@1.1.1: {} - picomatch@4.0.3: {} - - pify@3.0.0: {} - - pretty-format@21.2.1: - dependencies: - ansi-regex: 3.0.1 - ansi-styles: 3.2.1 + picomatch@4.0.4: {} pseudomap@1.0.2: {} quansync@1.0.0: {} - repeating@2.0.1: - dependencies: - is-finite: 1.1.0 - - require-from-string@2.0.2: {} - - restore-cursor@1.0.1: + restore-cursor@5.1.0: dependencies: - exit-hook: 1.1.1 - onetime: 1.1.0 + onetime: 7.0.0 + signal-exit: 4.1.0 - rxjs@5.5.12: - dependencies: - symbol-observable: 1.0.1 + rfdc@1.4.1: {} semver@7.7.4: {} @@ -1353,55 +877,45 @@ snapshots: signal-exit@3.0.7: {} - slice-ansi@0.0.4: {} - - sprintf-js@1.0.3: {} + signal-exit@4.1.0: {} - staged-git-files@1.0.0: {} + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 - stream-to-observable@0.2.0(rxjs@5.5.12): + slice-ansi@8.0.0: dependencies: - any-observable: 0.2.0(rxjs@5.5.12) - transitivePeerDependencies: - - rxjs - - zenObservable + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + string-argv@0.3.2: {} - string-width@1.0.2: + string-width@7.2.0: dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 - stringify-object@3.3.0: + string-width@8.2.1: dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 - strip-ansi@3.0.1: + strip-ansi@7.2.0: dependencies: - ansi-regex: 2.1.1 + ansi-regex: 6.2.2 strip-eof@1.0.0: {} strip-indent@2.0.0: {} - supports-color@2.0.0: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - symbol-observable@0.2.4: {} - - symbol-observable@1.0.1: {} - - tinyexec@1.0.4: {} + tinyexec@1.2.2: {} tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@2.1.0: {} @@ -1422,9 +936,21 @@ snapshots: dependencies: isexe: 2.0.0 + wrap-ansi@10.0.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 8.2.1 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + yallist@2.1.2: {} - yaml@2.8.3: {} + yaml@2.9.0: {} yorkie@2.0.0: dependencies: From aab0e15c4420f6f6ab977297d5ac91f7352c28f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 17:40:58 +0900 Subject: [PATCH 14/21] fix(deps): update all non-major dependencies (#129) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [bumpp](https://redirect.github.com/antfu-collective/bumpp) | [`^11.0.1` → `^11.1.0`](https://renovatebot.com/diffs/npm/bumpp/11.0.1/11.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/bumpp/11.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/bumpp/11.0.1/11.1.0?slim=true) | | [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | [`10.4.1` → `10.34.1`](https://renovatebot.com/diffs/npm/pnpm/10.4.1/10.34.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.34.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.4.1/10.34.1?slim=true) | | [shell-quote](https://redirect.github.com/ljharb/shell-quote) | [`^1.8.3` → `^1.8.4`](https://renovatebot.com/diffs/npm/shell-quote/1.8.3/1.8.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/shell-quote/1.8.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/shell-quote/1.8.3/1.8.4?slim=true) | --- ### Release Notes
antfu-collective/bumpp (bumpp) ### [`v11.1.0`](https://redirect.github.com/antfu-collective/bumpp/releases/tag/v11.1.0) [Compare Source](https://redirect.github.com/antfu-collective/bumpp/compare/v11.0.1...v11.1.0) #####    🐞 Bug Fixes - Inherit stdio for git push to support windows SSH passphrase  -  by [@​awdr74100](https://redirect.github.com/awdr74100) in [#​122](https://redirect.github.com/antfu-collective/bumpp/issues/122) [(a30af)](https://redirect.github.com/antfu-collective/bumpp/commit/a30afd0) - **cli**: Prevent empty CLI files from overriding config-file `files`  -  by [@​benny123tw](https://redirect.github.com/benny123tw) in [#​120](https://redirect.github.com/antfu-collective/bumpp/issues/120) [(4e42e)](https://redirect.github.com/antfu-collective/bumpp/commit/4e42e32) #####     [View changes on GitHub](https://redirect.github.com/antfu-collective/bumpp/compare/v11.0.1...v11.1.0)
pnpm/pnpm (pnpm) ### [`v10.34.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.34.1): pnpm 10.34.1 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.34.0...v10.34.1) #### Patch Changes - Reject `pnpm-lock.yaml` entries whose remote tarball `resolution:` block is missing the `integrity` field. Previously the worker that extracts a downloaded tarball skipped hash verification when no integrity was supplied and minted a fresh one from the unverified bytes, so an attacker who could both alter the lockfile (e.g. via a pull request that strips `integrity:`) and serve modified content at the referenced tarball URL could install a tampered package without any error — including under `--frozen-lockfile`. pnpm now fails closed at lockfile-read time with `ERR_PNPM_MISSING_TARBALL_INTEGRITY`. Git-hosted tarballs (`gitHosted: true` or a URL on codeload.github.com / bitbucket.org / gitlab.com) and `file:` tarballs are exempt — the commit SHA in a git-host URL and the user-controlled local path already anchor the bytes. #### Platinum Sponsors
Bit
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx
### [`v10.34.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.33.4...v10.34.0) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.33.4...v10.34.0) ### [`v10.33.4`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.33.4): pnpm 10.33.4 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.33.3...v10.33.4) #### Patch Changes - Pin the integrity of git-hosted tarballs (codeload.github.com, gitlab.com, bitbucket.org) in the lockfile so that subsequent installs detect a tampered or substituted tarball and refuse to install it. Previously the lockfile only stored the tarball URL for git dependencies, so a compromised git host or a man-in-the-middle could serve arbitrary code on later installs without lockfile changes. A new `gitHosted: true` field is recorded on git-hosted tarball resolutions in the lockfile, letting every reader/writer route them by a single typed check instead of pattern-matching the tarball URL in each call site. Lockfiles written by older pnpm versions are enriched on load (URL fallback) so the field can be relied on uniformly across the codebase. - Fix a regression where `pnpm --recursive --filter '!' run/exec/test/add` would include the workspace root in the matched projects. The workspace root is now correctly excluded by default when only negative `--filter` arguments are provided, matching the [documented behavior](https://pnpm.io/cli/recursive). To include the root, pass `--include-workspace-root` [#​11341](https://redirect.github.com/pnpm/pnpm/issues/11341). #### Platinum Sponsors
Bit
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx
### [`v10.33.3`](https://redirect.github.com/pnpm/pnpm/compare/v10.33.2...v10.33.3) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.33.2...v10.33.3) ### [`v10.33.2`](https://redirect.github.com/pnpm/pnpm/compare/v10.33.1...v10.33.2) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.33.1...v10.33.2) ### [`v10.33.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.33.1): pnpm 10.33.1 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.33.0...v10.33.1) ##### Patch Changes - When a project's `packageManager` field selects pnpm v11 or newer, commands that v10 would have passed through to npm (`version`, `login`, `logout`, `publish`, `unpublish`, `deprecate`, `dist-tag`, `docs`, `ping`, `search`, `star`, `stars`, `unstar`, `whoami`, etc.) are now handed over to the wanted pnpm, which implements them natively. Previously they silently shelled out to npm — making, for example, `pnpm version --help` print npm's help on a project with `packageManager: pnpm@11.0.0-rc.3` [#​11328](https://redirect.github.com/pnpm/pnpm/issues/11328). ##### Platinum Sponsors
Bit
##### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx
### [`v10.33.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.32.1...v10.33.0) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.32.1...v10.33.0) ### [`v10.32.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.32.1): pnpm 10.32.1 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.32.0...v10.32.1) #### Patch Changes - Fix a regression where `pnpm-workspace.yaml` without a `packages` field caused all directories to be treated as workspace projects. This broke projects that use `pnpm-workspace.yaml` only for settings (e.g. `minimumReleaseAge`) without defining workspace packages [#​10909](https://redirect.github.com/pnpm/pnpm/issues/10909). #### Platinum Sponsors
Bit
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx
### [`v10.32.0`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.32.0): pnpm 10.32 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.31.0...v10.32.0) #### Minor Changes - Added `--all` flag to `pnpm approve-builds` that approves all pending builds without interactive prompts [#​10136](https://redirect.github.com/pnpm/pnpm/issues/10136). #### Patch Changes - Reverted change related to setting explicitly the npm config file path, which caused regressions. - Reverted fix related to `lockfile-include-tarball-url`. Fixes [#​10915](https://redirect.github.com/pnpm/pnpm/issues/10915). #### Platinum Sponsors
Bit
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx
### [`v10.31.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.30.3...v10.31.0) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.30.3...v10.31.0) ### [`v10.30.3`](https://redirect.github.com/pnpm/pnpm/compare/v10.30.2...v10.30.3) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.30.2...v10.30.3) ### [`v10.30.2`](https://redirect.github.com/pnpm/pnpm/compare/v10.30.1...v10.30.2) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.30.1...v10.30.2) ### [`v10.30.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.30.1): pnpm 10.30.1 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.30.0...v10.30.1) #### Patch Changes - Use the `/-/npm/v1/security/audits/quick` endpoint as the primary audit endpoint, falling back to `/-/npm/v1/security/audits` when it fails [#​10649](https://redirect.github.com/pnpm/pnpm/issues/10649). #### Platinum Sponsors
Bit
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Workleap
Stackblitz Nx
### [`v10.30.0`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.30.0): pnpm 10.30 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.29.3...v10.30.0) #### Minor Changes - `pnpm why` now shows a reverse dependency tree. The searched package appears at the root with its dependents as branches, walking back to workspace roots. This replaces the previous forward-tree output which was noisy and hard to read for deeply nested dependencies. #### Patch Changes - Revert `pnpm why` dependency pruning to prefer correctness over memory consumption. Reverted PR: [#​7122](https://redirect.github.com/pnpm/pnpm/pull/7122). - Optimize `pnpm why` and `pnpm list` performance in workspaces with many importers by sharing the dependency graph and materialization cache across all importers instead of rebuilding them independently for each one [#​10596](https://redirect.github.com/pnpm/pnpm/pull/10596/changes). #### Platinum Sponsors
Bit
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Workleap
Stackblitz Nx
### [`v10.29.3`](https://redirect.github.com/pnpm/pnpm/compare/v10.29.2...v10.29.3) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.29.2...v10.29.3) ### [`v10.29.2`](https://redirect.github.com/pnpm/pnpm/compare/v10.29.1...v10.29.2) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.29.1...v10.29.2) ### [`v10.29.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.29.1): pnpm 10.29.1 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.28.2...v10.29.1) #### Minor Changes - The `pnpm dlx` / `pnpx` command now supports the `catalog:` protocol. Example: `pnpm dlx shx@catalog:`. - Support configuring `auditLevel` in the `pnpm-workspace.yaml` file [#​10540](https://redirect.github.com/pnpm/pnpm/issues/10540). - Support bare `workspace:` protocol without version specifier. It is now treated as `workspace:*` and resolves to the concrete version during publish [#​10436](https://redirect.github.com/pnpm/pnpm/pull/10436). #### Patch Changes - Fixed `pnpm list --json` returning incorrect paths when using global virtual store [#​10187](https://redirect.github.com/pnpm/pnpm/issues/10187). - Fix `pnpm store path` and `pnpm store status` using workspace root for path resolution when `storeDir` is relative [#​10290](https://redirect.github.com/pnpm/pnpm/issues/10290). - Fixed `pnpm run -r` failing with "No projects matched the filters" when an empty `pnpm-workspace.yaml` exists [#​10497](https://redirect.github.com/pnpm/pnpm/issues/10497). - Fixed a bug where `catalogMode: strict` would write the literal string `"catalog:"` to `pnpm-workspace.yaml` instead of the resolved version specifier when re-adding an existing catalog dependency [#​10176](https://redirect.github.com/pnpm/pnpm/issues/10176). - Fixed the documentation URL shown in `pnpm completion --help` to point to the correct page at [#​10281](https://redirect.github.com/pnpm/pnpm/issues/10281). - Skip local `file:` protocol dependencies during `pnpm fetch`. This fixes an issue where `pnpm fetch` would fail in Docker builds when local directory dependencies were not available [#​10460](https://redirect.github.com/pnpm/pnpm/issues/10460). - Fixed `pnpm audit --json` to respect the `--audit-level` setting for both exit code and output filtering [#​10540](https://redirect.github.com/pnpm/pnpm/issues/10540). - update tar to version 7.5.7 to fix security issue Updating the version of dependency tar to 7.5.7 because the previous one have a security vulnerability reported here: CVE-2026-24842 - Fix `pnpm audit --fix` replacing reference overrides (e.g. `$foo`) with concrete versions [#​10325](https://redirect.github.com/pnpm/pnpm/issues/10325). - Fix `shamefullyHoist` set via `updateConfig` in `.pnpmfile.cjs` not being converted to `publicHoistPattern` [#​10271](https://redirect.github.com/pnpm/pnpm/issues/10271). - `pnpm help` should correctly report if the currently running pnpm CLI is bundled with Node.js [#​10561](https://redirect.github.com/pnpm/pnpm/issues/10561). - Add a warning when the current directory contains the PATH delimiter character. On macOS, folder names containing forward slashes (/) appear as colons (:) at the Unix layer. Since colons are PATH separators in POSIX systems, this breaks PATH injection for `node_modules/.bin`, causing binaries to not be found when running commands like `pnpm exec` [#​10457](https://redirect.github.com/pnpm/pnpm/issues/10457). #### Platinum Sponsors
Bit
#### Gold Sponsors
Discord CodeRabbit Workleap
Stackblitz Vite
### [`v10.28.2`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.28.2): pnpm 10.28.2 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.28.1...v10.28.2) #### Patch Changes - Security fix: prevent path traversal in `directories.bin` field. - When pnpm installs a `file:` or `git:` dependency, it now validates that symlinks point within the package directory. Symlinks to paths outside the package root are skipped to prevent local data from being leaked into `node_modules`. This fixes a security issue where a malicious package could create symlinks to sensitive files (e.g., `/etc/passwd`, `~/.ssh/id_rsa`) and have their contents copied when the package is installed. Note: This only affects `file:` and `git:` dependencies. Registry packages (npm) have symlinks stripped during publish and are not affected. - Fixed optional dependencies to request full metadata from the registry to get the `libc` field, which is required for proper platform compatibility checks [#​9950](https://redirect.github.com/pnpm/pnpm/issues/9950). #### Platinum Sponsors
Bit
#### Gold Sponsors
Discord CodeRabbit Workleap
Stackblitz Vite
### [`v10.28.1`](https://redirect.github.com/pnpm/pnpm/compare/v10.28.0...v10.28.1) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.28.0...v10.28.1) ### [`v10.28.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.27.0...v10.28.0) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.27.0...v10.28.0) ### [`v10.27.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.26.2...v10.27.0) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.26.2...v10.27.0) ### [`v10.26.2`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.26.2): pnpm 10.26.2 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.26.1...v10.26.2) #### Patch Changes - Improve error message when a package version exists but does not meet the `minimumReleaseAge` constraint. The error now clearly states that the version exists and shows a human-readable time since release (e.g., "released 6 hours ago") [#​10307](https://redirect.github.com/pnpm/pnpm/issues/10307). - Fix installation of Git dependencies using annotated tags [#​10335](https://redirect.github.com/pnpm/pnpm/issues/10335). Previously, pnpm would store the annotated tag object's SHA in the lockfile instead of the actual commit SHA. This caused `ERR_PNPM_GIT_CHECKOUT_FAILED` errors because the checked-out commit hash didn't match the stored tag object hash. - Binaries of runtime engines (Node.js, Deno, Bun) are written to `node_modules/.bin` before lifecycle scripts (install, postinstall, prepare) are executed [#​10244](https://redirect.github.com/pnpm/pnpm/issues/10244). - Try to avoid making network calls with preferOffline [#​10334](https://redirect.github.com/pnpm/pnpm/pull/10334). #### Platinum Sponsors
Bit
#### Gold Sponsors
Discord CodeRabbit Workleap
Stackblitz Vite
### [`v10.26.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.26.1): pnpm 10.26.1 [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.26.0...v10.26.1) #### Patch Changes - Don't fail on `pnpm add`, when `blockExoticSubdeps` is set to `true` [#​10324](https://redirect.github.com/pnpm/pnpm/issues/10324). - Always resolve git references to full commits and ensure `HEAD` points to the commit after checkout [#​10310](https://redirect.github.com/pnpm/pnpm/pull/10310). #### Platinum Sponsors
Bit
#### Gold Sponsors
Discord CodeRabbit Workleap
Stackblitz =22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-arm64-musl@0.52.0': resolution: {integrity: sha512-wZg6bLjDvh2KibyI3QFUYo8GTXneIFsd0JvehtvJiUmQ8WRPERgxd/VM4ctWb86U5FT1FkqgS8/wZKVB+AZScg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@oxfmt/binding-linux-ppc64-gnu@0.52.0': resolution: {integrity: sha512-IngE8uxhNvxcMrLjZNDo9xNLY7rEK33AKnaMd2B46he1e/mz2CfcW6If/U1wUjdRZddm1QzQaciqZkuMkdh1FA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-riscv64-gnu@0.52.0': resolution: {integrity: sha512-H3+DdFMv/efN3Efmhsv18jDrpiWWqKG7wsfAlQBqAt6z/E2Bx+TwEj2Nowe51CPOWB8/mFBC2dAMSgVFLvvowA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-riscv64-musl@0.52.0': resolution: {integrity: sha512-zji+1kb7lJKohSDjzC1IsS+K/cKRs1hdVf0ZH0VbdbiakmtLvN9twBoXo/k8VdjFax7kfo+DyPxS7vv52br1aw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [musl] '@oxfmt/binding-linux-s390x-gnu@0.52.0': resolution: {integrity: sha512-hcLBYedpCy7ToUvvBidWk7+11Yhg1oAZ4+6hKPic/mQI6NaqXJSXMps5nFlwUuX2ewhtLZZDPg63TI042qGKBg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-x64-gnu@0.52.0': resolution: {integrity: sha512-IDO2loXK2OtTOhSPchU9MW25mWL2QCDGdJbjN8MXKZVS80qXe5gMTwQWu/gMJ3juoBHbkuUZNB2N1LHzNT7DoA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-x64-musl@0.52.0': resolution: {integrity: sha512-mAV2Hjn0SatJ+KoAzKUC3eJhdJ8wv+3m1KyuS0dTsbF0c5weq+QrCt/DRZZM+uj/XiKzCDEUKYsBF30e2qkcyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@oxfmt/binding-openharmony-arm64@0.52.0': resolution: {integrity: sha512-vd4npaUIwChxp7XzkqmepBWTT9YMcSe/NBApVGPC30/lLyOVaV3dvma1SKo03t8O73BPRAG7EyJzGlN5cJM5hQ==} @@ -202,48 +210,56 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-arm64-musl@1.67.0': resolution: {integrity: sha512-zB/Tf6sUjmmvvbva9Gj3JTJ8rJ9t4I8/U0o6vSRtd0DRIsIuyegBwJAzhSUFQHdMijIRJkW0exs/yBhpw2S20w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@oxlint/binding-linux-ppc64-gnu@1.67.0': resolution: {integrity: sha512-kgU40Gt74CK0TCsF51KZymkIwN9U0BajKsMijB52zPqOeZU9NAHkA/NSQkZDHEaCakx42DxhXkODiAqf2b4Gug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-riscv64-gnu@1.67.0': resolution: {integrity: sha512-tOYhkk/iaG9aD3FvGpBFd1Lrw0x0RaVoJBxjUkfNzS50rC5NS5BteNCwgr8A2zCdADrIIoze6D7u6U5Ic++/iQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-riscv64-musl@1.67.0': resolution: {integrity: sha512-sEtywrPb+0b+tHYl1SDCrw903fiC4eyKoNqzP3v+f2JT3Xcv4NEYG+P8rj+eEnX7IWhqV/xj8/JmcmVj21CXaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [musl] '@oxlint/binding-linux-s390x-gnu@1.67.0': resolution: {integrity: sha512-BvR8Moa0zCLxroOx4vZaZN9nUfwAUpSTwjZdxZyKy4bv3PrzrXrxKR/ZQ0L9wNSvlPhnMJeZfa3q5w6ZCTuN6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@oxlint/binding-linux-x64-gnu@1.67.0': resolution: {integrity: sha512-mm2cxM6fksOpq6l0uFws8BUGKAR4dNa/cZCn37Npq7PFbhD5HDJqWfnoIvTaeRKMy5XdS2tO0MA0qbHDrnXAAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-x64-musl@1.67.0': resolution: {integrity: sha512-WmbMuLapKyDlobMkXAaAL0Y+Uczh4LETfIfQsUpbId4Ip8Ai82/jqeYTOoUCkuuhBFapgqP253+d83tLKOksJg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@oxlint/binding-openharmony-arm64@1.67.0': resolution: {integrity: sha512-9g/PqxYJelzzTAOR5Y+RiRqdeydhEuXv2KxNeFcAKQ7UsvnWSY1OP4MsuPMbTO2Pf70tz7mFhl1j13H3fyh+8g==} @@ -287,8 +303,8 @@ packages: args-tokenizer@0.3.0: resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} - bumpp@11.0.1: - resolution: {integrity: sha512-X0ti27I/ewsx/u0EJSyl0IZWWOE95q+wIpAG/60kc5gqMNR4a23YJdd3lL7JsBN11TgLbCM4KpfGMuFfdigb4g==} + bumpp@11.1.0: + resolution: {integrity: sha512-jdwOGMyX8JIqpQ0N2RMRR87DHZaoJnUtui5lU9LqFfFK5JC0H8qY9uWqXoa+dEWt/K7rOmmsoyiZB8RBM7RPBQ==} engines: {node: '>=20.19.0'} hasBin: true @@ -468,8 +484,8 @@ packages: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + shell-quote@1.8.4: + resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==} engines: {node: '>= 0.4'} signal-exit@3.0.7: @@ -515,8 +531,8 @@ packages: resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} tinypool@2.1.0: @@ -683,7 +699,7 @@ snapshots: args-tokenizer@0.3.0: {} - bumpp@11.0.1: + bumpp@11.1.0: dependencies: args-tokenizer: 0.3.0 cac: 7.0.0 @@ -691,7 +707,7 @@ snapshots: package-manager-detector: 1.6.0 semver: 7.7.4 tinyexec: 1.2.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unconfig: 7.5.0 yaml: 2.9.0 @@ -873,7 +889,7 @@ snapshots: shebang-regex@1.0.0: {} - shell-quote@1.8.3: {} + shell-quote@1.8.4: {} signal-exit@3.0.7: {} @@ -912,7 +928,7 @@ snapshots: tinyexec@1.2.2: {} - tinyglobby@0.2.15: + tinyglobby@0.2.16: dependencies: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 From 7c0bfddc07539bd8ee38c4937be4ea400687f910 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Fri, 29 May 2026 17:44:49 +0900 Subject: [PATCH 15/21] ci: harden publish settings --- .github/workflows/publish.yml | 6 ++++++ pnpm-workspace.yaml | 2 ++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 576cf58..20c21da 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -7,10 +7,13 @@ on: jobs: publish: + # prevents this action from running on forks + if: github.repository == 'vitejs/launch-editor' runs-on: ubuntu-latest permissions: contents: read id-token: write + environment: Release steps: - name: Checkout repository @@ -31,6 +34,9 @@ jobs: # disable cache, to avoid cache poisoning (https://docs.zizmor.sh/audits/#cache-poisoning) package-manager-cache: false + - name: Disallow installation scripts + run: yq '.allowBuilds[]=false' -i pnpm-workspace.yaml + - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 18ec407..dcdd047 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,4 @@ packages: - 'packages/*' +allowBuilds: + yorkie: true From e2ebf0d361319896f969a0fd3b0a6b85d22924a2 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Fri, 29 May 2026 18:27:12 +0900 Subject: [PATCH 16/21] v2.14.0 --- packages/launch-editor-middleware/package.json | 2 +- packages/launch-editor/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/launch-editor-middleware/package.json b/packages/launch-editor-middleware/package.json index d8d6df2..979ba1a 100644 --- a/packages/launch-editor-middleware/package.json +++ b/packages/launch-editor-middleware/package.json @@ -1,6 +1,6 @@ { "name": "launch-editor-middleware", - "version": "2.13.2", + "version": "2.14.0", "description": "express middleware for launching editor", "keywords": [ "editor", diff --git a/packages/launch-editor/package.json b/packages/launch-editor/package.json index 6e39849..414db96 100644 --- a/packages/launch-editor/package.json +++ b/packages/launch-editor/package.json @@ -1,6 +1,6 @@ { "name": "launch-editor", - "version": "2.13.2", + "version": "2.14.0", "description": "launch editor from node.js", "keywords": [ "editor", From be88ef77420bde9a85ae4d371d6a060d65881db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 20:02:20 +0900 Subject: [PATCH 17/21] chore: add README (#134) --- packages/launch-editor-middleware/README.md | 27 +++++++++++++++++++++ packages/launch-editor/README.md | 1 + 2 files changed, 28 insertions(+) create mode 100644 packages/launch-editor-middleware/README.md create mode 120000 packages/launch-editor/README.md diff --git a/packages/launch-editor-middleware/README.md b/packages/launch-editor-middleware/README.md new file mode 100644 index 0000000..5c8e8d6 --- /dev/null +++ b/packages/launch-editor-middleware/README.md @@ -0,0 +1,27 @@ +# launch-editor-middleware + +An express/connect/webpack-dev-server compatible middleware for opening files in your editor from the browser, powered by [`launch-editor`](https://github.com/vitejs/launch-editor#readme). + +## Usage + +```js +const launchMiddleware = require('launch-editor-middleware') + +app.use('/__open-in-editor', launchMiddleware()) +``` + +To launch files, send requests to the server like the following: + +```text +/__open-in-editor?file=src/main.js:13:24 +``` + +Both the line and column numbers are optional. `file://` URIs are also supported. + +## API + +See [`index.d.ts`](./index.d.ts) for the full type definitions and the available arguments. + +## Custom editor support + +This package infers the editor from currently running processes. You can override that behavior with the `LAUNCH_EDITOR` environment variable to force a specific editor or run a custom launch script. See the [`launch-editor` README](https://github.com/vitejs/launch-editor#custom-editor-support) for details. diff --git a/packages/launch-editor/README.md b/packages/launch-editor/README.md new file mode 120000 index 0000000..fe84005 --- /dev/null +++ b/packages/launch-editor/README.md @@ -0,0 +1 @@ +../../README.md \ No newline at end of file From 88ef433f038f478a68f5125480f5e6a1a87e7062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 21:06:36 +0900 Subject: [PATCH 18/21] test: add some tests for launch-editor package (#135) --- packages/launch-editor/get-args.test.js | 124 ++++++++++++++++++++++++ packages/launch-editor/guess.js | 107 ++++++++++++-------- packages/launch-editor/guess.test.js | 72 ++++++++++++++ packages/launch-editor/package.json | 3 + 4 files changed, 267 insertions(+), 39 deletions(-) create mode 100644 packages/launch-editor/get-args.test.js create mode 100644 packages/launch-editor/guess.test.js diff --git a/packages/launch-editor/get-args.test.js b/packages/launch-editor/get-args.test.js new file mode 100644 index 0000000..1003fb7 --- /dev/null +++ b/packages/launch-editor/get-args.test.js @@ -0,0 +1,124 @@ +const assert = require('node:assert/strict') +const { describe, test } = require('node:test') + +const getArgumentsForPosition = require('./get-args.js') + +describe('getArgumentsForPosition', () => { + describe('editor-specific argument formats', () => { + for (const editor of [ + 'atom', + 'Atom', + 'Atom Beta', + 'subl', + 'sublime', + 'sublime_text', + 'wstorm', + 'charm', + 'zed', + ]) { + test(`${editor} uses "file:line:column"`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), ['file:10:5']) + }) + } + + test('notepad++ uses -n/-c flags', () => { + assert.deepEqual(getArgumentsForPosition('notepad++', 'file', 10, 5), ['-n10', '-c5', 'file']) + }) + + for (const editor of ['vim', 'mvim']) { + test(`${editor} uses +call cursor()`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), [ + '+call cursor(10, 5)', + 'file', + ]) + }) + } + + for (const editor of ['joe', 'gvim']) { + test(`${editor} uses +line`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), ['+10', 'file']) + }) + } + + for (const editor of ['emacs', 'emacsclient']) { + test(`${editor} uses +line:column`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), ['+10:5', 'file']) + }) + } + + for (const editor of ['rmate', 'mate', 'mine']) { + test(`${editor} uses --line`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), ['--line', 10, 'file']) + }) + } + + for (const editor of [ + 'code', + 'Code', + 'code-insiders', + 'Code - Insiders', + 'codium', + 'trae', + 'antigravity', + 'cursor', + 'vscodium', + 'VSCodium', + ]) { + test(`${editor} uses -r -g "file:line:column"`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), ['-r', '-g', 'file:10:5']) + }) + } + + for (const editor of ['idea', 'idea64', 'webstorm', 'pycharm', 'clion', 'rider']) { + test(`${editor} uses --line/--column`, () => { + assert.deepEqual(getArgumentsForPosition(editor, 'file', 10, 5), [ + '--line', + 10, + '--column', + 5, + 'file', + ]) + }) + } + }) + + test('defaults columnNumber to 1 when omitted', () => { + assert.deepEqual(getArgumentsForPosition('code', 'file', 10), ['-r', '-g', 'file:10:1']) + }) + + describe('editor resolution via path.basename and extension stripping', () => { + test('resolves a full POSIX path', () => { + assert.deepEqual(getArgumentsForPosition('/usr/local/bin/code', 'file', 10, 5), [ + '-r', + '-g', + 'file:10:5', + ]) + }) + + if (process.platform === 'win32') { + test('resolves a full Windows path with .exe', () => { + assert.deepEqual(getArgumentsForPosition('C:\\path\\Code.exe', 'file', 10, 5), [ + '-r', + '-g', + 'file:10:5', + ]) + }) + + test('resolves notepad++ from a full path with .exe', () => { + assert.deepEqual(getArgumentsForPosition('C:\\tools\\notepad++.exe', 'file', 10, 5), [ + '-n10', + '-c5', + 'file', + ]) + }) + } + + test('strips .cmd extension case-insensitively', () => { + assert.deepEqual(getArgumentsForPosition('code.CMD', 'file', 10, 5), [ + '-r', + '-g', + 'file:10:5', + ]) + }) + }) +}) diff --git a/packages/launch-editor/guess.js b/packages/launch-editor/guess.js index 20d7053..3bcba92 100644 --- a/packages/launch-editor/guess.js +++ b/packages/launch-editor/guess.js @@ -9,7 +9,60 @@ const COMMON_EDITORS_MACOS = require('./editor-info/macos') const COMMON_EDITORS_LINUX = require('./editor-info/linux') const COMMON_EDITORS_WIN = require('./editor-info/windows') -module.exports = function guessEditor(specifiedEditor) { +function getEditorFromMacProcesses(output) { + const processNames = Object.keys(COMMON_EDITORS_MACOS) + const processList = output.split('\n') + for (let i = 0; i < processNames.length; i++) { + const processName = processNames[i] + // Find editor by exact match. + if (processList.includes(processName)) { + return COMMON_EDITORS_MACOS[processName] + } + const processNameWithoutApplications = processName.replace('/Applications', '') + // Find editor installation not in /Applications. + if (output.indexOf(processNameWithoutApplications) !== -1) { + // Use the CLI command if one is specified + if (processName !== COMMON_EDITORS_MACOS[processName]) { + return COMMON_EDITORS_MACOS[processName] + } + // Use a partial match to find the running process path. If one is found, use the + // existing path since it can be running from anywhere. + const runningProcess = processList.find((procName) => + procName.endsWith(processNameWithoutApplications), + ) + if (runningProcess !== undefined) { + return runningProcess + } + } + } + return undefined +} + +function getEditorFromWindowsProcesses(output) { + const runningProcesses = output.split('\r\n') + for (let i = 0; i < runningProcesses.length; i++) { + const fullProcessPath = runningProcesses[i].trim() + const shortProcessName = path.win32.basename(fullProcessPath) + + if (COMMON_EDITORS_WIN.indexOf(shortProcessName) !== -1) { + return fullProcessPath + } + } + return undefined +} + +function getEditorFromLinuxProcesses(output) { + const processNames = Object.keys(COMMON_EDITORS_LINUX) + for (let i = 0; i < processNames.length; i++) { + const processName = processNames[i] + if (output.indexOf(processName) !== -1) { + return COMMON_EDITORS_LINUX[processName] + } + } + return undefined +} + +function guessEditor(specifiedEditor) { if (specifiedEditor) { return shellQuote.parse(specifiedEditor) } @@ -32,30 +85,9 @@ module.exports = function guessEditor(specifiedEditor) { stdio: ['pipe', 'pipe', 'ignore'], }) .toString() - const processNames = Object.keys(COMMON_EDITORS_MACOS) - const processList = output.split('\n') - for (let i = 0; i < processNames.length; i++) { - const processName = processNames[i] - // Find editor by exact match. - if (processList.includes(processName)) { - return [COMMON_EDITORS_MACOS[processName]] - } - const processNameWithoutApplications = processName.replace('/Applications', '') - // Find editor installation not in /Applications. - if (output.indexOf(processNameWithoutApplications) !== -1) { - // Use the CLI command if one is specified - if (processName !== COMMON_EDITORS_MACOS[processName]) { - return [COMMON_EDITORS_MACOS[processName]] - } - // Use a partial match to find the running process path. If one is found, use the - // existing path since it can be running from anywhere. - const runningProcess = processList.find((procName) => - procName.endsWith(processNameWithoutApplications), - ) - if (runningProcess !== undefined) { - return [runningProcess] - } - } + const editor = getEditorFromMacProcesses(output) + if (editor !== undefined) { + return [editor] } } else if (process.platform === 'win32') { const output = childProcess @@ -69,14 +101,9 @@ module.exports = function guessEditor(specifiedEditor) { }, ) .toString() - const runningProcesses = output.split('\r\n') - for (let i = 0; i < runningProcesses.length; i++) { - const fullProcessPath = runningProcesses[i].trim() - const shortProcessName = path.basename(fullProcessPath) - - if (COMMON_EDITORS_WIN.indexOf(shortProcessName) !== -1) { - return [fullProcessPath] - } + const editor = getEditorFromWindowsProcesses(output) + if (editor !== undefined) { + return [editor] } } else if (process.platform === 'linux') { // --no-heading No header line @@ -87,12 +114,9 @@ module.exports = function guessEditor(specifiedEditor) { stdio: ['pipe', 'pipe', 'ignore'], }) .toString() - const processNames = Object.keys(COMMON_EDITORS_LINUX) - for (let i = 0; i < processNames.length; i++) { - const processName = processNames[i] - if (output.indexOf(processName) !== -1) { - return [COMMON_EDITORS_LINUX[processName]] - } + const editor = getEditorFromLinuxProcesses(output) + if (editor !== undefined) { + return [editor] } } } catch (ignoreError) { @@ -108,3 +132,8 @@ module.exports = function guessEditor(specifiedEditor) { return [null] } + +module.exports = guessEditor +module.exports.getEditorFromMacProcesses = getEditorFromMacProcesses +module.exports.getEditorFromWindowsProcesses = getEditorFromWindowsProcesses +module.exports.getEditorFromLinuxProcesses = getEditorFromLinuxProcesses diff --git a/packages/launch-editor/guess.test.js b/packages/launch-editor/guess.test.js new file mode 100644 index 0000000..b285598 --- /dev/null +++ b/packages/launch-editor/guess.test.js @@ -0,0 +1,72 @@ +const assert = require('node:assert/strict') +const { describe, test } = require('node:test') + +const guessEditor = require('./guess.js') +const { getEditorFromMacProcesses, getEditorFromWindowsProcesses, getEditorFromLinuxProcesses } = + guessEditor + +describe('getEditorFromMacProcesses', () => { + test('maps an exact process path to its CLI command', () => { + const output = [ + '/sbin/launchd', + '/Applications/Visual Studio Code.app/Contents/MacOS/Code', + '/usr/sbin/cfprefsd', + ].join('\n') + assert.equal(getEditorFromMacProcesses(output), 'code') + }) + + test('uses the CLI command for an install outside /Applications', () => { + // `Atom` maps to the short command `atom`, so even when running from a + // custom location we should return that command. + const output = ['/sbin/launchd', '/Users/me/dev/Atom.app/Contents/MacOS/Atom'].join('\n') + assert.equal(getEditorFromMacProcesses(output), 'atom') + }) + + test('returns the running process path when the map points at itself', () => { + // `CLion` maps to its own full path, so for an install outside + // /Applications we should return the actual running path. + const runningPath = '/Users/me/dev/CLion.app/Contents/MacOS/clion' + const output = ['/sbin/launchd', runningPath].join('\n') + assert.equal(getEditorFromMacProcesses(output), runningPath) + }) + + test('returns undefined when no editor is running', () => { + const output = ['/sbin/launchd', '/usr/sbin/cfprefsd'].join('\n') + assert.equal(getEditorFromMacProcesses(output), undefined) + }) +}) + +describe('getEditorFromWindowsProcesses', () => { + test('returns the full executable path of a known editor', () => { + const codePath = 'C:\\Program Files\\Microsoft VS Code\\Code.exe' + const output = ['C:\\Windows\\System32\\svchost.exe', codePath].join('\r\n') + assert.equal(getEditorFromWindowsProcesses(output), codePath) + }) + + test('returns undefined when no editor is running', () => { + const output = ['C:\\Windows\\System32\\svchost.exe', 'C:\\Windows\\explorer.exe'].join('\r\n') + assert.equal(getEditorFromWindowsProcesses(output), undefined) + }) +}) + +describe('getEditorFromLinuxProcesses', () => { + test('maps a process name to its CLI command', () => { + const output = ['systemd', 'code', 'bash'].join('\n') + assert.equal(getEditorFromLinuxProcesses(output), 'code') + }) + + test('maps sublime_text to subl', () => { + const output = ['systemd', 'sublime_text'].join('\n') + assert.equal(getEditorFromLinuxProcesses(output), 'subl') + }) + + test('matches code-insiders before code due to key order', () => { + const output = ['systemd', 'code-insiders'].join('\n') + assert.equal(getEditorFromLinuxProcesses(output), 'code-insiders') + }) + + test('returns undefined when no editor is running', () => { + const output = ['systemd', 'bash', 'sshd'].join('\n') + assert.equal(getEditorFromLinuxProcesses(output), undefined) + }) +}) diff --git a/packages/launch-editor/package.json b/packages/launch-editor/package.json index 414db96..3636cbb 100644 --- a/packages/launch-editor/package.json +++ b/packages/launch-editor/package.json @@ -17,6 +17,9 @@ "url": "git+https://github.com/vitejs/launch-editor.git" }, "main": "index.js", + "scripts": { + "test": "node --test --experimental-test-module-mocks" + }, "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.4" From 6dc60d7955f0de020d37329ee0480d467f24ef8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 29 May 2026 21:12:40 +0900 Subject: [PATCH 19/21] ci: run tests on mac and windows (#136) --- .github/workflows/ci.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9ac1c2..db5f9ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,8 +40,15 @@ jobs: test: timeout-minutes: 20 - runs-on: ubuntu-latest - name: 'Test: node-24, ubuntu-latest' + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + fail-fast: false + name: 'Test: node-24, ${{ matrix.os }}' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: From f586ed1321866eaad3e275480cca8a930e4085fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Mon, 1 Jun 2026 18:24:20 +0900 Subject: [PATCH 20/21] fix: reject UNC paths (#138) Fixes GHSA-v6wh-96g9-6wx3 --- README.md | 12 +++++++ packages/launch-editor/index.js | 8 +++++ packages/launch-editor/index.test.js | 50 ++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 packages/launch-editor/index.test.js diff --git a/README.md b/README.md index 19683b9..0a7d43e 100644 --- a/README.md +++ b/README.md @@ -110,3 +110,15 @@ column=$3 # call your editor with whatever args it expects my-editor -l $line -c $column -f $filename ``` + +## UNC paths on Windows + +On Windows, `launch-editor` refuses to open files whose resolved path is a [UNC path](https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths), that is, a path that starts with `\\`, such as `\\server\share\file.js`. + +When a UNC path points at a remote host, any filesystem operation `launch-editor` performs on it (such as the `fs.existsSync` check used to verify the file before launching the editor) causes Windows to connect to that host over SMB. An attacker who controls the requested file path could point it at a server they control and abuse this to leak the current user's NTLM credentials: Windows automatically attempts NTLM authentication against the remote host, sending the user's NTLM challenge-response, which the attacker can capture for offline cracking or relay to another service (an NTLM relay attack). Because the file path frequently originates from untrusted input (for example, the `file` query parameter handled by `launch-editor-middleware`), `launch-editor` rejects UNC paths up front so it never performs any filesystem operation on them. + +When a UNC path is rejected, the error callback is invoked with: + +> UNC paths are not supported on Windows to avoid security issues. + +If you need to edit a file on a network share, map the share to a drive letter first and pass that path (e.g. `Z:\file.js`) instead. diff --git a/packages/launch-editor/index.js b/packages/launch-editor/index.js index 9f58052..a347b49 100644 --- a/packages/launch-editor/index.js +++ b/packages/launch-editor/index.js @@ -67,6 +67,14 @@ function launchEditor(file, specifiedEditor, onErrorCallback) { let { fileName } = parsed const { lineNumber, columnNumber } = parsed + if (process.platform === 'win32' && path.resolve(fileName).startsWith('\\\\')) { + return onErrorCallback( + fileName, + 'UNC paths are not supported on Windows to avoid security issues. ' + + 'See https://github.com/vitejs/launch-editor/tree/main/packages/launch-editor#unc-paths-on-windows for details.', + ) + } + if (!fs.existsSync(fileName)) { return } diff --git a/packages/launch-editor/index.test.js b/packages/launch-editor/index.test.js new file mode 100644 index 0000000..b14692e --- /dev/null +++ b/packages/launch-editor/index.test.js @@ -0,0 +1,50 @@ +const assert = require('node:assert/strict') +const { describe, test, mock } = require('node:test') + +const launchEditor = require('./index.js') + +const UNC_ERROR = 'UNC paths are not supported on Windows to avoid security issues.' + +describe('launchEditor UNC path guard', () => { + if (process.platform === 'win32') { + test('rejects UNC paths on Windows via the error callback', () => { + const onError = mock.fn() + + launchEditor('\\\\server\\share\\file.js', 'vim', onError) + + assert.equal(onError.mock.callCount(), 1) + const [fileName, message] = onError.mock.calls[0].arguments + assert.equal(fileName, '\\\\server\\share\\file.js') + assert.ok(message.includes(UNC_ERROR)) + }) + + test('strips the position suffix before reporting the rejected UNC path', () => { + const onError = mock.fn() + + launchEditor('\\\\server\\share\\file.js:10:5', 'vim', onError) + + assert.equal(onError.mock.callCount(), 1) + const [fileName, message] = onError.mock.calls[0].arguments + assert.equal(fileName, '\\\\server\\share\\file.js') + assert.ok(message.includes(UNC_ERROR)) + }) + + test('does not treat a normal absolute Windows path as UNC', () => { + const onError = mock.fn() + + // Non-existent file: without the UNC guard firing, launchEditor returns + // silently at the `fs.existsSync` check without invoking the callback. + launchEditor('C:\\Users\\me\\does-not-exist-xyz.js', 'vim', onError) + + assert.equal(onError.mock.callCount(), 0) + }) + } else { + test('does not apply the UNC guard on non-Windows platforms', () => { + const onError = mock.fn() + + launchEditor('\\\\server\\share\\does-not-exist-xyz.js', 'vim', onError) + + assert.equal(onError.mock.callCount(), 0) + }) + } +}) From d293c4db80d76fa68da57aa001a6569f0dda6882 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Mon, 1 Jun 2026 18:24:55 +0900 Subject: [PATCH 21/21] v2.14.1 --- packages/launch-editor-middleware/package.json | 2 +- packages/launch-editor/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/launch-editor-middleware/package.json b/packages/launch-editor-middleware/package.json index 979ba1a..bc960e9 100644 --- a/packages/launch-editor-middleware/package.json +++ b/packages/launch-editor-middleware/package.json @@ -1,6 +1,6 @@ { "name": "launch-editor-middleware", - "version": "2.14.0", + "version": "2.14.1", "description": "express middleware for launching editor", "keywords": [ "editor", diff --git a/packages/launch-editor/package.json b/packages/launch-editor/package.json index 3636cbb..dcf1883 100644 --- a/packages/launch-editor/package.json +++ b/packages/launch-editor/package.json @@ -1,6 +1,6 @@ { "name": "launch-editor", - "version": "2.14.0", + "version": "2.14.1", "description": "launch editor from node.js", "keywords": [ "editor",