@theia/vsx-registry 1.52.0 → 1.53.0-next.18
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/lib/common/vsx-environment.d.ts +1 -0
- package/lib/common/vsx-environment.d.ts.map +1 -1
- package/lib/common/vsx-registry-common-module.d.ts.map +1 -1
- package/lib/common/vsx-registry-common-module.js +9 -3
- package/lib/common/vsx-registry-common-module.js.map +1 -1
- package/lib/node/vsx-cli.d.ts +1 -0
- package/lib/node/vsx-cli.d.ts.map +1 -1
- package/lib/node/vsx-cli.js +4 -0
- package/lib/node/vsx-cli.js.map +1 -1
- package/lib/node/vsx-environment-impl.d.ts +1 -0
- package/lib/node/vsx-environment-impl.d.ts.map +1 -1
- package/lib/node/vsx-environment-impl.js +3 -0
- package/lib/node/vsx-environment-impl.js.map +1 -1
- package/lib/node/vsx-extension-resolver.js +3 -3
- package/lib/node/vsx-extension-resolver.js.map +1 -1
- package/package.json +11 -10
- package/src/common/vsx-environment.ts +1 -0
- package/src/common/vsx-registry-common-module.ts +10 -3
- package/src/node/vsx-cli.ts +5 -1
- package/src/node/vsx-environment-impl.ts +4 -0
- package/src/node/vsx-extension-resolver.ts +3 -3
|
@@ -2,6 +2,7 @@ import type { OVSXRouterConfig } from '@theia/ovsx-client';
|
|
|
2
2
|
export declare const VSX_ENVIRONMENT_PATH = "/services/vsx-environment";
|
|
3
3
|
export declare const VSXEnvironment: unique symbol;
|
|
4
4
|
export interface VSXEnvironment {
|
|
5
|
+
getRateLimit(): Promise<number>;
|
|
5
6
|
getRegistryUri(): Promise<string>;
|
|
6
7
|
getRegistryApiUri(): Promise<string>;
|
|
7
8
|
getVscodeApiVersion(): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-environment.d.ts","sourceRoot":"","sources":["../../src/common/vsx-environment.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE,eAAO,MAAM,cAAc,eAA2B,CAAC;AACvD,MAAM,WAAW,cAAc;IAC3B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,mBAAmB,CAAC,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CACjE"}
|
|
1
|
+
{"version":3,"file":"vsx-environment.d.ts","sourceRoot":"","sources":["../../src/common/vsx-environment.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE,eAAO,MAAM,cAAc,eAA2B,CAAC;AACvD,MAAM,WAAW,cAAc;IAC3B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,mBAAmB,CAAC,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-registry-common-module.d.ts","sourceRoot":"","sources":["../../src/common/vsx-registry-common-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"vsx-registry-common-module.d.ts","sourceRoot":"","sources":["../../src/common/vsx-registry-common-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAS/D,wBA2DG"}
|
|
@@ -20,6 +20,7 @@ const common_1 = require("../common");
|
|
|
20
20
|
const request_1 = require("@theia/core/shared/@theia/request");
|
|
21
21
|
const ovsx_client_1 = require("@theia/ovsx-client");
|
|
22
22
|
const vsx_environment_1 = require("./vsx-environment");
|
|
23
|
+
const limiter_1 = require("limiter");
|
|
23
24
|
exports.default = new inversify_1.ContainerModule(bind => {
|
|
24
25
|
bind(common_1.OVSXUrlResolver)
|
|
25
26
|
.toFunction(url => url);
|
|
@@ -33,13 +34,18 @@ exports.default = new inversify_1.ContainerModule(bind => {
|
|
|
33
34
|
.all([
|
|
34
35
|
vsxEnvironment.getRegistryApiUri(),
|
|
35
36
|
(_a = vsxEnvironment.getOvsxRouterConfig) === null || _a === void 0 ? void 0 : _a.call(vsxEnvironment),
|
|
37
|
+
vsxEnvironment.getRateLimit()
|
|
36
38
|
])
|
|
37
|
-
.then(async ([apiUrl, ovsxRouterConfig]) => {
|
|
39
|
+
.then(async ([apiUrl, ovsxRouterConfig, rateLimit]) => {
|
|
40
|
+
const rateLimiter = new limiter_1.RateLimiter({
|
|
41
|
+
interval: 'second',
|
|
42
|
+
tokensPerInterval: rateLimit
|
|
43
|
+
});
|
|
38
44
|
if (ovsxRouterConfig) {
|
|
39
|
-
const clientFactory = ovsx_client_1.OVSXHttpClient.createClientFactory(requestService);
|
|
45
|
+
const clientFactory = ovsx_client_1.OVSXHttpClient.createClientFactory(requestService, rateLimiter);
|
|
40
46
|
return ovsx_client_1.OVSXRouterClient.FromConfig(ovsxRouterConfig, async (url) => clientFactory(await urlResolver(url)), [ovsx_client_1.RequestContainsFilterFactory, ovsx_client_1.ExtensionIdMatchesFilterFactory]);
|
|
41
47
|
}
|
|
42
|
-
return new ovsx_client_1.OVSXHttpClient(await urlResolver(apiUrl), requestService);
|
|
48
|
+
return new ovsx_client_1.OVSXHttpClient(await urlResolver(apiUrl), requestService, rateLimiter);
|
|
43
49
|
});
|
|
44
50
|
// reuse the promise for subsequent calls to this provider
|
|
45
51
|
return () => clientPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-registry-common-module.js","sourceRoot":"","sources":["../../src/common/vsx-registry-common-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4DAA+D;AAC/D,sCAAgE;AAChE,+DAAmE;AACnE,oDAE4B;AAC5B,uDAAmD;
|
|
1
|
+
{"version":3,"file":"vsx-registry-common-module.js","sourceRoot":"","sources":["../../src/common/vsx-registry-common-module.ts"],"names":[],"mappings":"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"}
|
package/lib/node/vsx-cli.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Argv } from '@theia/core/shared/yargs';
|
|
|
4
4
|
import { OVSXRouterConfig } from '@theia/ovsx-client';
|
|
5
5
|
export declare class VsxCli implements CliContribution {
|
|
6
6
|
ovsxRouterConfig: OVSXRouterConfig | undefined;
|
|
7
|
+
ovsxRateLimit: number;
|
|
7
8
|
pluginsToInstall: string[];
|
|
8
9
|
configure(conf: Argv<{}>): void;
|
|
9
10
|
setArguments(args: Record<string, unknown>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-cli.d.ts","sourceRoot":"","sources":["../../src/node/vsx-cli.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"vsx-cli.d.ts","sourceRoot":"","sources":["../../src/node/vsx-cli.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAmB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGvE,qBACa,MAAO,YAAW,eAAe;IAE1C,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAEhC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAUzB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAenE"}
|
package/lib/node/vsx-cli.js
CHANGED
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.VsxCli = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
|
+
const ovsx_client_1 = require("@theia/ovsx-client");
|
|
21
22
|
const fs = require("fs");
|
|
22
23
|
let VsxCli = class VsxCli {
|
|
23
24
|
constructor() {
|
|
@@ -25,6 +26,7 @@ let VsxCli = class VsxCli {
|
|
|
25
26
|
}
|
|
26
27
|
configure(conf) {
|
|
27
28
|
conf.option('ovsx-router-config', { description: 'JSON configuration file for the OVSX router client', type: 'string' });
|
|
29
|
+
conf.option('ovsx-rate-limit', { description: 'Limits the number of requests to OVSX per second', type: 'number', default: ovsx_client_1.OVSX_RATE_LIMIT });
|
|
28
30
|
conf.option('install-plugin', {
|
|
29
31
|
alias: 'install-extension',
|
|
30
32
|
nargs: 1,
|
|
@@ -43,6 +45,8 @@ let VsxCli = class VsxCli {
|
|
|
43
45
|
if (Array.isArray(pluginsToInstall)) {
|
|
44
46
|
this.pluginsToInstall = pluginsToInstall;
|
|
45
47
|
}
|
|
48
|
+
const ovsxRateLimit = args.ovsxRateLimit;
|
|
49
|
+
this.ovsxRateLimit = typeof ovsxRateLimit === 'number' ? ovsxRateLimit : ovsx_client_1.OVSX_RATE_LIMIT;
|
|
46
50
|
}
|
|
47
51
|
};
|
|
48
52
|
exports.VsxCli = VsxCli;
|
package/lib/node/vsx-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-cli.js","sourceRoot":"","sources":["../../src/node/vsx-cli.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAA0D;
|
|
1
|
+
{"version":3,"file":"vsx-cli.js","sourceRoot":"","sources":["../../src/node/vsx-cli.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAA0D;AAE1D,oDAAuE;AACvE,yBAAyB;AAGlB,IAAM,MAAM,GAAZ,MAAM,MAAM;IAAZ;QAIH,qBAAgB,GAAa,EAAE,CAAC;IA2BpC,CAAC;IAzBG,SAAS,CAAC,IAAc;QACpB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,kDAAkD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6BAAe,EAAE,CAAC,CAAC;QAC9I,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC1B,KAAK,EAAE,mBAAmB;YAC1B,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,2HAA2H;SACpI,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAA6B;QAC5C,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACvC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC7C,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6BAAe,CAAC;IAC7F,CAAC;CACJ,CAAA;AA/BY,wBAAM;iBAAN,MAAM;IADlB,IAAA,sBAAU,GAAE;GACA,MAAM,CA+BlB"}
|
|
@@ -7,6 +7,7 @@ export declare class VSXEnvironmentImpl implements VSXEnvironment {
|
|
|
7
7
|
protected _registryUri: URI;
|
|
8
8
|
protected readonly pluginVscodeCli: PluginVsCodeCliContribution;
|
|
9
9
|
protected vsxCli: VsxCli;
|
|
10
|
+
getRateLimit(): Promise<number>;
|
|
10
11
|
getRegistryUri(): Promise<string>;
|
|
11
12
|
getRegistryApiUri(): Promise<string>;
|
|
12
13
|
getVscodeApiVersion(): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-environment-impl.d.ts","sourceRoot":"","sources":["../../src/node/vsx-environment-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,qBACa,kBAAmB,YAAW,cAAc;IAErD,SAAS,CAAC,YAAY,MAA8E;IAGpG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAGhE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEnB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAGrE"}
|
|
1
|
+
{"version":3,"file":"vsx-environment-impl.d.ts","sourceRoot":"","sources":["../../src/node/vsx-environment-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,qBACa,kBAAmB,YAAW,cAAc;IAErD,SAAS,CAAC,YAAY,MAA8E;IAGpG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAGhE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEnB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAGrE"}
|
|
@@ -26,6 +26,9 @@ let VSXEnvironmentImpl = class VSXEnvironmentImpl {
|
|
|
26
26
|
var _a;
|
|
27
27
|
this._registryUri = new uri_1.default(((_a = process.env['VSX_REGISTRY_URL']) === null || _a === void 0 ? void 0 : _a.trim()) || 'https://open-vsx.org');
|
|
28
28
|
}
|
|
29
|
+
async getRateLimit() {
|
|
30
|
+
return this.vsxCli.ovsxRateLimit;
|
|
31
|
+
}
|
|
29
32
|
async getRegistryUri() {
|
|
30
33
|
return this._registryUri.toString(true);
|
|
31
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-environment-impl.js","sourceRoot":"","sources":["../../src/node/vsx-environment-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,oDAA6C;AAC7C,4DAAkE;AAElE,qHAA+G;AAE/G,uCAAmC;AAG5B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;;QAEO,iBAAY,GAAG,IAAI,aAAG,CAAC,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,0CAAE,IAAI,EAAE,KAAI,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"vsx-environment-impl.js","sourceRoot":"","sources":["../../src/node/vsx-environment-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,oDAA6C;AAC7C,4DAAkE;AAElE,qHAA+G;AAE/G,uCAAmC;AAG5B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;;QAEO,iBAAY,GAAG,IAAI,aAAG,CAAC,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,0CAAE,IAAI,EAAE,KAAI,sBAAsB,CAAC,CAAC;IA2BxG,CAAC;IAnBG,KAAK,CAAC,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACxC,CAAC;CACJ,CAAA;AA7BY,gDAAkB;AAKR;IADlB,IAAA,kBAAM,EAAC,4DAA2B,CAAC;sCACA,4DAA2B;2DAAC;AAGtD;IADT,IAAA,kBAAM,EAAC,gBAAM,CAAC;sCACG,gBAAM;kDAAC;6BARhB,kBAAkB;IAD9B,IAAA,sBAAU,GAAE;GACA,kBAAkB,CA6B9B"}
|
|
@@ -44,7 +44,7 @@ let VSXExtensionResolver = VSXExtensionResolver_1 = class VSXExtensionResolver {
|
|
|
44
44
|
const filter = await this.vsxApiFilter();
|
|
45
45
|
const version = (options === null || options === void 0 ? void 0 : options.version) || id.version;
|
|
46
46
|
if (version) {
|
|
47
|
-
console.log(`[${id}]: trying to resolve version ${version}...`);
|
|
47
|
+
console.log(`[${id.id}]: trying to resolve version ${version}...`);
|
|
48
48
|
extension = await filter.findLatestCompatibleExtension({
|
|
49
49
|
extensionId: id.id,
|
|
50
50
|
extensionVersion: version,
|
|
@@ -53,7 +53,7 @@ let VSXExtensionResolver = VSXExtensionResolver_1 = class VSXExtensionResolver {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
|
-
console.log(`[${id}]: trying to resolve latest version...`);
|
|
56
|
+
console.log(`[${id.id}]: trying to resolve latest version...`);
|
|
57
57
|
extension = await filter.findLatestCompatibleExtension({
|
|
58
58
|
extensionId: id.id,
|
|
59
59
|
includeAllVersions: true,
|
|
@@ -72,7 +72,7 @@ let VSXExtensionResolver = VSXExtensionResolver_1 = class VSXExtensionResolver {
|
|
|
72
72
|
if (!(options === null || options === void 0 ? void 0 : options.ignoreOtherVersions)) {
|
|
73
73
|
const existingVersion = this.hasSameOrNewerVersion(id.id, extension);
|
|
74
74
|
if (existingVersion) {
|
|
75
|
-
console.log(`[${id}]: is already installed with the same or newer version '${existingVersion}'`);
|
|
75
|
+
console.log(`[${id.id}]: is already installed with the same or newer version '${existingVersion}'`);
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsx-extension-resolver.js","sourceRoot":"","sources":["../../src/node/vsx-extension-resolver.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;;AAEhF,6BAA6B;AAC7B,iCAAiC;AACjC,kDAAkD;AAClD,4DAAkE;AAClE,oDAA6C;AAC7C,kFAAoL;AACpL,+CAA+C;AAC/C,6FAA2F;AAC3F,yEAAoE;AACpE,oDAA+F;AAC/F,+DAAmE;AACnE,6GAAwG;AACxG,iHAA4G;AAGrG,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAS7B,MAAM,CAAC,QAAgB;QACnB,OAAO,CAAC,CAAC,sCAAkB,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAKD,KAAK,CAAC,OAAO,CAAC,OAAsC,EAAE,OAA6B;QAC/E,MAAM,EAAE,GAAG,sCAAkB,CAAC,IAAI,CAAC,IAAI,aAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,OAAO;QACX,CAAC;QACD,IAAI,SAAsC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,EAAE,CAAC,OAAO,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,gCAAgC,OAAO,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"vsx-extension-resolver.js","sourceRoot":"","sources":["../../src/node/vsx-extension-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/vsx-registry",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.53.0-next.18+c3ffc5fa8",
|
|
4
4
|
"description": "Theia - VSX Registry",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.
|
|
7
|
-
"@theia/filesystem": "1.
|
|
8
|
-
"@theia/navigator": "1.
|
|
9
|
-
"@theia/ovsx-client": "1.
|
|
10
|
-
"@theia/plugin-ext": "1.
|
|
11
|
-
"@theia/plugin-ext-vscode": "1.
|
|
12
|
-
"@theia/preferences": "1.
|
|
13
|
-
"@theia/workspace": "1.
|
|
6
|
+
"@theia/core": "1.53.0-next.18+c3ffc5fa8",
|
|
7
|
+
"@theia/filesystem": "1.53.0-next.18+c3ffc5fa8",
|
|
8
|
+
"@theia/navigator": "1.53.0-next.18+c3ffc5fa8",
|
|
9
|
+
"@theia/ovsx-client": "1.53.0-next.18+c3ffc5fa8",
|
|
10
|
+
"@theia/plugin-ext": "1.53.0-next.18+c3ffc5fa8",
|
|
11
|
+
"@theia/plugin-ext-vscode": "1.53.0-next.18+c3ffc5fa8",
|
|
12
|
+
"@theia/preferences": "1.53.0-next.18+c3ffc5fa8",
|
|
13
|
+
"@theia/workspace": "1.53.0-next.18+c3ffc5fa8",
|
|
14
|
+
"limiter": "^2.1.0",
|
|
14
15
|
"luxon": "^2.4.0",
|
|
15
16
|
"p-debounce": "^2.1.0",
|
|
16
17
|
"semver": "^7.5.4",
|
|
@@ -60,5 +61,5 @@
|
|
|
60
61
|
"nyc": {
|
|
61
62
|
"extends": "../../configs/nyc.json"
|
|
62
63
|
},
|
|
63
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "c3ffc5fa81879943e3b3ad3caec3738ed2d0e5f9"
|
|
64
65
|
}
|
|
@@ -20,6 +20,7 @@ export const VSX_ENVIRONMENT_PATH = '/services/vsx-environment';
|
|
|
20
20
|
|
|
21
21
|
export const VSXEnvironment = Symbol('VSXEnvironment');
|
|
22
22
|
export interface VSXEnvironment {
|
|
23
|
+
getRateLimit(): Promise<number>;
|
|
23
24
|
getRegistryUri(): Promise<string>;
|
|
24
25
|
getRegistryApiUri(): Promise<string>;
|
|
25
26
|
getVscodeApiVersion(): Promise<string>;
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
ExtensionIdMatchesFilterFactory, OVSXApiFilter, OVSXApiFilterImpl, OVSXApiFilterProvider, OVSXClient, OVSXHttpClient, OVSXRouterClient, RequestContainsFilterFactory
|
|
22
22
|
} from '@theia/ovsx-client';
|
|
23
23
|
import { VSXEnvironment } from './vsx-environment';
|
|
24
|
+
import { RateLimiter } from 'limiter';
|
|
24
25
|
|
|
25
26
|
export default new ContainerModule(bind => {
|
|
26
27
|
bind(OVSXUrlResolver)
|
|
@@ -34,10 +35,15 @@ export default new ContainerModule(bind => {
|
|
|
34
35
|
.all([
|
|
35
36
|
vsxEnvironment.getRegistryApiUri(),
|
|
36
37
|
vsxEnvironment.getOvsxRouterConfig?.(),
|
|
38
|
+
vsxEnvironment.getRateLimit()
|
|
37
39
|
])
|
|
38
|
-
.then<OVSXClient>(async ([apiUrl, ovsxRouterConfig]) => {
|
|
40
|
+
.then<OVSXClient>(async ([apiUrl, ovsxRouterConfig, rateLimit]) => {
|
|
41
|
+
const rateLimiter = new RateLimiter({
|
|
42
|
+
interval: 'second',
|
|
43
|
+
tokensPerInterval: rateLimit
|
|
44
|
+
});
|
|
39
45
|
if (ovsxRouterConfig) {
|
|
40
|
-
const clientFactory = OVSXHttpClient.createClientFactory(requestService);
|
|
46
|
+
const clientFactory = OVSXHttpClient.createClientFactory(requestService, rateLimiter);
|
|
41
47
|
return OVSXRouterClient.FromConfig(
|
|
42
48
|
ovsxRouterConfig,
|
|
43
49
|
async url => clientFactory(await urlResolver(url)),
|
|
@@ -46,7 +52,8 @@ export default new ContainerModule(bind => {
|
|
|
46
52
|
}
|
|
47
53
|
return new OVSXHttpClient(
|
|
48
54
|
await urlResolver(apiUrl),
|
|
49
|
-
requestService
|
|
55
|
+
requestService,
|
|
56
|
+
rateLimiter
|
|
50
57
|
);
|
|
51
58
|
});
|
|
52
59
|
// reuse the promise for subsequent calls to this provider
|
package/src/node/vsx-cli.ts
CHANGED
|
@@ -17,17 +17,19 @@
|
|
|
17
17
|
import { CliContribution } from '@theia/core/lib/node';
|
|
18
18
|
import { injectable } from '@theia/core/shared/inversify';
|
|
19
19
|
import { Argv } from '@theia/core/shared/yargs';
|
|
20
|
-
import { OVSXRouterConfig } from '@theia/ovsx-client';
|
|
20
|
+
import { OVSX_RATE_LIMIT, OVSXRouterConfig } from '@theia/ovsx-client';
|
|
21
21
|
import * as fs from 'fs';
|
|
22
22
|
|
|
23
23
|
@injectable()
|
|
24
24
|
export class VsxCli implements CliContribution {
|
|
25
25
|
|
|
26
26
|
ovsxRouterConfig: OVSXRouterConfig | undefined;
|
|
27
|
+
ovsxRateLimit: number;
|
|
27
28
|
pluginsToInstall: string[] = [];
|
|
28
29
|
|
|
29
30
|
configure(conf: Argv<{}>): void {
|
|
30
31
|
conf.option('ovsx-router-config', { description: 'JSON configuration file for the OVSX router client', type: 'string' });
|
|
32
|
+
conf.option('ovsx-rate-limit', { description: 'Limits the number of requests to OVSX per second', type: 'number', default: OVSX_RATE_LIMIT });
|
|
31
33
|
conf.option('install-plugin', {
|
|
32
34
|
alias: 'install-extension',
|
|
33
35
|
nargs: 1,
|
|
@@ -47,5 +49,7 @@ export class VsxCli implements CliContribution {
|
|
|
47
49
|
if (Array.isArray(pluginsToInstall)) {
|
|
48
50
|
this.pluginsToInstall = pluginsToInstall;
|
|
49
51
|
}
|
|
52
|
+
const ovsxRateLimit = args.ovsxRateLimit;
|
|
53
|
+
this.ovsxRateLimit = typeof ovsxRateLimit === 'number' ? ovsxRateLimit : OVSX_RATE_LIMIT;
|
|
50
54
|
}
|
|
51
55
|
}
|
|
@@ -32,6 +32,10 @@ export class VSXEnvironmentImpl implements VSXEnvironment {
|
|
|
32
32
|
@inject(VsxCli)
|
|
33
33
|
protected vsxCli: VsxCli;
|
|
34
34
|
|
|
35
|
+
async getRateLimit(): Promise<number> {
|
|
36
|
+
return this.vsxCli.ovsxRateLimit;
|
|
37
|
+
}
|
|
38
|
+
|
|
35
39
|
async getRegistryUri(): Promise<string> {
|
|
36
40
|
return this._registryUri.toString(true);
|
|
37
41
|
}
|
|
@@ -54,7 +54,7 @@ export class VSXExtensionResolver implements PluginDeployerResolver {
|
|
|
54
54
|
const filter = await this.vsxApiFilter();
|
|
55
55
|
const version = options?.version || id.version;
|
|
56
56
|
if (version) {
|
|
57
|
-
console.log(`[${id}]: trying to resolve version ${version}...`);
|
|
57
|
+
console.log(`[${id.id}]: trying to resolve version ${version}...`);
|
|
58
58
|
extension = await filter.findLatestCompatibleExtension({
|
|
59
59
|
extensionId: id.id,
|
|
60
60
|
extensionVersion: version,
|
|
@@ -62,7 +62,7 @@ export class VSXExtensionResolver implements PluginDeployerResolver {
|
|
|
62
62
|
targetPlatform: VSXExtensionResolver.TARGET_PLATFORM
|
|
63
63
|
});
|
|
64
64
|
} else {
|
|
65
|
-
console.log(`[${id}]: trying to resolve latest version...`);
|
|
65
|
+
console.log(`[${id.id}]: trying to resolve latest version...`);
|
|
66
66
|
extension = await filter.findLatestCompatibleExtension({
|
|
67
67
|
extensionId: id.id,
|
|
68
68
|
includeAllVersions: true,
|
|
@@ -82,7 +82,7 @@ export class VSXExtensionResolver implements PluginDeployerResolver {
|
|
|
82
82
|
if (!options?.ignoreOtherVersions) {
|
|
83
83
|
const existingVersion = this.hasSameOrNewerVersion(id.id, extension);
|
|
84
84
|
if (existingVersion) {
|
|
85
|
-
console.log(`[${id}]: is already installed with the same or newer version '${existingVersion}'`);
|
|
85
|
+
console.log(`[${id.id}]: is already installed with the same or newer version '${existingVersion}'`);
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
88
|
}
|