@rushstack/heft-vscode-extension-plugin 1.0.22 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.json +661 -0
  2. package/CHANGELOG.md +194 -0
  3. package/heft-plugin.json +3 -3
  4. package/lib-commonjs/VSCodeExtensionPackagePlugin.js.map +1 -0
  5. package/lib-commonjs/VSCodeExtensionPublishPlugin.js.map +1 -0
  6. package/lib-commonjs/VSCodeExtensionVerifySignaturePlugin.js.map +1 -0
  7. package/{lib → lib-commonjs}/util.js +6 -3
  8. package/lib-commonjs/util.js.map +1 -0
  9. package/{lib → lib-dts}/VSCodeExtensionPackagePlugin.d.ts.map +1 -1
  10. package/{lib → lib-dts}/VSCodeExtensionPublishPlugin.d.ts.map +1 -1
  11. package/{lib → lib-dts}/VSCodeExtensionVerifySignaturePlugin.d.ts.map +1 -1
  12. package/{lib → lib-dts}/util.d.ts +2 -2
  13. package/lib-dts/util.d.ts.map +1 -0
  14. package/lib-esm/VSCodeExtensionPackagePlugin.js +47 -0
  15. package/lib-esm/VSCodeExtensionPackagePlugin.js.map +1 -0
  16. package/lib-esm/VSCodeExtensionPublishPlugin.js +77 -0
  17. package/lib-esm/VSCodeExtensionPublishPlugin.js.map +1 -0
  18. package/lib-esm/VSCodeExtensionVerifySignaturePlugin.js +42 -0
  19. package/lib-esm/VSCodeExtensionVerifySignaturePlugin.js.map +1 -0
  20. package/lib-esm/util.js +31 -0
  21. package/lib-esm/util.js.map +1 -0
  22. package/package.json +26 -12
  23. package/lib/util.d.ts.map +0 -1
  24. /package/{lib → lib-commonjs}/VSCodeExtensionPackagePlugin.js +0 -0
  25. /package/{lib → lib-commonjs}/VSCodeExtensionPublishPlugin.js +0 -0
  26. /package/{lib → lib-commonjs}/VSCodeExtensionVerifySignaturePlugin.js +0 -0
  27. /package/{lib → lib-dts}/VSCodeExtensionPackagePlugin.d.ts +0 -0
  28. /package/{lib → lib-dts}/VSCodeExtensionPublishPlugin.d.ts +0 -0
  29. /package/{lib → lib-dts}/VSCodeExtensionVerifySignaturePlugin.d.ts +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,194 @@
