@theia/ovsx-client 1.67.0-next.56 → 1.67.0-next.59
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/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +33 -0
- package/lib/index.js.map +1 -0
- package/lib/ovsx-api-filter.d.ts +37 -0
- package/lib/ovsx-api-filter.d.ts.map +1 -0
- package/lib/ovsx-api-filter.js +117 -0
- package/lib/ovsx-api-filter.js.map +1 -0
- package/lib/ovsx-http-client.d.ts +21 -0
- package/lib/ovsx-http-client.d.ts.map +1 -0
- package/lib/ovsx-http-client.js +84 -0
- package/lib/ovsx-http-client.js.map +1 -0
- package/lib/ovsx-router-client.d.ts +69 -0
- package/lib/ovsx-router-client.d.ts.map +1 -0
- package/lib/ovsx-router-client.js +175 -0
- package/lib/ovsx-router-client.js.map +1 -0
- package/lib/ovsx-router-client.spec.d.ts +2 -0
- package/lib/ovsx-router-client.spec.d.ts.map +1 -0
- package/lib/ovsx-router-client.spec.js +108 -0
- package/lib/ovsx-router-client.spec.js.map +1 -0
- package/lib/ovsx-router-filters/abstract-reg-exp-filter.d.ts +6 -0
- package/lib/ovsx-router-filters/abstract-reg-exp-filter.d.ts.map +1 -0
- package/lib/ovsx-router-filters/abstract-reg-exp-filter.js +28 -0
- package/lib/ovsx-router-filters/abstract-reg-exp-filter.js.map +1 -0
- package/lib/ovsx-router-filters/extension-id-matches-filter.d.ts +8 -0
- package/lib/ovsx-router-filters/extension-id-matches-filter.d.ts.map +1 -0
- package/lib/ovsx-router-filters/extension-id-matches-filter.js +34 -0
- package/lib/ovsx-router-filters/extension-id-matches-filter.js.map +1 -0
- package/lib/ovsx-router-filters/index.d.ts +3 -0
- package/lib/ovsx-router-filters/index.d.ts.map +1 -0
- package/lib/ovsx-router-filters/index.js +23 -0
- package/lib/ovsx-router-filters/index.js.map +1 -0
- package/lib/ovsx-router-filters/request-contains-filter.d.ts +9 -0
- package/lib/ovsx-router-filters/request-contains-filter.d.ts.map +1 -0
- package/lib/ovsx-router-filters/request-contains-filter.js +36 -0
- package/lib/ovsx-router-filters/request-contains-filter.js.map +1 -0
- package/lib/ovsx-types.d.ts +245 -0
- package/lib/ovsx-types.d.ts.map +1 -0
- package/lib/ovsx-types.js +75 -0
- package/lib/ovsx-types.js.map +1 -0
- package/lib/test/ovsx-mock-client.d.ts +44 -0
- package/lib/test/ovsx-mock-client.d.ts.map +1 -0
- package/lib/test/ovsx-mock-client.js +174 -0
- package/lib/test/ovsx-mock-client.js.map +1 -0
- package/lib/test/ovsx-router-client.spec-data.d.ts +11 -0
- package/lib/test/ovsx-router-client.spec-data.d.ts.map +1 -0
- package/lib/test/ovsx-router-client.spec-data.js +67 -0
- package/lib/test/ovsx-router-client.spec-data.js.map +1 -0
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +18 -0
- package/lib/types.js.map +1 -0
- package/package.json +3 -3
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { OVSXApiFilter, OVSXApiFilterImpl, OVSXApiFilterProvider } from './ovsx-api-filter';
|
|
2
|
+
export { OVSXHttpClient, OVSX_RATE_LIMIT } from './ovsx-http-client';
|
|
3
|
+
export { OVSXMockClient } from './test/ovsx-mock-client';
|
|
4
|
+
export { OVSXRouterClient, OVSXRouterConfig, OVSXRouterFilterFactory as FilterFactory } from './ovsx-router-client';
|
|
5
|
+
export * from './ovsx-router-filters';
|
|
6
|
+
export * from './ovsx-types';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,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
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2021 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.OVSXRouterClient = exports.OVSXMockClient = exports.OVSX_RATE_LIMIT = exports.OVSXHttpClient = exports.OVSXApiFilterProvider = exports.OVSXApiFilterImpl = exports.OVSXApiFilter = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
var ovsx_api_filter_1 = require("./ovsx-api-filter");
|
|
21
|
+
Object.defineProperty(exports, "OVSXApiFilter", { enumerable: true, get: function () { return ovsx_api_filter_1.OVSXApiFilter; } });
|
|
22
|
+
Object.defineProperty(exports, "OVSXApiFilterImpl", { enumerable: true, get: function () { return ovsx_api_filter_1.OVSXApiFilterImpl; } });
|
|
23
|
+
Object.defineProperty(exports, "OVSXApiFilterProvider", { enumerable: true, get: function () { return ovsx_api_filter_1.OVSXApiFilterProvider; } });
|
|
24
|
+
var ovsx_http_client_1 = require("./ovsx-http-client");
|
|
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; } });
|
|
27
|
+
var ovsx_mock_client_1 = require("./test/ovsx-mock-client");
|
|
28
|
+
Object.defineProperty(exports, "OVSXMockClient", { enumerable: true, get: function () { return ovsx_mock_client_1.OVSXMockClient; } });
|
|
29
|
+
var ovsx_router_client_1 = require("./ovsx-router-client");
|
|
30
|
+
Object.defineProperty(exports, "OVSXRouterClient", { enumerable: true, get: function () { return ovsx_router_client_1.OVSXRouterClient; } });
|
|
31
|
+
tslib_1.__exportStar(require("./ovsx-router-filters"), exports);
|
|
32
|
+
tslib_1.__exportStar(require("./ovsx-types"), exports);
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +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,uDAAqE;AAA5D,kHAAA,cAAc,OAAA;AAAE,mHAAA,eAAe,OAAA;AACxC,4DAAyD;AAAhD,kHAAA,cAAc,OAAA;AACvB,2DAAoH;AAA3G,sHAAA,gBAAgB,OAAA;AACzB,gEAAsC;AACtC,uDAA6B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { OVSXClient, VSXAllVersions, VSXExtensionRaw, VSXQueryOptions, VSXSearchEntry } from './ovsx-types';
|
|
2
|
+
export declare const OVSXApiFilterProvider: unique symbol;
|
|
3
|
+
export type OVSXApiFilterProvider = () => Promise<OVSXApiFilter>;
|
|
4
|
+
export declare const OVSXApiFilter: unique symbol;
|
|
5
|
+
/**
|
|
6
|
+
* Filter various data types based on a pre-defined supported VS Code API version.
|
|
7
|
+
*/
|
|
8
|
+
export interface OVSXApiFilter {
|
|
9
|
+
supportedApiVersion: string;
|
|
10
|
+
findLatestCompatibleExtension(query: VSXQueryOptions): Promise<VSXExtensionRaw | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* Get the latest compatible extension version:
|
|
13
|
+
* - A builtin extension is fetched based on the extension version which matches the API.
|
|
14
|
+
* - An extension satisfies compatibility if its `engines.vscode` version is supported.
|
|
15
|
+
*
|
|
16
|
+
* @param extensionId the extension id.
|
|
17
|
+
* @returns the data for the latest compatible extension version if available, else `undefined`.
|
|
18
|
+
*/
|
|
19
|
+
getLatestCompatibleExtension(extensions: VSXExtensionRaw[]): VSXExtensionRaw | undefined;
|
|
20
|
+
getLatestCompatibleVersion(searchEntry: VSXSearchEntry): VSXAllVersions | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare class OVSXApiFilterImpl implements OVSXApiFilter {
|
|
23
|
+
client: OVSXClient;
|
|
24
|
+
supportedApiVersion: string;
|
|
25
|
+
constructor(client: OVSXClient, supportedApiVersion: string);
|
|
26
|
+
findLatestCompatibleExtension(query: VSXQueryOptions): Promise<VSXExtensionRaw | undefined>;
|
|
27
|
+
protected queryLatestCompatibleExtension(query: VSXQueryOptions): Promise<VSXExtensionRaw | undefined>;
|
|
28
|
+
getLatestCompatibleExtension(extensions: VSXExtensionRaw[]): VSXExtensionRaw | undefined;
|
|
29
|
+
getLatestCompatibleVersion(searchEntry: VSXSearchEntry): VSXAllVersions | undefined;
|
|
30
|
+
protected isBuiltinNamespace(namespace: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* @returns `a >= b`
|
|
33
|
+
*/
|
|
34
|
+
protected versionGreaterThanOrEqualTo(a: string, b: string): boolean;
|
|
35
|
+
protected supportedVscodeApiSatisfies(vscodeApiRange: string): boolean;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ovsx-api-filter.d.ts.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2023 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.OVSXApiFilterImpl = exports.OVSXApiFilter = exports.OVSXApiFilterProvider = void 0;
|
|
19
|
+
const semver = require("semver");
|
|
20
|
+
const ovsx_types_1 = require("./ovsx-types");
|
|
21
|
+
exports.OVSXApiFilterProvider = Symbol('OVSXApiFilterProvider');
|
|
22
|
+
exports.OVSXApiFilter = Symbol('OVSXApiFilter');
|
|
23
|
+
class OVSXApiFilterImpl {
|
|
24
|
+
constructor(client, supportedApiVersion) {
|
|
25
|
+
this.client = client;
|
|
26
|
+
this.supportedApiVersion = supportedApiVersion;
|
|
27
|
+
}
|
|
28
|
+
async findLatestCompatibleExtension(query) {
|
|
29
|
+
const targetPlatform = query.targetPlatform;
|
|
30
|
+
if (!targetPlatform) {
|
|
31
|
+
return this.queryLatestCompatibleExtension(query);
|
|
32
|
+
}
|
|
33
|
+
const latestWithTargetPlatform = await this.queryLatestCompatibleExtension(query);
|
|
34
|
+
let latestUniversal;
|
|
35
|
+
if (targetPlatform !== 'universal' && targetPlatform !== 'web') {
|
|
36
|
+
// Additionally query the universal version, as there might be a newer one available
|
|
37
|
+
latestUniversal = await this.queryLatestCompatibleExtension({ ...query, targetPlatform: 'universal' });
|
|
38
|
+
}
|
|
39
|
+
if (latestWithTargetPlatform && latestUniversal) {
|
|
40
|
+
// Prefer the version with the target platform if it's greater or equal to the universal version
|
|
41
|
+
return this.versionGreaterThanOrEqualTo(latestWithTargetPlatform.version, latestUniversal.version) ? latestWithTargetPlatform : latestUniversal;
|
|
42
|
+
}
|
|
43
|
+
return latestWithTargetPlatform !== null && latestWithTargetPlatform !== void 0 ? latestWithTargetPlatform : latestUniversal;
|
|
44
|
+
}
|
|
45
|
+
async queryLatestCompatibleExtension(query) {
|
|
46
|
+
let offset = 0;
|
|
47
|
+
let size = 5;
|
|
48
|
+
let loop = true;
|
|
49
|
+
while (loop) {
|
|
50
|
+
const queryOptions = {
|
|
51
|
+
...query,
|
|
52
|
+
offset,
|
|
53
|
+
size // there is a great chance that the newest version will work
|
|
54
|
+
};
|
|
55
|
+
const results = await this.client.query(queryOptions);
|
|
56
|
+
const compatibleExtension = this.getLatestCompatibleExtension(results.extensions);
|
|
57
|
+
if (compatibleExtension) {
|
|
58
|
+
return compatibleExtension;
|
|
59
|
+
}
|
|
60
|
+
// Adjust offset by the amount of returned extensions
|
|
61
|
+
offset += results.extensions.length;
|
|
62
|
+
// Continue querying if there are more extensions available
|
|
63
|
+
loop = results.totalSize > offset;
|
|
64
|
+
// Adjust the size to fetch more extensions next time
|
|
65
|
+
size = Math.min(size * 2, 100);
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
getLatestCompatibleExtension(extensions) {
|
|
70
|
+
if (extensions.length === 0) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
else if (this.isBuiltinNamespace(extensions[0].namespace.toLowerCase())) {
|
|
74
|
+
return extensions.find(extension => this.versionGreaterThanOrEqualTo(this.supportedApiVersion, extension.version));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return extensions.find(extension => { var _a, _b; return this.supportedVscodeApiSatisfies((_b = (_a = extension.engines) === null || _a === void 0 ? void 0 : _a.vscode) !== null && _b !== void 0 ? _b : '*'); });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
getLatestCompatibleVersion(searchEntry) {
|
|
81
|
+
function getLatestCompatibleVersion(predicate) {
|
|
82
|
+
if (searchEntry.allVersions) {
|
|
83
|
+
return searchEntry.allVersions.find(predicate);
|
|
84
|
+
}
|
|
85
|
+
// If the allVersions field is missing then try to use the
|
|
86
|
+
// searchEntry as VSXAllVersions and check if it's compatible:
|
|
87
|
+
if (predicate(searchEntry)) {
|
|
88
|
+
return searchEntry;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (this.isBuiltinNamespace(searchEntry.namespace)) {
|
|
92
|
+
return getLatestCompatibleVersion(allVersions => this.versionGreaterThanOrEqualTo(this.supportedApiVersion, allVersions.version));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return getLatestCompatibleVersion(allVersions => { var _a, _b; return this.supportedVscodeApiSatisfies((_b = (_a = allVersions.engines) === null || _a === void 0 ? void 0 : _a.vscode) !== null && _b !== void 0 ? _b : '*'); });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
isBuiltinNamespace(namespace) {
|
|
99
|
+
return ovsx_types_1.VSXBuiltinNamespaces.is(namespace);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @returns `a >= b`
|
|
103
|
+
*/
|
|
104
|
+
versionGreaterThanOrEqualTo(a, b) {
|
|
105
|
+
const versionA = semver.clean(a);
|
|
106
|
+
const versionB = semver.clean(b);
|
|
107
|
+
if (!versionA || !versionB) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return semver.gte(versionA, versionB);
|
|
111
|
+
}
|
|
112
|
+
supportedVscodeApiSatisfies(vscodeApiRange) {
|
|
113
|
+
return semver.satisfies(this.supportedApiVersion, vscodeApiRange);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.OVSXApiFilterImpl = OVSXApiFilterImpl;
|
|
117
|
+
//# sourceMappingURL=ovsx-api-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ovsx-api-filter.js","sourceRoot":"","sources":["../src/ovsx-api-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { OVSXClient, VSXQueryOptions, VSXQueryResult, VSXSearchOptions, VSXSearchResult } from './ovsx-types';
|
|
2
|
+
import { RequestService } from '@theia/request';
|
|
3
|
+
import { RateLimiter } from 'limiter';
|
|
4
|
+
export declare const OVSX_RATE_LIMIT = 15;
|
|
5
|
+
export declare class OVSXHttpClient implements OVSXClient {
|
|
6
|
+
protected vsxRegistryUrl: string;
|
|
7
|
+
protected requestService: RequestService;
|
|
8
|
+
protected rateLimiter: RateLimiter;
|
|
9
|
+
/**
|
|
10
|
+
* @param requestService
|
|
11
|
+
* @returns factory that will cache clients based on the requested input URL.
|
|
12
|
+
*/
|
|
13
|
+
static createClientFactory(requestService: RequestService, rateLimiter?: RateLimiter): (url: string) => OVSXClient;
|
|
14
|
+
constructor(vsxRegistryUrl: string, requestService: RequestService, rateLimiter?: RateLimiter);
|
|
15
|
+
search(searchOptions?: VSXSearchOptions): Promise<VSXSearchResult>;
|
|
16
|
+
query(queryOptions?: VSXQueryOptions): Promise<VSXQueryResult>;
|
|
17
|
+
protected requestJson<R>(url: string): Promise<R>;
|
|
18
|
+
protected buildUrl(url: string, query?: object): string;
|
|
19
|
+
protected buildQueryString(searchQuery?: object): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ovsx-http-client.d.ts.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2023 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.OVSXHttpClient = exports.OVSX_RATE_LIMIT = void 0;
|
|
19
|
+
const request_1 = require("@theia/request");
|
|
20
|
+
const limiter_1 = require("limiter");
|
|
21
|
+
exports.OVSX_RATE_LIMIT = 15;
|
|
22
|
+
class OVSXHttpClient {
|
|
23
|
+
/**
|
|
24
|
+
* @param requestService
|
|
25
|
+
* @returns factory that will cache clients based on the requested input URL.
|
|
26
|
+
*/
|
|
27
|
+
static createClientFactory(requestService, rateLimiter) {
|
|
28
|
+
// eslint-disable-next-line no-null/no-null
|
|
29
|
+
const cachedClients = Object.create(null);
|
|
30
|
+
return url => { var _a; return (_a = cachedClients[url]) !== null && _a !== void 0 ? _a : (cachedClients[url] = new this(url, requestService, rateLimiter)); };
|
|
31
|
+
}
|
|
32
|
+
constructor(vsxRegistryUrl, requestService, rateLimiter = new limiter_1.RateLimiter({ tokensPerInterval: exports.OVSX_RATE_LIMIT, interval: 'second' })) {
|
|
33
|
+
this.vsxRegistryUrl = vsxRegistryUrl;
|
|
34
|
+
this.requestService = requestService;
|
|
35
|
+
this.rateLimiter = rateLimiter;
|
|
36
|
+
}
|
|
37
|
+
search(searchOptions) {
|
|
38
|
+
return this.requestJson(this.buildUrl('api/-/search', searchOptions));
|
|
39
|
+
}
|
|
40
|
+
query(queryOptions) {
|
|
41
|
+
return this.requestJson(this.buildUrl('api/v2/-/query', queryOptions));
|
|
42
|
+
}
|
|
43
|
+
async requestJson(url) {
|
|
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.');
|
|
63
|
+
}
|
|
64
|
+
buildUrl(url, query) {
|
|
65
|
+
return new URL(`${url}${this.buildQueryString(query)}`, this.vsxRegistryUrl).toString();
|
|
66
|
+
}
|
|
67
|
+
buildQueryString(searchQuery) {
|
|
68
|
+
if (!searchQuery) {
|
|
69
|
+
return '';
|
|
70
|
+
}
|
|
71
|
+
let queryString = '';
|
|
72
|
+
for (const [key, value] of Object.entries(searchQuery)) {
|
|
73
|
+
if (typeof value === 'string') {
|
|
74
|
+
queryString += `&${key}=${encodeURIComponent(value)}`;
|
|
75
|
+
}
|
|
76
|
+
else if (typeof value === 'boolean' || typeof value === 'number') {
|
|
77
|
+
queryString += `&${key}=${value}`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return queryString && '?' + queryString.slice(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.OVSXHttpClient = OVSXHttpClient;
|
|
84
|
+
//# sourceMappingURL=ovsx-http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ovsx-http-client.js","sourceRoot":"","sources":["../src/ovsx-http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ExtensionLike, OVSXClient, OVSXClientProvider, VSXQueryOptions, VSXQueryResult, VSXSearchOptions, VSXSearchResult } from './ovsx-types';
|
|
2
|
+
import type { MaybePromise } from './types';
|
|
3
|
+
export interface OVSXRouterFilter {
|
|
4
|
+
filterSearchOptions?(searchOptions?: VSXSearchOptions): MaybePromise<unknown>;
|
|
5
|
+
filterQueryOptions?(queryOptions?: VSXQueryOptions): MaybePromise<unknown>;
|
|
6
|
+
filterExtension?(extension: ExtensionLike): MaybePromise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @param conditions key/value mapping of condition statements that rules may process
|
|
10
|
+
* @param remainingKeys keys left to be processed, remove items from it when you handled them
|
|
11
|
+
*/
|
|
12
|
+
export type OVSXRouterFilterFactory = (conditions: Readonly<Record<string, unknown>>, remainingKeys: Set<string>) => MaybePromise<OVSXRouterFilter | undefined>;
|
|
13
|
+
/**
|
|
14
|
+
* Helper function to create factories that handle a single condition key.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createFilterFactory(conditionKey: string, factory: (conditionValue: unknown) => OVSXRouterFilter | undefined): OVSXRouterFilterFactory;
|
|
17
|
+
export interface OVSXRouterConfig {
|
|
18
|
+
/**
|
|
19
|
+
* Registry aliases that will be used for routing.
|
|
20
|
+
*/
|
|
21
|
+
registries?: {
|
|
22
|
+
[alias: string]: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* The registry/ies to use by default.
|
|
26
|
+
*/
|
|
27
|
+
use: string | string[];
|
|
28
|
+
/**
|
|
29
|
+
* Filters for the different phases of interfacing with a registry.
|
|
30
|
+
*/
|
|
31
|
+
rules?: OVSXRouterRule[];
|
|
32
|
+
}
|
|
33
|
+
export interface OVSXRouterRule {
|
|
34
|
+
[condition: string]: unknown;
|
|
35
|
+
use?: string | string[] | null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export interface OVSXRouterParsedRule {
|
|
41
|
+
filters: OVSXRouterFilter[];
|
|
42
|
+
use: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Route and agglomerate queries according to {@link routerConfig}.
|
|
46
|
+
* {@link ruleFactories} is the actual logic used to evaluate the config.
|
|
47
|
+
* Each rule implementation will be ran sequentially over each configured rule.
|
|
48
|
+
*/
|
|
49
|
+
export declare class OVSXRouterClient implements OVSXClient {
|
|
50
|
+
protected readonly useDefault: string[];
|
|
51
|
+
protected readonly clientProvider: OVSXClientProvider;
|
|
52
|
+
protected readonly rules: OVSXRouterParsedRule[];
|
|
53
|
+
static FromConfig(routerConfig: OVSXRouterConfig, clientProvider: OVSXClientProvider, filterFactories: OVSXRouterFilterFactory[]): Promise<OVSXRouterClient>;
|
|
54
|
+
protected static ParseRules(rules: OVSXRouterRule[], filterFactories: OVSXRouterFilterFactory[], aliases?: Record<string, string>): Promise<OVSXRouterParsedRule[]>;
|
|
55
|
+
protected static ParseUse(use: string | string[] | null | undefined, aliases?: Record<string, string>): string[];
|
|
56
|
+
constructor(useDefault: string[], clientProvider: OVSXClientProvider, rules: OVSXRouterParsedRule[]);
|
|
57
|
+
search(searchOptions?: VSXSearchOptions): Promise<VSXSearchResult>;
|
|
58
|
+
query(queryOptions?: VSXQueryOptions): Promise<VSXQueryResult>;
|
|
59
|
+
protected emptySearchResult(searchOptions?: VSXSearchOptions): VSXSearchResult;
|
|
60
|
+
protected emptyQueryResult(queryOptions?: VSXQueryOptions): VSXQueryResult;
|
|
61
|
+
protected mergedQuery(registries: string[], queryOptions?: VSXQueryOptions): Promise<VSXQueryResult>;
|
|
62
|
+
protected mergedSearch(registries: string[], searchOptions?: VSXSearchOptions): Promise<VSXSearchResult>;
|
|
63
|
+
protected mergeSearchResults(results: Map<string, VSXSearchResult>): Promise<VSXSearchResult>;
|
|
64
|
+
protected mergeQueryResults(results: Map<string, VSXQueryResult>): Promise<VSXQueryResult>;
|
|
65
|
+
protected filterExtension<T extends ExtensionLike>(sourceUri: string, extension: T): Promise<T | undefined>;
|
|
66
|
+
protected runRules<T>(runFilter: (filter: OVSXRouterFilter) => unknown, onRuleMatched: (rule: OVSXRouterParsedRule) => T): Promise<T | undefined>;
|
|
67
|
+
protected runRules<T, U>(runFilter: (filter: OVSXRouterFilter) => unknown, onRuleMatched: (rule: OVSXRouterParsedRule) => T, onNoRuleMatched: () => U): Promise<T | U>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ovsx-router-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ovsx-router-client.d.ts","sourceRoot":"","sources":["../src/ovsx-router-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2023 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.OVSXRouterClient = exports.createFilterFactory = void 0;
|
|
19
|
+
/**
|
|
20
|
+
* Helper function to create factories that handle a single condition key.
|
|
21
|
+
*/
|
|
22
|
+
function createFilterFactory(conditionKey, factory) {
|
|
23
|
+
return (conditions, remainingKeys) => {
|
|
24
|
+
if (conditionKey in conditions) {
|
|
25
|
+
const filter = factory(conditions[conditionKey]);
|
|
26
|
+
if (filter) {
|
|
27
|
+
remainingKeys.delete(conditionKey);
|
|
28
|
+
return filter;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.createFilterFactory = createFilterFactory;
|
|
34
|
+
/**
|
|
35
|
+
* Route and agglomerate queries according to {@link routerConfig}.
|
|
36
|
+
* {@link ruleFactories} is the actual logic used to evaluate the config.
|
|
37
|
+
* Each rule implementation will be ran sequentially over each configured rule.
|
|
38
|
+
*/
|
|
39
|
+
class OVSXRouterClient {
|
|
40
|
+
static async FromConfig(routerConfig, clientProvider, filterFactories) {
|
|
41
|
+
const rules = routerConfig.rules ? await this.ParseRules(routerConfig.rules, filterFactories, routerConfig.registries) : [];
|
|
42
|
+
return new this(this.ParseUse(routerConfig.use, routerConfig.registries), clientProvider, rules);
|
|
43
|
+
}
|
|
44
|
+
static async ParseRules(rules, filterFactories, aliases) {
|
|
45
|
+
return Promise.all(rules.map(async ({ use, ...conditions }) => {
|
|
46
|
+
const remainingKeys = new Set(Object.keys(conditions));
|
|
47
|
+
const filters = removeNullValues(await Promise.all(filterFactories.map(filterFactory => filterFactory(conditions, remainingKeys))));
|
|
48
|
+
if (remainingKeys.size > 0) {
|
|
49
|
+
throw new Error(`unknown conditions: ${Array.from(remainingKeys).join(', ')}`);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
filters,
|
|
53
|
+
use: this.ParseUse(use, aliases)
|
|
54
|
+
};
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
static ParseUse(use, aliases) {
|
|
58
|
+
if (typeof use === 'string') {
|
|
59
|
+
return [alias(use)];
|
|
60
|
+
}
|
|
61
|
+
else if (Array.isArray(use)) {
|
|
62
|
+
return use.map(alias);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
function alias(aliasOrUri) {
|
|
68
|
+
var _a;
|
|
69
|
+
return (_a = aliases === null || aliases === void 0 ? void 0 : aliases[aliasOrUri]) !== null && _a !== void 0 ? _a : aliasOrUri;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
constructor(useDefault, clientProvider, rules) {
|
|
73
|
+
this.useDefault = useDefault;
|
|
74
|
+
this.clientProvider = clientProvider;
|
|
75
|
+
this.rules = rules;
|
|
76
|
+
}
|
|
77
|
+
async search(searchOptions) {
|
|
78
|
+
return this.runRules(filter => { var _a; return (_a = filter.filterSearchOptions) === null || _a === void 0 ? void 0 : _a.call(filter, searchOptions); }, rule => rule.use.length > 0
|
|
79
|
+
? this.mergedSearch(rule.use, searchOptions)
|
|
80
|
+
: this.emptySearchResult(searchOptions), () => this.mergedSearch(this.useDefault, searchOptions));
|
|
81
|
+
}
|
|
82
|
+
async query(queryOptions = {}) {
|
|
83
|
+
return this.runRules(filter => { var _a; return (_a = filter.filterQueryOptions) === null || _a === void 0 ? void 0 : _a.call(filter, queryOptions); }, rule => rule.use.length > 0
|
|
84
|
+
? this.mergedQuery(rule.use, queryOptions)
|
|
85
|
+
: this.emptyQueryResult(queryOptions), () => this.mergedQuery(this.useDefault, queryOptions));
|
|
86
|
+
}
|
|
87
|
+
emptySearchResult(searchOptions) {
|
|
88
|
+
var _a;
|
|
89
|
+
return {
|
|
90
|
+
extensions: [],
|
|
91
|
+
offset: (_a = searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.offset) !== null && _a !== void 0 ? _a : 0
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
emptyQueryResult(queryOptions) {
|
|
95
|
+
return {
|
|
96
|
+
offset: 0,
|
|
97
|
+
totalSize: 0,
|
|
98
|
+
extensions: []
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async mergedQuery(registries, queryOptions) {
|
|
102
|
+
return this.mergeQueryResults(await createMapping(registries, async (registry) => (await this.clientProvider(registry)).query(queryOptions)));
|
|
103
|
+
}
|
|
104
|
+
async mergedSearch(registries, searchOptions) {
|
|
105
|
+
return this.mergeSearchResults(await createMapping(registries, async (registry) => (await this.clientProvider(registry)).search(searchOptions)));
|
|
106
|
+
}
|
|
107
|
+
async mergeSearchResults(results) {
|
|
108
|
+
const filtering = [];
|
|
109
|
+
results.forEach((result, sourceUri) => {
|
|
110
|
+
filtering.push(Promise
|
|
111
|
+
.all(result.extensions.map(extension => this.filterExtension(sourceUri, extension)))
|
|
112
|
+
.then(removeNullValues));
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
extensions: interleave(await Promise.all(filtering)),
|
|
116
|
+
offset: Math.min(...Array.from(results.values(), result => result.offset))
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
async mergeQueryResults(results) {
|
|
120
|
+
const filtering = [];
|
|
121
|
+
results.forEach((result, sourceUri) => {
|
|
122
|
+
result.extensions.forEach(extension => filtering.push(this.filterExtension(sourceUri, extension)));
|
|
123
|
+
});
|
|
124
|
+
const extensions = removeNullValues(await Promise.all(filtering));
|
|
125
|
+
return {
|
|
126
|
+
offset: 0,
|
|
127
|
+
totalSize: extensions.length,
|
|
128
|
+
extensions
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
async filterExtension(sourceUri, extension) {
|
|
132
|
+
return this.runRules(filter => { var _a; return (_a = filter.filterExtension) === null || _a === void 0 ? void 0 : _a.call(filter, extension); }, rule => rule.use.includes(sourceUri) ? extension : undefined, () => extension);
|
|
133
|
+
}
|
|
134
|
+
async runRules(runFilter, onRuleMatched, onNoRuleMatched) {
|
|
135
|
+
for (const rule of this.rules) {
|
|
136
|
+
const results = removeNullValues(await Promise.all(rule.filters.map(filter => runFilter(filter))));
|
|
137
|
+
if (results.length > 0 && results.every(value => value)) {
|
|
138
|
+
return onRuleMatched(rule);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return onNoRuleMatched === null || onNoRuleMatched === void 0 ? void 0 : onNoRuleMatched();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.OVSXRouterClient = OVSXRouterClient;
|
|
145
|
+
function nonNullable(value) {
|
|
146
|
+
// eslint-disable-next-line no-null/no-null
|
|
147
|
+
return typeof value !== 'undefined' && value !== null;
|
|
148
|
+
}
|
|
149
|
+
function removeNullValues(values) {
|
|
150
|
+
return values.filter(nonNullable);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create a map where the keys are each element from {@link values} and the
|
|
154
|
+
* values are the result of a mapping function applied on the key.
|
|
155
|
+
*/
|
|
156
|
+
async function createMapping(values, map, thisArg) {
|
|
157
|
+
return new Map(await Promise.all(values.map(async (value, index) => [value, await map.call(thisArg, value, index)])));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @example
|
|
161
|
+
* interleave([[1, 2, 3], [4, 5], [6, 7, 8]]) === [1, 4, 6, 2, 5, 7, 3, 8]
|
|
162
|
+
*/
|
|
163
|
+
function interleave(arrays) {
|
|
164
|
+
const interleaved = [];
|
|
165
|
+
const length = Math.max(...arrays.map(array => array.length));
|
|
166
|
+
for (let i = 0; i < length; i++) {
|
|
167
|
+
for (const array of arrays) {
|
|
168
|
+
if (i < array.length) {
|
|
169
|
+
interleaved.push(array[i]);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return interleaved;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=ovsx-router-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ovsx-router-client.js","sourceRoot":"","sources":["../src/ovsx-router-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ovsx-router-client.spec.d.ts","sourceRoot":"","sources":["../src/ovsx-router-client.spec.ts"],"names":[],"mappings":""}
|