ovsx 1.2.0 → 1.4.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 +7 -1
- package/lib/check-license.d.ts.map +1 -1
- package/lib/check-license.js +5 -4
- package/lib/check-license.js.map +1 -1
- package/lib/create-namespace.d.ts.map +1 -1
- package/lib/create-namespace.js +3 -1
- package/lib/create-namespace.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/index.d.ts +0 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -3
- package/lib/index.js.map +1 -1
- package/lib/main.js +50 -61
- 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/pat.d.ts +6 -1
- package/lib/pat.d.ts.map +1 -1
- package/lib/pat.js +16 -7
- package/lib/pat.js.map +1 -1
- package/lib/publish.d.ts +6 -0
- package/lib/publish.d.ts.map +1 -1
- package/lib/publish.js +147 -40
- package/lib/publish.js.map +1 -1
- package/lib/registry.d.ts +50 -12
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +131 -126
- package/lib/registry.js.map +1 -1
- package/lib/trusted-publishing-options.d.ts +5 -0
- package/lib/trusted-publishing-options.d.ts.map +1 -1
- package/lib/trusted-publishing.js +28 -4
- package/lib/trusted-publishing.js.map +1 -1
- package/lib/unpublish.d.ts.map +1 -1
- package/lib/unpublish.js +5 -8
- package/lib/unpublish.js.map +1 -1
- package/lib/util.d.ts +19 -15
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +51 -71
- package/lib/util.js.map +1 -1
- package/lib/verify-pat.d.ts.map +1 -1
- package/lib/verify-pat.js +3 -1
- package/lib/verify-pat.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 +19 -14
- package/src/check-license.ts +5 -4
- package/src/create-namespace.ts +3 -1
- package/src/get.ts +6 -6
- package/src/http.ts +176 -0
- package/src/index.ts +0 -3
- package/src/main.ts +54 -63
- package/src/oidc.ts +5 -47
- package/src/pat.ts +22 -9
- package/src/publish.ts +187 -44
- package/src/registry.ts +153 -126
- package/src/trusted-publishing-options.ts +5 -0
- package/src/trusted-publishing.ts +33 -5
- package/src/unpublish.ts +4 -7
- package/src/util.ts +47 -73
- package/src/verify-pat.ts +3 -1
- 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/publish.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PACKAGING_OPTIONS = void 0;
|
|
3
4
|
exports.publish = publish;
|
|
4
5
|
/********************************************************************************
|
|
5
6
|
* Copyright (c) 2019 TypeFox and others
|
|
@@ -11,6 +12,7 @@ exports.publish = publish;
|
|
|
11
12
|
* SPDX-License-Identifier: EPL-2.0
|
|
12
13
|
********************************************************************************/
|
|
13
14
|
const fs = require("fs");
|
|
15
|
+
const semver = require("semver");
|
|
14
16
|
const vsce_1 = require("@vscode/vsce");
|
|
15
17
|
const pat_1 = require("./pat");
|
|
16
18
|
const util_1 = require("./util");
|
|
@@ -18,30 +20,77 @@ const registry_1 = require("./registry");
|
|
|
18
20
|
const check_license_1 = require("./check-license");
|
|
19
21
|
const zip_1 = require("./zip");
|
|
20
22
|
const trusted_publishing_1 = require("./trusted-publishing");
|
|
23
|
+
/** Registries older than this cannot report the limit that applies to a namespace. */
|
|
24
|
+
const MIN_SIZE_LIMIT_REGISTRY_VERSION = '1.3.0';
|
|
21
25
|
/**
|
|
22
26
|
* Publishes an extension.
|
|
23
27
|
*/
|
|
24
28
|
async function publish(options = {}) {
|
|
25
29
|
(0, util_1.addEnvOptions)(options);
|
|
26
30
|
(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));
|
|
29
31
|
const internalPublishOptions = [];
|
|
32
|
+
const prepackagedFiles = [];
|
|
30
33
|
const packagePaths = options.packagePath || [undefined];
|
|
31
34
|
const targets = options.targets || [undefined];
|
|
32
35
|
for (const packagePath of packagePaths) {
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
const extensionFile = options.extensionFile ?? (packagePath?.endsWith('.vsix') ? packagePath : undefined);
|
|
37
|
+
if (extensionFile !== undefined) {
|
|
38
|
+
prepackagedFiles.push(extensionFile);
|
|
39
|
+
// A package is already built for its target, so it is published once, not once per target.
|
|
40
|
+
internalPublishOptions.push({ ...options, extensionFile, packagePath: undefined, target: undefined });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
for (const target of targets) {
|
|
44
|
+
internalPublishOptions.push({ ...options, packagePath, target });
|
|
45
|
+
}
|
|
35
46
|
}
|
|
36
47
|
}
|
|
37
|
-
|
|
48
|
+
// Before the registry is contacted, so a slow or failing lookup cannot keep these from being seen.
|
|
49
|
+
warnIgnoredPackagingOptions(options, prepackagedFiles);
|
|
50
|
+
// Shared by every target/package below, rather than one per artifact: besides saving the extra
|
|
51
|
+
// `/api/version` round trips, it's also where the registry's reported version is cached (see
|
|
52
|
+
// Registry.tokenQuery), so a wide fan-out doesn't repeat that lookup once per target either.
|
|
53
|
+
const registry = new registry_1.Registry(options);
|
|
54
|
+
const maxExtensionSize = await getMaxExtensionSize(registry);
|
|
55
|
+
return Promise.allSettled(internalPublishOptions.map(publishOptions => doPublish(registry, { ...publishOptions, maxExtensionSize })));
|
|
38
56
|
}
|
|
39
57
|
/**
|
|
40
|
-
*
|
|
41
|
-
|
|
58
|
+
* Names the files in the warning: next to a directory being packaged, the options still apply to that.
|
|
59
|
+
*/
|
|
60
|
+
function warnIgnoredPackagingOptions(options, prepackagedFiles) {
|
|
61
|
+
const files = [...new Set(prepackagedFiles)];
|
|
62
|
+
if (files.length === 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const subject = `${files.length === 1 ? 'extension' : 'extensions'} ${files.map(file => `'${file}'`).join(', ')}`;
|
|
66
|
+
for (const [flag, key] of exports.PACKAGING_OPTIONS) {
|
|
67
|
+
// An explicit `false` is not a flag that was given.
|
|
68
|
+
if (options[key] !== undefined && options[key] !== false) {
|
|
69
|
+
console.warn(`Ignoring option '${flag}' for prepackaged ${subject}.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Options that only affect packaging, with the CLI flag that sets each, in the order they are reported
|
|
75
|
+
* as ignored for a prepackaged extension. `--no-dependencies` is left out: the CLI always sets
|
|
76
|
+
* `dependencies`, so whether it was given cannot be told apart.
|
|
77
|
+
*/
|
|
78
|
+
exports.PACKAGING_OPTIONS = [
|
|
79
|
+
['--target', 'targets'],
|
|
80
|
+
['--baseContentUrl', 'baseContentUrl'],
|
|
81
|
+
['--baseImagesUrl', 'baseImagesUrl'],
|
|
82
|
+
['--yarn', 'yarn'],
|
|
83
|
+
['--follow-symlinks', 'followSymlinks'],
|
|
84
|
+
['--packageVersion', 'packageVersion'],
|
|
85
|
+
['--allow-missing-repository', 'allowMissingRepository'],
|
|
86
|
+
['--pre-release', 'preRelease']
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* Looks up the registry's default extension size limit, so an oversized package can be flagged
|
|
90
|
+
* before the upload instead of after transferring the whole payload.
|
|
42
91
|
*
|
|
43
92
|
* Best-effort: registries that don't expose `/api/version`, or don't report a limit, return
|
|
44
|
-
* `undefined` here, and
|
|
93
|
+
* `undefined` here, and nothing is said about the size.
|
|
45
94
|
*/
|
|
46
95
|
async function getMaxExtensionSize(registry) {
|
|
47
96
|
try {
|
|
@@ -51,38 +100,51 @@ async function getMaxExtensionSize(registry) {
|
|
|
51
100
|
return undefined;
|
|
52
101
|
}
|
|
53
102
|
}
|
|
54
|
-
async function doPublish(options = {}) {
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
await packageExtension(options, registry);
|
|
64
|
-
console.log(); // new line
|
|
103
|
+
async function doPublish(registry, options = {}) {
|
|
104
|
+
// Only a package created here is a temp file; one the user supplied must never be deleted.
|
|
105
|
+
const packaged = !options.extensionFile;
|
|
106
|
+
try {
|
|
107
|
+
if (packaged) {
|
|
108
|
+
await packageExtension(options, registry);
|
|
109
|
+
console.log(); // new line
|
|
110
|
+
}
|
|
111
|
+
await publishExtensionFile(registry, options);
|
|
65
112
|
}
|
|
66
|
-
|
|
67
|
-
|
|
113
|
+
finally {
|
|
114
|
+
if (packaged && options.extensionFile) {
|
|
115
|
+
// Caught rather than awaited plainly: a failure here (e.g. the temp dir is locked or
|
|
116
|
+
// read-only) must not replace whatever error publishExtensionFile already threw above.
|
|
117
|
+
await fs.promises.rm(options.extensionFile, { force: true }).catch(err => {
|
|
118
|
+
console.warn(`Could not delete temporary file ${options.extensionFile}: ${err.message}`);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
68
121
|
}
|
|
69
|
-
|
|
122
|
+
}
|
|
123
|
+
async function publishExtensionFile(registry, options) {
|
|
124
|
+
// Read up front rather than only when a token has to be obtained: the size limit is looked up per
|
|
125
|
+
// namespace, and the namespace lives in the manifest.
|
|
126
|
+
const manifest = await (0, zip_1.readVSIXPackage)(options.extensionFile);
|
|
70
127
|
// Set only when this publish obtained the token itself through trusted publishing, which is the one
|
|
71
128
|
// case where a refusal can be answered by asking for a new token.
|
|
72
129
|
let exchanged;
|
|
73
130
|
if (!options.pat) {
|
|
74
|
-
const manifest = await (0, zip_1.readVSIXPackage)(options.extensionFile);
|
|
75
131
|
if ((0, trusted_publishing_1.useTrustedPublishing)(options)) {
|
|
76
132
|
exchanged = { namespace: manifest.publisher, extension: manifest.name };
|
|
77
133
|
options.pat = await (0, trusted_publishing_1.getTrustedPublishingToken)(registry, manifest.publisher, manifest.name, options);
|
|
78
134
|
}
|
|
79
135
|
else {
|
|
80
|
-
|
|
136
|
+
// getPAT has verified a prompted token already, so it can be stored before publishing
|
|
137
|
+
const { pat, save } = await (0, pat_1.getPAT)(manifest.publisher, options);
|
|
138
|
+
options.pat = pat;
|
|
139
|
+
await save();
|
|
81
140
|
}
|
|
82
141
|
}
|
|
142
|
+
// After the token is resolved, because the lookup is authenticated - and by here a token always
|
|
143
|
+
// exists, whether supplied, fetched, or exchanged through trusted publishing.
|
|
144
|
+
const sizeLimit = await ensureWithinSizeLimit(registry, options, manifest);
|
|
83
145
|
let extension;
|
|
84
146
|
try {
|
|
85
|
-
extension = await doRegistryPublish(registry, options, exchanged);
|
|
147
|
+
extension = await doRegistryPublish(registry, options, exchanged, sizeLimit);
|
|
86
148
|
}
|
|
87
149
|
catch (err) {
|
|
88
150
|
if (options.skipDuplicate && err.message.endsWith('is already published.')) {
|
|
@@ -115,9 +177,9 @@ async function doPublish(options = {}) {
|
|
|
115
177
|
* Only ever retried once, and only for a token obtained here: nothing this can do makes a token the
|
|
116
178
|
* user supplied valid, and a second refusal means the token is not the problem.
|
|
117
179
|
*/
|
|
118
|
-
async function doRegistryPublish(registry, options, exchanged) {
|
|
180
|
+
async function doRegistryPublish(registry, options, exchanged, sizeLimit) {
|
|
119
181
|
try {
|
|
120
|
-
return await registry.publish(options.extensionFile, options.pat);
|
|
182
|
+
return await registry.publish(options.extensionFile, options.pat, sizeLimit);
|
|
121
183
|
}
|
|
122
184
|
catch (err) {
|
|
123
185
|
if (!exchanged || err?.status !== 401) {
|
|
@@ -125,30 +187,75 @@ async function doRegistryPublish(registry, options, exchanged) {
|
|
|
125
187
|
}
|
|
126
188
|
console.log('The registry refused the publishing token, requesting a new one');
|
|
127
189
|
options.pat = await (0, trusted_publishing_1.refreshTrustedPublishingToken)(registry, exchanged.namespace, exchanged.extension, options, options.pat);
|
|
128
|
-
return registry.publish(options.extensionFile, options.pat);
|
|
190
|
+
return registry.publish(options.extensionFile, options.pat, sizeLimit);
|
|
129
191
|
}
|
|
130
192
|
}
|
|
131
193
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
194
|
+
* Refuses a package the registry would reject anyway, before uploading it, and reports how many
|
|
195
|
+
* bytes it has concluded may be sent - the caller raises the transport cap to that, so nothing we
|
|
196
|
+
* decided to upload is then refused locally.
|
|
197
|
+
*
|
|
198
|
+
* The limit is the one that applies to this package's namespace and extension, which a size override
|
|
199
|
+
* can raise above the registry default. Registries older than
|
|
200
|
+
* {@link MIN_SIZE_LIMIT_REGISTRY_VERSION} cannot report it, so there the check stays advisory: it
|
|
201
|
+
* warns against the default and publishes, rather than refusing an upload those registries would
|
|
202
|
+
* have accepted.
|
|
136
203
|
*/
|
|
137
|
-
async function ensureWithinSizeLimit(
|
|
138
|
-
|
|
139
|
-
|
|
204
|
+
async function ensureWithinSizeLimit(registry, options, manifest) {
|
|
205
|
+
const { size } = await fs.promises.stat(options.extensionFile);
|
|
206
|
+
const limit = await resolveSizeLimit(registry, options, manifest);
|
|
207
|
+
if (limit.kind === 'failed') {
|
|
208
|
+
// Always said, however small the package: a size override can lower a limit as well as raise
|
|
209
|
+
// it, so there is no size from which it follows that this upload is fine. Staying quiet here
|
|
210
|
+
// left a registry whose /api/-/* routes never arrive indistinguishable from a working one.
|
|
211
|
+
console.warn(`Could not check the size limit for ${manifest.publisher}.${manifest.name} at ${registry.url} `
|
|
212
|
+
+ `(${limit.reason}). Publishing anyway: the registry enforces its own limit, so an oversized `
|
|
213
|
+
+ `package is refused after the upload rather than before it.`);
|
|
214
|
+
}
|
|
215
|
+
else if (limit.kind === 'unsupported') {
|
|
216
|
+
const fallback = options.maxExtensionSize;
|
|
217
|
+
if (fallback && size > fallback) {
|
|
218
|
+
console.warn(`The extension package (${(0, util_1.formatBytes)(size)}, ${size} bytes) exceeds the default size limit of `
|
|
219
|
+
+ `${(0, util_1.formatBytes)(fallback)} (${fallback} bytes) `
|
|
220
|
+
+ `reported by the registry at ${registry.url}, which is too old to report the limit for a `
|
|
221
|
+
+ `single namespace. Publishing anyway: the namespace may have a different limit configured, `
|
|
222
|
+
+ `and the registry decides.`);
|
|
223
|
+
}
|
|
140
224
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
225
|
+
if (limit.kind !== 'resolved') {
|
|
226
|
+
// The allowance is this package, not the built-in publish size: having decided to send it and
|
|
227
|
+
// let the registry answer, the transport cap must not be what refuses it instead. An older
|
|
228
|
+
// registry whose default is above 512 MiB would otherwise reject a package it would accept.
|
|
229
|
+
return size;
|
|
230
|
+
}
|
|
231
|
+
if (size > limit.limit) {
|
|
232
|
+
throw new Error(`The extension package (${(0, util_1.formatBytes)(size)}, ${size} bytes) exceeds the size limit of `
|
|
233
|
+
+ `${(0, util_1.formatBytes)(limit.limit)} (${limit.limit} bytes) `
|
|
234
|
+
+ `for ${manifest.publisher}.${manifest.name} at ${registry.url}.`);
|
|
235
|
+
}
|
|
236
|
+
return limit.limit;
|
|
237
|
+
}
|
|
238
|
+
async function resolveSizeLimit(registry, options, manifest) {
|
|
239
|
+
const reported = await registry.getRegistryVersion().catch(() => undefined);
|
|
240
|
+
const version = reported?.version ? semver.coerce(reported.version) : undefined;
|
|
241
|
+
if (!version || semver.lt(version, MIN_SIZE_LIMIT_REGISTRY_VERSION)) {
|
|
242
|
+
return { kind: 'unsupported' };
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
const { maxSize } = await registry.getSizeLimit(manifest.publisher, manifest.name, options.pat);
|
|
246
|
+
return { kind: 'resolved', limit: maxSize };
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
// The registry claims to be new enough but could not answer. It enforces the limit itself
|
|
250
|
+
// regardless, so publish rather than refusing on a failed lookup.
|
|
251
|
+
return { kind: 'failed', reason: err instanceof Error ? err.message : String(err) };
|
|
145
252
|
}
|
|
146
253
|
}
|
|
147
254
|
async function packageExtension(options, registry) {
|
|
148
255
|
if (registry.requiresLicense) {
|
|
149
256
|
await (0, check_license_1.checkLicense)(options.packagePath);
|
|
150
257
|
}
|
|
151
|
-
options.extensionFile =
|
|
258
|
+
options.extensionFile = (0, util_1.getTempFilePath)('.vsix');
|
|
152
259
|
const packageOptions = {
|
|
153
260
|
packagePath: options.extensionFile,
|
|
154
261
|
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,13 +29,35 @@ 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 once it has succeeded - 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
|
-
|
|
32
|
-
|
|
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;
|
|
60
|
+
requestTrustedPublishingToken(namespace: string, extension: string, idToken: string, registrationCode?: string): Promise<AccessToken>;
|
|
33
61
|
/**
|
|
34
62
|
* Deletes extension versions. Omitting `targetVersions` deletes the extension as a whole,
|
|
35
63
|
* i.e. all versions the personal access token's user is allowed to delete.
|
|
@@ -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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"}
|