1
+ # Change Log - @rushstack/heft-vscode-extension-plugin
2
+
3
+ This log was last generated on Fri, 20 Feb 2026 00:15:04 GMT and should not be manually modified.
4
+
5
+ ## 1.1.1
6
+ Fri, 20 Feb 2026 00:15:04 GMT
7
+
8
+ ### Patches
9
+
10
+ - Add `"node"` condition before `"import"` in the `"exports"` map so that Node.js uses the CJS output (which handles extensionless imports), while bundlers still use ESM via `"import"`. Fixes https://github.com/microsoft/rushstack/issues/5644.
11
+
12
+ ## 1.1.0
13
+ Thu, 19 Feb 2026 00:04:52 GMT
14
+
15
+ ### Minor changes
16
+
17
+ - Normalize package layout. CommonJS is now under `lib-commonjs`, DTS is now under `lib-dts`, and ESM is now under `lib-esm`. Imports to `lib` still work as before, handled by the `"exports"` field in `package.json`.
18
+
19
+ ## 1.0.22
20
+ Sat, 07 Feb 2026 01:13:26 GMT
21
+
22
+ _Version update only_
23
+
24
+ ## 1.0.21
25
+ Wed, 04 Feb 2026 20:42:47 GMT
26
+
27
+ _Version update only_
28
+
29
+ ## 1.0.20
30
+ Wed, 04 Feb 2026 16:13:27 GMT
31
+
32
+ _Version update only_
33
+
34
+ ## 1.0.19
35
+ Fri, 30 Jan 2026 01:16:13 GMT
36
+
37
+ _Version update only_
38
+
39
+ ## 1.0.18
40
+ Thu, 08 Jan 2026 01:12:30 GMT
41
+
42
+ _Version update only_
43
+
44
+ ## 1.0.17
45
+ Wed, 07 Jan 2026 01:12:25 GMT
46
+
47
+ _Version update only_
48
+
49
+ ## 1.0.16
50
+ Mon, 05 Jan 2026 16:12:49 GMT
51
+
52
+ _Version update only_
53
+
54
+ ## 1.0.15
55
+ Sat, 06 Dec 2025 01:12:28 GMT
56
+
57
+ _Version update only_
58
+
59
+ ## 1.0.14
60
+ Wed, 03 Dec 2025 01:12:28 GMT
61
+
62
+ _Version update only_
63
+
64
+ ## 1.0.13
65
+ Fri, 21 Nov 2025 16:13:56 GMT
66
+
67
+ _Version update only_
68
+
69
+ ## 1.0.12
70
+ Wed, 12 Nov 2025 01:57:54 GMT
71
+
72
+ _Version update only_
73
+
74
+ ## 1.0.11
75
+ Wed, 12 Nov 2025 01:12:56 GMT
76
+
77
+ _Version update only_
78
+
79
+ ## 1.0.10
80
+ Tue, 11 Nov 2025 16:13:26 GMT
81
+
82
+ _Version update only_
83
+
84
+ ## 1.0.9
85
+ Mon, 10 Nov 2025 16:12:32 GMT
86
+
87
+ _Version update only_
88
+
89
+ ## 1.0.8
90
+ Tue, 04 Nov 2025 08:15:15 GMT
91
+
92
+ _Version update only_
93
+
94
+ ## 1.0.7
95
+ Fri, 24 Oct 2025 11:22:09 GMT
96
+
97
+ _Version update only_
98
+
99
+ ## 1.0.6
100
+ Fri, 24 Oct 2025 00:13:38 GMT
101
+
102
+ _Version update only_
103
+
104
+ ## 1.0.5
105
+ Wed, 22 Oct 2025 00:57:54 GMT
106
+
107
+ _Version update only_
108
+
109
+ ## 1.0.4
110
+ Tue, 14 Oct 2025 15:13:22 GMT
111
+
112
+ _Version update only_
113
+
114
+ ## 1.0.3
115
+ Mon, 13 Oct 2025 15:13:02 GMT
116
+
117
+ _Version update only_
118
+
119
+ ## 1.0.2
120
+ Wed, 08 Oct 2025 00:13:29 GMT
121
+
122
+ _Version update only_
123
+
124
+ ## 1.0.1
125
+ Fri, 03 Oct 2025 20:10:00 GMT
126
+
127
+ _Version update only_
128
+
129
+ ## 1.0.0
130
+ Tue, 30 Sep 2025 23:57:45 GMT
131
+
132
+ ### Breaking changes
133
+
134
+ - Release Heft version 1.0.0
135
+
136
+ ## 0.2.8
137
+ Tue, 30 Sep 2025 20:33:51 GMT
138
+
139
+ _Version update only_
140
+
141
+ ## 0.2.7
142
+ Fri, 12 Sep 2025 15:13:07 GMT
143
+
144
+ _Version update only_
145
+
146
+ ## 0.2.6
147
+ Thu, 11 Sep 2025 00:22:31 GMT
148
+
149
+ _Version update only_
150
+
151
+ ## 0.2.5
152
+ Fri, 29 Aug 2025 00:08:01 GMT
153
+
154
+ ### Patches
155
+
156
+ - add extraPackagingFlags plugin option
157
+
158
+ ## 0.2.4
159
+ Thu, 21 Aug 2025 00:12:45 GMT
160
+
161
+ ### Patches
162
+
163
+ - Add support for verifying extension signature.
164
+
165
+ ## 0.2.3
166
+ Tue, 19 Aug 2025 20:45:02 GMT
167
+
168
+ _Version update only_
169
+
170
+ ## 0.2.2
171
+ Fri, 01 Aug 2025 00:12:49 GMT
172
+
173
+ _Version update only_
174
+
175
+ ## 0.2.1
176
+ Mon, 28 Jul 2025 15:11:56 GMT
177
+
178
+ _Version update only_
179
+
180
+ ## 0.2.0
181
+ Sat, 26 Jul 2025 00:12:22 GMT
182
+
183
+ ### Minor changes
184
+
185
+ - Add support for generating extension manifest.
186
+ - Add VSIX publish plugin.
187
+
188
+ ## 0.1.0
189
+ Wed, 23 Jul 2025 20:55:57 GMT
190
+
191
+ ### Minor changes
192
+
193
+ - Add new Heft plugin to package files into a VSIX file
194
+
package/heft-plugin.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "taskPlugins": [
4
4
  {
5
5
  "pluginName": "vscode-extension-package-plugin",
6
- "entryPoint": "./lib/VSCodeExtensionPackagePlugin.js",
6
+ "entryPoint": "./lib-commonjs/VSCodeExtensionPackagePlugin.js",
7
7
  "parameterScope": "package"
8
8
  },
9
9
  {
10
10
  "pluginName": "vscode-extension-verify-signature-plugin",
11
- "entryPoint": "./lib/VSCodeExtensionVerifySignaturePlugin.js",
11
+ "entryPoint": "./lib-commonjs/VSCodeExtensionVerifySignaturePlugin.js",
12
12
  "parameterScope": "verify-signature",
13
13
  "parameters": [
14
14
  {
@@ -36,7 +36,7 @@
36
36
  },
37
37
  {
38
38
  "pluginName": "vscode-extension-publish-plugin",
39
- "entryPoint": "./lib/VSCodeExtensionPublishPlugin.js",
39
+ "entryPoint": "./lib-commonjs/VSCodeExtensionPublishPlugin.js",
40
40
  "parameterScope": "publish-vsix",
41
41
  "parameters": [
42
42
  {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSCodeExtensionPackagePlugin.js","sourceRoot":"","sources":["../src/VSCodeExtensionPackagePlugin.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,gDAAkC;AAUlC,iCAA6D;AAyB7D,MAAM,WAAW,GAAsC,iCAAiC,CAAC;AAEzF,MAAqB,4BAA4B;IAGxC,KAAK,CACV,eAAiC,EACjC,iBAAoC,EACpC,aAAmD;QAEnD,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,UAAmC,EAAE,EAAE;YAC9F,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;YAC/F,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC;YAC9C,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,EACrB,GAAG,eAAe,CAAC;YAEpB,QAAQ,CAAC,SAAS,CAAC,sBAAsB,qBAAc,EAAE,CAAC,CAAC;YAE3D,QAAQ,CAAC,SAAS,CAAC,uBAAuB,kBAAkB,OAAO,QAAQ,EAAE,CAAC,CAAC;YAC/E,MAAM,aAAa,GAA+B,MAAM,IAAA,0BAAmB,EACzE,QAAQ,EACR,MAAM,EACN;gBACE,qBAAc;gBACd,SAAS;gBACT,mBAAmB;gBACnB,OAAO;gBACP,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,GAAG,mBAAmB;aACvB,EACD;gBACE,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC;aAC3E,CACF,CAAC;YACF,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAElD,QAAQ,CAAC,SAAS,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;YAC7D,MAAM,cAAc,GAA+B,MAAM,IAAA,0BAAmB,EAC1E,QAAQ,EACR,MAAM,EACN;gBACE,qBAAc;gBACd,mBAAmB;gBACnB,eAAe;gBACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,OAAO;gBACP,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;aAC3B,EACD;gBACE,uBAAuB,EAAE,eAAe;aACzC,CACF,CAAC;YACF,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,6CAA6C,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAEvD,QAAQ,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA9DD,+CA8DC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport type {\n HeftConfiguration,\n IHeftTaskPlugin,\n IHeftTaskSession,\n IHeftTaskRunHookOptions\n} from '@rushstack/heft';\nimport type { IWaitForExitResult } from '@rushstack/node-core-library';\n\nimport { executeAndWaitAsync, vsceScriptPath } from './util';\n\ninterface IVSCodeExtensionPackagePluginOptions {\n /**\n * The folder where the unpacked VSIX files are located.\n * This is typically the output folder of the VSCode extension build.\n */\n unpackedFolderPath: string;\n /**\n * The path where the packaged VSIX file will be saved.\n * This can be a directory or a full vsix file path.\n * If a directory is provided, the VSIX file will be named based on the extension's `package.json` name and version.\n */\n vsixPath: string;\n /**\n * The path where the generated manifest file will be saved.\n * This manifest is used for signing the VS Code extension.\n */\n manifestPath: string;\n /**\n * Additional flags to pass to the VSCE packaging command.\n */\n extraPackagingFlags?: string[];\n}\n\nconst PLUGIN_NAME: 'vscode-extension-package-plugin' = 'vscode-extension-package-plugin';\n\nexport default class VSCodeExtensionPackagePlugin\n implements IHeftTaskPlugin<IVSCodeExtensionPackagePluginOptions>\n{\n public apply(\n heftTaskSession: IHeftTaskSession,\n heftConfiguration: HeftConfiguration,\n pluginOptions: IVSCodeExtensionPackagePluginOptions\n ): void {\n heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions: IHeftTaskRunHookOptions) => {\n const { unpackedFolderPath, vsixPath, manifestPath, extraPackagingFlags = [] } = pluginOptions;\n const { buildFolderPath } = heftConfiguration;\n const {\n logger: { terminal }\n } = heftTaskSession;\n\n terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);\n\n terminal.writeLine(`Packaging VSIX from ${unpackedFolderPath} to ${vsixPath}`);\n const packageResult: IWaitForExitResult<string> = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'package',\n '--no-dependencies',\n '--out',\n path.resolve(vsixPath),\n ...extraPackagingFlags\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath, unpackedFolderPath)\n }\n );\n if (packageResult.exitCode !== 0) {\n throw new Error(`VSIX packaging failed with exit code ${packageResult.exitCode}`);\n }\n terminal.writeLine('VSIX successfully packaged.');\n\n terminal.writeLine(`Generating manifest at ${manifestPath}`);\n const manifestResult: IWaitForExitResult<string> = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'generate-manifest',\n '--packagePath',\n path.resolve(vsixPath),\n '--out',\n path.resolve(manifestPath)\n ],\n {\n currentWorkingDirectory: buildFolderPath\n }\n );\n if (manifestResult.exitCode !== 0) {\n throw new Error(`Manifest generation failed with exit code ${manifestResult.exitCode}`);\n }\n terminal.writeLine('Manifest successfully generated.');\n\n terminal.writeLine(`VSIX package and manifest generation completed successfully.`);\n });\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSCodeExtensionPublishPlugin.js","sourceRoot":"","sources":["../src/VSCodeExtensionPublishPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport type {\n HeftConfiguration,\n IHeftTaskPlugin,\n IHeftTaskSession,\n IHeftTaskRunHookOptions,\n CommandLineStringParameter,\n CommandLineFlagParameter\n} from '@rushstack/heft';\nimport type { IWaitForExitResult } from '@rushstack/node-core-library';\n\nimport { executeAndWaitAsync, vsceScriptPath } from './util';\n\ninterface IVSCodeExtensionPublishPluginOptions {}\n\nconst PLUGIN_NAME: 'vscode-extension-publish-plugin' = 'vscode-extension-publish-plugin';\n\nconst VSIX_PATH_PARAMETER_NAME: string = '--vsix-path';\nconst MANIFEST_PATH_PARAMETER_NAME: string = '--manifest-path';\nconst SIGNATURE_PATH_PARAMETER_NAME: string = '--signature-path';\nconst PUBLISH_UNSIGNED_PARAMETER_NAME: string = '--publish-unsigned';\n\nexport default class VSCodeExtensionPublishPlugin\n implements IHeftTaskPlugin<IVSCodeExtensionPublishPluginOptions>\n{\n public apply(\n heftTaskSession: IHeftTaskSession,\n heftConfiguration: HeftConfiguration,\n pluginOptions: IVSCodeExtensionPublishPluginOptions\n ): void {\n const vsixPathParameter: CommandLineStringParameter =\n heftTaskSession.parameters.getStringParameter(VSIX_PATH_PARAMETER_NAME);\n const manifestPathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n MANIFEST_PATH_PARAMETER_NAME\n );\n const signaturePathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n SIGNATURE_PATH_PARAMETER_NAME\n );\n const publishUnsignedParameter: CommandLineFlagParameter = heftTaskSession.parameters.getFlagParameter(\n PUBLISH_UNSIGNED_PARAMETER_NAME\n );\n\n const {\n logger: { terminal }\n } = heftTaskSession;\n\n // required parameters defined in heft-plugin.json\n const vsixPath: string = vsixPathParameter.value!;\n\n // manifestPath and signaturePath are required if publishUnsigned is unset\n const manifestPath: string | undefined = manifestPathParameter.value;\n const signaturePath: string | undefined = signaturePathParameter.value;\n const publishUnsigned: boolean = publishUnsignedParameter.value;\n if (publishUnsigned) {\n terminal.writeLine(`Publishing unsigned VSIX ${vsixPath}`);\n } else {\n if (!manifestPath || !signaturePath) {\n throw new Error(\n `The parameters \"${MANIFEST_PATH_PARAMETER_NAME}\" and \"${SIGNATURE_PATH_PARAMETER_NAME}\" are required for the VSCodeExtensionPublishPlugin.`\n );\n }\n }\n\n heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions: IHeftTaskRunHookOptions) => {\n const { buildFolderPath } = heftConfiguration;\n\n terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);\n terminal.writeLine(`Publishing VSIX ${vsixPath}`);\n\n let publishResult: IWaitForExitResult<string>;\n\n if (publishUnsigned) {\n publishResult = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'publish',\n '--no-dependencies',\n '--azure-credential',\n '--packagePath',\n path.resolve(vsixPath)\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath)\n }\n );\n } else {\n if (!manifestPath) {\n throw new Error(`Missing manifest path for the VSCodeExtensionPublishPlugin.`);\n }\n if (!signaturePath) {\n throw new Error(`Missing signature path for the VSCodeExtensionPublishPlugin.`);\n }\n publishResult = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'publish',\n '--no-dependencies',\n '--azure-credential',\n '--packagePath',\n path.resolve(vsixPath),\n '--manifestPath',\n path.resolve(manifestPath),\n '--signaturePath',\n path.resolve(signaturePath)\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath)\n }\n );\n }\n if (publishResult.exitCode !== 0) {\n throw new Error(`VSIX publishing failed with exit code ${publishResult.exitCode}`);\n }\n terminal.writeLine('VSIX successfully published.');\n });\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSCodeExtensionVerifySignaturePlugin.js","sourceRoot":"","sources":["../src/VSCodeExtensionVerifySignaturePlugin.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,gDAAkC;AAWlC,iCAA6D;AAI7D,MAAM,WAAW,GAA+C,0CAA0C,CAAC;AAE3G,MAAM,wBAAwB,GAAW,aAAa,CAAC;AACvD,MAAM,4BAA4B,GAAW,iBAAiB,CAAC;AAC/D,MAAM,6BAA6B,GAAW,kBAAkB,CAAC;AAEjE,MAAqB,oCAAoC;IAGhD,KAAK,CACV,eAAiC,EACjC,iBAAoC,EACpC,aAA2D;QAE3D,MAAM,iBAAiB,GACrB,eAAe,CAAC,UAAU,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;QAC1E,MAAM,qBAAqB,GAA+B,eAAe,CAAC,UAAU,CAAC,kBAAkB,CACrG,4BAA4B,CAC7B,CAAC;QACF,MAAM,sBAAsB,GAA+B,eAAe,CAAC,UAAU,CAAC,kBAAkB,CACtG,6BAA6B,CAC9B,CAAC;QAEF,kDAAkD;QAClD,MAAM,QAAQ,GAAW,iBAAiB,CAAC,KAAM,CAAC;QAClD,MAAM,YAAY,GAAW,qBAAqB,CAAC,KAAM,CAAC;QAC1D,MAAM,aAAa,GAAW,sBAAsB,CAAC,KAAM,CAAC;QAE5D,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,UAAmC,EAAE,EAAE;YAC9F,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC;YAC9C,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,EACrB,GAAG,eAAe,CAAC;YAEpB,QAAQ,CAAC,SAAS,CAAC,sBAAsB,qBAAc,EAAE,CAAC,CAAC;YAC3D,QAAQ,CAAC,SAAS,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YAEtD,MAAM,qBAAqB,GAA+B,MAAM,IAAA,0BAAmB,EACjF,QAAQ,EACR,MAAM,EACN;gBACE,qBAAc;gBACd,kBAAkB;gBAClB,eAAe;gBACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,gBAAgB;gBAChB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC1B,iBAAiB;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;aAC5B,EACD;gBACE,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;aACvD,CACF,CAAC;YACF,IAAI,qBAAqB,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CACb,qDAAqD,qBAAqB,CAAC,QAAQ,EAAE,CACtF,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxDD,uDAwDC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport type {\n HeftConfiguration,\n IHeftTaskPlugin,\n IHeftTaskSession,\n IHeftTaskRunHookOptions,\n CommandLineStringParameter\n} from '@rushstack/heft';\nimport type { IWaitForExitResult } from '@rushstack/node-core-library';\n\nimport { executeAndWaitAsync, vsceScriptPath } from './util';\n\ninterface IVSCodeExtensionVerifySignaturePluginOptions {}\n\nconst PLUGIN_NAME: 'vscode-extension-verify-signature-plugin' = 'vscode-extension-verify-signature-plugin';\n\nconst VSIX_PATH_PARAMETER_NAME: string = '--vsix-path';\nconst MANIFEST_PATH_PARAMETER_NAME: string = '--manifest-path';\nconst SIGNATURE_PATH_PARAMETER_NAME: string = '--signature-path';\n\nexport default class VSCodeExtensionVerifySignaturePlugin\n implements IHeftTaskPlugin<IVSCodeExtensionVerifySignaturePluginOptions>\n{\n public apply(\n heftTaskSession: IHeftTaskSession,\n heftConfiguration: HeftConfiguration,\n pluginOptions: IVSCodeExtensionVerifySignaturePluginOptions\n ): void {\n const vsixPathParameter: CommandLineStringParameter =\n heftTaskSession.parameters.getStringParameter(VSIX_PATH_PARAMETER_NAME);\n const manifestPathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n MANIFEST_PATH_PARAMETER_NAME\n );\n const signaturePathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n SIGNATURE_PATH_PARAMETER_NAME\n );\n\n // required parameters defined in heft-plugin.json\n const vsixPath: string = vsixPathParameter.value!;\n const manifestPath: string = manifestPathParameter.value!;\n const signaturePath: string = signaturePathParameter.value!;\n\n heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions: IHeftTaskRunHookOptions) => {\n const { buildFolderPath } = heftConfiguration;\n const {\n logger: { terminal }\n } = heftTaskSession;\n\n terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);\n terminal.writeLine(`Verifying signature ${vsixPath}`);\n\n const verifySignatureResult: IWaitForExitResult<string> = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'verify-signature',\n '--packagePath',\n path.resolve(vsixPath),\n '--manifestPath',\n path.resolve(manifestPath),\n '--signaturePath',\n path.resolve(signaturePath)\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath)\n }\n );\n if (verifySignatureResult.exitCode !== 0) {\n throw new Error(\n `VSIX signature verification failed with exit code ${verifySignatureResult.exitCode}`\n );\n }\n terminal.writeLine('Successfully verified VSIX signature.');\n });\n }\n}\n"]}
