ovsx 1.2.0 → 1.3.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 +2 -0
- package/lib/check-license.d.ts.map +1 -1
- package/lib/check-license.js +3 -2
- package/lib/check-license.js.map +1 -1
- package/lib/get.js +5 -5
- package/lib/get.js.map +1 -1
- package/lib/http.d.ts +32 -0
- package/lib/http.d.ts.map +1 -0
- package/lib/http.js +170 -0
- package/lib/http.js.map +1 -0
- package/lib/main.js +44 -41
- package/lib/main.js.map +1 -1
- package/lib/oidc.d.ts.map +1 -1
- package/lib/oidc.js +5 -47
- package/lib/oidc.js.map +1 -1
- package/lib/publish.d.ts.map +1 -1
- package/lib/publish.js +100 -32
- package/lib/publish.js.map +1 -1
- package/lib/registry.d.ts +49 -11
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +115 -124
- package/lib/registry.js.map +1 -1
- package/lib/util.d.ts +16 -12
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +44 -67
- package/lib/util.js.map +1 -1
- package/lib/verify.js +2 -2
- package/lib/verify.js.map +1 -1
- package/lib/zip.d.ts.map +1 -1
- package/lib/zip.js +2 -10
- package/lib/zip.js.map +1 -1
- package/package.json +14 -11
- package/src/check-license.ts +4 -3
- package/src/get.ts +6 -6
- package/src/http.ts +176 -0
- package/src/main.ts +48 -43
- package/src/oidc.ts +5 -47
- package/src/publish.ts +136 -34
- package/src/registry.ts +132 -124
- package/src/util.ts +40 -69
- package/src/verify.ts +3 -3
- package/src/zip.ts +2 -12
- package/lib/version.d.ts +0 -2
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js +0 -5
- package/lib/version.js.map +0 -1
- package/src/version.ts +0 -1
package/lib/oidc.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.hasIdTokenSource = hasIdTokenSource;
|
|
16
16
|
exports.getIdToken = getIdToken;
|
|
17
|
-
const
|
|
17
|
+
const http_1 = require("./http");
|
|
18
18
|
const util_1 = require("./util");
|
|
19
19
|
/**
|
|
20
20
|
* Whether an OIDC ID token can be obtained without user interaction.
|
|
@@ -45,57 +45,15 @@ async function getGitHubActionsIdToken(audience) {
|
|
|
45
45
|
// the request URL already carries an api-version query parameter, so keep its query intact
|
|
46
46
|
const url = new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);
|
|
47
47
|
url.searchParams.set('audience', audience);
|
|
48
|
-
|
|
48
|
+
// Sent with only these headers, so none of the registry's credentials reach the CI system's
|
|
49
|
+
// token service. OVSX_TIMEOUT still applies, as there are no registry options to read it from.
|
|
50
|
+
const response = await (0, http_1.getJson)(url, {
|
|
49
51
|
'Authorization': `Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`,
|
|
50
52
|
'Accept': 'application/json'
|
|
51
|
-
});
|
|
53
|
+
}, (0, util_1.configuredTimeout)());
|
|
52
54
|
if (!response.value) {
|
|
53
55
|
throw new Error('GitHub Actions did not return an OIDC ID token.');
|
|
54
56
|
}
|
|
55
57
|
return response.value;
|
|
56
58
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Minimal JSON GET that is not bound to the registry: the request must not carry any registry
|
|
59
|
-
* credentials, as it is sent to the CI system's token service.
|
|
60
|
-
*/
|
|
61
|
-
function getJson(url, headers) {
|
|
62
|
-
return new Promise((resolve, reject) => {
|
|
63
|
-
const protocol = url.protocol === 'https:' ? followRedirects.https : followRedirects.http;
|
|
64
|
-
// OVSX_TIMEOUT covers this request too. Read here rather than taken from the registry's
|
|
65
|
-
// options, since this one carries none of the registry's configuration - only the clock is
|
|
66
|
-
// shared, and having two of those to explain would be worse.
|
|
67
|
-
const timeout = (0, util_1.configuredTimeout)();
|
|
68
|
-
const request = protocol.request(url, { method: 'GET', headers, timeout }, response => {
|
|
69
|
-
response.setEncoding('utf-8');
|
|
70
|
-
let json = '';
|
|
71
|
-
// See Registry.getJsonResponse: a connection lost mid-body never fires 'end', so the
|
|
72
|
-
// response's own error has to be what settles the promise.
|
|
73
|
-
response.on('error', reject);
|
|
74
|
-
response.on('data', chunk => json += chunk);
|
|
75
|
-
response.on('end', () => {
|
|
76
|
-
if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode > 299)) {
|
|
77
|
-
reject((0, util_1.statusError)(response));
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
try {
|
|
81
|
-
resolve(JSON.parse(json));
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
reject(err);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
request.on('error', reject);
|
|
90
|
-
// The timeout option only raises an event, so the request has to be destroyed for it to mean
|
|
91
|
-
// anything; the error then arrives at the handler above.
|
|
92
|
-
request.on('timeout', () => {
|
|
93
|
-
// Rejected before the teardown, so the timeout is what the caller sees rather than
|
|
94
|
-
// whichever error destroying the request happens to raise first.
|
|
95
|
-
reject(new Error(`No response from ${(0, util_1.redactUrl)(url)} for ${timeout} ms.`));
|
|
96
|
-
request.destroy();
|
|
97
|
-
});
|
|
98
|
-
request.end();
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
59
|
//# sourceMappingURL=oidc.js.map
|
package/lib/oidc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;+EAW+E;;
|
|
1
|
+
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;+EAW+E;;AAS/E,4CAEC;AAKD,gCAYC;AA1BD,iCAAiC;AAEjC,iCAA2C;AAE3C;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAiC;IAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,+BAA+B,EAAE,CAAC;AACzE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,OAAiC;IAChF,wFAAwF;IACxF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,+BAA+B,EAAE,EAAE,CAAC;QACpC,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sDAAsD;UAChE,sEAAsE;UACtE,oEAAoE;UACpE,4CAA4C,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,+BAA+B;IACpC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,QAAgB;IACnD,2FAA2F;IAC3F,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA6B,CAAC,CAAC;IAC/D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,4FAA4F;IAC5F,+FAA+F;IAC/F,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAO,EAAwB,GAAG,EAAE;QACvD,eAAe,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE;QACvE,QAAQ,EAAE,kBAAkB;KAC/B,EAAE,IAAA,wBAAiB,GAAE,CAAC,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC;AAC1B,CAAC"}
|
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":"AAwBA,OAAO,EAAE,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AAMzE;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAoBjG"}
|
package/lib/publish.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.publish = publish;
|
|
|
11
11
|
* SPDX-License-Identifier: EPL-2.0
|
|
12
12
|
********************************************************************************/
|
|
13
13
|
const fs = require("fs");
|
|
14
|
+
const semver = require("semver");
|
|
14
15
|
const vsce_1 = require("@vscode/vsce");
|
|
15
16
|
const pat_1 = require("./pat");
|
|
16
17
|
const util_1 = require("./util");
|
|
@@ -18,14 +19,19 @@ const registry_1 = require("./registry");
|
|
|
18
19
|
const check_license_1 = require("./check-license");
|
|
19
20
|
const zip_1 = require("./zip");
|
|
20
21
|
const trusted_publishing_1 = require("./trusted-publishing");
|
|
22
|
+
/** Registries older than this cannot report the limit that applies to a namespace. */
|
|
23
|
+
const MIN_SIZE_LIMIT_REGISTRY_VERSION = '1.3.0';
|
|
21
24
|
/**
|
|
22
25
|
* Publishes an extension.
|
|
23
26
|
*/
|
|
24
27
|
async function publish(options = {}) {
|
|
25
28
|
(0, util_1.addEnvOptions)(options);
|
|
26
29
|
(0, util_1.addTrustedPublishingEnvOptions)(options);
|
|
27
|
-
//
|
|
28
|
-
|
|
30
|
+
// Shared by every target/package below, rather than one per artifact: besides saving the extra
|
|
31
|
+
// `/api/version` round trips, it's also where the registry's reported version is cached (see
|
|
32
|
+
// Registry.tokenQuery), so a wide fan-out doesn't repeat that lookup once per target either.
|
|
33
|
+
const registry = new registry_1.Registry(options);
|
|
34
|
+
const maxExtensionSize = await getMaxExtensionSize(registry);
|
|
29
35
|
const internalPublishOptions = [];
|
|
30
36
|
const packagePaths = options.packagePath || [undefined];
|
|
31
37
|
const targets = options.targets || [undefined];
|
|
@@ -34,14 +40,14 @@ async function publish(options = {}) {
|
|
|
34
40
|
internalPublishOptions.push({ ...options, packagePath: packagePath, target: target, maxExtensionSize });
|
|
35
41
|
}
|
|
36
42
|
}
|
|
37
|
-
return Promise.allSettled(internalPublishOptions.map(publishOptions => doPublish(publishOptions)));
|
|
43
|
+
return Promise.allSettled(internalPublishOptions.map(publishOptions => doPublish(registry, publishOptions)));
|
|
38
44
|
}
|
|
39
45
|
/**
|
|
40
|
-
* Looks up the registry's
|
|
41
|
-
*
|
|
46
|
+
* Looks up the registry's default extension size limit, so an oversized package can be flagged
|
|
47
|
+
* before the upload instead of after transferring the whole payload.
|
|
42
48
|
*
|
|
43
49
|
* Best-effort: registries that don't expose `/api/version`, or don't report a limit, return
|
|
44
|
-
* `undefined` here, and
|
|
50
|
+
* `undefined` here, and nothing is said about the size.
|
|
45
51
|
*/
|
|
46
52
|
async function getMaxExtensionSize(registry) {
|
|
47
53
|
try {
|
|
@@ -51,27 +57,43 @@ async function getMaxExtensionSize(registry) {
|
|
|
51
57
|
return undefined;
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
|
-
async function doPublish(options = {}) {
|
|
60
|
+
async function doPublish(registry, options = {}) {
|
|
55
61
|
// if the packagePath is a link to a vsix, don't need to package it
|
|
56
62
|
if (options.packagePath?.endsWith('.vsix')) {
|
|
57
63
|
options.extensionFile = options.packagePath;
|
|
58
64
|
delete options.packagePath;
|
|
59
65
|
delete options.target;
|
|
60
66
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
// Only a package created here is a temp file; one the user supplied must never be deleted.
|
|
68
|
+
const packaged = !options.extensionFile;
|
|
69
|
+
try {
|
|
70
|
+
if (packaged) {
|
|
71
|
+
await packageExtension(options, registry);
|
|
72
|
+
console.log(); // new line
|
|
73
|
+
}
|
|
74
|
+
else if (options.preRelease) {
|
|
75
|
+
console.warn("Ignoring option '--pre-release' for prepackaged extension.");
|
|
76
|
+
}
|
|
77
|
+
await publishExtensionFile(registry, options);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
if (packaged && options.extensionFile) {
|
|
81
|
+
// Caught rather than awaited plainly: a failure here (e.g. the temp dir is locked or
|
|
82
|
+
// read-only) must not replace whatever error publishExtensionFile already threw above.
|
|
83
|
+
await fs.promises.rm(options.extensionFile, { force: true }).catch(err => {
|
|
84
|
+
console.warn(`Could not delete temporary file ${options.extensionFile}: ${err.message}`);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
68
87
|
}
|
|
69
|
-
|
|
88
|
+
}
|
|
89
|
+
async function publishExtensionFile(registry, options) {
|
|
90
|
+
// Read up front rather than only when a token has to be obtained: the size limit is looked up per
|
|
91
|
+
// namespace, and the namespace lives in the manifest.
|
|
92
|
+
const manifest = await (0, zip_1.readVSIXPackage)(options.extensionFile);
|
|
70
93
|
// Set only when this publish obtained the token itself through trusted publishing, which is the one
|
|
71
94
|
// case where a refusal can be answered by asking for a new token.
|
|
72
95
|
let exchanged;
|
|
73
96
|
if (!options.pat) {
|
|
74
|
-
const manifest = await (0, zip_1.readVSIXPackage)(options.extensionFile);
|
|
75
97
|
if ((0, trusted_publishing_1.useTrustedPublishing)(options)) {
|
|
76
98
|
exchanged = { namespace: manifest.publisher, extension: manifest.name };
|
|
77
99
|
options.pat = await (0, trusted_publishing_1.getTrustedPublishingToken)(registry, manifest.publisher, manifest.name, options);
|
|
@@ -80,9 +102,12 @@ async function doPublish(options = {}) {
|
|
|
80
102
|
options.pat = await (0, pat_1.getPAT)(manifest.publisher, options);
|
|
81
103
|
}
|
|
82
104
|
}
|
|
105
|
+
// After the token is resolved, because the lookup is authenticated - and by here a token always
|
|
106
|
+
// exists, whether supplied, fetched, or exchanged through trusted publishing.
|
|
107
|
+
const sizeLimit = await ensureWithinSizeLimit(registry, options, manifest);
|
|
83
108
|
let extension;
|
|
84
109
|
try {
|
|
85
|
-
extension = await doRegistryPublish(registry, options, exchanged);
|
|
110
|
+
extension = await doRegistryPublish(registry, options, exchanged, sizeLimit);
|
|
86
111
|
}
|
|
87
112
|
catch (err) {
|
|
88
113
|
if (options.skipDuplicate && err.message.endsWith('is already published.')) {
|
|
@@ -115,9 +140,9 @@ async function doPublish(options = {}) {
|
|
|
115
140
|
* Only ever retried once, and only for a token obtained here: nothing this can do makes a token the
|
|
116
141
|
* user supplied valid, and a second refusal means the token is not the problem.
|
|
117
142
|
*/
|
|
118
|
-
async function doRegistryPublish(registry, options, exchanged) {
|
|
143
|
+
async function doRegistryPublish(registry, options, exchanged, sizeLimit) {
|
|
119
144
|
try {
|
|
120
|
-
return await registry.publish(options.extensionFile, options.pat);
|
|
145
|
+
return await registry.publish(options.extensionFile, options.pat, sizeLimit);
|
|
121
146
|
}
|
|
122
147
|
catch (err) {
|
|
123
148
|
if (!exchanged || err?.status !== 401) {
|
|
@@ -125,30 +150,73 @@ async function doRegistryPublish(registry, options, exchanged) {
|
|
|
125
150
|
}
|
|
126
151
|
console.log('The registry refused the publishing token, requesting a new one');
|
|
127
152
|
options.pat = await (0, trusted_publishing_1.refreshTrustedPublishingToken)(registry, exchanged.namespace, exchanged.extension, options, options.pat);
|
|
128
|
-
return registry.publish(options.extensionFile, options.pat);
|
|
153
|
+
return registry.publish(options.extensionFile, options.pat, sizeLimit);
|
|
129
154
|
}
|
|
130
155
|
}
|
|
131
156
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
157
|
+
* Refuses a package the registry would reject anyway, before uploading it, and reports how many
|
|
158
|
+
* bytes it has concluded may be sent - the caller raises the transport cap to that, so nothing we
|
|
159
|
+
* decided to upload is then refused locally.
|
|
160
|
+
*
|
|
161
|
+
* The limit is the one that applies to this package's namespace and extension, which a size override
|
|
162
|
+
* can raise above the registry default. Registries older than
|
|
163
|
+
* {@link MIN_SIZE_LIMIT_REGISTRY_VERSION} cannot report it, so there the check stays advisory: it
|
|
164
|
+
* warns against the default and publishes, rather than refusing an upload those registries would
|
|
165
|
+
* have accepted.
|
|
136
166
|
*/
|
|
137
|
-
async function ensureWithinSizeLimit(
|
|
138
|
-
|
|
139
|
-
|
|
167
|
+
async function ensureWithinSizeLimit(registry, options, manifest) {
|
|
168
|
+
const { size } = await fs.promises.stat(options.extensionFile);
|
|
169
|
+
const limit = await resolveSizeLimit(registry, options, manifest);
|
|
170
|
+
if (limit.kind === 'failed') {
|
|
171
|
+
// Always said, however small the package: a size override can lower a limit as well as raise
|
|
172
|
+
// it, so there is no size from which it follows that this upload is fine. Staying quiet here
|
|
173
|
+
// left a registry whose /api/-/* routes never arrive indistinguishable from a working one.
|
|
174
|
+
console.warn(`Could not check the size limit for ${manifest.publisher}.${manifest.name} at ${registry.url} `
|
|
175
|
+
+ `(${limit.reason}). Publishing anyway: the registry enforces its own limit, so an oversized `
|
|
176
|
+
+ `package is refused after the upload rather than before it.`);
|
|
177
|
+
}
|
|
178
|
+
else if (limit.kind === 'unsupported') {
|
|
179
|
+
const fallback = options.maxExtensionSize;
|
|
180
|
+
if (fallback && size > fallback) {
|
|
181
|
+
console.warn(`The extension package (${(0, util_1.formatBytes)(size)}) exceeds the default size limit of ${(0, util_1.formatBytes)(fallback)} `
|
|
182
|
+
+ `reported by the registry at ${registry.url}, which is too old to report the limit for a `
|
|
183
|
+
+ `single namespace. Publishing anyway: the namespace may have a different limit configured, `
|
|
184
|
+
+ `and the registry decides.`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (limit.kind !== 'resolved') {
|
|
188
|
+
// The allowance is this package, not the built-in publish size: having decided to send it and
|
|
189
|
+
// let the registry answer, the transport cap must not be what refuses it instead. An older
|
|
190
|
+
// registry whose default is above 512 MiB would otherwise reject a package it would accept.
|
|
191
|
+
return size;
|
|
192
|
+
}
|
|
193
|
+
if (size > limit.limit) {
|
|
194
|
+
throw new Error(`The extension package (${(0, util_1.formatBytes)(size)}) exceeds the size limit of ${(0, util_1.formatBytes)(limit.limit)} `
|
|
195
|
+
+ `for ${manifest.publisher}.${manifest.name} at ${registry.url}.`);
|
|
196
|
+
}
|
|
197
|
+
return limit.limit;
|
|
198
|
+
}
|
|
199
|
+
async function resolveSizeLimit(registry, options, manifest) {
|
|
200
|
+
const reported = await registry.getRegistryVersion().catch(() => undefined);
|
|
201
|
+
const version = reported?.version ? semver.coerce(reported.version) : undefined;
|
|
202
|
+
if (!version || semver.lt(version, MIN_SIZE_LIMIT_REGISTRY_VERSION)) {
|
|
203
|
+
return { kind: 'unsupported' };
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
const { maxSize } = await registry.getSizeLimit(manifest.publisher, manifest.name, options.pat);
|
|
207
|
+
return { kind: 'resolved', limit: maxSize };
|
|
140
208
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
209
|
+
catch (err) {
|
|
210
|
+
// The registry claims to be new enough but could not answer. It enforces the limit itself
|
|
211
|
+
// regardless, so publish rather than refusing on a failed lookup.
|
|
212
|
+
return { kind: 'failed', reason: err instanceof Error ? err.message : String(err) };
|
|
145
213
|
}
|
|
146
214
|
}
|
|
147
215
|
async function packageExtension(options, registry) {
|
|
148
216
|
if (registry.requiresLicense) {
|
|
149
217
|
await (0, check_license_1.checkLicense)(options.packagePath);
|
|
150
218
|
}
|
|
151
|
-
options.extensionFile =
|
|
219
|
+
options.extensionFile = (0, util_1.getTempFilePath)('.vsix');
|
|
152
220
|
const packageOptions = {
|
|
153
221
|
packagePath: options.extensionFile,
|
|
154
222
|
target: options.target,
|
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":"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"}
|
package/lib/registry.d.ts
CHANGED
|
@@ -16,6 +16,12 @@ export declare const DEFAULT_PUBLISH_SIZE: number;
|
|
|
16
16
|
export { DEFAULT_TIMEOUT };
|
|
17
17
|
export declare const DEFAULT_TOKEN_REQUEST_SIZE: number;
|
|
18
18
|
export declare const DEFAULT_DELETE_SIZE: number;
|
|
19
|
+
/**
|
|
20
|
+
* Oldest registry version that resolves the personal access token from a header (see #1344).
|
|
21
|
+
* Registries older than this only look at the `token` query parameter, so `tokenQuery` keeps
|
|
22
|
+
* sending it to anything below this version.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MIN_TOKEN_HEADER_REGISTRY_VERSION = "1.3.0";
|
|
19
25
|
export declare class Registry {
|
|
20
26
|
readonly url: string;
|
|
21
27
|
readonly maxNamespaceSize: number;
|
|
@@ -23,12 +29,34 @@ export declare class Registry {
|
|
|
23
29
|
readonly timeout: number;
|
|
24
30
|
readonly username?: string;
|
|
25
31
|
readonly password?: string;
|
|
32
|
+
/** Whether the caller pinned a publish size, which then wins over any limit the registry reports. */
|
|
33
|
+
private readonly publishSizePinned;
|
|
34
|
+
private registryVersion?;
|
|
35
|
+
private tokenHeaderSupport?;
|
|
26
36
|
constructor(options?: RegistryOptions);
|
|
27
37
|
get requiresLicense(): boolean;
|
|
28
38
|
createNamespace(name: string, pat: string): Promise<Response>;
|
|
29
39
|
verifyPat(namespace: string, pat: string): Promise<Response>;
|
|
40
|
+
/**
|
|
41
|
+
* The size limit that applies to this namespace/extension, which a size override can raise above
|
|
42
|
+
* the registry default. Neither needs to exist yet - a first publish asks about both before
|
|
43
|
+
* creating either.
|
|
44
|
+
*/
|
|
45
|
+
getSizeLimit(namespace: string, extension: string, pat: string): Promise<SizeLimit>;
|
|
46
|
+
/**
|
|
47
|
+
* Cached per `Registry` instance - callers like `tokenQuery` and `unpublish`'s own version check
|
|
48
|
+
* would otherwise each fetch it separately, doubling the round trip for a single command.
|
|
49
|
+
*/
|
|
30
50
|
getRegistryVersion(): Promise<RegistryVersion>;
|
|
31
|
-
|
|
51
|
+
/**
|
|
52
|
+
* `sizeLimit` is the limit the registry reports for this package, when it could report one. The
|
|
53
|
+
* transport body cap is raised to it, because a namespace granted more than the default would
|
|
54
|
+
* otherwise have its upload refused here - by the body size check, before anything reached the
|
|
55
|
+
* registry that allowed it.
|
|
56
|
+
*/
|
|
57
|
+
publish(file: string, pat: string, sizeLimit?: number): Promise<Extension>;
|
|
58
|
+
/** The body cap for a publish. A pinned `maxPublishSize` wins; otherwise it never sits below the registry's own limit. */
|
|
59
|
+
publishBodyLimit(sizeLimit?: number): number;
|
|
32
60
|
requestTrustedPublishingToken(namespace: string, extension: string, idToken: string): Promise<AccessToken>;
|
|
33
61
|
/**
|
|
34
62
|
* Deletes extension versions. Omitting `targetVersions` deletes the extension as a whole,
|
|
@@ -50,21 +78,28 @@ export declare class Registry {
|
|
|
50
78
|
/** Returns a namespace and the extensions published in it. */
|
|
51
79
|
getNamespace(namespace: string): Promise<Namespace>;
|
|
52
80
|
download(file: string, url: URL): Promise<void>;
|
|
53
|
-
getJson<T extends Response>(url: URL): Promise<T>;
|
|
81
|
+
getJson<T extends Response>(url: URL, headers?: http.OutgoingHttpHeaders): Promise<T>;
|
|
54
82
|
post<T extends Response>(content: string | Buffer | Uint8Array, url: URL, headers?: http.OutgoingHttpHeaders, maxBodyLength?: number): Promise<T>;
|
|
55
83
|
postFile<T extends Response>(file: string, url: URL, headers?: http.OutgoingHttpHeaders, maxBodyLength?: number): Promise<T>;
|
|
56
|
-
private getUrl;
|
|
57
|
-
private getProtocol;
|
|
58
84
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
|
|
85
|
+
* The header a personal access token travels in. `Authorization: Bearer` is standard and what
|
|
86
|
+
* log/proxy redaction and secret scanners already expect, so it's preferred - except when
|
|
87
|
+
* `username`/`password` are set, where `Authorization` is already claimed by Basic auth to a
|
|
88
|
+
* fronting reverse proxy (see `getRequestOptions`) and the token falls back to `TOKEN_HEADER`.
|
|
89
|
+
*/
|
|
90
|
+
private tokenHeaders;
|
|
91
|
+
/**
|
|
92
|
+
* The `token` query parameter to add alongside the header, for registries that predate header
|
|
93
|
+
* support (see #1344) - empty once the registry is known to be new enough to not need it.
|
|
94
|
+
*
|
|
95
|
+
* Best-effort and cached per `Registry` instance: a registry that doesn't expose `/api/version`,
|
|
96
|
+
* or reports a version that doesn't parse as semver, is assumed too old to know about the header,
|
|
97
|
+
* same as before this method existed - the query parameter is kept rather than risking a request
|
|
98
|
+
* that only carries a header such a registry never looks at.
|
|
64
99
|
*/
|
|
65
|
-
private
|
|
100
|
+
private tokenQuery;
|
|
101
|
+
private getUrl;
|
|
66
102
|
private getRequestOptions;
|
|
67
|
-
private getJsonResponse;
|
|
68
103
|
}
|
|
69
104
|
export interface Response {
|
|
70
105
|
success?: string;
|
|
@@ -126,6 +161,9 @@ export interface RegistryVersion extends Response {
|
|
|
126
161
|
maxExtensionSize: number;
|
|
127
162
|
trustedPublishingAudience?: string;
|
|
128
163
|
}
|
|
164
|
+
export interface SizeLimit extends Response {
|
|
165
|
+
maxSize: number;
|
|
166
|
+
}
|
|
129
167
|
export interface AccessToken extends Response {
|
|
130
168
|
id: number;
|
|
131
169
|
value?: 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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"}
|