ovsx 1.1.0 → 1.2.0
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/README.md +71 -1
- package/lib/get.js +1 -1
- package/lib/get.js.map +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/list-options.d.ts +24 -0
- package/lib/list-options.d.ts.map +1 -0
- package/lib/list-options.js +15 -0
- package/lib/list-options.js.map +1 -0
- package/lib/list.d.ts +18 -0
- package/lib/list.d.ts.map +1 -0
- package/lib/list.js +46 -0
- package/lib/list.js.map +1 -0
- package/lib/main.js +78 -2
- package/lib/main.js.map +1 -1
- package/lib/oidc.d.ts +22 -0
- package/lib/oidc.d.ts.map +1 -0
- package/lib/oidc.js +101 -0
- package/lib/oidc.js.map +1 -0
- package/lib/publish-options.d.ts +8 -1
- package/lib/publish-options.d.ts.map +1 -1
- package/lib/publish.d.ts.map +1 -1
- package/lib/publish.js +73 -4
- package/lib/publish.js.map +1 -1
- package/lib/registry-options.d.ts +8 -0
- package/lib/registry-options.d.ts.map +1 -1
- package/lib/registry.d.ts +119 -1
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +187 -19
- package/lib/registry.js.map +1 -1
- package/lib/search-options.d.ts +48 -0
- package/lib/search-options.d.ts.map +1 -0
- package/lib/search-options.js +15 -0
- package/lib/search-options.js.map +1 -0
- package/lib/search.d.ts +22 -0
- package/lib/search.d.ts.map +1 -0
- package/lib/search.js +86 -0
- package/lib/search.js.map +1 -0
- package/lib/show-options.d.ts +33 -0
- package/lib/show-options.d.ts.map +1 -0
- package/lib/show-options.js +15 -0
- package/lib/show-options.js.map +1 -0
- package/lib/show.d.ts +18 -0
- package/lib/show.d.ts.map +1 -0
- package/lib/show.js +289 -0
- package/lib/show.js.map +1 -0
- package/lib/table.d.ts +27 -0
- package/lib/table.d.ts.map +1 -0
- package/lib/table.js +56 -0
- package/lib/table.js.map +1 -0
- package/lib/trusted-publishing-options.d.ts +30 -0
- package/lib/trusted-publishing-options.d.ts.map +1 -0
- package/lib/trusted-publishing-options.js +15 -0
- package/lib/trusted-publishing-options.js.map +1 -0
- package/lib/trusted-publishing.d.ts +35 -0
- package/lib/trusted-publishing.d.ts.map +1 -0
- package/lib/trusted-publishing.js +112 -0
- package/lib/trusted-publishing.js.map +1 -0
- package/lib/unpublish-options.d.ts +34 -0
- package/lib/unpublish-options.d.ts.map +1 -0
- package/lib/unpublish-options.js +15 -0
- package/lib/unpublish-options.js.map +1 -0
- package/lib/unpublish.d.ts +22 -0
- package/lib/unpublish.d.ts.map +1 -0
- package/lib/unpublish.js +137 -0
- package/lib/unpublish.js.map +1 -0
- package/lib/util.d.ts +39 -1
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +91 -5
- package/lib/util.js.map +1 -1
- package/lib/verify-options.d.ts +24 -0
- package/lib/verify-options.d.ts.map +1 -0
- package/lib/verify-options.js +15 -0
- package/lib/verify-options.js.map +1 -0
- package/lib/verify-signature-options.d.ts +32 -0
- package/lib/verify-signature-options.d.ts.map +1 -0
- package/lib/verify-signature-options.js +15 -0
- package/lib/verify-signature-options.js.map +1 -0
- package/lib/verify-signature.d.ts +28 -0
- package/lib/verify-signature.d.ts.map +1 -0
- package/lib/verify-signature.js +105 -0
- package/lib/verify-signature.js.map +1 -0
- package/lib/verify.d.ts +21 -0
- package/lib/verify.d.ts.map +1 -0
- package/lib/verify.js +97 -0
- package/lib/verify.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/zip.d.ts +10 -0
- package/lib/zip.d.ts.map +1 -1
- package/lib/zip.js +31 -0
- package/lib/zip.js.map +1 -1
- package/package.json +9 -5
- package/src/get.ts +1 -1
- package/src/index.ts +4 -0
- package/src/list-options.ts +25 -0
- package/src/list.ts +48 -0
- package/src/main.ts +89 -3
- package/src/oidc.ts +107 -0
- package/src/publish-options.ts +8 -1
- package/src/publish.ts +97 -5
- package/src/registry-options.ts +8 -0
- package/src/registry.ts +292 -19
- package/src/search-options.ts +49 -0
- package/src/search.ts +95 -0
- package/src/show-options.ts +34 -0
- package/src/show.ts +328 -0
- package/src/table.ts +53 -0
- package/src/trusted-publishing-options.ts +30 -0
- package/src/trusted-publishing.ts +148 -0
- package/src/unpublish-options.ts +35 -0
- package/src/unpublish.ts +160 -0
- package/src/util.ts +102 -5
- package/src/verify-options.ts +25 -0
- package/src/verify-signature-options.ts +32 -0
- package/src/verify-signature.ts +124 -0
- package/src/verify.ts +107 -0
- package/src/version.ts +1 -1
- package/src/zip.ts +31 -1
package/lib/publish.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AAGzE;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAiBjG"}
|
package/lib/publish.js
CHANGED
|
@@ -10,27 +10,47 @@ exports.publish = publish;
|
|
|
10
10
|
*
|
|
11
11
|
* SPDX-License-Identifier: EPL-2.0
|
|
12
12
|
********************************************************************************/
|
|
13
|
+
const fs = require("fs");
|
|
13
14
|
const vsce_1 = require("@vscode/vsce");
|
|
14
15
|
const pat_1 = require("./pat");
|
|
15
16
|
const util_1 = require("./util");
|
|
16
17
|
const registry_1 = require("./registry");
|
|
17
18
|
const check_license_1 = require("./check-license");
|
|
18
19
|
const zip_1 = require("./zip");
|
|
20
|
+
const trusted_publishing_1 = require("./trusted-publishing");
|
|
19
21
|
/**
|
|
20
22
|
* Publishes an extension.
|
|
21
23
|
*/
|
|
22
24
|
async function publish(options = {}) {
|
|
23
25
|
(0, util_1.addEnvOptions)(options);
|
|
26
|
+
(0, util_1.addTrustedPublishingEnvOptions)(options);
|
|
27
|
+
// Looked up once and shared by every target/package below, rather than once per artifact.
|
|
28
|
+
const maxExtensionSize = await getMaxExtensionSize(new registry_1.Registry(options));
|
|
24
29
|
const internalPublishOptions = [];
|
|
25
30
|
const packagePaths = options.packagePath || [undefined];
|
|
26
31
|
const targets = options.targets || [undefined];
|
|
27
32
|
for (const packagePath of packagePaths) {
|
|
28
33
|
for (const target of targets) {
|
|
29
|
-
internalPublishOptions.push({ ...options, packagePath: packagePath, target: target });
|
|
34
|
+
internalPublishOptions.push({ ...options, packagePath: packagePath, target: target, maxExtensionSize });
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
37
|
return Promise.allSettled(internalPublishOptions.map(publishOptions => doPublish(publishOptions)));
|
|
33
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Looks up the registry's configured extension size limit, so an oversized package can be rejected
|
|
41
|
+
* locally before the upload instead of after transferring the whole payload.
|
|
42
|
+
*
|
|
43
|
+
* Best-effort: registries that don't expose `/api/version`, or don't report a limit, return
|
|
44
|
+
* `undefined` here, and the upload proceeds to let the server enforce its own limit as before.
|
|
45
|
+
*/
|
|
46
|
+
async function getMaxExtensionSize(registry) {
|
|
47
|
+
try {
|
|
48
|
+
return (await registry.getRegistryVersion()).maxExtensionSize || undefined;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
34
54
|
async function doPublish(options = {}) {
|
|
35
55
|
// if the packagePath is a link to a vsix, don't need to package it
|
|
36
56
|
if (options.packagePath?.endsWith('.vsix')) {
|
|
@@ -46,13 +66,23 @@ async function doPublish(options = {}) {
|
|
|
46
66
|
else if (options.preRelease) {
|
|
47
67
|
console.warn("Ignoring option '--pre-release' for prepackaged extension.");
|
|
48
68
|
}
|
|
69
|
+
await ensureWithinSizeLimit(options.extensionFile, options.maxExtensionSize, registry.url);
|
|
70
|
+
// Set only when this publish obtained the token itself through trusted publishing, which is the one
|
|
71
|
+
// case where a refusal can be answered by asking for a new token.
|
|
72
|
+
let exchanged;
|
|
49
73
|
if (!options.pat) {
|
|
50
|
-
const
|
|
51
|
-
|
|
74
|
+
const manifest = await (0, zip_1.readVSIXPackage)(options.extensionFile);
|
|
75
|
+
if ((0, trusted_publishing_1.useTrustedPublishing)(options)) {
|
|
76
|
+
exchanged = { namespace: manifest.publisher, extension: manifest.name };
|
|
77
|
+
options.pat = await (0, trusted_publishing_1.getTrustedPublishingToken)(registry, manifest.publisher, manifest.name, options);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
options.pat = await (0, pat_1.getPAT)(manifest.publisher, options);
|
|
81
|
+
}
|
|
52
82
|
}
|
|
53
83
|
let extension;
|
|
54
84
|
try {
|
|
55
|
-
extension = await registry
|
|
85
|
+
extension = await doRegistryPublish(registry, options, exchanged);
|
|
56
86
|
}
|
|
57
87
|
catch (err) {
|
|
58
88
|
if (options.skipDuplicate && err.message.endsWith('is already published.')) {
|
|
@@ -76,6 +106,44 @@ async function doPublish(options = {}) {
|
|
|
76
106
|
console.log(`\n!! ${extension.warning}`);
|
|
77
107
|
}
|
|
78
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Publishes the package, exchanging the ID token again if the registry refuses the trusted publishing
|
|
111
|
+
* token this was using. The issued token is short-lived and shared by every target platform of a
|
|
112
|
+
* release, so publishing a wide fan-out of large packages can outlive it and be refused partway
|
|
113
|
+
* through - having authorised the release and then failing it over an expiry would be the wrong call.
|
|
114
|
+
*
|
|
115
|
+
* Only ever retried once, and only for a token obtained here: nothing this can do makes a token the
|
|
116
|
+
* user supplied valid, and a second refusal means the token is not the problem.
|
|
117
|
+
*/
|
|
118
|
+
async function doRegistryPublish(registry, options, exchanged) {
|
|
119
|
+
try {
|
|
120
|
+
return await registry.publish(options.extensionFile, options.pat);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
if (!exchanged || err?.status !== 401) {
|
|
124
|
+
throw err;
|
|
125
|
+
}
|
|
126
|
+
console.log('The registry refused the publishing token, requesting a new one');
|
|
127
|
+
options.pat = await (0, trusted_publishing_1.refreshTrustedPublishingToken)(registry, exchanged.namespace, exchanged.extension, options, options.pat);
|
|
128
|
+
return registry.publish(options.extensionFile, options.pat);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Fails fast with an actionable message when the packaged extension is already known to exceed the
|
|
133
|
+
* registry's configured size limit, rather than uploading the whole file only to have the server
|
|
134
|
+
* reject it. `maxSize` is `undefined` when the limit couldn't be determined, in which case the check
|
|
135
|
+
* is skipped and the upload is left to the server to accept or reject.
|
|
136
|
+
*/
|
|
137
|
+
async function ensureWithinSizeLimit(extensionFile, maxSize, registryUrl) {
|
|
138
|
+
if (!maxSize) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const { size } = await fs.promises.stat(extensionFile);
|
|
142
|
+
if (size > maxSize) {
|
|
143
|
+
throw new Error(`The extension package (${(0, util_1.formatBytes)(size)}) exceeds the size limit of ${(0, util_1.formatBytes)(maxSize)} `
|
|
144
|
+
+ `accepted by the registry at ${registryUrl}.`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
79
147
|
async function packageExtension(options, registry) {
|
|
80
148
|
if (registry.requiresLicense) {
|
|
81
149
|
await (0, check_license_1.checkLicense)(options.packagePath);
|
|
@@ -88,6 +156,7 @@ async function packageExtension(options, registry) {
|
|
|
88
156
|
baseContentUrl: options.baseContentUrl,
|
|
89
157
|
baseImagesUrl: options.baseImagesUrl,
|
|
90
158
|
useYarn: options.yarn,
|
|
159
|
+
followSymlinks: options.followSymlinks,
|
|
91
160
|
dependencies: options.dependencies,
|
|
92
161
|
preRelease: options.preRelease,
|
|
93
162
|
allowMissingRepository: options.allowMissingRepository,
|
package/lib/publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":";;AAsBA,0BAiBC;AAvCD;;;;;;;;kFAQkF;AAClF,yBAAyB;AACzB,uCAA2D;AAC3D,+BAA+B;AAC/B,iCAAiH;AACjH,yCAAiD;AACjD,mDAA+C;AAC/C,+BAAwC;AAExC,6DAAsH;AAEtH;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,UAA0B,EAAE;IACtD,IAAA,oBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAA,qCAA8B,EAAC,OAAO,CAAC,CAAC;IAExC,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,IAAI,mBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1E,MAAM,sBAAsB,GAA6B,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,sBAAsB,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,mBAAmB,CAAC,QAAkB;IACjD,IAAI,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,IAAI,SAAS,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,UAAkC,EAAE;IACzD,mEAAmE;IACnE,IAAI,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5C,OAAO,OAAO,CAAC,WAAW,CAAC;QAC3B,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW;IAC9B,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,qBAAqB,CAAC,OAAO,CAAC,aAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5F,oGAAoG;IACpG,kEAAkE;IAClE,IAAI,SAA+D,CAAC;IACpE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAe,EAAC,OAAO,CAAC,aAAc,CAAC,CAAC;QAC/D,IAAI,IAAA,yCAAoB,EAAC,OAAO,CAAC,EAAE,CAAC;YAChC,SAAS,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,GAAG,MAAM,IAAA,8CAAyB,EAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxG,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,GAAG,MAAM,IAAA,YAAM,EAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAED,IAAI,SAAgC,CAAC;IACrC,IAAI,CAAC;QACD,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,WAAW,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;IAClD,IAAI,SAAS,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;QAC3C,WAAW,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,iBAAiB,CAC5B,QAAkB,EAClB,OAA+B,EAC/B,SAA+D;IAE/D,IAAI,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAc,EAAE,OAAO,CAAC,GAAI,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,IAAK,GAAmB,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;YACrD,MAAM,GAAG,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,GAAG,MAAM,IAAA,kDAA6B,EAC7C,QAAQ,EACR,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,SAAS,EACnB,OAAO,EACP,OAAO,CAAC,GAAI,CACf,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,aAAqB,EAAE,OAA2B,EAAE,WAAmB;IACxG,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO;IACX,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACX,0BAA0B,IAAA,kBAAW,EAAC,IAAI,CAAC,+BAA+B,IAAA,kBAAW,EAAC,OAAO,CAAC,GAAG;cAC/F,+BAA+B,WAAW,GAAG,CAClD,CAAC;IACN,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAA+B,EAAE,QAAkB;IAC/E,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,IAAA,4BAAY,EAAC,OAAO,CAAC,WAAY,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,aAAa,GAAG,MAAM,IAAA,qBAAc,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,MAAM,cAAc,GAAoB;QACpC,WAAW,EAAE,OAAO,CAAC,aAAa;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,WAAW;QACxB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,OAAO,EAAE,OAAO,CAAC,cAAc;KAClC,CAAC;IACF,MAAM,IAAA,iBAAU,EAAC,cAAc,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -32,5 +32,13 @@ export interface RegistryOptions {
|
|
|
32
32
|
* Maximal request body size for publishing.
|
|
33
33
|
*/
|
|
34
34
|
maxPublishSize?: number;
|
|
35
|
+
/**
|
|
36
|
+
* How long to wait, in milliseconds, for a request to make progress before giving up.
|
|
37
|
+
*
|
|
38
|
+
* This is an inactivity timeout rather than a deadline: any byte sent or received resets it, so
|
|
39
|
+
* a large package downloading slowly is not cut off, while a connection that has gone quiet does
|
|
40
|
+
* not hold the command open indefinitely. Zero disables it.
|
|
41
|
+
*/
|
|
42
|
+
timeout?: number;
|
|
35
43
|
}
|
|
36
44
|
//# sourceMappingURL=registry-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-options.d.ts","sourceRoot":"","sources":["../src/registry-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"registry-options.d.ts","sourceRoot":"","sources":["../src/registry-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/lib/registry.d.ts
CHANGED
|
@@ -9,27 +9,60 @@
|
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
import * as http from 'http';
|
|
11
11
|
import { RegistryOptions } from './registry-options';
|
|
12
|
+
import { DEFAULT_TIMEOUT } from './util';
|
|
12
13
|
export declare const DEFAULT_URL = "https://open-vsx.org";
|
|
13
14
|
export declare const DEFAULT_NAMESPACE_SIZE = 1024;
|
|
14
15
|
export declare const DEFAULT_PUBLISH_SIZE: number;
|
|
16
|
+
export { DEFAULT_TIMEOUT };
|
|
17
|
+
export declare const DEFAULT_TOKEN_REQUEST_SIZE: number;
|
|
18
|
+
export declare const DEFAULT_DELETE_SIZE: number;
|
|
15
19
|
export declare class Registry {
|
|
16
20
|
readonly url: string;
|
|
17
21
|
readonly maxNamespaceSize: number;
|
|
18
22
|
readonly maxPublishSize: number;
|
|
23
|
+
readonly timeout: number;
|
|
19
24
|
readonly username?: string;
|
|
20
25
|
readonly password?: string;
|
|
21
26
|
constructor(options?: RegistryOptions);
|
|
22
27
|
get requiresLicense(): boolean;
|
|
23
28
|
createNamespace(name: string, pat: string): Promise<Response>;
|
|
24
29
|
verifyPat(namespace: string, pat: string): Promise<Response>;
|
|
30
|
+
getRegistryVersion(): Promise<RegistryVersion>;
|
|
25
31
|
publish(file: string, pat: string): Promise<Extension>;
|
|
26
|
-
|
|
32
|
+
requestTrustedPublishingToken(namespace: string, extension: string, idToken: string): Promise<AccessToken>;
|
|
33
|
+
/**
|
|
34
|
+
* Deletes extension versions. Omitting `targetVersions` deletes the extension as a whole,
|
|
35
|
+
* i.e. all versions the personal access token's user is allowed to delete.
|
|
36
|
+
*/
|
|
37
|
+
deleteExtension(namespace: string, extension: string, targetVersions: TargetPlatformVersion[] | undefined, pat: string): Promise<Response>;
|
|
38
|
+
getMetadata(namespace: string, extension: string, target?: string, version?: string): Promise<Extension>;
|
|
39
|
+
/**
|
|
40
|
+
* Returns a page of an extension's published versions, newest first, one entry per version and
|
|
41
|
+
* target platform. `allVersions` on the metadata response carries version numbers and links
|
|
42
|
+
* only, so this is what makes the target platforms of each version available.
|
|
43
|
+
*/
|
|
44
|
+
getVersionReferences(namespace: string, extension: string, target: string | undefined, size: number, offset: number): Promise<VersionReferences>;
|
|
45
|
+
/**
|
|
46
|
+
* Full-text search across the registry. Returns the purpose-built summary shape rather than
|
|
47
|
+
* whole extension records, so a page of results stays small.
|
|
48
|
+
*/
|
|
49
|
+
search(options: SearchQuery): Promise<SearchResult>;
|
|
50
|
+
/** Returns a namespace and the extensions published in it. */
|
|
51
|
+
getNamespace(namespace: string): Promise<Namespace>;
|
|
27
52
|
download(file: string, url: URL): Promise<void>;
|
|
28
53
|
getJson<T extends Response>(url: URL): Promise<T>;
|
|
29
54
|
post<T extends Response>(content: string | Buffer | Uint8Array, url: URL, headers?: http.OutgoingHttpHeaders, maxBodyLength?: number): Promise<T>;
|
|
30
55
|
postFile<T extends Response>(file: string, url: URL, headers?: http.OutgoingHttpHeaders, maxBodyLength?: number): Promise<T>;
|
|
31
56
|
private getUrl;
|
|
32
57
|
private getProtocol;
|
|
58
|
+
/**
|
|
59
|
+
* Node's `timeout` option only raises an event - the request stays open, which is why a server
|
|
60
|
+
* that accepts a connection and then says nothing used to hold a command open indefinitely.
|
|
61
|
+
* Destroying the request with an error routes through the error handling each caller already
|
|
62
|
+
* has, so a stalled request rejects the way any other failure does. With a timeout of zero the
|
|
63
|
+
* event never fires and this does nothing.
|
|
64
|
+
*/
|
|
65
|
+
private failOnTimeout;
|
|
33
66
|
private getRequestOptions;
|
|
34
67
|
private getJsonResponse;
|
|
35
68
|
}
|
|
@@ -59,8 +92,18 @@ export interface Extension extends Response {
|
|
|
59
92
|
versionAlias: string[];
|
|
60
93
|
timestamp: string;
|
|
61
94
|
preview?: boolean;
|
|
95
|
+
preRelease?: boolean;
|
|
62
96
|
displayName?: string;
|
|
97
|
+
namespaceDisplayName?: string;
|
|
63
98
|
description?: string;
|
|
99
|
+
deprecated?: boolean;
|
|
100
|
+
replacement?: ExtensionReplacement;
|
|
101
|
+
downloadable?: boolean;
|
|
102
|
+
publishedWithTrustedPublishing?: boolean;
|
|
103
|
+
namespaceOwnershipConflict?: boolean;
|
|
104
|
+
extensionKind?: string[];
|
|
105
|
+
localizedLanguages?: string[];
|
|
106
|
+
sponsorLink?: string;
|
|
64
107
|
engines?: {
|
|
65
108
|
[engine: string]: string;
|
|
66
109
|
};
|
|
@@ -78,6 +121,23 @@ export interface Extension extends Response {
|
|
|
78
121
|
dependencies?: ExtensionReference[];
|
|
79
122
|
bundledExtensions?: ExtensionReference[];
|
|
80
123
|
}
|
|
124
|
+
export interface RegistryVersion extends Response {
|
|
125
|
+
version: string;
|
|
126
|
+
maxExtensionSize: number;
|
|
127
|
+
trustedPublishingAudience?: string;
|
|
128
|
+
}
|
|
129
|
+
export interface AccessToken extends Response {
|
|
130
|
+
id: number;
|
|
131
|
+
value?: string;
|
|
132
|
+
description: string;
|
|
133
|
+
createdTimestamp: string;
|
|
134
|
+
accessedTimestamp?: string;
|
|
135
|
+
expiresTimestamp?: string;
|
|
136
|
+
}
|
|
137
|
+
export interface TargetPlatformVersion {
|
|
138
|
+
version: string;
|
|
139
|
+
targetPlatform?: string;
|
|
140
|
+
}
|
|
81
141
|
export interface UserData {
|
|
82
142
|
loginName: string;
|
|
83
143
|
fullName?: string;
|
|
@@ -89,6 +149,64 @@ export interface Badge {
|
|
|
89
149
|
href: string;
|
|
90
150
|
description: string;
|
|
91
151
|
}
|
|
152
|
+
export interface ExtensionReplacement {
|
|
153
|
+
url: string;
|
|
154
|
+
displayName?: string;
|
|
155
|
+
}
|
|
156
|
+
export interface VersionReference {
|
|
157
|
+
url: string;
|
|
158
|
+
files: {
|
|
159
|
+
[type: string]: string;
|
|
160
|
+
};
|
|
161
|
+
version: string;
|
|
162
|
+
targetPlatform?: string;
|
|
163
|
+
engines?: {
|
|
164
|
+
[engine: string]: string;
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
export interface VersionReferences extends Response {
|
|
168
|
+
offset: number;
|
|
169
|
+
totalSize: number;
|
|
170
|
+
versions?: VersionReference[];
|
|
171
|
+
}
|
|
172
|
+
export interface SearchQuery {
|
|
173
|
+
query?: string;
|
|
174
|
+
category?: string;
|
|
175
|
+
targetPlatform?: string;
|
|
176
|
+
sortBy?: string;
|
|
177
|
+
sortOrder?: string;
|
|
178
|
+
size: number;
|
|
179
|
+
offset: number;
|
|
180
|
+
}
|
|
181
|
+
export interface SearchEntry {
|
|
182
|
+
url: string;
|
|
183
|
+
files: {
|
|
184
|
+
[type: string]: string;
|
|
185
|
+
};
|
|
186
|
+
name: string;
|
|
187
|
+
namespace: string;
|
|
188
|
+
version: string;
|
|
189
|
+
timestamp: string;
|
|
190
|
+
verified?: boolean;
|
|
191
|
+
averageRating?: number;
|
|
192
|
+
reviewCount?: number;
|
|
193
|
+
downloadCount: number;
|
|
194
|
+
displayName?: string;
|
|
195
|
+
description?: string;
|
|
196
|
+
deprecated?: boolean;
|
|
197
|
+
}
|
|
198
|
+
export interface SearchResult extends Response {
|
|
199
|
+
offset: number;
|
|
200
|
+
totalSize: number;
|
|
201
|
+
extensions?: SearchEntry[];
|
|
202
|
+
}
|
|
203
|
+
export interface Namespace extends Response {
|
|
204
|
+
name: string;
|
|
205
|
+
verified?: boolean;
|
|
206
|
+
extensions?: {
|
|
207
|
+
[name: string]: string;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
92
210
|
export interface ExtensionReference {
|
|
93
211
|
url: string;
|
|
94
212
|
namespace: string;
|
package/lib/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|