@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.
- package/CHANGELOG.json +661 -0
- package/CHANGELOG.md +194 -0
- package/heft-plugin.json +3 -3
- package/lib-commonjs/VSCodeExtensionPackagePlugin.js.map +1 -0
- package/lib-commonjs/VSCodeExtensionPublishPlugin.js.map +1 -0
- package/lib-commonjs/VSCodeExtensionVerifySignaturePlugin.js.map +1 -0
- package/{lib → lib-commonjs}/util.js +6 -3
- package/lib-commonjs/util.js.map +1 -0
- package/{lib → lib-dts}/VSCodeExtensionPackagePlugin.d.ts.map +1 -1
- package/{lib → lib-dts}/VSCodeExtensionPublishPlugin.d.ts.map +1 -1
- package/{lib → lib-dts}/VSCodeExtensionVerifySignaturePlugin.d.ts.map +1 -1
- package/{lib → lib-dts}/util.d.ts +2 -2
- package/lib-dts/util.d.ts.map +1 -0
- package/lib-esm/VSCodeExtensionPackagePlugin.js +47 -0
- package/lib-esm/VSCodeExtensionPackagePlugin.js.map +1 -0
- package/lib-esm/VSCodeExtensionPublishPlugin.js +77 -0
- package/lib-esm/VSCodeExtensionPublishPlugin.js.map +1 -0
- package/lib-esm/VSCodeExtensionVerifySignaturePlugin.js +42 -0
- package/lib-esm/VSCodeExtensionVerifySignaturePlugin.js.map +1 -0
- package/lib-esm/util.js +31 -0
- package/lib-esm/util.js.map +1 -0
- package/package.json +26 -12
- package/lib/util.d.ts.map +0 -1
- /package/{lib → lib-commonjs}/VSCodeExtensionPackagePlugin.js +0 -0
- /package/{lib → lib-commonjs}/VSCodeExtensionPublishPlugin.js +0 -0
- /package/{lib → lib-commonjs}/VSCodeExtensionVerifySignaturePlugin.js +0 -0
- /package/{lib → lib-dts}/VSCodeExtensionPackagePlugin.d.ts +0 -0
- /package/{lib → lib-dts}/VSCodeExtensionPublishPlugin.d.ts +0 -0
- /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,
|
|
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":"
|
|
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":"
|
|
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":"
|
|
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"]}
|
package/lib-esm/util.js
ADDED
|
@@ -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.
|
|
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
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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.
|
|
26
|
-
"@rushstack/terminal": "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"}
|
|
File without changes
|