Add publish CI/CD for Marketplace and Open VSX
New publish.yml packages one .vsix and publishes it to the VS Code Marketplace (vsce) and Open VSX (ovsx) when a GitHub Release tagged v<version> is created. Guards the tag against package.json, bootstraps the Open VSX namespace, and supports a manual dry run. Adds ovsx as a dev dependency and documents the release flow and required secrets. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
paydii committed
Jun 26, 2026 at 05:23 UTC
416ec209c772e8ad0846a6c3abb3514487a2133e
4 files changed
+446
.github/workflows/publish.yml
+106
new file mode 100644
index 0000000..18b117e
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,106 @@
+name: Publish
+
+# Publishes the extension to the VS Code Marketplace and Open VSX.
+#
+# Real publish: create a GitHub Release whose tag is `v<version>` (e.g.
+# v1.0.1) matching package.json. Dry run: trigger manually from the Actions
+# tab with "publish" unchecked to build and package without publishing.
+#
+# Required repository secrets:
+# VSCE_PAT Azure DevOps PAT for the `getsigit` Marketplace publisher.
+# OVSX_PAT Access token for the Open VSX `getsigit` namespace.
+
+on:
+ release:
+ types: [published]
+ workflow_dispatch:
+ inputs:
+ publish:
+ description: "Publish to the registries (leave off for a dry run)"
+ type: boolean
+ default: false
+
+permissions:
+ contents: write # upload the .vsix asset to the release
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: "20"
+ cache: pnpm
+
+ - name: Install dependencies
+ run: pnpm install --frozen-lockfile
+
+ - name: Lint
+ run: pnpm run lint
+
+ - name: Type check
+ run: pnpm run compile
+
+ - name: Build
+ run: pnpm run build
+
+ - name: Test
+ run: pnpm run test
+
+ - name: Resolve version
+ id: meta
+ run: |
+ VERSION=$(node -p "require('./package.json').version")
+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
+ echo "vsix=sigit-code-$VERSION.vsix" >> "$GITHUB_OUTPUT"
+
+ - name: Verify tag matches package.json version
+ if: github.event_name == 'release'
+ run: |
+ TAG="${GITHUB_REF_NAME#v}"
+ PKG="${{ steps.meta.outputs.version }}"
+ if [ "$TAG" != "$PKG" ]; then
+ echo "::error::Release tag $GITHUB_REF_NAME ($TAG) does not match package.json version $PKG"
+ exit 1
+ fi
+
+ - name: Package VSIX
+ run: pnpm exec vsce package --no-dependencies -o "${{ steps.meta.outputs.vsix }}"
+
+ - name: Publish to VS Code Marketplace
+ if: github.event_name == 'release' || inputs.publish
+ env:
+ VSCE_PAT: ${{ secrets.VSCE_PAT }}
+ run: pnpm exec vsce publish --no-dependencies --packagePath "${{ steps.meta.outputs.vsix }}"
+
+ - name: Ensure Open VSX namespace
+ if: github.event_name == 'release' || inputs.publish
+ continue-on-error: true # already-exists is not an error
+ env:
+ OVSX_PAT: ${{ secrets.OVSX_PAT }}
+ run: pnpm exec ovsx create-namespace getsigit
+
+ - name: Publish to Open VSX
+ if: github.event_name == 'release' || inputs.publish
+ env:
+ OVSX_PAT: ${{ secrets.OVSX_PAT }}
+ run: pnpm exec ovsx publish "${{ steps.meta.outputs.vsix }}" --no-dependencies
+
+ - name: Attach VSIX to the release
+ if: github.event_name == 'release'
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: gh release upload "$GITHUB_REF_NAME" "${{ steps.meta.outputs.vsix }}" --clobber
+
+ - name: Upload VSIX artifact (dry run)
+ if: github.event_name == 'workflow_dispatch'
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ steps.meta.outputs.vsix }}
+ path: ${{ steps.meta.outputs.vsix }}
README.md
+26
index ae3292f..ce2801e 100644
--- a/README.md
+++ b/README.md
@@ -110,6 +110,32 @@ pnpm run test:smoke # ACP round-trip against a mock agent
pnpm run package # vsce package (.vsix)
```
+## Releasing
+
+Publishing is automated by [`.github/workflows/publish.yml`](.github/workflows/publish.yml).
+It runs the test suite, packages one `.vsix`, and publishes that same file to the
+VS Code Marketplace (`vsce`) and Open VSX (`ovsx`).
+
+One-time setup, stored as repository secrets:
+
+- `VSCE_PAT`: an Azure DevOps personal access token for the `getsigit`
+ Marketplace publisher (Marketplace > Manage scope).
+- `OVSX_PAT`: an access token for the `getsigit` namespace on
+ [open-vsx.org](https://open-vsx.org). The workflow creates the namespace on
+ first publish if it does not exist.
+
+To cut a release:
+
+1. Bump `version` in `package.json` and add a `CHANGELOG.md` entry.
+2. Push to `main`, then create a GitHub Release whose tag is `v<version>` (for
+ example `v1.0.1`). The workflow checks the tag against `package.json` and
+ fails on a mismatch.
+3. The release publishes to both registries and attaches the `.vsix` to the
+ GitHub Release.
+
+To test packaging without publishing, run the workflow manually from the Actions
+tab with **publish** left unchecked. It uploads the `.vsix` as a build artifact.
+
## License
[MIT](./LICENSE) © 2026 siGit Code & Deploy
package.json
+1
index 58cd5d2..6a61dd9 100644
--- a/package.json
+++ b/package.json
@@ -183,6 +183,7 @@
"@vscode/vsce": "^3.9.2",
"esbuild": "^0.20.0",
"eslint": "^8.57.0",
+ "ovsx": "^1.0.2",
"typescript": "^5.4.0"
}
}
pnpm-lock.yaml
+313
index 6329c1c..4486119 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
eslint:
specifier: ^8.57.0
version: 8.57.1
+ ovsx:
+ specifier: ^1.0.2
+ version: 1.0.2
typescript:
specifier: ^5.4.0
version: 5.9.3
@@ -93,6 +96,15 @@ packages:
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
+ '@emnapi/core@1.11.1':
+ resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
+
+ '@emnapi/runtime@1.11.1':
+ resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
+
+ '@emnapi/wasi-threads@1.2.2':
+ resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
+
'@esbuild/aix-ppc64@0.20.2':
resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
engines: {node: '>=12'}
@@ -262,6 +274,100 @@ packages:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
+ '@napi-rs/wasm-runtime@0.2.12':
+ resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+
+ '@node-rs/crc32-android-arm-eabi@1.10.6':
+ resolution: {integrity: sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+
+ '@node-rs/crc32-android-arm64@1.10.6':
+ resolution: {integrity: sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@node-rs/crc32-darwin-arm64@1.10.6':
+ resolution: {integrity: sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@node-rs/crc32-darwin-x64@1.10.6':
+ resolution: {integrity: sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@node-rs/crc32-freebsd-x64@1.10.6':
+ resolution: {integrity: sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@node-rs/crc32-linux-arm-gnueabihf@1.10.6':
+ resolution: {integrity: sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@node-rs/crc32-linux-arm64-gnu@1.10.6':
+ resolution: {integrity: sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@node-rs/crc32-linux-arm64-musl@1.10.6':
+ resolution: {integrity: sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@node-rs/crc32-linux-x64-gnu@1.10.6':
+ resolution: {integrity: sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@node-rs/crc32-linux-x64-musl@1.10.6':
+ resolution: {integrity: sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@node-rs/crc32-wasm32-wasi@1.10.6':
+ resolution: {integrity: sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@node-rs/crc32-win32-arm64-msvc@1.10.6':
+ resolution: {integrity: sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@node-rs/crc32-win32-ia32-msvc@1.10.6':
+ resolution: {integrity: sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@node-rs/crc32-win32-x64-msvc@1.10.6':
+ resolution: {integrity: sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@node-rs/crc32@1.10.6':
+ resolution: {integrity: sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==}
+ engines: {node: '>= 10'}
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -338,6 +444,9 @@ packages:
'@textlint/types@15.7.1':
resolution: {integrity: sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==}
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
+
'@types/node@20.19.43':
resolution: {integrity: sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==}
@@ -601,6 +710,9 @@ packages:
chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+ ci-info@2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+
cockatiel@3.2.1:
resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==}
engines: {node: '>=16'}
@@ -620,6 +732,10 @@ packages:
resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
engines: {node: '>=18'}
+ commander@6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -662,10 +778,18 @@ packages:
resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
engines: {node: '>=18'}
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
define-lazy-prop@3.0.0:
resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
engines: {node: '>=12'}
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -832,6 +956,15 @@ packages:
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
+ follow-redirects@1.16.0:
+ resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
form-data@4.0.6:
resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
engines: {node: '>= 6'}
@@ -880,6 +1013,10 @@ packages:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+
globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -902,6 +1039,9 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
has-symbols@1.1.0:
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
engines: {node: '>= 0.4'}
@@ -970,6 +1110,10 @@ packages:
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+ is-ci@2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+
is-docker@3.0.0:
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -992,6 +1136,10 @@ packages:
engines: {node: '>=14.16'}
hasBin: true
+ is-it-type@5.1.3:
+ resolution: {integrity: sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==}
+ engines: {node: '>=12'}
+
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
@@ -1204,6 +1352,10 @@ packages:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -1215,6 +1367,11 @@ packages:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
+ ovsx@1.0.2:
+ resolution: {integrity: sha512-N0gWlINGgoOA2Sn0AhrF9L3ap40a/QbsFUpMDKR+CKYyZGJeTFEoNGngplLHjAYtcjrrZv2jX2K7ktPzxWjPNg==}
+ engines: {node: '>= 20'}
+ hasBin: true
+
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -1413,6 +1570,10 @@ packages:
simple-get@4.0.1:
resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
+ simple-invariant@2.0.1:
+ resolution: {integrity: sha512-1sbhsxqI+I2tqlmjbz99GXNmZtr6tKIyEgGGnJw/MKGblalqk/XoOYYFJlBzTKZCxx8kLaD3FD5s9BEEjx5Pyg==}
+ engines: {node: '>=10'}
+
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@@ -1614,6 +1775,10 @@ packages:
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ yauzl-promise@4.0.0:
+ resolution: {integrity: sha512-/HCXpyHXJQQHvFq9noqrjfa/WpQC2XYs3vI7tBiAi4QiIU1knvYhZGaO1QPjwIVMdqflxbmwgMXtYeaRiAE0CA==}
+ engines: {node: '>=16'}
+
yauzl@3.4.0:
resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==}
engines: {node: '>=12'}
@@ -1723,6 +1888,22 @@ snapshots:
'@babel/helper-validator-identifier@7.29.7': {}
+ '@emnapi/core@1.11.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.11.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@esbuild/aix-ppc64@0.20.2':
optional: true
@@ -1827,6 +2008,74 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
+ '@napi-rs/wasm-runtime@0.2.12':
+ dependencies:
+ '@emnapi/core': 1.11.1
+ '@emnapi/runtime': 1.11.1
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@node-rs/crc32-android-arm-eabi@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-android-arm64@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-darwin-arm64@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-darwin-x64@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-freebsd-x64@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-linux-arm-gnueabihf@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-linux-arm64-gnu@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-linux-arm64-musl@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-linux-x64-gnu@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-linux-x64-musl@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-wasm32-wasi@1.10.6':
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.2.12
+ optional: true
+
+ '@node-rs/crc32-win32-arm64-msvc@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-win32-ia32-msvc@1.10.6':
+ optional: true
+
+ '@node-rs/crc32-win32-x64-msvc@1.10.6':
+ optional: true
+
+ '@node-rs/crc32@1.10.6':
+ optionalDependencies:
+ '@node-rs/crc32-android-arm-eabi': 1.10.6
+ '@node-rs/crc32-android-arm64': 1.10.6
+ '@node-rs/crc32-darwin-arm64': 1.10.6
+ '@node-rs/crc32-darwin-x64': 1.10.6
+ '@node-rs/crc32-freebsd-x64': 1.10.6
+ '@node-rs/crc32-linux-arm-gnueabihf': 1.10.6
+ '@node-rs/crc32-linux-arm64-gnu': 1.10.6
+ '@node-rs/crc32-linux-arm64-musl': 1.10.6
+ '@node-rs/crc32-linux-x64-gnu': 1.10.6
+ '@node-rs/crc32-linux-x64-musl': 1.10.6
+ '@node-rs/crc32-wasm32-wasi': 1.10.6
+ '@node-rs/crc32-win32-arm64-msvc': 1.10.6
+ '@node-rs/crc32-win32-ia32-msvc': 1.10.6
+ '@node-rs/crc32-win32-x64-msvc': 1.10.6
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -1944,6 +2193,11 @@ snapshots:
dependencies:
'@textlint/ast-node-types': 15.7.1
+ '@tybys/wasm-util@0.10.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@types/node@20.19.43':
dependencies:
undici-types: 6.21.0
@@ -2265,6 +2519,8 @@ snapshots:
chownr@1.1.4:
optional: true
+ ci-info@2.0.0: {}
+
cockatiel@3.2.1: {}
color-convert@2.0.1:
@@ -2279,6 +2535,8 @@ snapshots:
commander@12.1.0: {}
+ commander@6.2.1: {}
+
concat-map@0.0.1: {}
cross-spawn@7.0.6:
@@ -2318,8 +2576,20 @@ snapshots:
bundle-name: 4.1.0
default-browser-id: 5.0.1
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
define-lazy-prop@3.0.0: {}
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
delayed-stream@1.0.0: {}
detect-libc@2.1.2:
@@ -2540,6 +2810,8 @@ snapshots:
flatted@3.4.2: {}
+ follow-redirects@1.16.0: {}
+
form-data@4.0.6:
dependencies:
asynckit: 0.4.0
@@ -2609,6 +2881,11 @@ snapshots:
dependencies:
type-fest: 0.20.2
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+
globby@11.1.0:
dependencies:
array-union: 2.1.0
@@ -2635,6 +2912,10 @@ snapshots:
has-flag@4.0.0: {}
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
has-symbols@1.1.0: {}
has-tostringtag@1.0.2:
@@ -2704,6 +2985,10 @@ snapshots:
ini@1.3.8:
optional: true
+ is-ci@2.0.0:
+ dependencies:
+ ci-info: 2.0.0
+
is-docker@3.0.0: {}
is-extglob@2.1.1: {}
@@ -2718,6 +3003,10 @@ snapshots:
dependencies:
is-docker: 3.0.0
+ is-it-type@5.1.3:
+ dependencies:
+ globalthis: 1.0.4
+
is-number@7.0.0: {}
is-path-inside@3.0.3: {}
@@ -2920,6 +3209,8 @@ snapshots:
object-inspect@1.13.4: {}
+ object-keys@1.1.1: {}
+
once@1.4.0:
dependencies:
wrappy: 1.0.2
@@ -2940,6 +3231,20 @@ snapshots:
type-check: 0.4.0
word-wrap: 1.2.5
+ ovsx@1.0.2:
+ dependencies:
+ '@vscode/vsce': 3.9.2
+ commander: 6.2.1
+ follow-redirects: 1.16.0
+ is-ci: 2.0.0
+ leven: 3.1.0
+ semver: 7.8.5
+ tmp: 0.2.7
+ yauzl-promise: 4.0.0
+ transitivePeerDependencies:
+ - debug
+ - supports-color
+
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
@@ -3155,6 +3460,8 @@ snapshots:
simple-concat: 1.0.1
optional: true
+ simple-invariant@2.0.1: {}
+
slash@3.0.0: {}
slash@5.1.0: {}
@@ -3344,6 +3651,12 @@ snapshots:
yallist@4.0.0: {}
+ yauzl-promise@4.0.0:
+ dependencies:
+ '@node-rs/crc32': 1.10.6
+ is-it-type: 5.1.3
+ simple-invariant: 2.0.1
+
yauzl@3.4.0:
dependencies:
pend: 1.2.0