@@ -37,16 +37,19 @@ var __importStar = (this && this.__importStar) || (function () {
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.vsceScriptPath = void 0;
39
39
  exports.executeAndWaitAsync = executeAndWaitAsync;
40
- const node_core_library_1 = require("@rushstack/node-core-library");
41
40
  const path = __importStar(require("node:path"));
41
+ const node_core_library_1 = require("@rushstack/node-core-library");
42
42
  const terminal_1 = require("@rushstack/terminal");
43
43
  async function executeAndWaitAsync(terminal, command, args, options = {}) {
44
44
  var _a, _b;
45
- const childProcess = node_core_library_1.Executable.spawn(command, args, Object.assign(Object.assign({}, options), { stdio: [
45
+ const childProcess = node_core_library_1.Executable.spawn(command, args, {
46
+ ...options,
47
+ stdio: [
46
48
  'ignore', // stdin
47
49
  'pipe', // stdout
48
50
  'pipe' // stderr
49
- ] }));
51
+ ]
52
+ });
50
53
  (_a = childProcess.stdout) === null || _a === void 0 ? void 0 : _a.pipe(new terminal_1.TerminalStreamWritable({
51
54
  terminal,
52
55
  severity: terminal_1.TerminalProviderSeverity.log
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAY3D,kDA8BC;AAvCD,gDAAkC;AAElC,oEAIsC;AACtC,kDAAuG;AAEhG,KAAK,UAAU,mBAAmB,CACvC,QAAmB,EACnB,OAAe,EACf,IAAc,EACd,UAAkD,EAAE;;IAEpD,MAAM,YAAY,GAAiB,8BAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACjE,GAAG,OAAO;QACV,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,SAAS;YACjB,MAAM,CAAC,SAAS;SACjB;KACF,CAAC,CAAC;IACH,MAAA,YAAY,CAAC,MAAM,0CAAE,IAAI,CACvB,IAAI,iCAAsB,CAAC;QACzB,QAAQ;QACR,QAAQ,EAAE,mCAAwB,CAAC,GAAG;KACvC,CAAC,CACH,CAAC;IACF,MAAA,YAAY,CAAC,MAAM,0CAAE,IAAI,CACvB,IAAI,iCAAsB,CAAC;QACzB,QAAQ;QACR,QAAQ,EAAE,mCAAwB,CAAC,KAAK;KACzC,CAAC,CACH,CAAC;IACF,MAAM,MAAM,GAA+B,MAAM,8BAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE;QACzF,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,mBAAmB,GAAW,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACpE,QAAA,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type { ChildProcess } from 'node:child_process';\nimport * as path from 'node:path';\n\nimport {\n Executable,\n type IExecutableSpawnOptions,\n type IWaitForExitResult\n} from '@rushstack/node-core-library';\nimport { TerminalStreamWritable, TerminalProviderSeverity, type ITerminal } from '@rushstack/terminal';\n\nexport async function executeAndWaitAsync(\n terminal: ITerminal,\n command: string,\n args: string[],\n options: Omit<IExecutableSpawnOptions, 'stdio'> = {}\n): Promise<IWaitForExitResult<string>> {\n const childProcess: ChildProcess = Executable.spawn(command, args, {\n ...options,\n stdio: [\n 'ignore', // stdin\n 'pipe', // stdout\n 'pipe' // stderr\n ]\n });\n childProcess.stdout?.pipe(\n new TerminalStreamWritable({\n terminal,\n severity: TerminalProviderSeverity.log\n })\n );\n childProcess.stderr?.pipe(\n new TerminalStreamWritable({\n terminal,\n severity: TerminalProviderSeverity.error\n })\n );\n const result: IWaitForExitResult<string> = await Executable.waitForExitAsync(childProcess, {\n encoding: 'utf8'\n });\n return result;\n}\n\nconst vsceBasePackagePath: string = require.resolve('@vscode/vsce/package.json');\nexport const vsceScriptPath: string = path.resolve(vsceBasePackagePath, '../vsce');\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"VSCodeExtensionPackagePlugin.d.ts","sourceRoot":"","sources":["../src/VSCodeExtensionPackagePlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,oCAAoC;IAC5C;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAID,MAAM,CAAC,OAAO,OAAO,4BACnB,YAAW,eAAe,CAAC,oCAAoC,CAAC;IAEzD,KAAK,CACV,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,oCAAoC,GAClD,IAAI;CAuDR"}
1
+ {"version":3,"file":"VSCodeExtensionPackagePlugin.d.ts","sourceRoot":"","sources":["../src/VSCodeExtensionPackagePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,oCAAoC;IAC5C;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAID,MAAM,CAAC,OAAO,OAAO,4BACnB,YAAW,eAAe,CAAC,oCAAoC,CAAC;IAEzD,KAAK,CACV,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,oCAAoC,GAClD,IAAI;CAuDR"}
@@ -1 +1 @@
1
- {"version":3,"file":"VSCodeExtensionPublishPlugin.d.ts","sourceRoot":"","sources":["../src/VSCodeExtensionPublishPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,oCAAoC;CAAG;AASjD,MAAM,CAAC,OAAO,OAAO,4BACnB,YAAW,eAAe,CAAC,oCAAoC,CAAC;IAEzD,KAAK,CACV,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,oCAAoC,GAClD,IAAI;CA2FR"}
1
+ {"version":3,"file":"VSCodeExtensionPublishPlugin.d.ts","sourceRoot":"","sources":["../src/VSCodeExtensionPublishPlugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,oCAAoC;CAAG;AASjD,MAAM,CAAC,OAAO,OAAO,4BACnB,YAAW,eAAe,CAAC,oCAAoC,CAAC;IAEzD,KAAK,CACV,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,oCAAoC,GAClD,IAAI;CA2FR"}
@@ -1 +1 @@
1
- {"version":3,"file":"VSCodeExtensionVerifySignaturePlugin.d.ts","sourceRoot":"","sources":["../src/VSCodeExtensionVerifySignaturePlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,4CAA4C;CAAG;AAQzD,MAAM,CAAC,OAAO,OAAO,oCACnB,YAAW,eAAe,CAAC,4CAA4C,CAAC;IAEjE,KAAK,CACV,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,4CAA4C,GAC1D,IAAI;CAiDR"}
1
+ {"version":3,"file":"VSCodeExtensionVerifySignaturePlugin.d.ts","sourceRoot":"","sources":["../src/VSCodeExtensionVerifySignaturePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,4CAA4C;CAAG;AAQzD,MAAM,CAAC,OAAO,OAAO,oCACnB,YAAW,eAAe,CAAC,4CAA4C,CAAC;IAEjE,KAAK,CACV,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,4CAA4C,GAC1D,IAAI;CAiDR"}
@@ -1,5 +1,5 @@
1
- import { IExecutableSpawnOptions, IWaitForExitResult } from '@rushstack/node-core-library';
2
- import { ITerminal } from '@rushstack/terminal';
1
+ import { type IExecutableSpawnOptions, type IWaitForExitResult } from '@rushstack/node-core-library';
2
+ import { type ITerminal } from '@rushstack/terminal';
3
3
  export declare function executeAndWaitAsync(terminal: ITerminal, command: string, args: string[], options?: Omit<IExecutableSpawnOptions, 'stdio'>): Promise<IWaitForExitResult<string>>;
4
4
  export declare const vsceScriptPath: string;
5
5
  //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEvG,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAM,GACnD,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAyBrC;AAGD,eAAO,MAAM,cAAc,EAAE,MAAqD,CAAC"}
@@ -0,0 +1,47 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
2
+ // See LICENSE in the project root for license information.
3
+ import * as path from 'node:path';
4
+ import { executeAndWaitAsync, vsceScriptPath } from './util';
5
+ const PLUGIN_NAME = 'vscode-extension-package-plugin';
6
+ export default class VSCodeExtensionPackagePlugin {
7
+ apply(heftTaskSession, heftConfiguration, pluginOptions) {
8
+ heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions) => {
9
+ const { unpackedFolderPath, vsixPath, manifestPath, extraPackagingFlags = [] } = pluginOptions;
10
+ const { buildFolderPath } = heftConfiguration;
11
+ const { logger: { terminal } } = heftTaskSession;
12
+ terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);
13
+ terminal.writeLine(`Packaging VSIX from ${unpackedFolderPath} to ${vsixPath}`);
14
+ const packageResult = await executeAndWaitAsync(terminal, 'node', [
15
+ vsceScriptPath,
16
+ 'package',
17
+ '--no-dependencies',
18
+ '--out',
19
+ path.resolve(vsixPath),
20
+ ...extraPackagingFlags
21
+ ], {
22
+ currentWorkingDirectory: path.resolve(buildFolderPath, unpackedFolderPath)
23
+ });
24
+ if (packageResult.exitCode !== 0) {
25
+ throw new Error(`VSIX packaging failed with exit code ${packageResult.exitCode}`);
26
+ }
27
+ terminal.writeLine('VSIX successfully packaged.');
28
+ terminal.writeLine(`Generating manifest at ${manifestPath}`);
29
+ const manifestResult = await executeAndWaitAsync(terminal, 'node', [
30
+ vsceScriptPath,
31
+ 'generate-manifest',
32
+ '--packagePath',
33
+ path.resolve(vsixPath),
34
+ '--out',
35
+ path.resolve(manifestPath)
36
+ ], {
37
+ currentWorkingDirectory: buildFolderPath
38
+ });
39
+ if (manifestResult.exitCode !== 0) {
40
+ throw new Error(`Manifest generation failed with exit code ${manifestResult.exitCode}`);
41
+ }
42
+ terminal.writeLine('Manifest successfully generated.');
43
+ terminal.writeLine(`VSIX package and manifest generation completed successfully.`);
44
+ });
45
+ }
46
+ }
47
+ //# sourceMappingURL=VSCodeExtensionPackagePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSCodeExtensionPackagePlugin.js","sourceRoot":"","sources":["../src/VSCodeExtensionPackagePlugin.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,2DAA2D;AAE3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAUlC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAyB7D,MAAM,WAAW,GAAsC,iCAAiC,CAAC;AAEzF,MAAM,CAAC,OAAO,OAAO,4BAA4B;IAGxC,KAAK,CACV,eAAiC,EACjC,iBAAoC,EACpC,aAAmD;QAEnD,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,UAAmC,EAAE,EAAE;YAC9F,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;YAC/F,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC;YAC9C,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,EACrB,GAAG,eAAe,CAAC;YAEpB,QAAQ,CAAC,SAAS,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;YAE3D,QAAQ,CAAC,SAAS,CAAC,uBAAuB,kBAAkB,OAAO,QAAQ,EAAE,CAAC,CAAC;YAC/E,MAAM,aAAa,GAA+B,MAAM,mBAAmB,CACzE,QAAQ,EACR,MAAM,EACN;gBACE,cAAc;gBACd,SAAS;gBACT,mBAAmB;gBACnB,OAAO;gBACP,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,GAAG,mBAAmB;aACvB,EACD;gBACE,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC;aAC3E,CACF,CAAC;YACF,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAElD,QAAQ,CAAC,SAAS,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;YAC7D,MAAM,cAAc,GAA+B,MAAM,mBAAmB,CAC1E,QAAQ,EACR,MAAM,EACN;gBACE,cAAc;gBACd,mBAAmB;gBACnB,eAAe;gBACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,OAAO;gBACP,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;aAC3B,EACD;gBACE,uBAAuB,EAAE,eAAe;aACzC,CACF,CAAC;YACF,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,6CAA6C,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAEvD,QAAQ,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport type {\n HeftConfiguration,\n IHeftTaskPlugin,\n IHeftTaskSession,\n IHeftTaskRunHookOptions\n} from '@rushstack/heft';\nimport type { IWaitForExitResult } from '@rushstack/node-core-library';\n\nimport { executeAndWaitAsync, vsceScriptPath } from './util';\n\ninterface IVSCodeExtensionPackagePluginOptions {\n /**\n * The folder where the unpacked VSIX files are located.\n * This is typically the output folder of the VSCode extension build.\n */\n unpackedFolderPath: string;\n /**\n * The path where the packaged VSIX file will be saved.\n * This can be a directory or a full vsix file path.\n * If a directory is provided, the VSIX file will be named based on the extension's `package.json` name and version.\n */\n vsixPath: string;\n /**\n * The path where the generated manifest file will be saved.\n * This manifest is used for signing the VS Code extension.\n */\n manifestPath: string;\n /**\n * Additional flags to pass to the VSCE packaging command.\n */\n extraPackagingFlags?: string[];\n}\n\nconst PLUGIN_NAME: 'vscode-extension-package-plugin' = 'vscode-extension-package-plugin';\n\nexport default class VSCodeExtensionPackagePlugin\n implements IHeftTaskPlugin<IVSCodeExtensionPackagePluginOptions>\n{\n public apply(\n heftTaskSession: IHeftTaskSession,\n heftConfiguration: HeftConfiguration,\n pluginOptions: IVSCodeExtensionPackagePluginOptions\n ): void {\n heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions: IHeftTaskRunHookOptions) => {\n const { unpackedFolderPath, vsixPath, manifestPath, extraPackagingFlags = [] } = pluginOptions;\n const { buildFolderPath } = heftConfiguration;\n const {\n logger: { terminal }\n } = heftTaskSession;\n\n terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);\n\n terminal.writeLine(`Packaging VSIX from ${unpackedFolderPath} to ${vsixPath}`);\n const packageResult: IWaitForExitResult<string> = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'package',\n '--no-dependencies',\n '--out',\n path.resolve(vsixPath),\n ...extraPackagingFlags\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath, unpackedFolderPath)\n }\n );\n if (packageResult.exitCode !== 0) {\n throw new Error(`VSIX packaging failed with exit code ${packageResult.exitCode}`);\n }\n terminal.writeLine('VSIX successfully packaged.');\n\n terminal.writeLine(`Generating manifest at ${manifestPath}`);\n const manifestResult: IWaitForExitResult<string> = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'generate-manifest',\n '--packagePath',\n path.resolve(vsixPath),\n '--out',\n path.resolve(manifestPath)\n ],\n {\n currentWorkingDirectory: buildFolderPath\n }\n );\n if (manifestResult.exitCode !== 0) {\n throw new Error(`Manifest generation failed with exit code ${manifestResult.exitCode}`);\n }\n terminal.writeLine('Manifest successfully generated.');\n\n terminal.writeLine(`VSIX package and manifest generation completed successfully.`);\n });\n }\n}\n"]}
@@ -0,0 +1,77 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
2
+ // See LICENSE in the project root for license information.
3
+ import * as path from 'node:path';
4
+ import { executeAndWaitAsync, vsceScriptPath } from './util';
5
+ const PLUGIN_NAME = 'vscode-extension-publish-plugin';
6
+ const VSIX_PATH_PARAMETER_NAME = '--vsix-path';
7
+ const MANIFEST_PATH_PARAMETER_NAME = '--manifest-path';
8
+ const SIGNATURE_PATH_PARAMETER_NAME = '--signature-path';
9
+ const PUBLISH_UNSIGNED_PARAMETER_NAME = '--publish-unsigned';
10
+ export default class VSCodeExtensionPublishPlugin {
11
+ apply(heftTaskSession, heftConfiguration, pluginOptions) {
12
+ const vsixPathParameter = heftTaskSession.parameters.getStringParameter(VSIX_PATH_PARAMETER_NAME);
13
+ const manifestPathParameter = heftTaskSession.parameters.getStringParameter(MANIFEST_PATH_PARAMETER_NAME);
14
+ const signaturePathParameter = heftTaskSession.parameters.getStringParameter(SIGNATURE_PATH_PARAMETER_NAME);
15
+ const publishUnsignedParameter = heftTaskSession.parameters.getFlagParameter(PUBLISH_UNSIGNED_PARAMETER_NAME);
16
+ const { logger: { terminal } } = heftTaskSession;
17
+ // required parameters defined in heft-plugin.json
18
+ const vsixPath = vsixPathParameter.value;
19
+ // manifestPath and signaturePath are required if publishUnsigned is unset
20
+ const manifestPath = manifestPathParameter.value;
21
+ const signaturePath = signaturePathParameter.value;
22
+ const publishUnsigned = publishUnsignedParameter.value;
23
+ if (publishUnsigned) {
24
+ terminal.writeLine(`Publishing unsigned VSIX ${vsixPath}`);
25
+ }
26
+ else {
27
+ if (!manifestPath || !signaturePath) {
28
+ throw new Error(`The parameters "${MANIFEST_PATH_PARAMETER_NAME}" and "${SIGNATURE_PATH_PARAMETER_NAME}" are required for the VSCodeExtensionPublishPlugin.`);
29
+ }
30
+ }
31
+ heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions) => {
32
+ const { buildFolderPath } = heftConfiguration;
33
+ terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);
34
+ terminal.writeLine(`Publishing VSIX ${vsixPath}`);
35
+ let publishResult;
36
+ if (publishUnsigned) {
37
+ publishResult = await executeAndWaitAsync(terminal, 'node', [
38
+ vsceScriptPath,
39
+ 'publish',
40
+ '--no-dependencies',
41
+ '--azure-credential',
42
+ '--packagePath',
43
+ path.resolve(vsixPath)
44
+ ], {
45
+ currentWorkingDirectory: path.resolve(buildFolderPath)
46
+ });
47
+ }
48
+ else {
49
+ if (!manifestPath) {
50
+ throw new Error(`Missing manifest path for the VSCodeExtensionPublishPlugin.`);
51
+ }
52
+ if (!signaturePath) {
53
+ throw new Error(`Missing signature path for the VSCodeExtensionPublishPlugin.`);
54
+ }
55
+ publishResult = await executeAndWaitAsync(terminal, 'node', [
56
+ vsceScriptPath,
57
+ 'publish',
58
+ '--no-dependencies',
59
+ '--azure-credential',
60
+ '--packagePath',
61
+ path.resolve(vsixPath),
62
+ '--manifestPath',
63
+ path.resolve(manifestPath),
64
+ '--signaturePath',
65
+ path.resolve(signaturePath)
66
+ ], {
67
+ currentWorkingDirectory: path.resolve(buildFolderPath)
68
+ });
69
+ }
70
+ if (publishResult.exitCode !== 0) {
71
+ throw new Error(`VSIX publishing failed with exit code ${publishResult.exitCode}`);
72
+ }
73
+ terminal.writeLine('VSIX successfully published.');
74
+ });
75
+ }
76
+ }
77
+ //# sourceMappingURL=VSCodeExtensionPublishPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSCodeExtensionPublishPlugin.js","sourceRoot":"","sources":["../src/VSCodeExtensionPublishPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport type {\n HeftConfiguration,\n IHeftTaskPlugin,\n IHeftTaskSession,\n IHeftTaskRunHookOptions,\n CommandLineStringParameter,\n CommandLineFlagParameter\n} from '@rushstack/heft';\nimport type { IWaitForExitResult } from '@rushstack/node-core-library';\n\nimport { executeAndWaitAsync, vsceScriptPath } from './util';\n\ninterface IVSCodeExtensionPublishPluginOptions {}\n\nconst PLUGIN_NAME: 'vscode-extension-publish-plugin' = 'vscode-extension-publish-plugin';\n\nconst VSIX_PATH_PARAMETER_NAME: string = '--vsix-path';\nconst MANIFEST_PATH_PARAMETER_NAME: string = '--manifest-path';\nconst SIGNATURE_PATH_PARAMETER_NAME: string = '--signature-path';\nconst PUBLISH_UNSIGNED_PARAMETER_NAME: string = '--publish-unsigned';\n\nexport default class VSCodeExtensionPublishPlugin\n implements IHeftTaskPlugin<IVSCodeExtensionPublishPluginOptions>\n{\n public apply(\n heftTaskSession: IHeftTaskSession,\n heftConfiguration: HeftConfiguration,\n pluginOptions: IVSCodeExtensionPublishPluginOptions\n ): void {\n const vsixPathParameter: CommandLineStringParameter =\n heftTaskSession.parameters.getStringParameter(VSIX_PATH_PARAMETER_NAME);\n const manifestPathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n MANIFEST_PATH_PARAMETER_NAME\n );\n const signaturePathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n SIGNATURE_PATH_PARAMETER_NAME\n );\n const publishUnsignedParameter: CommandLineFlagParameter = heftTaskSession.parameters.getFlagParameter(\n PUBLISH_UNSIGNED_PARAMETER_NAME\n );\n\n const {\n logger: { terminal }\n } = heftTaskSession;\n\n // required parameters defined in heft-plugin.json\n const vsixPath: string = vsixPathParameter.value!;\n\n // manifestPath and signaturePath are required if publishUnsigned is unset\n const manifestPath: string | undefined = manifestPathParameter.value;\n const signaturePath: string | undefined = signaturePathParameter.value;\n const publishUnsigned: boolean = publishUnsignedParameter.value;\n if (publishUnsigned) {\n terminal.writeLine(`Publishing unsigned VSIX ${vsixPath}`);\n } else {\n if (!manifestPath || !signaturePath) {\n throw new Error(\n `The parameters \"${MANIFEST_PATH_PARAMETER_NAME}\" and \"${SIGNATURE_PATH_PARAMETER_NAME}\" are required for the VSCodeExtensionPublishPlugin.`\n );\n }\n }\n\n heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions: IHeftTaskRunHookOptions) => {\n const { buildFolderPath } = heftConfiguration;\n\n terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);\n terminal.writeLine(`Publishing VSIX ${vsixPath}`);\n\n let publishResult: IWaitForExitResult<string>;\n\n if (publishUnsigned) {\n publishResult = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'publish',\n '--no-dependencies',\n '--azure-credential',\n '--packagePath',\n path.resolve(vsixPath)\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath)\n }\n );\n } else {\n if (!manifestPath) {\n throw new Error(`Missing manifest path for the VSCodeExtensionPublishPlugin.`);\n }\n if (!signaturePath) {\n throw new Error(`Missing signature path for the VSCodeExtensionPublishPlugin.`);\n }\n publishResult = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'publish',\n '--no-dependencies',\n '--azure-credential',\n '--packagePath',\n path.resolve(vsixPath),\n '--manifestPath',\n path.resolve(manifestPath),\n '--signaturePath',\n path.resolve(signaturePath)\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath)\n }\n );\n }\n if (publishResult.exitCode !== 0) {\n throw new Error(`VSIX publishing failed with exit code ${publishResult.exitCode}`);\n }\n terminal.writeLine('VSIX successfully published.');\n });\n }\n}\n"]}
@@ -0,0 +1,42 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
2
+ // See LICENSE in the project root for license information.
3
+ import * as path from 'node:path';
4
+ import { executeAndWaitAsync, vsceScriptPath } from './util';
5
+ const PLUGIN_NAME = 'vscode-extension-verify-signature-plugin';
6
+ const VSIX_PATH_PARAMETER_NAME = '--vsix-path';
7
+ const MANIFEST_PATH_PARAMETER_NAME = '--manifest-path';
8
+ const SIGNATURE_PATH_PARAMETER_NAME = '--signature-path';
9
+ export default class VSCodeExtensionVerifySignaturePlugin {
10
+ apply(heftTaskSession, heftConfiguration, pluginOptions) {
11
+ const vsixPathParameter = heftTaskSession.parameters.getStringParameter(VSIX_PATH_PARAMETER_NAME);
12
+ const manifestPathParameter = heftTaskSession.parameters.getStringParameter(MANIFEST_PATH_PARAMETER_NAME);
13
+ const signaturePathParameter = heftTaskSession.parameters.getStringParameter(SIGNATURE_PATH_PARAMETER_NAME);
14
+ // required parameters defined in heft-plugin.json
15
+ const vsixPath = vsixPathParameter.value;
16
+ const manifestPath = manifestPathParameter.value;
17
+ const signaturePath = signaturePathParameter.value;
18
+ heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions) => {
19
+ const { buildFolderPath } = heftConfiguration;
20
+ const { logger: { terminal } } = heftTaskSession;
21
+ terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);
22
+ terminal.writeLine(`Verifying signature ${vsixPath}`);
23
+ const verifySignatureResult = await executeAndWaitAsync(terminal, 'node', [
24
+ vsceScriptPath,
25
+ 'verify-signature',
26
+ '--packagePath',
27
+ path.resolve(vsixPath),
28
+ '--manifestPath',
29
+ path.resolve(manifestPath),
30
+ '--signaturePath',
31
+ path.resolve(signaturePath)
32
+ ], {
33
+ currentWorkingDirectory: path.resolve(buildFolderPath)
34
+ });
35
+ if (verifySignatureResult.exitCode !== 0) {
36
+ throw new Error(`VSIX signature verification failed with exit code ${verifySignatureResult.exitCode}`);
37
+ }
38
+ terminal.writeLine('Successfully verified VSIX signature.');
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=VSCodeExtensionVerifySignaturePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VSCodeExtensionVerifySignaturePlugin.js","sourceRoot":"","sources":["../src/VSCodeExtensionVerifySignaturePlugin.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,2DAA2D;AAE3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAWlC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAI7D,MAAM,WAAW,GAA+C,0CAA0C,CAAC;AAE3G,MAAM,wBAAwB,GAAW,aAAa,CAAC;AACvD,MAAM,4BAA4B,GAAW,iBAAiB,CAAC;AAC/D,MAAM,6BAA6B,GAAW,kBAAkB,CAAC;AAEjE,MAAM,CAAC,OAAO,OAAO,oCAAoC;IAGhD,KAAK,CACV,eAAiC,EACjC,iBAAoC,EACpC,aAA2D;QAE3D,MAAM,iBAAiB,GACrB,eAAe,CAAC,UAAU,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;QAC1E,MAAM,qBAAqB,GAA+B,eAAe,CAAC,UAAU,CAAC,kBAAkB,CACrG,4BAA4B,CAC7B,CAAC;QACF,MAAM,sBAAsB,GAA+B,eAAe,CAAC,UAAU,CAAC,kBAAkB,CACtG,6BAA6B,CAC9B,CAAC;QAEF,kDAAkD;QAClD,MAAM,QAAQ,GAAW,iBAAiB,CAAC,KAAM,CAAC;QAClD,MAAM,YAAY,GAAW,qBAAqB,CAAC,KAAM,CAAC;QAC1D,MAAM,aAAa,GAAW,sBAAsB,CAAC,KAAM,CAAC;QAE5D,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,UAAmC,EAAE,EAAE;YAC9F,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC;YAC9C,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,EACrB,GAAG,eAAe,CAAC;YAEpB,QAAQ,CAAC,SAAS,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;YAC3D,QAAQ,CAAC,SAAS,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YAEtD,MAAM,qBAAqB,GAA+B,MAAM,mBAAmB,CACjF,QAAQ,EACR,MAAM,EACN;gBACE,cAAc;gBACd,kBAAkB;gBAClB,eAAe;gBACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,gBAAgB;gBAChB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC1B,iBAAiB;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;aAC5B,EACD;gBACE,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;aACvD,CACF,CAAC;YACF,IAAI,qBAAqB,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CACb,qDAAqD,qBAAqB,CAAC,QAAQ,EAAE,CACtF,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport type {\n HeftConfiguration,\n IHeftTaskPlugin,\n IHeftTaskSession,\n IHeftTaskRunHookOptions,\n CommandLineStringParameter\n} from '@rushstack/heft';\nimport type { IWaitForExitResult } from '@rushstack/node-core-library';\n\nimport { executeAndWaitAsync, vsceScriptPath } from './util';\n\ninterface IVSCodeExtensionVerifySignaturePluginOptions {}\n\nconst PLUGIN_NAME: 'vscode-extension-verify-signature-plugin' = 'vscode-extension-verify-signature-plugin';\n\nconst VSIX_PATH_PARAMETER_NAME: string = '--vsix-path';\nconst MANIFEST_PATH_PARAMETER_NAME: string = '--manifest-path';\nconst SIGNATURE_PATH_PARAMETER_NAME: string = '--signature-path';\n\nexport default class VSCodeExtensionVerifySignaturePlugin\n implements IHeftTaskPlugin<IVSCodeExtensionVerifySignaturePluginOptions>\n{\n public apply(\n heftTaskSession: IHeftTaskSession,\n heftConfiguration: HeftConfiguration,\n pluginOptions: IVSCodeExtensionVerifySignaturePluginOptions\n ): void {\n const vsixPathParameter: CommandLineStringParameter =\n heftTaskSession.parameters.getStringParameter(VSIX_PATH_PARAMETER_NAME);\n const manifestPathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n MANIFEST_PATH_PARAMETER_NAME\n );\n const signaturePathParameter: CommandLineStringParameter = heftTaskSession.parameters.getStringParameter(\n SIGNATURE_PATH_PARAMETER_NAME\n );\n\n // required parameters defined in heft-plugin.json\n const vsixPath: string = vsixPathParameter.value!;\n const manifestPath: string = manifestPathParameter.value!;\n const signaturePath: string = signaturePathParameter.value!;\n\n heftTaskSession.hooks.run.tapPromise(PLUGIN_NAME, async (runOptions: IHeftTaskRunHookOptions) => {\n const { buildFolderPath } = heftConfiguration;\n const {\n logger: { terminal }\n } = heftTaskSession;\n\n terminal.writeLine(`Using VSCE script: ${vsceScriptPath}`);\n terminal.writeLine(`Verifying signature ${vsixPath}`);\n\n const verifySignatureResult: IWaitForExitResult<string> = await executeAndWaitAsync(\n terminal,\n 'node',\n [\n vsceScriptPath,\n 'verify-signature',\n '--packagePath',\n path.resolve(vsixPath),\n '--manifestPath',\n path.resolve(manifestPath),\n '--signaturePath',\n path.resolve(signaturePath)\n ],\n {\n currentWorkingDirectory: path.resolve(buildFolderPath)\n }\n );\n if (verifySignatureResult.exitCode !== 0) {\n throw new Error(\n `VSIX signature verification failed with exit code ${verifySignatureResult.exitCode}`\n );\n }\n terminal.writeLine('Successfully verified VSIX signature.');\n });\n }\n}\n"]}
@@ -0,0 +1,31 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
2
+ // See LICENSE in the project root for license information.
3
+ import * as path from 'node:path';
4
+ import { Executable } from '@rushstack/node-core-library';
5
+ import { TerminalStreamWritable, TerminalProviderSeverity } from '@rushstack/terminal';
6
+ export async function executeAndWaitAsync(terminal, command, args, options = {}) {
7
+ var _a, _b;
8
+ const childProcess = Executable.spawn(command, args, {
9
+ ...options,
10
+ stdio: [
11
+ 'ignore', // stdin
12
+ 'pipe', // stdout
13
+ 'pipe' // stderr
14
+ ]
15
+ });
16
+ (_a = childProcess.stdout) === null || _a === void 0 ? void 0 : _a.pipe(new TerminalStreamWritable({
17
+ terminal,
18
+ severity: TerminalProviderSeverity.log
19
+ }));
20
+ (_b = childProcess.stderr) === null || _b === void 0 ? void 0 : _b.pipe(new TerminalStreamWritable({
21
+ terminal,
22
+ severity: TerminalProviderSeverity.error
23
+ }));
24
+ const result = await Executable.waitForExitAsync(childProcess, {
25
+ encoding: 'utf8'
26
+ });
27
+ return result;
28
+ }
29
+ const vsceBasePackagePath = require.resolve('@vscode/vsce/package.json');
30
+ export const vsceScriptPath = path.resolve(vsceBasePackagePath, '../vsce');
31
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,2DAA2D;AAG3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,UAAU,EAGX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAkB,MAAM,qBAAqB,CAAC;AAEvG,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAmB,EACnB,OAAe,EACf,IAAc,EACd,UAAkD,EAAE;;IAEpD,MAAM,YAAY,GAAiB,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACjE,GAAG,OAAO;QACV,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,SAAS;YACjB,MAAM,CAAC,SAAS;SACjB;KACF,CAAC,CAAC;IACH,MAAA,YAAY,CAAC,MAAM,0CAAE,IAAI,CACvB,IAAI,sBAAsB,CAAC;QACzB,QAAQ;QACR,QAAQ,EAAE,wBAAwB,CAAC,GAAG;KACvC,CAAC,CACH,CAAC;IACF,MAAA,YAAY,CAAC,MAAM,0CAAE,IAAI,CACvB,IAAI,sBAAsB,CAAC;QACzB,QAAQ;QACR,QAAQ,EAAE,wBAAwB,CAAC,KAAK;KACzC,CAAC,CACH,CAAC;IACF,MAAM,MAAM,GAA+B,MAAM,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE;QACzF,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,mBAAmB,GAAW,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type { ChildProcess } from 'node:child_process';\nimport * as path from 'node:path';\n\nimport {\n Executable,\n type IExecutableSpawnOptions,\n type IWaitForExitResult\n} from '@rushstack/node-core-library';\nimport { TerminalStreamWritable, TerminalProviderSeverity, type ITerminal } from '@rushstack/terminal';\n\nexport async function executeAndWaitAsync(\n terminal: ITerminal,\n command: string,\n args: string[],\n options: Omit<IExecutableSpawnOptions, 'stdio'> = {}\n): Promise<IWaitForExitResult<string>> {\n const childProcess: ChildProcess = Executable.spawn(command, args, {\n ...options,\n stdio: [\n 'ignore', // stdin\n 'pipe', // stdout\n 'pipe' // stderr\n ]\n });\n childProcess.stdout?.pipe(\n new TerminalStreamWritable({\n terminal,\n severity: TerminalProviderSeverity.log\n })\n );\n childProcess.stderr?.pipe(\n new TerminalStreamWritable({\n terminal,\n severity: TerminalProviderSeverity.error\n })\n );\n const result: IWaitForExitResult<string> = await Executable.waitForExitAsync(childProcess, {\n encoding: 'utf8'\n });\n return result;\n}\n\nconst vsceBasePackagePath: string = require.resolve('@vscode/vsce/package.json');\nexport const vsceScriptPath: string = path.resolve(vsceBasePackagePath, '../vsce');\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/heft-vscode-extension-plugin",
3
- "version": "1.0.22",
3
+ "version": "1.1.1",
4
4
  "description": "Heft plugin for building vscode extensions.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,21 +9,35 @@
9
9
  },
10
10
  "homepage": "https://rushstack.io/pages/heft/overview/",
11
11
  "license": "MIT",
12
- "main": "lib/index.js",
13
- "types": "lib/index.d.ts",
14
- "peerDependencies": {
15
- "@rushstack/heft": "^1.1.14"
12
+ "exports": {
13
+ "./lib/*": {
14
+ "types": "./lib-dts/*.d.ts",
15
+ "node": "./lib-commonjs/*.js",
16
+ "import": "./lib-esm/*.js",
17
+ "require": "./lib-commonjs/*.js"
18
+ },
19
+ "./heft-plugin.json": "./heft-plugin.json",
20
+ "./package.json": "./package.json"
16
21
  },
17
- "devDependencies": {
18
- "eslint": "~9.37.0",
19
- "@types/node": "20.17.19",
20
- "@rushstack/heft-node-rig": "2.11.19",
21
- "@rushstack/heft": "1.1.14"
22
+ "typesVersions": {
23
+ "*": {
24
+ "lib/*": [
25
+ "lib-dts/*"
26
+ ]
27
+ }
28
+ },
29
+ "peerDependencies": {
30
+ "@rushstack/heft": "^1.2.1"
22
31
  },
23
32
  "dependencies": {
24
33
  "@vscode/vsce": "3.2.1",
25
- "@rushstack/node-core-library": "5.19.1",
26
- "@rushstack/terminal": "0.21.0"
34
+ "@rushstack/node-core-library": "5.20.1",
35
+ "@rushstack/terminal": "0.22.1"
36
+ },
37
+ "devDependencies": {
38
+ "eslint": "~9.37.0",
39
+ "@rushstack/heft": "1.2.1",
40
+ "local-node-rig": "1.0.0"
27
41
  },
28
42
  "sideEffects": false,
29
43
  "scripts": {
package/lib/util.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGvG,OAAO,EAAoD,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAElG,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAM,GACnD,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAyBrC;AAGD,eAAO,MAAM,cAAc,EAAE,MAAqD,CAAC"}