@sigit / sigit-vscode / commits / 416ec20

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 new
+106
@@ -0,0 +1,106 @@
1 +name: Publish
2 +
3 +# Publishes the extension to the VS Code Marketplace and Open VSX.
4 +#
5 +# Real publish: create a GitHub Release whose tag is `v<version>` (e.g.
6 +# v1.0.1) matching package.json. Dry run: trigger manually from the Actions
7 +# tab with "publish" unchecked to build and package without publishing.
8 +#
9 +# Required repository secrets:
10 +# VSCE_PAT Azure DevOps PAT for the `getsigit` Marketplace publisher.
11 +# OVSX_PAT Access token for the Open VSX `getsigit` namespace.
12 +
13 +on:
14 + release:
15 + types: [published]
16 + workflow_dispatch:
17 + inputs:
18 + publish:
19 + description: "Publish to the registries (leave off for a dry run)"
20 + type: boolean
21 + default: false
22 +
23 +permissions:
24 + contents: write # upload the .vsix asset to the release
25 +
26 +jobs:
27 + publish:
28 + runs-on: ubuntu-latest
29 + steps:
30 + - uses: actions/checkout@v4
31 +
32 + - name: Setup pnpm
33 + uses: pnpm/action-setup@v4
34 +
35 + - name: Setup Node.js
36 + uses: actions/setup-node@v4
37 + with:
38 + node-version: "20"
39 + cache: pnpm
40 +
41 + - name: Install dependencies
42 + run: pnpm install --frozen-lockfile
43 +
44 + - name: Lint
45 + run: pnpm run lint
46 +
47 + - name: Type check
48 + run: pnpm run compile
49 +
50 + - name: Build
51 + run: pnpm run build
52 +
53 + - name: Test
54 + run: pnpm run test
55 +
56 + - name: Resolve version
57 + id: meta
58 + run: |
59 + VERSION=$(node -p "require('./package.json').version")
60 + echo "version=$VERSION" >> "$GITHUB_OUTPUT"
61 + echo "vsix=sigit-code-$VERSION.vsix" >> "$GITHUB_OUTPUT"
62 +
63 + - name: Verify tag matches package.json version
64 + if: github.event_name == 'release'
65 + run: |
66 + TAG="${GITHUB_REF_NAME#v}"
67 + PKG="${{ steps.meta.outputs.version }}"
68 + if [ "$TAG" != "$PKG" ]; then
69 + echo "::error::Release tag $GITHUB_REF_NAME ($TAG) does not match package.json version $PKG"
70 + exit 1
71 + fi
72 +
73 + - name: Package VSIX
74 + run: pnpm exec vsce package --no-dependencies -o "${{ steps.meta.outputs.vsix }}"
75 +
76 + - name: Publish to VS Code Marketplace
77 + if: github.event_name == 'release' || inputs.publish
78 + env:
79 + VSCE_PAT: ${{ secrets.VSCE_PAT }}
80 + run: pnpm exec vsce publish --no-dependencies --packagePath "${{ steps.meta.outputs.vsix }}"
81 +
82 + - name: Ensure Open VSX namespace
83 + if: github.event_name == 'release' || inputs.publish
84 + continue-on-error: true # already-exists is not an error
85 + env:
86 + OVSX_PAT: ${{ secrets.OVSX_PAT }}
87 + run: pnpm exec ovsx create-namespace getsigit
88 +
89 + - name: Publish to Open VSX
90 + if: github.event_name == 'release' || inputs.publish
91 + env:
92 + OVSX_PAT: ${{ secrets.OVSX_PAT }}
93 + run: pnpm exec ovsx publish "${{ steps.meta.outputs.vsix }}" --no-dependencies
94 +
95 + - name: Attach VSIX to the release
96 + if: github.event_name == 'release'
97 + env:
98 + GH_TOKEN: ${{ github.token }}
99 + run: gh release upload "$GITHUB_REF_NAME" "${{ steps.meta.outputs.vsix }}" --clobber
100 +
101 + - name: Upload VSIX artifact (dry run)
102 + if: github.event_name == 'workflow_dispatch'
103 + uses: actions/upload-artifact@v4
104 + with:
105 + name: ${{ steps.meta.outputs.vsix }}
106 + path: ${{ steps.meta.outputs.vsix }}
README.md
+26
@@ -110,6 +110,32 @@ pnpm run test:smoke # ACP round-trip against a mock agent
110 pnpm run package # vsce package (.vsix)
111 ```
112
113 +## Releasing
114 +
115 +Publishing is automated by [`.github/workflows/publish.yml`](.github/workflows/publish.yml).
116 +It runs the test suite, packages one `.vsix`, and publishes that same file to the
117 +VS Code Marketplace (`vsce`) and Open VSX (`ovsx`).
118 +
119 +One-time setup, stored as repository secrets:
120 +
121 +- `VSCE_PAT`: an Azure DevOps personal access token for the `getsigit`
122 + Marketplace publisher (Marketplace > Manage scope).
123 +- `OVSX_PAT`: an access token for the `getsigit` namespace on
124 + [open-vsx.org](https://open-vsx.org). The workflow creates the namespace on
125 + first publish if it does not exist.
126 +
127 +To cut a release:
128 +
129 +1. Bump `version` in `package.json` and add a `CHANGELOG.md` entry.
130 +2. Push to `main`, then create a GitHub Release whose tag is `v<version>` (for
131 + example `v1.0.1`). The workflow checks the tag against `package.json` and
132 + fails on a mismatch.
133 +3. The release publishes to both registries and attaches the `.vsix` to the
134 + GitHub Release.
135 +
136 +To test packaging without publishing, run the workflow manually from the Actions
137 +tab with **publish** left unchecked. It uploads the `.vsix` as a build artifact.
138 +
139 ## License
140
141 [MIT](./LICENSE) © 2026 siGit Code & Deploy
package.json
+1
@@ -183,6 +183,7 @@
183 "@vscode/vsce": "^3.9.2",
184 "esbuild": "^0.20.0",
185 "eslint": "^8.57.0",
186 + "ovsx": "^1.0.2",
187 "typescript": "^5.4.0"
188 }
189 }
pnpm-lock.yaml
+313
@@ -29,6 +29,9 @@ importers:
29 eslint:
30 specifier: ^8.57.0
31 version: 8.57.1
32 + ovsx:
33 + specifier: ^1.0.2
34 + version: 1.0.2
35 typescript:
36 specifier: ^5.4.0
37 version: 5.9.3
@@ -93,6 +96,15 @@ packages:
96 resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
97 engines: {node: '>=6.9.0'}
98
99 + '@emnapi/core@1.11.1':
100 + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
101 +
102 + '@emnapi/runtime@1.11.1':
103 + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
104 +
105 + '@emnapi/wasi-threads@1.2.2':
106 + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
107 +
108 '@esbuild/aix-ppc64@0.20.2':
109 resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
110 engines: {node: '>=12'}
@@ -262,6 +274,100 @@ packages:
274 resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
275 deprecated: Use @eslint/object-schema instead
276
277 + '@napi-rs/wasm-runtime@0.2.12':
278 + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
279 +
280 + '@node-rs/crc32-android-arm-eabi@1.10.6':
281 + resolution: {integrity: sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==}
282 + engines: {node: '>= 10'}
283 + cpu: [arm]
284 + os: [android]
285 +
286 + '@node-rs/crc32-android-arm64@1.10.6':
287 + resolution: {integrity: sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==}
288 + engines: {node: '>= 10'}
289 + cpu: [arm64]
290 + os: [android]
291 +
292 + '@node-rs/crc32-darwin-arm64@1.10.6':
293 + resolution: {integrity: sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==}
294 + engines: {node: '>= 10'}
295 + cpu: [arm64]
296 + os: [darwin]
297 +
298 + '@node-rs/crc32-darwin-x64@1.10.6':
299 + resolution: {integrity: sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==}
300 + engines: {node: '>= 10'}
301 + cpu: [x64]
302 + os: [darwin]
303 +
304 + '@node-rs/crc32-freebsd-x64@1.10.6':
305 + resolution: {integrity: sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==}
306 + engines: {node: '>= 10'}
307 + cpu: [x64]
308 + os: [freebsd]
309 +
310 + '@node-rs/crc32-linux-arm-gnueabihf@1.10.6':
311 + resolution: {integrity: sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==}
312 + engines: {node: '>= 10'}
313 + cpu: [arm]
314 + os: [linux]
315 +
316 + '@node-rs/crc32-linux-arm64-gnu@1.10.6':
317 + resolution: {integrity: sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==}
318 + engines: {node: '>= 10'}
319 + cpu: [arm64]
320 + os: [linux]
321 + libc: [glibc]
322 +
323 + '@node-rs/crc32-linux-arm64-musl@1.10.6':
324 + resolution: {integrity: sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==}
325 + engines: {node: '>= 10'}
326 + cpu: [arm64]
327 + os: [linux]
328 + libc: [musl]
329 +
330 + '@node-rs/crc32-linux-x64-gnu@1.10.6':
331 + resolution: {integrity: sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==}
332 + engines: {node: '>= 10'}
333 + cpu: [x64]
334 + os: [linux]
335 + libc: [glibc]
336 +
337 + '@node-rs/crc32-linux-x64-musl@1.10.6':
338 + resolution: {integrity: sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==}
339 + engines: {node: '>= 10'}
340 + cpu: [x64]
341 + os: [linux]
342 + libc: [musl]
343 +
344 + '@node-rs/crc32-wasm32-wasi@1.10.6':
345 + resolution: {integrity: sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==}
346 + engines: {node: '>=14.0.0'}
347 + cpu: [wasm32]
348 +
349 + '@node-rs/crc32-win32-arm64-msvc@1.10.6':
350 + resolution: {integrity: sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==}
351 + engines: {node: '>= 10'}
352 + cpu: [arm64]
353 + os: [win32]
354 +
355 + '@node-rs/crc32-win32-ia32-msvc@1.10.6':
356 + resolution: {integrity: sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==}
357 + engines: {node: '>= 10'}
358 + cpu: [ia32]
359 + os: [win32]
360 +
361 + '@node-rs/crc32-win32-x64-msvc@1.10.6':
362 + resolution: {integrity: sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==}
363 + engines: {node: '>= 10'}
364 + cpu: [x64]
365 + os: [win32]
366 +
367 + '@node-rs/crc32@1.10.6':
368 + resolution: {integrity: sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==}
369 + engines: {node: '>= 10'}
370 +
371 '@nodelib/fs.scandir@2.1.5':
372 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
373 engines: {node: '>= 8'}
@@ -338,6 +444,9 @@ packages:
444 '@textlint/types@15.7.1':
445 resolution: {integrity: sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==}
446
447 + '@tybys/wasm-util@0.10.3':
448 + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
449 +
450 '@types/node@20.19.43':
451 resolution: {integrity: sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==}
452
@@ -601,6 +710,9 @@ packages:
710 chownr@1.1.4:
711 resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
712
713 + ci-info@2.0.0:
714 + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
715 +
716 cockatiel@3.2.1:
717 resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==}
718 engines: {node: '>=16'}
@@ -620,6 +732,10 @@ packages:
732 resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
733 engines: {node: '>=18'}
734
735 + commander@6.2.1:
736 + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
737 + engines: {node: '>= 6'}
738 +
739 concat-map@0.0.1:
740 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
741
@@ -662,10 +778,18 @@ packages:
778 resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
779 engines: {node: '>=18'}
780
781 + define-data-property@1.1.4:
782 + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
783 + engines: {node: '>= 0.4'}
784 +
785 define-lazy-prop@3.0.0:
786 resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
787 engines: {node: '>=12'}
788
789 + define-properties@1.2.1:
790 + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
791 + engines: {node: '>= 0.4'}
792 +
793 delayed-stream@1.0.0:
794 resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
795 engines: {node: '>=0.4.0'}
@@ -832,6 +956,15 @@ packages:
956 flatted@3.4.2:
957 resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
958
959 + follow-redirects@1.16.0:
960 + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
961 + engines: {node: '>=4.0'}
962 + peerDependencies:
963 + debug: '*'
964 + peerDependenciesMeta:
965 + debug:
966 + optional: true
967 +
968 form-data@4.0.6:
969 resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
970 engines: {node: '>= 6'}
@@ -880,6 +1013,10 @@ packages:
1013 resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1014 engines: {node: '>=8'}
1015
1016 + globalthis@1.0.4:
1017 + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
1018 + engines: {node: '>= 0.4'}
1019 +
1020 globby@11.1.0:
1021 resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1022 engines: {node: '>=10'}
@@ -902,6 +1039,9 @@ packages:
1039 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1040 engines: {node: '>=8'}
1041
1042 + has-property-descriptors@1.0.2:
1043 + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
1044 +
1045 has-symbols@1.1.0:
1046 resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
1047 engines: {node: '>= 0.4'}
@@ -970,6 +1110,10 @@ packages:
1110 ini@1.3.8:
1111 resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
1112
1113 + is-ci@2.0.0:
1114 + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
1115 + hasBin: true
1116 +
1117 is-docker@3.0.0:
1118 resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
1119 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -992,6 +1136,10 @@ packages:
1136 engines: {node: '>=14.16'}
1137 hasBin: true
1138
1139 + is-it-type@5.1.3:
1140 + resolution: {integrity: sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==}
1141 + engines: {node: '>=12'}
1142 +
1143 is-number@7.0.0:
1144 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1145 engines: {node: '>=0.12.0'}
@@ -1204,6 +1352,10 @@ packages:
1352 resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
1353 engines: {node: '>= 0.4'}
1354
1355 + object-keys@1.1.1:
1356 + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1357 + engines: {node: '>= 0.4'}
1358 +
1359 once@1.4.0:
1360 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1361
@@ -1215,6 +1367,11 @@ packages:
1367 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1368 engines: {node: '>= 0.8.0'}
1369
1370 + ovsx@1.0.2:
1371 + resolution: {integrity: sha512-N0gWlINGgoOA2Sn0AhrF9L3ap40a/QbsFUpMDKR+CKYyZGJeTFEoNGngplLHjAYtcjrrZv2jX2K7ktPzxWjPNg==}
1372 + engines: {node: '>= 20'}
1373 + hasBin: true
1374 +
1375 p-limit@3.1.0:
1376 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1377 engines: {node: '>=10'}
@@ -1413,6 +1570,10 @@ packages:
1570 simple-get@4.0.1:
1571 resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
1572
1573 + simple-invariant@2.0.1:
1574 + resolution: {integrity: sha512-1sbhsxqI+I2tqlmjbz99GXNmZtr6tKIyEgGGnJw/MKGblalqk/XoOYYFJlBzTKZCxx8kLaD3FD5s9BEEjx5Pyg==}
1575 + engines: {node: '>=10'}
1576 +
1577 slash@3.0.0:
1578 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1579 engines: {node: '>=8'}
@@ -1614,6 +1775,10 @@ packages:
1775 yallist@4.0.0:
1776 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1777
1778 + yauzl-promise@4.0.0:
1779 + resolution: {integrity: sha512-/HCXpyHXJQQHvFq9noqrjfa/WpQC2XYs3vI7tBiAi4QiIU1knvYhZGaO1QPjwIVMdqflxbmwgMXtYeaRiAE0CA==}
1780 + engines: {node: '>=16'}
1781 +
1782 yauzl@3.4.0:
1783 resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==}
1784 engines: {node: '>=12'}
@@ -1723,6 +1888,22 @@ snapshots:
1888
1889 '@babel/helper-validator-identifier@7.29.7': {}
1890
1891 + '@emnapi/core@1.11.1':
1892 + dependencies:
1893 + '@emnapi/wasi-threads': 1.2.2
1894 + tslib: 2.8.1
1895 + optional: true
1896 +
1897 + '@emnapi/runtime@1.11.1':
1898 + dependencies:
1899 + tslib: 2.8.1
1900 + optional: true
1901 +
1902 + '@emnapi/wasi-threads@1.2.2':
1903 + dependencies:
1904 + tslib: 2.8.1
1905 + optional: true
1906 +
1907 '@esbuild/aix-ppc64@0.20.2':
1908 optional: true
1909
@@ -1827,6 +2008,74 @@ snapshots:
2008
2009 '@humanwhocodes/object-schema@2.0.3': {}
2010
2011 + '@napi-rs/wasm-runtime@0.2.12':
2012 + dependencies:
2013 + '@emnapi/core': 1.11.1
2014 + '@emnapi/runtime': 1.11.1
2015 + '@tybys/wasm-util': 0.10.3
2016 + optional: true
2017 +
2018 + '@node-rs/crc32-android-arm-eabi@1.10.6':
2019 + optional: true
2020 +
2021 + '@node-rs/crc32-android-arm64@1.10.6':
2022 + optional: true
2023 +
2024 + '@node-rs/crc32-darwin-arm64@1.10.6':
2025 + optional: true
2026 +
2027 + '@node-rs/crc32-darwin-x64@1.10.6':
2028 + optional: true
2029 +
2030 + '@node-rs/crc32-freebsd-x64@1.10.6':
2031 + optional: true
2032 +
2033 + '@node-rs/crc32-linux-arm-gnueabihf@1.10.6':
2034 + optional: true
2035 +
2036 + '@node-rs/crc32-linux-arm64-gnu@1.10.6':
2037 + optional: true
2038 +
2039 + '@node-rs/crc32-linux-arm64-musl@1.10.6':
2040 + optional: true
2041 +
2042 + '@node-rs/crc32-linux-x64-gnu@1.10.6':
2043 + optional: true
2044 +
2045 + '@node-rs/crc32-linux-x64-musl@1.10.6':
2046 + optional: true
2047 +
2048 + '@node-rs/crc32-wasm32-wasi@1.10.6':
2049 + dependencies:
2050 + '@napi-rs/wasm-runtime': 0.2.12
2051 + optional: true
2052 +
2053 + '@node-rs/crc32-win32-arm64-msvc@1.10.6':
2054 + optional: true
2055 +
2056 + '@node-rs/crc32-win32-ia32-msvc@1.10.6':
2057 + optional: true
2058 +
2059 + '@node-rs/crc32-win32-x64-msvc@1.10.6':
2060 + optional: true
2061 +
2062 + '@node-rs/crc32@1.10.6':
2063 + optionalDependencies:
2064 + '@node-rs/crc32-android-arm-eabi': 1.10.6
2065 + '@node-rs/crc32-android-arm64': 1.10.6
2066 + '@node-rs/crc32-darwin-arm64': 1.10.6
2067 + '@node-rs/crc32-darwin-x64': 1.10.6
2068 + '@node-rs/crc32-freebsd-x64': 1.10.6
2069 + '@node-rs/crc32-linux-arm-gnueabihf': 1.10.6
2070 + '@node-rs/crc32-linux-arm64-gnu': 1.10.6
2071 + '@node-rs/crc32-linux-arm64-musl': 1.10.6
2072 + '@node-rs/crc32-linux-x64-gnu': 1.10.6
2073 + '@node-rs/crc32-linux-x64-musl': 1.10.6
2074 + '@node-rs/crc32-wasm32-wasi': 1.10.6
2075 + '@node-rs/crc32-win32-arm64-msvc': 1.10.6
2076 + '@node-rs/crc32-win32-ia32-msvc': 1.10.6
2077 + '@node-rs/crc32-win32-x64-msvc': 1.10.6
2078 +
2079 '@nodelib/fs.scandir@2.1.5':
2080 dependencies:
2081 '@nodelib/fs.stat': 2.0.5
@@ -1944,6 +2193,11 @@ snapshots:
2193 dependencies:
2194 '@textlint/ast-node-types': 15.7.1
2195
2196 + '@tybys/wasm-util@0.10.3':
2197 + dependencies:
2198 + tslib: 2.8.1
2199 + optional: true
2200 +
2201 '@types/node@20.19.43':
2202 dependencies:
2203 undici-types: 6.21.0
@@ -2265,6 +2519,8 @@ snapshots:
2519 chownr@1.1.4:
2520 optional: true
2521
2522 + ci-info@2.0.0: {}
2523 +
2524 cockatiel@3.2.1: {}
2525
2526 color-convert@2.0.1:
@@ -2279,6 +2535,8 @@ snapshots:
2535
2536 commander@12.1.0: {}
2537
2538 + commander@6.2.1: {}
2539 +
2540 concat-map@0.0.1: {}
2541
2542 cross-spawn@7.0.6:
@@ -2318,8 +2576,20 @@ snapshots:
2576 bundle-name: 4.1.0
2577 default-browser-id: 5.0.1
2578
2579 + define-data-property@1.1.4:
2580 + dependencies:
2581 + es-define-property: 1.0.1
2582 + es-errors: 1.3.0
2583 + gopd: 1.2.0
2584 +
2585 define-lazy-prop@3.0.0: {}
2586
2587 + define-properties@1.2.1:
2588 + dependencies:
2589 + define-data-property: 1.1.4
2590 + has-property-descriptors: 1.0.2
2591 + object-keys: 1.1.1
2592 +
2593 delayed-stream@1.0.0: {}
2594
2595 detect-libc@2.1.2:
@@ -2540,6 +2810,8 @@ snapshots:
2810
2811 flatted@3.4.2: {}
2812
2813 + follow-redirects@1.16.0: {}
2814 +
2815 form-data@4.0.6:
2816 dependencies:
2817 asynckit: 0.4.0
@@ -2609,6 +2881,11 @@ snapshots:
2881 dependencies:
2882 type-fest: 0.20.2
2883
2884 + globalthis@1.0.4:
2885 + dependencies:
2886 + define-properties: 1.2.1
2887 + gopd: 1.2.0
2888 +
2889 globby@11.1.0:
2890 dependencies:
2891 array-union: 2.1.0
@@ -2635,6 +2912,10 @@ snapshots:
2912
2913 has-flag@4.0.0: {}
2914
2915 + has-property-descriptors@1.0.2:
2916 + dependencies:
2917 + es-define-property: 1.0.1
2918 +
2919 has-symbols@1.1.0: {}
2920
2921 has-tostringtag@1.0.2:
@@ -2704,6 +2985,10 @@ snapshots:
2985 ini@1.3.8:
2986 optional: true
2987
2988 + is-ci@2.0.0:
2989 + dependencies:
2990 + ci-info: 2.0.0
2991 +
2992 is-docker@3.0.0: {}
2993
2994 is-extglob@2.1.1: {}
@@ -2718,6 +3003,10 @@ snapshots:
3003 dependencies:
3004 is-docker: 3.0.0
3005
3006 + is-it-type@5.1.3:
3007 + dependencies:
3008 + globalthis: 1.0.4
3009 +
3010 is-number@7.0.0: {}
3011
3012 is-path-inside@3.0.3: {}
@@ -2920,6 +3209,8 @@ snapshots:
3209
3210 object-inspect@1.13.4: {}
3211
3212 + object-keys@1.1.1: {}
3213 +
3214 once@1.4.0:
3215 dependencies:
3216 wrappy: 1.0.2
@@ -2940,6 +3231,20 @@ snapshots:
3231 type-check: 0.4.0
3232 word-wrap: 1.2.5
3233
3234 + ovsx@1.0.2:
3235 + dependencies:
3236 + '@vscode/vsce': 3.9.2
3237 + commander: 6.2.1
3238 + follow-redirects: 1.16.0
3239 + is-ci: 2.0.0
3240 + leven: 3.1.0
3241 + semver: 7.8.5
3242 + tmp: 0.2.7
3243 + yauzl-promise: 4.0.0
3244 + transitivePeerDependencies:
3245 + - debug
3246 + - supports-color
3247 +
3248 p-limit@3.1.0:
3249 dependencies:
3250 yocto-queue: 0.1.0
@@ -3155,6 +3460,8 @@ snapshots:
3460 simple-concat: 1.0.1
3461 optional: true
3462
3463 + simple-invariant@2.0.1: {}
3464 +
3465 slash@3.0.0: {}
3466
3467 slash@5.1.0: {}
@@ -3344,6 +3651,12 @@ snapshots:
3651
3652 yallist@4.0.0: {}
3653
3654 + yauzl-promise@4.0.0:
3655 + dependencies:
3656 + '@node-rs/crc32': 1.10.6
3657 + is-it-type: 5.1.3
3658 + simple-invariant: 2.0.1
3659 +
3660 yauzl@3.4.0:
3661 dependencies:
3662 pend: 1.2.0