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/registry.js
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
********************************************************************************/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Registry = exports.DEFAULT_DELETE_SIZE = exports.DEFAULT_TOKEN_REQUEST_SIZE = exports.DEFAULT_TIMEOUT = exports.DEFAULT_PUBLISH_SIZE = exports.DEFAULT_NAMESPACE_SIZE = exports.DEFAULT_URL = void 0;
|
|
12
|
+
exports.Registry = exports.MIN_TOKEN_HEADER_REGISTRY_VERSION = exports.DEFAULT_DELETE_SIZE = exports.DEFAULT_TOKEN_REQUEST_SIZE = exports.DEFAULT_TIMEOUT = exports.DEFAULT_PUBLISH_SIZE = exports.DEFAULT_NAMESPACE_SIZE = exports.DEFAULT_URL = void 0;
|
|
13
13
|
const fs = require("fs");
|
|
14
|
+
const semver = require("semver");
|
|
14
15
|
const stream_1 = require("stream");
|
|
15
|
-
const
|
|
16
|
+
const http_1 = require("./http");
|
|
16
17
|
const util_1 = require("./util");
|
|
17
18
|
Object.defineProperty(exports, "DEFAULT_TIMEOUT", { enumerable: true, get: function () { return util_1.DEFAULT_TIMEOUT; } });
|
|
18
19
|
exports.DEFAULT_URL = 'https://open-vsx.org';
|
|
@@ -20,6 +21,16 @@ exports.DEFAULT_NAMESPACE_SIZE = 1024;
|
|
|
20
21
|
exports.DEFAULT_PUBLISH_SIZE = 512 * 1024 * 1024;
|
|
21
22
|
exports.DEFAULT_TOKEN_REQUEST_SIZE = 8 * 1024;
|
|
22
23
|
exports.DEFAULT_DELETE_SIZE = 64 * 1024;
|
|
24
|
+
// Fallback only, for when Authorization is already claimed by Basic auth to a fronting proxy (see
|
|
25
|
+
// tokenHeaders/getRequestOptions).
|
|
26
|
+
// Must stay in the credential headers http.ts drops on a cross-origin redirect.
|
|
27
|
+
const TOKEN_HEADER = 'X-OpenVSX-Token';
|
|
28
|
+
/**
|
|
29
|
+
* Oldest registry version that resolves the personal access token from a header (see #1344).
|
|
30
|
+
* Registries older than this only look at the `token` query parameter, so `tokenQuery` keeps
|
|
31
|
+
* sending it to anything below this version.
|
|
32
|
+
*/
|
|
33
|
+
exports.MIN_TOKEN_HEADER_REGISTRY_VERSION = '1.3.0';
|
|
23
34
|
class Registry {
|
|
24
35
|
constructor(options = {}) {
|
|
25
36
|
if (options.registryUrl?.endsWith('/'))
|
|
@@ -29,6 +40,7 @@ class Registry {
|
|
|
29
40
|
else
|
|
30
41
|
this.url = exports.DEFAULT_URL;
|
|
31
42
|
this.maxNamespaceSize = options.maxNamespaceSize ?? exports.DEFAULT_NAMESPACE_SIZE;
|
|
43
|
+
this.publishSizePinned = options.maxPublishSize !== undefined;
|
|
32
44
|
this.maxPublishSize = options.maxPublishSize ?? exports.DEFAULT_PUBLISH_SIZE;
|
|
33
45
|
this.timeout = options.timeout ?? util_1.DEFAULT_TIMEOUT;
|
|
34
46
|
this.username = options.username;
|
|
@@ -38,45 +50,80 @@ class Registry {
|
|
|
38
50
|
const url = new URL(this.url);
|
|
39
51
|
return url.hostname === 'open-vsx.org' || url.hostname.endsWith('.open-vsx.org');
|
|
40
52
|
}
|
|
41
|
-
createNamespace(name, pat) {
|
|
53
|
+
async createNamespace(name, pat) {
|
|
42
54
|
try {
|
|
43
|
-
const url = this.getUrl(['api', '-', 'namespace', 'create'],
|
|
55
|
+
const url = this.getUrl(['api', '-', 'namespace', 'create'], await this.tokenQuery(pat));
|
|
44
56
|
const namespace = { name };
|
|
45
|
-
return this.post(JSON.stringify(namespace), url, {
|
|
46
|
-
'Content-Type': 'application/json'
|
|
57
|
+
return await this.post(JSON.stringify(namespace), url, {
|
|
58
|
+
'Content-Type': 'application/json',
|
|
59
|
+
...this.tokenHeaders(pat)
|
|
47
60
|
}, this.maxNamespaceSize);
|
|
48
61
|
}
|
|
49
62
|
catch (err) {
|
|
50
63
|
return (0, util_1.rejectError)(err);
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
|
-
verifyPat(namespace, pat) {
|
|
66
|
+
async verifyPat(namespace, pat) {
|
|
67
|
+
try {
|
|
68
|
+
const url = this.getUrl(['api', namespace, 'verify-pat'], await this.tokenQuery(pat));
|
|
69
|
+
return await this.getJson(url, this.tokenHeaders(pat));
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return (0, util_1.rejectError)(err);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The size limit that applies to this namespace/extension, which a size override can raise above
|
|
77
|
+
* the registry default. Neither needs to exist yet - a first publish asks about both before
|
|
78
|
+
* creating either.
|
|
79
|
+
*/
|
|
80
|
+
async getSizeLimit(namespace, extension, pat) {
|
|
54
81
|
try {
|
|
55
|
-
|
|
82
|
+
const query = { namespace, extension, ...(await this.tokenQuery(pat)) };
|
|
83
|
+
const url = this.getUrl(['api', '-', 'size-limit'], query);
|
|
84
|
+
return await this.getJson(url, this.tokenHeaders(pat));
|
|
56
85
|
}
|
|
57
86
|
catch (err) {
|
|
58
87
|
return (0, util_1.rejectError)(err);
|
|
59
88
|
}
|
|
60
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Cached per `Registry` instance - callers like `tokenQuery` and `unpublish`'s own version check
|
|
92
|
+
* would otherwise each fetch it separately, doubling the round trip for a single command.
|
|
93
|
+
*/
|
|
61
94
|
getRegistryVersion() {
|
|
62
95
|
try {
|
|
63
|
-
return this.getJson(this.getUrl(['api', 'version']));
|
|
96
|
+
return this.registryVersion ?? (this.registryVersion = this.getJson(this.getUrl(['api', 'version'])));
|
|
64
97
|
}
|
|
65
98
|
catch (err) {
|
|
66
99
|
return (0, util_1.rejectError)(err);
|
|
67
100
|
}
|
|
68
101
|
}
|
|
69
|
-
|
|
102
|
+
/**
|
|
103
|
+
* `sizeLimit` is the limit the registry reports for this package, when it could report one. The
|
|
104
|
+
* transport body cap is raised to it, because a namespace granted more than the default would
|
|
105
|
+
* otherwise have its upload refused here - by the body size check, before anything reached the
|
|
106
|
+
* registry that allowed it.
|
|
107
|
+
*/
|
|
108
|
+
async publish(file, pat, sizeLimit) {
|
|
70
109
|
try {
|
|
71
|
-
const url = this.getUrl(['api', '-', 'publish'],
|
|
72
|
-
return this.postFile(file, url, {
|
|
73
|
-
'Content-Type': 'application/octet-stream'
|
|
74
|
-
|
|
110
|
+
const url = this.getUrl(['api', '-', 'publish'], await this.tokenQuery(pat));
|
|
111
|
+
return await this.postFile(file, url, {
|
|
112
|
+
'Content-Type': 'application/octet-stream',
|
|
113
|
+
...this.tokenHeaders(pat)
|
|
114
|
+
}, this.publishBodyLimit(sizeLimit));
|
|
75
115
|
}
|
|
76
116
|
catch (err) {
|
|
77
117
|
return (0, util_1.rejectError)(err);
|
|
78
118
|
}
|
|
79
119
|
}
|
|
120
|
+
/** The body cap for a publish. A pinned `maxPublishSize` wins; otherwise it never sits below the registry's own limit. */
|
|
121
|
+
publishBodyLimit(sizeLimit) {
|
|
122
|
+
if (this.publishSizePinned || sizeLimit === undefined) {
|
|
123
|
+
return this.maxPublishSize;
|
|
124
|
+
}
|
|
125
|
+
return Math.max(this.maxPublishSize, sizeLimit);
|
|
126
|
+
}
|
|
80
127
|
requestTrustedPublishingToken(namespace, extension, idToken) {
|
|
81
128
|
try {
|
|
82
129
|
const url = this.getUrl(['api', '-', 'trusted-publishing', 'token']);
|
|
@@ -93,15 +140,17 @@ class Registry {
|
|
|
93
140
|
* Deletes extension versions. Omitting `targetVersions` deletes the extension as a whole,
|
|
94
141
|
* i.e. all versions the personal access token's user is allowed to delete.
|
|
95
142
|
*/
|
|
96
|
-
deleteExtension(namespace, extension, targetVersions, pat) {
|
|
143
|
+
async deleteExtension(namespace, extension, targetVersions, pat) {
|
|
97
144
|
try {
|
|
98
145
|
if (!targetVersions) {
|
|
99
|
-
const
|
|
100
|
-
|
|
146
|
+
const query = { ...await this.tokenQuery(pat), allVersions: 'true' };
|
|
147
|
+
const url = this.getUrl(['api', namespace, extension, 'delete'], query);
|
|
148
|
+
return await this.post('', url, this.tokenHeaders(pat), exports.DEFAULT_DELETE_SIZE);
|
|
101
149
|
}
|
|
102
|
-
const url = this.getUrl(['api', namespace, extension, 'delete'],
|
|
103
|
-
return this.post(JSON.stringify(targetVersions), url, {
|
|
104
|
-
'Content-Type': 'application/json'
|
|
150
|
+
const url = this.getUrl(['api', namespace, extension, 'delete'], await this.tokenQuery(pat));
|
|
151
|
+
return await this.post(JSON.stringify(targetVersions), url, {
|
|
152
|
+
'Content-Type': 'application/json',
|
|
153
|
+
...this.tokenHeaders(pat)
|
|
105
154
|
}, exports.DEFAULT_DELETE_SIZE);
|
|
106
155
|
}
|
|
107
156
|
catch (err) {
|
|
@@ -205,9 +254,7 @@ class Registry {
|
|
|
205
254
|
stream?.destroy();
|
|
206
255
|
fs.rm(partial, { force: true }, () => reject(err));
|
|
207
256
|
};
|
|
208
|
-
|
|
209
|
-
const request = this.getProtocol(url)
|
|
210
|
-
.request(url, requestOptions, response => {
|
|
257
|
+
(0, http_1.send)(url, this.getRequestOptions(), undefined, response => {
|
|
211
258
|
if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode > 299)) {
|
|
212
259
|
response.resume();
|
|
213
260
|
reject((0, util_1.statusError)(response));
|
|
@@ -234,51 +281,56 @@ class Registry {
|
|
|
234
281
|
fs.rename(partial, file, renameErr => renameErr ? fail(renameErr) : resolve());
|
|
235
282
|
}
|
|
236
283
|
});
|
|
237
|
-
});
|
|
238
|
-
request.on('error', (err) => fail(err));
|
|
239
|
-
this.failOnTimeout(request, url, fail);
|
|
240
|
-
request.end();
|
|
284
|
+
}, fail);
|
|
241
285
|
});
|
|
242
286
|
}
|
|
243
|
-
getJson(url) {
|
|
287
|
+
getJson(url, headers) {
|
|
244
288
|
return new Promise((resolve, reject) => {
|
|
245
|
-
|
|
246
|
-
const request = this.getProtocol(url)
|
|
247
|
-
.request(url, requestOptions, this.getJsonResponse(resolve, reject));
|
|
248
|
-
request.on('error', reject);
|
|
249
|
-
this.failOnTimeout(request, url, reject);
|
|
250
|
-
request.end();
|
|
289
|
+
(0, http_1.send)(url, this.getRequestOptions('GET', headers), undefined, (0, http_1.jsonResponse)(resolve, reject), reject);
|
|
251
290
|
});
|
|
252
291
|
}
|
|
253
292
|
post(content, url, headers, maxBodyLength) {
|
|
254
293
|
return new Promise((resolve, reject) => {
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
request.on('error', reject);
|
|
259
|
-
this.failOnTimeout(request, url, reject);
|
|
260
|
-
request.write(content);
|
|
261
|
-
request.end();
|
|
294
|
+
const size = typeof content === 'string' ? Buffer.byteLength(content) : content.byteLength;
|
|
295
|
+
checkBodySize(size, maxBodyLength);
|
|
296
|
+
(0, http_1.send)(url, this.getRequestOptions('POST', headers), () => content, (0, http_1.jsonResponse)(resolve, reject), reject);
|
|
262
297
|
});
|
|
263
298
|
}
|
|
264
|
-
postFile(file, url, headers, maxBodyLength) {
|
|
299
|
+
async postFile(file, url, headers, maxBodyLength) {
|
|
300
|
+
checkBodySize((await fs.promises.stat(file)).size, maxBodyLength);
|
|
265
301
|
return new Promise((resolve, reject) => {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const request = this.getProtocol(url)
|
|
269
|
-
.request(url, requestOptions, this.getJsonResponse(resolve, reject));
|
|
270
|
-
stream.on('error', (err) => {
|
|
271
|
-
request.destroy();
|
|
272
|
-
reject(err);
|
|
273
|
-
});
|
|
274
|
-
request.on('error', (err) => {
|
|
275
|
-
stream.close();
|
|
276
|
-
reject(err);
|
|
277
|
-
});
|
|
278
|
-
this.failOnTimeout(request, url, reject);
|
|
279
|
-
stream.on('open', () => stream.pipe(request));
|
|
302
|
+
// a stream can be read once, so each redirect hop opens the file again
|
|
303
|
+
(0, http_1.send)(url, this.getRequestOptions('POST', headers), () => fs.createReadStream(file), (0, http_1.jsonResponse)(resolve, reject), reject);
|
|
280
304
|
});
|
|
281
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* The header a personal access token travels in. `Authorization: Bearer` is standard and what
|
|
308
|
+
* log/proxy redaction and secret scanners already expect, so it's preferred - except when
|
|
309
|
+
* `username`/`password` are set, where `Authorization` is already claimed by Basic auth to a
|
|
310
|
+
* fronting reverse proxy (see `getRequestOptions`) and the token falls back to `TOKEN_HEADER`.
|
|
311
|
+
*/
|
|
312
|
+
tokenHeaders(pat) {
|
|
313
|
+
return (this.username && this.password)
|
|
314
|
+
? { [TOKEN_HEADER]: pat }
|
|
315
|
+
: { Authorization: `Bearer ${pat}` };
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* The `token` query parameter to add alongside the header, for registries that predate header
|
|
319
|
+
* support (see #1344) - empty once the registry is known to be new enough to not need it.
|
|
320
|
+
*
|
|
321
|
+
* Best-effort and cached per `Registry` instance: a registry that doesn't expose `/api/version`,
|
|
322
|
+
* or reports a version that doesn't parse as semver, is assumed too old to know about the header,
|
|
323
|
+
* same as before this method existed - the query parameter is kept rather than risking a request
|
|
324
|
+
* that only carries a header such a registry never looks at.
|
|
325
|
+
*/
|
|
326
|
+
tokenQuery(pat) {
|
|
327
|
+
return (this.tokenHeaderSupport ?? (this.tokenHeaderSupport = this.getRegistryVersion()
|
|
328
|
+
.then(({ version }) => {
|
|
329
|
+
const parsed = semver.coerce(version);
|
|
330
|
+
return !!parsed && semver.gte(parsed, exports.MIN_TOKEN_HEADER_REGISTRY_VERSION);
|
|
331
|
+
})
|
|
332
|
+
.catch(() => false))).then(supported => supported ? {} : { token: pat });
|
|
333
|
+
}
|
|
282
334
|
getUrl(segments, query) {
|
|
283
335
|
const url = new URL(this.url);
|
|
284
336
|
const basePath = url.pathname.replace(/\/+$/, '');
|
|
@@ -289,31 +341,7 @@ class Registry {
|
|
|
289
341
|
}
|
|
290
342
|
return url;
|
|
291
343
|
}
|
|
292
|
-
|
|
293
|
-
return url.protocol === 'https:' ? followRedirects.https : followRedirects.http;
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Node's `timeout` option only raises an event - the request stays open, which is why a server
|
|
297
|
-
* that accepts a connection and then says nothing used to hold a command open indefinitely.
|
|
298
|
-
* Destroying the request with an error routes through the error handling each caller already
|
|
299
|
-
* has, so a stalled request rejects the way any other failure does. With a timeout of zero the
|
|
300
|
-
* event never fires and this does nothing.
|
|
301
|
-
*/
|
|
302
|
-
// Typed on Writable because both http.ClientRequest and follow-redirects' wrapper are ones, and
|
|
303
|
-
// all this needs is the timeout event and destroy.
|
|
304
|
-
failOnTimeout(request, url, fail) {
|
|
305
|
-
request.on('timeout', () => {
|
|
306
|
-
// Reported before the request is torn down, rather than by destroying it with the error.
|
|
307
|
-
// Destroying raises errors of its own - ECONNRESET on the response, a premature close
|
|
308
|
-
// from pipeline - and node guarantees no order between those and the request's own. In
|
|
309
|
-
// practice the request's arrives first, so this is belt and braces rather than the thing
|
|
310
|
-
// that stops the wrong error being reported; that is the caller claiming the failure
|
|
311
|
-
// before it does any asynchronous cleanup.
|
|
312
|
-
fail(new Error(`No response from ${(0, util_1.redactUrl)(url)} for ${this.timeout} ms.`));
|
|
313
|
-
request.destroy();
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
getRequestOptions(method, headers, maxBodyLength) {
|
|
344
|
+
getRequestOptions(method, headers) {
|
|
317
345
|
if (this.username && this.password) {
|
|
318
346
|
headers ?? (headers = {});
|
|
319
347
|
const credentials = Buffer.from(this.username + ':' + this.password).toString('base64');
|
|
@@ -322,52 +350,15 @@ class Registry {
|
|
|
322
350
|
return {
|
|
323
351
|
method,
|
|
324
352
|
headers,
|
|
325
|
-
maxBodyLength,
|
|
326
353
|
timeout: this.timeout
|
|
327
354
|
};
|
|
328
355
|
}
|
|
329
|
-
getJsonResponse(resolve, reject) {
|
|
330
|
-
return response => {
|
|
331
|
-
response.setEncoding('utf-8');
|
|
332
|
-
let json = '';
|
|
333
|
-
// A connection lost after the headers have arrived ends the response without 'end' ever
|
|
334
|
-
// firing, so without this the promise is never settled and the command waits on a body
|
|
335
|
-
// that is not coming. The configured timeout would eventually rescue it, but rejecting
|
|
336
|
-
// here reports what actually happened instead of thirty seconds of silence.
|
|
337
|
-
response.on('error', reject);
|
|
338
|
-
response.on('data', chunk => json += chunk);
|
|
339
|
-
response.on('end', () => {
|
|
340
|
-
if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode > 299)) {
|
|
341
|
-
if (json.startsWith('{')) {
|
|
342
|
-
try {
|
|
343
|
-
const parsed = JSON.parse(json);
|
|
344
|
-
const message = parsed.message || parsed.error;
|
|
345
|
-
if (message) {
|
|
346
|
-
// keep the status: the message alone cannot say whether retrying is worth it
|
|
347
|
-
reject((0, util_1.withStatus)(new Error(message), response.statusCode));
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
catch (err) {
|
|
352
|
-
// Ignore the error and reject with response status
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
reject((0, util_1.statusError)(response));
|
|
356
|
-
}
|
|
357
|
-
else if (json.startsWith('<!DOCTYPE html>')) {
|
|
358
|
-
reject(json);
|
|
359
|
-
}
|
|
360
|
-
else {
|
|
361
|
-
try {
|
|
362
|
-
resolve(JSON.parse(json));
|
|
363
|
-
}
|
|
364
|
-
catch (err) {
|
|
365
|
-
reject(err);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
356
|
}
|
|
372
357
|
exports.Registry = Registry;
|
|
358
|
+
/** Refuses a request body larger than `maxBodyLength` before anything is sent. */
|
|
359
|
+
function checkBodySize(size, maxBodyLength) {
|
|
360
|
+
if (maxBodyLength !== undefined && size > maxBodyLength) {
|
|
361
|
+
throw new Error(`The request body of ${size} bytes is larger than the limit of ${maxBodyLength} bytes.`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
373
364
|
//# sourceMappingURL=registry.js.map
|
package/lib/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;;;AAGlF,yBAAyB;AACzB,mCAA4C;AAC5C,oDAAoD;AAEpD,iCAA0F;AAKjF,gGALA,sBAAe,OAKA;AAHX,QAAA,WAAW,GAAG,sBAAsB,CAAC;AACrC,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAC9B,QAAA,oBAAoB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC,QAAA,0BAA0B,GAAG,CAAC,GAAG,IAAI,CAAC;AACtC,QAAA,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,MAAa,QAAQ;IASjB,YAAY,UAA2B,EAAE;QACrC,IAAI,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC;YAClC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC3E,IAAI,OAAO,CAAC,WAAW;YACxB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;;YAE/B,IAAI,CAAC,GAAG,GAAG,mBAAW,CAAC;QAE3B,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,8BAAsB,CAAC;QAC3E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,4BAAoB,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,sBAAe,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,IAAI,eAAe;QACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC,QAAQ,KAAK,cAAc,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrF,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,GAAW;QACrC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;gBAC7C,cAAc,EAAE,kBAAkB;aACrC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE,GAAW;QACpC,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,GAAW;QAC7B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC5B,cAAc,EAAE,0BAA0B;aAC7C,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,6BAA6B,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAAe;QAC/E,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE;gBAC3C,cAAc,EAAE,kBAAkB;aACrC,EAAE,kCAA0B,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,eAAe,CACX,SAAiB,EACjB,SAAiB,EACjB,cAAmD,EACnD,GAAW;QAEX,IAAI,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtG,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,2BAAmB,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE;gBAClD,cAAc,EAAE,kBAAkB;aACrC,EAAE,2BAAmB,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,WAAW,CAAC,SAAiB,EAAE,SAAiB,EAAE,MAAe,EAAE,OAAgB;QAC/E,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACV,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAChB,SAAiB,EACjB,SAAiB,EACjB,MAA0B,EAC1B,IAAY,EACZ,MAAc;QAEd,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACtC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;aACzB,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAoB;QACvB,IAAI,CAAC;YACD,MAAM,KAAK,GAA2B;gBAClC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACjC,CAAC;YACF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAChC,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACtC,CAAC;YACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBACzB,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;YAClD,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAClC,CAAC;YACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpB,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACxC,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,YAAY,CAAC,SAAiB;QAC1B,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,GAAQ;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,0FAA0F;YAC1F,0FAA0F;YAC1F,wFAAwF;YACxF,iFAAiF;YACjF,MAAM,OAAO,GAAG,GAAG,IAAI,OAAO,CAAC;YAC/B,IAAI,MAAkC,CAAC;YAEvC,2FAA2F;YAC3F,0FAA0F;YAC1F,yFAAyF;YACzF,qCAAqC;YACrC,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,IAAI,GAAG,CAAC,GAAU,EAAE,EAAE;gBACxB,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO;gBACX,CAAC;gBACD,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM,EAAE,OAAO,EAAE,CAAC;gBAClB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;iBAChB,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE;gBACzD,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;oBAChG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAA,kBAAW,EAAC,QAAQ,CAAC,CAAC,CAAC;oBAC9B,OAAO;gBACX,CAAC;gBAED,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAEvC,iFAAiF;gBACjF,oFAAoF;gBACpF,kFAAkF;gBAClF,mFAAmF;gBACnF,kFAAkF;gBAClF,iFAAiF;gBACjF,sBAAsB;gBACtB,IAAA,iBAAQ,EAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAiC,EAAE,EAAE;oBAC7D,IAAI,GAAG,EAAE,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBAC5B,2EAA2E;wBAC3E,6CAA6C;wBAC7C,IAAI,CAAC,IAAI,KAAK,CAAC,6CAA6C,IAAA,gBAAS,EAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBACjG,CAAC;yBAAM,CAAC;wBACJ,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAqB,GAAQ;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;iBAChB,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAI,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5F,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAqB,OAAqC,EAAE,GAAQ,EAAE,OAAkC,EAAE,aAAsB;QAChI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;iBAChB,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAI,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5F,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAqB,IAAY,EAAE,GAAQ,EAAE,OAAkC,EAAE,aAAsB;QAC3G,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;iBAChB,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAI,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5F,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC/B,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,QAAkB,EAAE,KAA8B;QAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACnF,GAAG,CAAC,QAAQ,GAAG,GAAG,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,KAAK,EAAE,CAAC;YACR,GAAG,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,WAAW,CAAC,GAAQ;QACxB,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;IACpF,CAAC;IAED;;;;;;OAMG;IACH,gGAAgG;IAChG,mDAAmD;IAC3C,aAAa,CAAC,OAAiB,EAAE,GAAQ,EAAE,IAA0B;QACzE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,yFAAyF;YACzF,sFAAsF;YACtF,uFAAuF;YACvF,yFAAyF;YACzF,qFAAqF;YACrF,2CAA2C;YAC3C,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAA,gBAAS,EAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,iBAAiB,CAAC,MAAe,EAAE,OAAkC,EAAE,aAAsB;QACjG,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,KAAP,OAAO,GAAK,EAAE,EAAC;YACf,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxF,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAC;QACtD,CAAC;QACD,OAAO;YACH,MAAM;YACN,OAAO;YACP,aAAa;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;SACD,CAAC;IAC7B,CAAC;IAEO,eAAe,CAAqB,OAA2B,EAAE,MAA6B;QAClG,OAAO,QAAQ,CAAC,EAAE;YACd,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,wFAAwF;YACxF,uFAAuF;YACvF,uFAAuF;YACvF,4EAA4E;YAC5E,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YAC5C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;oBAChG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC;4BACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;4BACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;4BAC/C,IAAI,OAAO,EAAE,CAAC;gCACV,6EAA6E;gCAC7E,MAAM,CAAC,IAAA,iBAAU,EAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gCAC5D,OAAO;4BACX,CAAC;wBACL,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,mDAAmD;wBACvD,CAAC;oBACL,CAAC;oBACD,MAAM,CAAC,IAAA,kBAAW,EAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC9B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;CAEJ;AA1XD,4BA0XC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/lib/util.d.ts
CHANGED
|
@@ -7,12 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
|
-
import * as fs from 'fs';
|
|
11
|
-
import * as tmp from 'tmp';
|
|
12
10
|
import * as http from 'http';
|
|
13
11
|
import { RegistryOptions } from './registry-options';
|
|
14
12
|
import { TrustedPublishingOptions } from './trusted-publishing-options';
|
|
15
|
-
export { promisify } from 'util';
|
|
16
13
|
export declare function addEnvOptions(options: RegistryOptions): void;
|
|
17
14
|
export declare function addTrustedPublishingEnvOptions(options: TrustedPublishingOptions): void;
|
|
18
15
|
/** How long a request may make no progress before it is abandoned; see RegistryOptions.timeout. */
|
|
@@ -29,9 +26,16 @@ export declare function configuredTimeout(): number;
|
|
|
29
26
|
*/
|
|
30
27
|
export declare function parseNonNegativeInt(value: string): number;
|
|
31
28
|
export declare function matchExtensionId(id: string): RegExpExecArray | null;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Levenshtein distance between `a` and `b`: the minimum number of single-character insertions,
|
|
31
|
+
* deletions or substitutions needed to turn one into the other. Used to suggest the closest known
|
|
32
|
+
* command for a typo.
|
|
33
|
+
*/
|
|
34
|
+
export declare function levenshtein(a: string, b: string): number;
|
|
35
|
+
/**
|
|
36
|
+
* Returns a random, not-yet-created file path ending in `postfix`, directly in the OS temp directory.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTempFilePath(postfix?: string): string;
|
|
35
39
|
export declare function rejectError(err: any): Promise<never>;
|
|
36
40
|
export declare function handleError(debug?: boolean, additionalMessage?: string, exit?: boolean): (reason: any) => void;
|
|
37
41
|
/**
|
|
@@ -51,17 +55,17 @@ export declare function withStatus(error: Error, status?: number): StatusError;
|
|
|
51
55
|
/**
|
|
52
56
|
* A URL in the form it can safely be printed: no user info and no query string.
|
|
53
57
|
*
|
|
54
|
-
*
|
|
55
|
-
* `
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
+
* The personal access token travels in a header now, but `createNamespace`, `verifyPat`, `publish`
|
|
59
|
+
* and `delete` still carry it in the query string too when talking to a registry too old to resolve
|
|
60
|
+
* it from the header (see `Registry.tokenQuery`, #1344). An error message goes straight to stderr
|
|
61
|
+
* and from there into CI logs, and the query carries nothing an error needs - so it stays dropped
|
|
62
|
+
* whole rather than filtered key by key, a filter having to be kept in step with every parameter
|
|
63
|
+
* anyone ever adds.
|
|
58
64
|
*/
|
|
59
65
|
export declare function redactUrl(url: URL | string): string;
|
|
60
66
|
export declare function statusError(response: http.IncomingMessage): StatusError;
|
|
61
|
-
export declare function readFile(name: string, packagePath?: string, encoding?: BufferEncoding): Promise<string>;
|
|
62
67
|
export declare function readManifest(packagePath?: string): Promise<Manifest>;
|
|
63
68
|
export declare function validateManifest(manifest: Manifest): void;
|
|
64
|
-
export declare function writeFile(name: string, content: string, packagePath?: string, encoding?: BufferEncoding): Promise<void>;
|
|
65
69
|
export declare function writeManifest(manifest: Manifest, packagePath?: string): Promise<void>;
|
|
66
70
|
export interface Manifest {
|
|
67
71
|
publisher: string;
|
package/lib/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAMlF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAM5D;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAItF;AAED,mGAAmG;AACnG,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAmBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAK,GAAG,MAAM,CAEpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,kBAGnC;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAmBpH;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASjD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAIrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM,CAQnD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,GAAG,WAAW,CAKvE;AAED,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAG1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAUzD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/lib/util.js
CHANGED
|
@@ -9,31 +9,27 @@
|
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
********************************************************************************/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.DEFAULT_TIMEOUT =
|
|
12
|
+
exports.DEFAULT_TIMEOUT = void 0;
|
|
13
13
|
exports.addEnvOptions = addEnvOptions;
|
|
14
14
|
exports.addTrustedPublishingEnvOptions = addTrustedPublishingEnvOptions;
|
|
15
15
|
exports.configuredTimeout = configuredTimeout;
|
|
16
16
|
exports.parseNonNegativeInt = parseNonNegativeInt;
|
|
17
17
|
exports.matchExtensionId = matchExtensionId;
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.createTempFile = createTempFile;
|
|
18
|
+
exports.levenshtein = levenshtein;
|
|
19
|
+
exports.getTempFilePath = getTempFilePath;
|
|
21
20
|
exports.rejectError = rejectError;
|
|
22
21
|
exports.handleError = handleError;
|
|
23
22
|
exports.formatBytes = formatBytes;
|
|
24
23
|
exports.withStatus = withStatus;
|
|
25
24
|
exports.redactUrl = redactUrl;
|
|
26
25
|
exports.statusError = statusError;
|
|
27
|
-
exports.readFile = readFile;
|
|
28
26
|
exports.readManifest = readManifest;
|
|
29
27
|
exports.validateManifest = validateManifest;
|
|
30
|
-
exports.writeFile = writeFile;
|
|
31
28
|
exports.writeManifest = writeManifest;
|
|
29
|
+
const crypto = require("crypto");
|
|
32
30
|
const fs = require("fs");
|
|
31
|
+
const os = require("os");
|
|
33
32
|
const path = require("path");
|
|
34
|
-
const tmp = require("tmp");
|
|
35
|
-
var util_1 = require("util");
|
|
36
|
-
Object.defineProperty(exports, "promisify", { enumerable: true, get: function () { return util_1.promisify; } });
|
|
37
33
|
function addEnvOptions(options) {
|
|
38
34
|
options.registryUrl ?? (options.registryUrl = process.env.OVSX_REGISTRY_URL);
|
|
39
35
|
options.pat ?? (options.pat = process.env.OVSX_PAT);
|
|
@@ -85,35 +81,38 @@ function parseNonNegativeInt(value) {
|
|
|
85
81
|
function matchExtensionId(id) {
|
|
86
82
|
return /^([\w-]+)(?:\.|\/)([\w-]+)$/.exec(id);
|
|
87
83
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
function
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Levenshtein distance between `a` and `b`: the minimum number of single-character insertions,
|
|
86
|
+
* deletions or substitutions needed to turn one into the other. Used to suggest the closest known
|
|
87
|
+
* command for a typo.
|
|
88
|
+
*/
|
|
89
|
+
function levenshtein(a, b) {
|
|
90
|
+
if (a === b) {
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
// The distance is symmetric, so keep the shorter string in `b` to bound the row size.
|
|
94
|
+
if (b.length > a.length) {
|
|
95
|
+
[a, b] = [b, a];
|
|
96
|
+
}
|
|
97
|
+
// A single row of the edit distance matrix, seeded with the distance between the empty prefix
|
|
98
|
+
// of `a` and every prefix of `b`.
|
|
99
|
+
const row = Array.from({ length: b.length + 1 }, (_, j) => j);
|
|
100
|
+
for (let i = 1; i <= a.length; i++) {
|
|
101
|
+
let diagonal = row[0];
|
|
102
|
+
row[0] = i;
|
|
103
|
+
for (let j = 1; j <= b.length; j++) {
|
|
104
|
+
const above = row[j];
|
|
105
|
+
row[j] = Math.min(row[j - 1] + 1, above + 1, diagonal + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
106
|
+
diagonal = above;
|
|
105
107
|
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
resolve(name);
|
|
115
|
-
});
|
|
116
|
-
});
|
|
108
|
+
}
|
|
109
|
+
return row[b.length];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Returns a random, not-yet-created file path ending in `postfix`, directly in the OS temp directory.
|
|
113
|
+
*/
|
|
114
|
+
function getTempFilePath(postfix = '') {
|
|
115
|
+
return path.join(os.tmpdir(), `ovsx-${crypto.randomUUID()}${postfix}`);
|
|
117
116
|
}
|
|
118
117
|
function rejectError(err) {
|
|
119
118
|
const reason = err instanceof Error ? err : new Error(String(err));
|
|
@@ -164,10 +163,12 @@ function withStatus(error, status) {
|
|
|
164
163
|
/**
|
|
165
164
|
* A URL in the form it can safely be printed: no user info and no query string.
|
|
166
165
|
*
|
|
167
|
-
*
|
|
168
|
-
* `
|
|
169
|
-
*
|
|
170
|
-
*
|
|
166
|
+
* The personal access token travels in a header now, but `createNamespace`, `verifyPat`, `publish`
|
|
167
|
+
* and `delete` still carry it in the query string too when talking to a registry too old to resolve
|
|
168
|
+
* it from the header (see `Registry.tokenQuery`, #1344). An error message goes straight to stderr
|
|
169
|
+
* and from there into CI logs, and the query carries nothing an error needs - so it stays dropped
|
|
170
|
+
* whole rather than filtered key by key, a filter having to be kept in step with every parameter
|
|
171
|
+
* anyone ever adds.
|
|
171
172
|
*/
|
|
172
173
|
function redactUrl(url) {
|
|
173
174
|
try {
|
|
@@ -185,20 +186,8 @@ function statusError(response) {
|
|
|
185
186
|
: `The server responded with status ${response.statusCode}.`;
|
|
186
187
|
return withStatus(new Error(message), response.statusCode);
|
|
187
188
|
}
|
|
188
|
-
function readFile(name, packagePath, encoding = 'utf-8') {
|
|
189
|
-
return new Promise((resolve, reject) => {
|
|
190
|
-
fs.readFile(path.join(packagePath ?? process.cwd(), name), { encoding }, (err, content) => {
|
|
191
|
-
if (err) {
|
|
192
|
-
reject(err);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
resolve(content);
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
189
|
async function readManifest(packagePath) {
|
|
201
|
-
const content = await readFile('package.json',
|
|
190
|
+
const content = await fs.promises.readFile(path.join(packagePath ?? process.cwd(), 'package.json'), 'utf-8');
|
|
202
191
|
return JSON.parse(content);
|
|
203
192
|
}
|
|
204
193
|
function validateManifest(manifest) {
|
|
@@ -212,20 +201,8 @@ function validateManifest(manifest) {
|
|
|
212
201
|
throw new Error("Missing required field 'version'.");
|
|
213
202
|
}
|
|
214
203
|
}
|
|
215
|
-
function writeFile(name, content, packagePath, encoding = 'utf-8') {
|
|
216
|
-
return new Promise((resolve, reject) => {
|
|
217
|
-
fs.writeFile(path.join(packagePath ?? process.cwd(), name), content, { encoding }, (err) => {
|
|
218
|
-
if (err) {
|
|
219
|
-
reject(err);
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
resolve();
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
204
|
function writeManifest(manifest, packagePath) {
|
|
228
205
|
const content = JSON.stringify(manifest, null, 4);
|
|
229
|
-
return writeFile('package.json', content,
|
|
206
|
+
return fs.promises.writeFile(path.join(packagePath ?? process.cwd(), 'package.json'), content, 'utf-8');
|
|
230
207
|
}
|
|
231
208
|
//# sourceMappingURL=util.js.map
|