@theia/ovsx-client 1.53.0-next.4 → 1.53.0-next.55
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 +61 -61
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/ovsx-api-filter.d.ts.map +1 -1
- package/lib/ovsx-api-filter.js +4 -1
- package/lib/ovsx-api-filter.js.map +1 -1
- package/lib/ovsx-http-client.d.ts +5 -2
- package/lib/ovsx-http-client.d.ts.map +1 -1
- package/lib/ovsx-http-client.js +26 -8
- package/lib/ovsx-http-client.js.map +1 -1
- package/package.json +4 -3
- package/src/index.ts +22 -22
- package/src/ovsx-api-filter.ts +140 -137
- package/src/ovsx-http-client.ts +89 -70
- package/src/ovsx-mock-client.ts +187 -187
- package/src/ovsx-router-client.spec-data.ts +68 -68
- package/src/ovsx-router-client.spec.ts +126 -126
- package/src/ovsx-router-client.ts +253 -253
- package/src/ovsx-router-filters/abstract-reg-exp-filter.ts +26 -26
- package/src/ovsx-router-filters/extension-id-matches-filter.ts +32 -32
- package/src/ovsx-router-filters/index.ts +18 -18
- package/src/ovsx-router-filters/request-contains-filter.ts +35 -35
- package/src/ovsx-types.ts +309 -309
- package/src/types.ts +17 -17
package/README.md
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
<div align='center'>
|
|
2
|
-
|
|
3
|
-
<br />
|
|
4
|
-
|
|
5
|
-
<img src='https://raw.githubusercontent.com/eclipse-theia/theia/master/logo/theia.svg?sanitize=true' alt='theia-ext-logo' width='100px' />
|
|
6
|
-
|
|
7
|
-
<h2>ECLIPSE THEIA - OVSX CLIENT</h2>
|
|
8
|
-
|
|
9
|
-
<hr />
|
|
10
|
-
|
|
11
|
-
</div>
|
|
12
|
-
|
|
13
|
-
## Description
|
|
14
|
-
|
|
15
|
-
The `@theia/ovsx-client` package is used to interact with `open-vsx` through its REST APIs.
|
|
16
|
-
The package allows clients to fetch extensions and their metadata, search the registry, and
|
|
17
|
-
includes the necessary logic to determine compatibility based on a provided supported API version.
|
|
18
|
-
|
|
19
|
-
Note that this client only supports a subset of the whole OpenVSX API, only what's relevant to
|
|
20
|
-
clients like Theia applications.
|
|
21
|
-
|
|
22
|
-
### `OVSXRouterClient`
|
|
23
|
-
|
|
24
|
-
This class is an `OVSXClient` that can delegate requests to sub-clients based on some configuration (`OVSXRouterConfig`).
|
|
25
|
-
|
|
26
|
-
```jsonc
|
|
27
|
-
{
|
|
28
|
-
"registries": {
|
|
29
|
-
// `[Alias]: URL` pairs to avoid copy pasting URLs down the config
|
|
30
|
-
},
|
|
31
|
-
"use": [
|
|
32
|
-
// List of aliases/URLs to use when no filtering was applied.
|
|
33
|
-
],
|
|
34
|
-
"rules": [
|
|
35
|
-
{
|
|
36
|
-
"ifRequestContains": "regex matched against various fields in requests",
|
|
37
|
-
"ifExtensionIdMatches": "regex matched against the extension id (without version)",
|
|
38
|
-
"use": [/*
|
|
39
|
-
List of registries to forward the request to when all the
|
|
40
|
-
conditions are matched.
|
|
41
|
-
|
|
42
|
-
`null` or `[]` means to not forward the request anywhere.
|
|
43
|
-
*/]
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Additional Information
|
|
50
|
-
|
|
51
|
-
- [Theia - GitHub](https://github.com/eclipse-theia/theia)
|
|
52
|
-
- [Theia - Website](https://theia-ide.org/)
|
|
53
|
-
|
|
54
|
-
## License
|
|
55
|
-
|
|
56
|
-
- [Eclipse Public License 2.0](http://www.eclipse.org/legal/epl-2.0/)
|
|
57
|
-
- [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
|
|
58
|
-
|
|
59
|
-
## Trademark
|
|
60
|
-
"Theia" is a trademark of the Eclipse Foundation
|
|
61
|
-
https://www.eclipse.org/theia
|
|
1
|
+
<div align='center'>
|
|
2
|
+
|
|
3
|
+
<br />
|
|
4
|
+
|
|
5
|
+
<img src='https://raw.githubusercontent.com/eclipse-theia/theia/master/logo/theia.svg?sanitize=true' alt='theia-ext-logo' width='100px' />
|
|
6
|
+
|
|
7
|
+
<h2>ECLIPSE THEIA - OVSX CLIENT</h2>
|
|
8
|
+
|
|
9
|
+
<hr />
|
|
10
|
+
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
## Description
|
|
14
|
+
|
|
15
|
+
The `@theia/ovsx-client` package is used to interact with `open-vsx` through its REST APIs.
|
|
16
|
+
The package allows clients to fetch extensions and their metadata, search the registry, and
|
|
17
|
+
includes the necessary logic to determine compatibility based on a provided supported API version.
|
|
18
|
+
|
|
19
|
+
Note that this client only supports a subset of the whole OpenVSX API, only what's relevant to
|
|
20
|
+
clients like Theia applications.
|
|
21
|
+
|
|
22
|
+
### `OVSXRouterClient`
|
|
23
|
+
|
|
24
|
+
This class is an `OVSXClient` that can delegate requests to sub-clients based on some configuration (`OVSXRouterConfig`).
|
|
25
|
+
|
|
26
|
+
```jsonc
|
|
27
|
+
{
|
|
28
|
+
"registries": {
|
|
29
|
+
// `[Alias]: URL` pairs to avoid copy pasting URLs down the config
|
|
30
|
+
},
|
|
31
|
+
"use": [
|
|
32
|
+
// List of aliases/URLs to use when no filtering was applied.
|
|
33
|
+
],
|
|
34
|
+
"rules": [
|
|
35
|
+
{
|
|
36
|
+
"ifRequestContains": "regex matched against various fields in requests",
|
|
37
|
+
"ifExtensionIdMatches": "regex matched against the extension id (without version)",
|
|
38
|
+
"use": [/*
|
|
39
|
+
List of registries to forward the request to when all the
|
|
40
|
+
conditions are matched.
|
|
41
|
+
|
|
42
|
+
`null` or `[]` means to not forward the request anywhere.
|
|
43
|
+
*/]
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Additional Information
|
|
50
|
+
|
|
51
|
+
- [Theia - GitHub](https://github.com/eclipse-theia/theia)
|
|
52
|
+
- [Theia - Website](https://theia-ide.org/)
|
|
53
|
+
|
|
54
|
+
## License
|
|
55
|
+
|
|
56
|
+
- [Eclipse Public License 2.0](http://www.eclipse.org/legal/epl-2.0/)
|
|
57
|
+
- [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
|
|
58
|
+
|
|
59
|
+
## Trademark
|
|
60
|
+
"Theia" is a trademark of the Eclipse Foundation
|
|
61
|
+
https://www.eclipse.org/theia
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { OVSXApiFilter, OVSXApiFilterImpl, OVSXApiFilterProvider } from './ovsx-api-filter';
|
|
2
|
-
export { OVSXHttpClient } from './ovsx-http-client';
|
|
2
|
+
export { OVSXHttpClient, OVSX_RATE_LIMIT } from './ovsx-http-client';
|
|
3
3
|
export { OVSXMockClient } from './ovsx-mock-client';
|
|
4
4
|
export { OVSXRouterClient, OVSXRouterConfig, OVSXRouterFilterFactory as FilterFactory } from './ovsx-router-client';
|
|
5
5
|
export * from './ovsx-router-filters';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpH,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.OVSXRouterClient = exports.OVSXMockClient = exports.OVSXHttpClient = exports.OVSXApiFilterProvider = exports.OVSXApiFilterImpl = exports.OVSXApiFilter = void 0;
|
|
18
|
+
exports.OVSXRouterClient = exports.OVSXMockClient = exports.OVSX_RATE_LIMIT = exports.OVSXHttpClient = exports.OVSXApiFilterProvider = exports.OVSXApiFilterImpl = exports.OVSXApiFilter = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
var ovsx_api_filter_1 = require("./ovsx-api-filter");
|
|
21
21
|
Object.defineProperty(exports, "OVSXApiFilter", { enumerable: true, get: function () { return ovsx_api_filter_1.OVSXApiFilter; } });
|
|
@@ -23,6 +23,7 @@ Object.defineProperty(exports, "OVSXApiFilterImpl", { enumerable: true, get: fun
|
|
|
23
23
|
Object.defineProperty(exports, "OVSXApiFilterProvider", { enumerable: true, get: function () { return ovsx_api_filter_1.OVSXApiFilterProvider; } });
|
|
24
24
|
var ovsx_http_client_1 = require("./ovsx-http-client");
|
|
25
25
|
Object.defineProperty(exports, "OVSXHttpClient", { enumerable: true, get: function () { return ovsx_http_client_1.OVSXHttpClient; } });
|
|
26
|
+
Object.defineProperty(exports, "OVSX_RATE_LIMIT", { enumerable: true, get: function () { return ovsx_http_client_1.OVSX_RATE_LIMIT; } });
|
|
26
27
|
var ovsx_mock_client_1 = require("./ovsx-mock-client");
|
|
27
28
|
Object.defineProperty(exports, "OVSXMockClient", { enumerable: true, get: function () { return ovsx_mock_client_1.OVSXMockClient; } });
|
|
28
29
|
var ovsx_router_client_1 = require("./ovsx-router-client");
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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,qDAA4F;AAAnF,gHAAA,aAAa,OAAA;AAAE,oHAAA,iBAAiB,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAChE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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,qDAA4F;AAAnF,gHAAA,aAAa,OAAA;AAAE,oHAAA,iBAAiB,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAChE,uDAAqE;AAA5D,kHAAA,cAAc,OAAA;AAAE,mHAAA,eAAe,OAAA;AACxC,uDAAoD;AAA3C,kHAAA,cAAc,OAAA;AACvB,2DAAoH;AAA3G,sHAAA,gBAAgB,OAAA;AACzB,gEAAsC;AACtC,uDAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ovsx-api-filter.d.ts","sourceRoot":"","sources":["../src/ovsx-api-filter.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAwB,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAElI,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAEjE,eAAO,MAAM,aAAa,eAA0B,CAAC;AACrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC5F;;;;;;;OAOG;IACH,4BAA4B,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,SAAS,CAAC;IACzF,0BAA0B,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC;CACvF;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAGxC,MAAM,EAAE,UAAU;IAClB,mBAAmB,EAAE,MAAM;gBAD3B,MAAM,EAAE,UAAU,EAClB,mBAAmB,EAAE,MAAM;IAGhC,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;cAkBjF,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ovsx-api-filter.d.ts","sourceRoot":"","sources":["../src/ovsx-api-filter.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAwB,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAElI,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAEjE,eAAO,MAAM,aAAa,eAA0B,CAAC;AACrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC5F;;;;;;;OAOG;IACH,4BAA4B,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,SAAS,CAAC;IACzF,0BAA0B,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC;CACvF;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAGxC,MAAM,EAAE,UAAU;IAClB,mBAAmB,EAAE,MAAM;gBAD3B,MAAM,EAAE,UAAU,EAClB,mBAAmB,EAAE,MAAM;IAGhC,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;cAkBjF,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAyB5G,4BAA4B,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,GAAG,SAAS;IAUxF,0BAA0B,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS;IAkBnF,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIxD;;OAEG;IACH,SAAS,CAAC,2BAA2B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IASpE,SAAS,CAAC,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;CAGzE"}
|
package/lib/ovsx-api-filter.js
CHANGED
|
@@ -44,12 +44,13 @@ class OVSXApiFilterImpl {
|
|
|
44
44
|
}
|
|
45
45
|
async queryLatestCompatibleExtension(query) {
|
|
46
46
|
let offset = 0;
|
|
47
|
+
let size = 5;
|
|
47
48
|
let loop = true;
|
|
48
49
|
while (loop) {
|
|
49
50
|
const queryOptions = {
|
|
50
51
|
...query,
|
|
51
52
|
offset,
|
|
52
|
-
size
|
|
53
|
+
size // there is a great chance that the newest version will work
|
|
53
54
|
};
|
|
54
55
|
const results = await this.client.query(queryOptions);
|
|
55
56
|
const compatibleExtension = this.getLatestCompatibleExtension(results.extensions);
|
|
@@ -60,6 +61,8 @@ class OVSXApiFilterImpl {
|
|
|
60
61
|
offset += results.extensions.length;
|
|
61
62
|
// Continue querying if there are more extensions available
|
|
62
63
|
loop = results.totalSize > offset;
|
|
64
|
+
// Adjust the size to fetch more extensions next time
|
|
65
|
+
size = Math.min(size * 2, 100);
|
|
63
66
|
}
|
|
64
67
|
return undefined;
|
|
65
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ovsx-api-filter.js","sourceRoot":"","sources":["../src/ovsx-api-filter.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,iCAAiC;AACjC,6CAAkI;AAErH,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAIxD,QAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAmBrD,MAAa,iBAAiB;IAE1B,YACW,MAAkB,EAClB,mBAA2B;QAD3B,WAAM,GAAN,MAAM,CAAY;QAClB,wBAAmB,GAAnB,mBAAmB,CAAQ;IAClC,CAAC;IAEL,KAAK,CAAC,6BAA6B,CAAC,KAAsB;QACtD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;QAClF,IAAI,eAA4C,CAAC;QACjD,IAAI,cAAc,KAAK,WAAW,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YAC7D,oFAAoF;YACpF,eAAe,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,wBAAwB,IAAI,eAAe,EAAE,CAAC;YAC9C,gGAAgG;YAChG,OAAO,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,CAAC;QACpJ,CAAC;QACD,OAAO,wBAAwB,aAAxB,wBAAwB,cAAxB,wBAAwB,GAAI,eAAe,CAAC;IACvD,CAAC;IAES,KAAK,CAAC,8BAA8B,CAAC,KAAsB;QACjE,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,YAAY,GAAoB;gBAClC,GAAG,KAAK;gBACR,MAAM;gBACN,IAAI,
|
|
1
|
+
{"version":3,"file":"ovsx-api-filter.js","sourceRoot":"","sources":["../src/ovsx-api-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { OVSXClient, VSXQueryOptions, VSXQueryResult, VSXSearchOptions, VSXSearchResult } from './ovsx-types';
|
|
2
2
|
import { RequestService } from '@theia/request';
|
|
3
|
+
import { RateLimiter } from 'limiter';
|
|
4
|
+
export declare const OVSX_RATE_LIMIT = 15;
|
|
3
5
|
export declare class OVSXHttpClient implements OVSXClient {
|
|
4
6
|
protected vsxRegistryUrl: string;
|
|
5
7
|
protected requestService: RequestService;
|
|
8
|
+
protected rateLimiter: RateLimiter;
|
|
6
9
|
/**
|
|
7
10
|
* @param requestService
|
|
8
11
|
* @returns factory that will cache clients based on the requested input URL.
|
|
9
12
|
*/
|
|
10
|
-
static createClientFactory(requestService: RequestService): (url: string) => OVSXClient;
|
|
11
|
-
constructor(vsxRegistryUrl: string, requestService: RequestService);
|
|
13
|
+
static createClientFactory(requestService: RequestService, rateLimiter?: RateLimiter): (url: string) => OVSXClient;
|
|
14
|
+
constructor(vsxRegistryUrl: string, requestService: RequestService, rateLimiter?: RateLimiter);
|
|
12
15
|
search(searchOptions?: VSXSearchOptions): Promise<VSXSearchResult>;
|
|
13
16
|
query(queryOptions?: VSXQueryOptions): Promise<VSXQueryResult>;
|
|
14
17
|
protected requestJson<R>(url: string): Promise<R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ovsx-http-client.d.ts","sourceRoot":"","sources":["../src/ovsx-http-client.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAkB,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ovsx-http-client.d.ts","sourceRoot":"","sources":["../src/ovsx-http-client.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAkB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,qBAAa,cAAe,YAAW,UAAU;IAazC,SAAS,CAAC,cAAc,EAAE,MAAM;IAChC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,WAAW;IAbzB;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU;gBAOpG,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,cAAc,EAC9B,WAAW,cAA8E;IAGvG,MAAM,CAAC,aAAa,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIlE,KAAK,CAAC,YAAY,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;cAI9C,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAsBvD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAIvD,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;CAc3D"}
|
package/lib/ovsx-http-client.js
CHANGED
|
@@ -15,21 +15,24 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.OVSXHttpClient = void 0;
|
|
18
|
+
exports.OVSXHttpClient = exports.OVSX_RATE_LIMIT = void 0;
|
|
19
19
|
const request_1 = require("@theia/request");
|
|
20
|
+
const limiter_1 = require("limiter");
|
|
21
|
+
exports.OVSX_RATE_LIMIT = 15;
|
|
20
22
|
class OVSXHttpClient {
|
|
21
23
|
/**
|
|
22
24
|
* @param requestService
|
|
23
25
|
* @returns factory that will cache clients based on the requested input URL.
|
|
24
26
|
*/
|
|
25
|
-
static createClientFactory(requestService) {
|
|
27
|
+
static createClientFactory(requestService, rateLimiter) {
|
|
26
28
|
// eslint-disable-next-line no-null/no-null
|
|
27
29
|
const cachedClients = Object.create(null);
|
|
28
|
-
return url => { var _a; return (_a = cachedClients[url]) !== null && _a !== void 0 ? _a : (cachedClients[url] = new this(url, requestService)); };
|
|
30
|
+
return url => { var _a; return (_a = cachedClients[url]) !== null && _a !== void 0 ? _a : (cachedClients[url] = new this(url, requestService, rateLimiter)); };
|
|
29
31
|
}
|
|
30
|
-
constructor(vsxRegistryUrl, requestService) {
|
|
32
|
+
constructor(vsxRegistryUrl, requestService, rateLimiter = new limiter_1.RateLimiter({ tokensPerInterval: exports.OVSX_RATE_LIMIT, interval: 'second' })) {
|
|
31
33
|
this.vsxRegistryUrl = vsxRegistryUrl;
|
|
32
34
|
this.requestService = requestService;
|
|
35
|
+
this.rateLimiter = rateLimiter;
|
|
33
36
|
}
|
|
34
37
|
search(searchOptions) {
|
|
35
38
|
return this.requestJson(this.buildUrl('api/-/search', searchOptions));
|
|
@@ -38,10 +41,25 @@ class OVSXHttpClient {
|
|
|
38
41
|
return this.requestJson(this.buildUrl('api/v2/-/query', queryOptions));
|
|
39
42
|
}
|
|
40
43
|
async requestJson(url) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const attempts = 5;
|
|
45
|
+
for (let i = 0; i < attempts; i++) {
|
|
46
|
+
// Use 1, 2, 4, 8, 16 tokens for each attempt
|
|
47
|
+
const tokenCount = Math.pow(2, i);
|
|
48
|
+
await this.rateLimiter.removeTokens(tokenCount);
|
|
49
|
+
const context = await this.requestService.request({
|
|
50
|
+
url,
|
|
51
|
+
headers: { 'Accept': 'application/json' }
|
|
52
|
+
});
|
|
53
|
+
if (context.res.statusCode === 429) {
|
|
54
|
+
console.warn('OVSX rate limit exceeded. Consider reducing the rate limit.');
|
|
55
|
+
// If there are still more attempts left, retry the request with a higher token count
|
|
56
|
+
if (i < attempts - 1) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return request_1.RequestContext.asJson(context);
|
|
61
|
+
}
|
|
62
|
+
throw new Error('Failed to fetch data from OVSX.');
|
|
45
63
|
}
|
|
46
64
|
buildUrl(url, query) {
|
|
47
65
|
return new URL(`${url}${this.buildQueryString(query)}`, this.vsxRegistryUrl).toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ovsx-http-client.js","sourceRoot":"","sources":["../src/ovsx-http-client.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,4CAAgE;
|
|
1
|
+
{"version":3,"file":"ovsx-http-client.js","sourceRoot":"","sources":["../src/ovsx-http-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ovsx-client",
|
|
3
|
-
"version": "1.53.0-next.
|
|
3
|
+
"version": "1.53.0-next.55+d1a989a68c",
|
|
4
4
|
"description": "Theia Open-VSX Client",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
"watch": "theiaext watch"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@theia/request": "1.53.0-next.
|
|
32
|
+
"@theia/request": "1.53.0-next.55+d1a989a68c",
|
|
33
|
+
"limiter": "^2.1.0",
|
|
33
34
|
"semver": "^7.5.4",
|
|
34
35
|
"tslib": "^2.6.2"
|
|
35
36
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "d1a989a68c1b5ec1f9098e9126653c6346844769"
|
|
37
38
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 Ericsson and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
export { OVSXApiFilter, OVSXApiFilterImpl, OVSXApiFilterProvider } from './ovsx-api-filter';
|
|
18
|
-
export { OVSXHttpClient } from './ovsx-http-client';
|
|
19
|
-
export { OVSXMockClient } from './ovsx-mock-client';
|
|
20
|
-
export { OVSXRouterClient, OVSXRouterConfig, OVSXRouterFilterFactory as FilterFactory } from './ovsx-router-client';
|
|
21
|
-
export * from './ovsx-router-filters';
|
|
22
|
-
export * from './ovsx-types';
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 Ericsson and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
export { OVSXApiFilter, OVSXApiFilterImpl, OVSXApiFilterProvider } from './ovsx-api-filter';
|
|
18
|
+
export { OVSXHttpClient, OVSX_RATE_LIMIT } from './ovsx-http-client';
|
|
19
|
+
export { OVSXMockClient } from './ovsx-mock-client';
|
|
20
|
+
export { OVSXRouterClient, OVSXRouterConfig, OVSXRouterFilterFactory as FilterFactory } from './ovsx-router-client';
|
|
21
|
+
export * from './ovsx-router-filters';
|
|
22
|
+
export * from './ovsx-types';
|