@opensumi/ide-utils 2.16.6
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/ansi.d.ts +5 -0
- package/lib/ansi.d.ts.map +1 -0
- package/lib/ansi.js +14 -0
- package/lib/ansi.js.map +1 -0
- package/lib/arrays.d.ts +49 -0
- package/lib/arrays.d.ts.map +1 -0
- package/lib/arrays.js +275 -0
- package/lib/arrays.js.map +1 -0
- package/lib/async.d.ts +185 -0
- package/lib/async.d.ts.map +1 -0
- package/lib/async.js +467 -0
- package/lib/async.js.map +1 -0
- package/lib/buffer.d.ts +35 -0
- package/lib/buffer.d.ts.map +1 -0
- package/lib/buffer.js +174 -0
- package/lib/buffer.js.map +1 -0
- package/lib/cache.d.ts +12 -0
- package/lib/cache.d.ts.map +1 -0
- package/lib/cache.js +37 -0
- package/lib/cache.js.map +1 -0
- package/lib/cancellation.d.ts +23 -0
- package/lib/cancellation.d.ts.map +1 -0
- package/lib/cancellation.js +120 -0
- package/lib/cancellation.js.map +1 -0
- package/lib/charCode.d.ts +406 -0
- package/lib/charCode.d.ts.map +1 -0
- package/lib/charCode.js +8 -0
- package/lib/charCode.js.map +1 -0
- package/lib/character-classifier.d.ts +25 -0
- package/lib/character-classifier.d.ts.map +1 -0
- package/lib/character-classifier.js +59 -0
- package/lib/character-classifier.js.map +1 -0
- package/lib/const/encoding.d.ts +10 -0
- package/lib/const/encoding.d.ts.map +1 -0
- package/lib/const/encoding.js +244 -0
- package/lib/const/encoding.js.map +1 -0
- package/lib/const/index.d.ts +2 -0
- package/lib/const/index.d.ts.map +1 -0
- package/lib/const/index.js +5 -0
- package/lib/const/index.js.map +1 -0
- package/lib/date.d.ts +2 -0
- package/lib/date.d.ts.map +1 -0
- package/lib/date.js +22 -0
- package/lib/date.js.map +1 -0
- package/lib/decorators.d.ts +11 -0
- package/lib/decorators.d.ts.map +1 -0
- package/lib/decorators.js +151 -0
- package/lib/decorators.js.map +1 -0
- package/lib/disposable.d.ts +88 -0
- package/lib/disposable.d.ts.map +1 -0
- package/lib/disposable.js +316 -0
- package/lib/disposable.js.map +1 -0
- package/lib/encoding.d.ts +34 -0
- package/lib/encoding.d.ts.map +1 -0
- package/lib/encoding.js +217 -0
- package/lib/encoding.js.map +1 -0
- package/lib/errors.d.ts +56 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +148 -0
- package/lib/errors.js.map +1 -0
- package/lib/event.d.ts +268 -0
- package/lib/event.d.ts.map +1 -0
- package/lib/event.js +816 -0
- package/lib/event.js.map +1 -0
- package/lib/file-uri.d.ts +15 -0
- package/lib/file-uri.d.ts.map +1 -0
- package/lib/file-uri.js +46 -0
- package/lib/file-uri.js.map +1 -0
- package/lib/filters.d.ts +47 -0
- package/lib/filters.d.ts.map +1 -0
- package/lib/filters.js +698 -0
- package/lib/filters.js.map +1 -0
- package/lib/functional.d.ts +4 -0
- package/lib/functional.d.ts.map +1 -0
- package/lib/functional.js +45 -0
- package/lib/functional.js.map +1 -0
- package/lib/glob.d.ts +46 -0
- package/lib/glob.d.ts.map +1 -0
- package/lib/glob.js +561 -0
- package/lib/glob.js.map +1 -0
- package/lib/hash.d.ts +38 -0
- package/lib/hash.d.ts.map +1 -0
- package/lib/hash.js +294 -0
- package/lib/hash.js.map +1 -0
- package/lib/index.d.ts +41 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +45 -0
- package/lib/index.js.map +1 -0
- package/lib/iterator.d.ts +17 -0
- package/lib/iterator.d.ts.map +1 -0
- package/lib/iterator.js +24 -0
- package/lib/iterator.js.map +1 -0
- package/lib/lifecycle.d.ts +17 -0
- package/lib/lifecycle.d.ts.map +1 -0
- package/lib/lifecycle.js +39 -0
- package/lib/lifecycle.js.map +1 -0
- package/lib/linked-list.d.ts +18 -0
- package/lib/linked-list.d.ts.map +1 -0
- package/lib/linked-list.js +138 -0
- package/lib/linked-list.js.map +1 -0
- package/lib/linked-text.d.ts +13 -0
- package/lib/linked-text.d.ts.map +1 -0
- package/lib/linked-text.js +50 -0
- package/lib/linked-text.js.map +1 -0
- package/lib/lru-map.d.ts +41 -0
- package/lib/lru-map.d.ts.map +1 -0
- package/lib/lru-map.js +120 -0
- package/lib/lru-map.js.map +1 -0
- package/lib/map.d.ts +124 -0
- package/lib/map.d.ts.map +1 -0
- package/lib/map.js +819 -0
- package/lib/map.js.map +1 -0
- package/lib/marshalling.d.ts +7 -0
- package/lib/marshalling.d.ts.map +1 -0
- package/lib/marshalling.js +59 -0
- package/lib/marshalling.js.map +1 -0
- package/lib/objects.d.ts +6 -0
- package/lib/objects.d.ts.map +1 -0
- package/lib/objects.js +103 -0
- package/lib/objects.js.map +1 -0
- package/lib/os.d.ts +40 -0
- package/lib/os.d.ts.map +1 -0
- package/lib/os.js +75 -0
- package/lib/os.js.map +1 -0
- package/lib/path.d.ts +101 -0
- package/lib/path.d.ts.map +1 -0
- package/lib/path.js +1747 -0
- package/lib/path.js.map +1 -0
- package/lib/platform.d.ts +48 -0
- package/lib/platform.d.ts.map +1 -0
- package/lib/platform.js +154 -0
- package/lib/platform.js.map +1 -0
- package/lib/process.d.ts +5 -0
- package/lib/process.d.ts.map +1 -0
- package/lib/process.js +23 -0
- package/lib/process.js.map +1 -0
- package/lib/progress.d.ts +56 -0
- package/lib/progress.d.ts.map +1 -0
- package/lib/progress.js +27 -0
- package/lib/progress.js.map +1 -0
- package/lib/promise-util.d.ts +10 -0
- package/lib/promise-util.d.ts.map +1 -0
- package/lib/promise-util.js +17 -0
- package/lib/promise-util.js.map +1 -0
- package/lib/sequence.d.ts +20 -0
- package/lib/sequence.d.ts.map +1 -0
- package/lib/sequence.js +17 -0
- package/lib/sequence.js.map +1 -0
- package/lib/strings.d.ts +181 -0
- package/lib/strings.d.ts.map +1 -0
- package/lib/strings.js +858 -0
- package/lib/strings.js.map +1 -0
- package/lib/types.d.ts +69 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +201 -0
- package/lib/types.js.map +1 -0
- package/lib/uint.d.ts +32 -0
- package/lib/uint.d.ts.map +1 -0
- package/lib/uint.js +28 -0
- package/lib/uint.js.map +1 -0
- package/lib/uri.d.ts +94 -0
- package/lib/uri.d.ts.map +1 -0
- package/lib/uri.js +231 -0
- package/lib/uri.js.map +1 -0
- package/lib/uuid.d.ts +2 -0
- package/lib/uuid.d.ts.map +1 -0
- package/lib/uuid.js +10 -0
- package/lib/uuid.js.map +1 -0
- package/package.json +25 -0
package/lib/ansi.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;YAOrB,CAAC;AAEF,eAAO,MAAM,SAAS,mBAA0E,CAAC"}
|
package/lib/ansi.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripAnsi = exports.ansiRegex = void 0;
|
|
4
|
+
const ansiRegex = ({ onlyFirst = false } = {}) => {
|
|
5
|
+
const pattern = [
|
|
6
|
+
'[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
|
|
7
|
+
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))',
|
|
8
|
+
].join('|');
|
|
9
|
+
return new RegExp(pattern, onlyFirst ? undefined : 'g');
|
|
10
|
+
};
|
|
11
|
+
exports.ansiRegex = ansiRegex;
|
|
12
|
+
const stripAnsi = (str) => (typeof str === 'string' ? str.replace((0, exports.ansiRegex)(), '') : str);
|
|
13
|
+
exports.stripAnsi = stripAnsi;
|
|
14
|
+
//# sourceMappingURL=ansi.js.map
|
package/lib/ansi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.js","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;IACtD,MAAM,OAAO,GAAG;QACd,6FAA6F;QAC7F,0DAA0D;KAC3D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC,CAAC;AAPW,QAAA,SAAS,aAOpB;AAEK,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAA,iBAAS,GAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAApF,QAAA,SAAS,aAA2E"}
|
package/lib/arrays.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { IDisposable } from './disposable';
|
|
2
|
+
import { ISplice } from './sequence';
|
|
3
|
+
export declare function isNonEmptyArray<T>(obj: ReadonlyArray<T> | undefined | null): obj is Array<T>;
|
|
4
|
+
/**
|
|
5
|
+
* 移除给定数组中的重复值
|
|
6
|
+
* keyFn函数支持指定校验逻辑
|
|
7
|
+
*/
|
|
8
|
+
export declare function distinct<T>(array: ReadonlyArray<T>, keyFn?: (t: T) => string): T[];
|
|
9
|
+
/**
|
|
10
|
+
* Diffs two *sorted* arrays and computes the splices which apply the diff.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sortedDiff<T>(before: ReadonlyArray<T>, after: ReadonlyArray<T>, compare: (a: T, b: T) => number): ISplice<T>[];
|
|
13
|
+
export declare function equals<T>(one: ReadonlyArray<T> | undefined, other: ReadonlyArray<T> | undefined, itemEquals?: (a: T, b: T) => boolean): boolean;
|
|
14
|
+
export declare function asArray<T>(x: T | T[]): T[];
|
|
15
|
+
export declare function asArray<T>(x: T | readonly T[]): readonly T[];
|
|
16
|
+
/**
|
|
17
|
+
* 获取非空数组
|
|
18
|
+
* @param array
|
|
19
|
+
*/
|
|
20
|
+
export declare function coalesce<T>(array: ReadonlyArray<T | undefined | null>): T[];
|
|
21
|
+
export declare function addElement<T>(array: Array<T>, element: T, unshift?: boolean): IDisposable;
|
|
22
|
+
export declare function addMapElement<K, T>(map: Map<K, T>, key: K, element: T): IDisposable;
|
|
23
|
+
declare type NonFunctional<T> = T extends Function ? never : T;
|
|
24
|
+
export declare function enumValueToArray<T>(enumeration: T): NonFunctional<T[keyof T]>[];
|
|
25
|
+
/**
|
|
26
|
+
* @returns false if the provided object is an array and not empty.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isFalsyOrEmpty(obj: any): boolean;
|
|
29
|
+
export declare function flatten<T>(arr: T[][]): T[];
|
|
30
|
+
export declare function range(to: number): number[];
|
|
31
|
+
export declare function fill<T>(num: number, value: T, arr?: T[]): T[];
|
|
32
|
+
/**
|
|
33
|
+
* Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false
|
|
34
|
+
* are located before all elements where p(x) is true.
|
|
35
|
+
* @returns the least x for which p(x) is true or array.length if no element fullfills the given function.
|
|
36
|
+
*/
|
|
37
|
+
export declare function findFirstInSorted<T>(array: ReadonlyArray<T>, p: (x: T) => boolean): number;
|
|
38
|
+
declare type Compare<T> = (a: T, b: T) => number;
|
|
39
|
+
/**
|
|
40
|
+
* Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort`
|
|
41
|
+
* so only use this when actually needing stable sort.
|
|
42
|
+
*/
|
|
43
|
+
export declare function mergeSort<T>(data: T[], compare: Compare<T>): T[];
|
|
44
|
+
/**
|
|
45
|
+
* Returns the first mapped value of the array which is not undefined.
|
|
46
|
+
*/
|
|
47
|
+
export declare function mapFind<T, R>(array: Iterable<T>, mapFn: (value: T) => R | undefined): R | undefined;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=arrays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"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"}
|
package/lib/arrays.js
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* ---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
// Some code copied and modified from https://github.com/microsoft/vscode/blob/1.44.0/src/vs/base/common/arrays.ts
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.mapFind = exports.mergeSort = exports.findFirstInSorted = exports.fill = exports.range = exports.flatten = exports.isFalsyOrEmpty = exports.enumValueToArray = exports.addMapElement = exports.addElement = exports.coalesce = exports.asArray = exports.equals = exports.sortedDiff = exports.distinct = exports.isNonEmptyArray = void 0;
|
|
9
|
+
function isNonEmptyArray(obj) {
|
|
10
|
+
return Array.isArray(obj) && obj.length > 0;
|
|
11
|
+
}
|
|
12
|
+
exports.isNonEmptyArray = isNonEmptyArray;
|
|
13
|
+
/**
|
|
14
|
+
* 移除给定数组中的重复值
|
|
15
|
+
* keyFn函数支持指定校验逻辑
|
|
16
|
+
*/
|
|
17
|
+
function distinct(array, keyFn) {
|
|
18
|
+
if (!keyFn) {
|
|
19
|
+
return array.filter((element, position) => array.indexOf(element) === position);
|
|
20
|
+
}
|
|
21
|
+
const seen = Object.create(null);
|
|
22
|
+
return array.filter((elem) => {
|
|
23
|
+
const key = keyFn(elem);
|
|
24
|
+
if (seen[key]) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
seen[key] = true;
|
|
28
|
+
return true;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.distinct = distinct;
|
|
32
|
+
/**
|
|
33
|
+
* Diffs two *sorted* arrays and computes the splices which apply the diff.
|
|
34
|
+
*/
|
|
35
|
+
function sortedDiff(before, after, compare) {
|
|
36
|
+
const result = [];
|
|
37
|
+
function pushSplice(start, deleteCount, toInsert) {
|
|
38
|
+
if (deleteCount === 0 && toInsert.length === 0) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const latest = result[result.length - 1];
|
|
42
|
+
if (latest && latest.start + latest.deleteCount === start) {
|
|
43
|
+
latest.deleteCount += deleteCount;
|
|
44
|
+
latest.toInsert.push(...toInsert);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
result.push({ start, deleteCount, toInsert });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
let beforeIdx = 0;
|
|
51
|
+
let afterIdx = 0;
|
|
52
|
+
while (true) {
|
|
53
|
+
if (beforeIdx === before.length) {
|
|
54
|
+
pushSplice(beforeIdx, 0, after.slice(afterIdx));
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
if (afterIdx === after.length) {
|
|
58
|
+
pushSplice(beforeIdx, before.length - beforeIdx, []);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
const beforeElement = before[beforeIdx];
|
|
62
|
+
const afterElement = after[afterIdx];
|
|
63
|
+
const n = compare(beforeElement, afterElement);
|
|
64
|
+
if (n === 0) {
|
|
65
|
+
// equal
|
|
66
|
+
beforeIdx += 1;
|
|
67
|
+
afterIdx += 1;
|
|
68
|
+
}
|
|
69
|
+
else if (n < 0) {
|
|
70
|
+
// beforeElement is smaller -> before element removed
|
|
71
|
+
pushSplice(beforeIdx, 1, []);
|
|
72
|
+
beforeIdx += 1;
|
|
73
|
+
}
|
|
74
|
+
else if (n > 0) {
|
|
75
|
+
// beforeElement is greater -> after element added
|
|
76
|
+
pushSplice(beforeIdx, 0, [afterElement]);
|
|
77
|
+
afterIdx += 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
exports.sortedDiff = sortedDiff;
|
|
83
|
+
function equals(one, other, itemEquals = (a, b) => a === b) {
|
|
84
|
+
if (one === other) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
if (!one || !other) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if (one.length !== other.length) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
for (let i = 0, len = one.length; i < len; i++) {
|
|
94
|
+
if (!itemEquals(one[i], other[i])) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
exports.equals = equals;
|
|
101
|
+
function asArray(x) {
|
|
102
|
+
return Array.isArray(x) ? x : [x];
|
|
103
|
+
}
|
|
104
|
+
exports.asArray = asArray;
|
|
105
|
+
/**
|
|
106
|
+
* 获取非空数组
|
|
107
|
+
* @param array
|
|
108
|
+
*/
|
|
109
|
+
function coalesce(array) {
|
|
110
|
+
return array.filter((e) => !!e);
|
|
111
|
+
}
|
|
112
|
+
exports.coalesce = coalesce;
|
|
113
|
+
function addElement(array, element, unshift = false) {
|
|
114
|
+
if (unshift) {
|
|
115
|
+
array.unshift(element);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
array.push(element);
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
dispose: () => {
|
|
122
|
+
const index = array.indexOf(element);
|
|
123
|
+
if (index !== -1) {
|
|
124
|
+
array.splice(index, 1);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
exports.addElement = addElement;
|
|
130
|
+
function addMapElement(map, key, element) {
|
|
131
|
+
map.set(key, element);
|
|
132
|
+
return {
|
|
133
|
+
dispose: () => {
|
|
134
|
+
if (map.get(key) === element) {
|
|
135
|
+
map.delete(key);
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
exports.addMapElement = addMapElement;
|
|
141
|
+
// 枚举 value 转数组值
|
|
142
|
+
function enumValueToArray(enumeration) {
|
|
143
|
+
return Object.keys(enumeration)
|
|
144
|
+
.filter((key) => isNaN(Number(key)))
|
|
145
|
+
.map((key) => enumeration[key])
|
|
146
|
+
.filter((val) => typeof val === 'number' || typeof val === 'string');
|
|
147
|
+
}
|
|
148
|
+
exports.enumValueToArray = enumValueToArray;
|
|
149
|
+
/**
|
|
150
|
+
* @returns false if the provided object is an array and not empty.
|
|
151
|
+
*/
|
|
152
|
+
function isFalsyOrEmpty(obj) {
|
|
153
|
+
return !Array.isArray(obj) || obj.length === 0;
|
|
154
|
+
}
|
|
155
|
+
exports.isFalsyOrEmpty = isFalsyOrEmpty;
|
|
156
|
+
function flatten(arr) {
|
|
157
|
+
return [].concat(...arr);
|
|
158
|
+
}
|
|
159
|
+
exports.flatten = flatten;
|
|
160
|
+
function range(arg, to) {
|
|
161
|
+
let from = typeof to === 'number' ? arg : 0;
|
|
162
|
+
if (typeof to === 'number') {
|
|
163
|
+
from = arg;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
from = 0;
|
|
167
|
+
to = arg;
|
|
168
|
+
}
|
|
169
|
+
const result = [];
|
|
170
|
+
if (from <= to) {
|
|
171
|
+
for (let i = from; i < to; i++) {
|
|
172
|
+
result.push(i);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
for (let i = from; i > to; i--) {
|
|
177
|
+
result.push(i);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
exports.range = range;
|
|
183
|
+
function fill(num, value, arr = []) {
|
|
184
|
+
for (let i = 0; i < num; i++) {
|
|
185
|
+
arr[i] = value;
|
|
186
|
+
}
|
|
187
|
+
return arr;
|
|
188
|
+
}
|
|
189
|
+
exports.fill = fill;
|
|
190
|
+
/**
|
|
191
|
+
* Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false
|
|
192
|
+
* are located before all elements where p(x) is true.
|
|
193
|
+
* @returns the least x for which p(x) is true or array.length if no element fullfills the given function.
|
|
194
|
+
*/
|
|
195
|
+
function findFirstInSorted(array, p) {
|
|
196
|
+
let low = 0;
|
|
197
|
+
let high = array.length;
|
|
198
|
+
if (high === 0) {
|
|
199
|
+
return 0; // no children
|
|
200
|
+
}
|
|
201
|
+
while (low < high) {
|
|
202
|
+
const mid = Math.floor((low + high) / 2);
|
|
203
|
+
if (p(array[mid])) {
|
|
204
|
+
high = mid;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
low = mid + 1;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return low;
|
|
211
|
+
}
|
|
212
|
+
exports.findFirstInSorted = findFirstInSorted;
|
|
213
|
+
function _merge(a, compare, lo, mid, hi, aux) {
|
|
214
|
+
let leftIdx = lo;
|
|
215
|
+
let rightIdx = mid + 1;
|
|
216
|
+
for (let i = lo; i <= hi; i++) {
|
|
217
|
+
aux[i] = a[i];
|
|
218
|
+
}
|
|
219
|
+
for (let i = lo; i <= hi; i++) {
|
|
220
|
+
if (leftIdx > mid) {
|
|
221
|
+
// left side consumed
|
|
222
|
+
a[i] = aux[rightIdx++];
|
|
223
|
+
}
|
|
224
|
+
else if (rightIdx > hi) {
|
|
225
|
+
// right side consumed
|
|
226
|
+
a[i] = aux[leftIdx++];
|
|
227
|
+
}
|
|
228
|
+
else if (compare(aux[rightIdx], aux[leftIdx]) < 0) {
|
|
229
|
+
// right element is less -> comes first
|
|
230
|
+
a[i] = aux[rightIdx++];
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
// left element comes first (less or equal)
|
|
234
|
+
a[i] = aux[leftIdx++];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
function _sort(a, compare, lo, hi, aux) {
|
|
239
|
+
if (hi <= lo) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const mid = (lo + (hi - lo) / 2) | 0;
|
|
243
|
+
_sort(a, compare, lo, mid, aux);
|
|
244
|
+
_sort(a, compare, mid + 1, hi, aux);
|
|
245
|
+
if (compare(a[mid], a[mid + 1]) <= 0) {
|
|
246
|
+
// left and right are sorted and if the last-left element is less
|
|
247
|
+
// or equals than the first-right element there is nothing else
|
|
248
|
+
// to do
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
_merge(a, compare, lo, mid, hi, aux);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort`
|
|
255
|
+
* so only use this when actually needing stable sort.
|
|
256
|
+
*/
|
|
257
|
+
function mergeSort(data, compare) {
|
|
258
|
+
_sort(data, compare, 0, data.length - 1, []);
|
|
259
|
+
return data;
|
|
260
|
+
}
|
|
261
|
+
exports.mergeSort = mergeSort;
|
|
262
|
+
/**
|
|
263
|
+
* Returns the first mapped value of the array which is not undefined.
|
|
264
|
+
*/
|
|
265
|
+
function mapFind(array, mapFn) {
|
|
266
|
+
for (const value of array) {
|
|
267
|
+
const mapped = mapFn(value);
|
|
268
|
+
if (mapped !== undefined) {
|
|
269
|
+
return mapped;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return undefined;
|
|
273
|
+
}
|
|
274
|
+
exports.mapFind = mapFind;
|
|
275
|
+
//# sourceMappingURL=arrays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"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"}
|
package/lib/async.d.ts
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/// <reference types="vscode" />
|
|
2
|
+
import { CancellationToken } from './cancellation';
|
|
3
|
+
import { IDisposable } from './disposable';
|
|
4
|
+
export declare type MaybePromise<T> = T | Promise<T> | PromiseLike<T>;
|
|
5
|
+
export interface CancelablePromise<T> extends Promise<T> {
|
|
6
|
+
cancel(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createCancelablePromise<T>(callback: (token: CancellationToken) => Promise<T>): CancelablePromise<T>;
|
|
9
|
+
export declare function hookCancellationToken<T>(token: CancellationToken, promise: Promise<T>): PromiseLike<T>;
|
|
10
|
+
export declare type ITask<T> = () => T;
|
|
11
|
+
/**
|
|
12
|
+
* A helper to prevent accumulation of sequential async tasks.
|
|
13
|
+
*
|
|
14
|
+
* Imagine a mail man with the sole task of delivering letters. As soon as
|
|
15
|
+
* a letter submitted for delivery, he drives to the destination, delivers it
|
|
16
|
+
* and returns to his base. Imagine that during the trip, N more letters were submitted.
|
|
17
|
+
* When the mail man returns, he picks those N letters and delivers them all in a
|
|
18
|
+
* single trip. Even though N+1 submissions occurred, only 2 deliveries were made.
|
|
19
|
+
*
|
|
20
|
+
* The throttler implements this via the queue() method, by providing it a task
|
|
21
|
+
* factory. Following the example:
|
|
22
|
+
*
|
|
23
|
+
* const throttler = new Throttler();
|
|
24
|
+
* const letters = [];
|
|
25
|
+
*
|
|
26
|
+
* function deliver() {
|
|
27
|
+
* const lettersToDeliver = letters;
|
|
28
|
+
* letters = [];
|
|
29
|
+
* return makeTheTrip(lettersToDeliver);
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* function onLetterReceived(l) {
|
|
33
|
+
* letters.push(l);
|
|
34
|
+
* throttler.queue(deliver);
|
|
35
|
+
* }
|
|
36
|
+
*/
|
|
37
|
+
export declare class Throttler {
|
|
38
|
+
private activePromise;
|
|
39
|
+
private queuedPromise;
|
|
40
|
+
private queuedPromiseFactory;
|
|
41
|
+
constructor();
|
|
42
|
+
queue<T>(promiseFactory: ITask<Promise<T>>): Promise<T>;
|
|
43
|
+
}
|
|
44
|
+
export declare class Sequencer {
|
|
45
|
+
private current;
|
|
46
|
+
queue<T>(promiseTask: ITask<Promise<T>>): Promise<T>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A helper to delay execution of a task that is being requested often.
|
|
50
|
+
*
|
|
51
|
+
* Following the throttler, now imagine the mail man wants to optimize the number of
|
|
52
|
+
* trips proactively. The trip itself can be long, so he decides not to make the trip
|
|
53
|
+
* as soon as a letter is submitted. Instead he waits a while, in case more
|
|
54
|
+
* letters are submitted. After said waiting period, if no letters were submitted, he
|
|
55
|
+
* decides to make the trip. Imagine that N more letters were submitted after the first
|
|
56
|
+
* one, all within a short period of time between each other. Even though N+1
|
|
57
|
+
* submissions occurred, only 1 delivery was made.
|
|
58
|
+
*
|
|
59
|
+
* The delayer offers this behavior via the trigger() method, into which both the task
|
|
60
|
+
* to be executed and the waiting period (delay) must be passed in as arguments. Following
|
|
61
|
+
* the example:
|
|
62
|
+
*
|
|
63
|
+
* const delayer = new Delayer(WAITING_PERIOD);
|
|
64
|
+
* const letters = [];
|
|
65
|
+
*
|
|
66
|
+
* function letterReceived(l) {
|
|
67
|
+
* letters.push(l);
|
|
68
|
+
* delayer.trigger(() => { return makeTheTrip(); });
|
|
69
|
+
* }
|
|
70
|
+
*/
|
|
71
|
+
export declare class Delayer<T> implements IDisposable {
|
|
72
|
+
defaultDelay: number;
|
|
73
|
+
private timeout;
|
|
74
|
+
private completionPromise;
|
|
75
|
+
private doResolve;
|
|
76
|
+
private doReject?;
|
|
77
|
+
private task;
|
|
78
|
+
constructor(defaultDelay: number);
|
|
79
|
+
trigger(task: ITask<T | Promise<T>>, delay?: number): Promise<T>;
|
|
80
|
+
isTriggered(): boolean;
|
|
81
|
+
cancel(): void;
|
|
82
|
+
private cancelTimeout;
|
|
83
|
+
dispose(): void;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A helper to delay execution of a task that is being requested often, while
|
|
87
|
+
* preventing accumulation of consecutive executions, while the task runs.
|
|
88
|
+
*
|
|
89
|
+
* The mail man is clever and waits for a certain amount of time, before going
|
|
90
|
+
* out to deliver letters. While the mail man is going out, more letters arrive
|
|
91
|
+
* and can only be delivered once he is back. Once he is back the mail man will
|
|
92
|
+
* do one more trip to deliver the letters that have accumulated while he was out.
|
|
93
|
+
*/
|
|
94
|
+
export declare class ThrottledDelayer<T> {
|
|
95
|
+
private delayer;
|
|
96
|
+
private throttler;
|
|
97
|
+
constructor(defaultDelay: number);
|
|
98
|
+
trigger(promiseFactory: ITask<Promise<T>>, delay?: number): Promise<T>;
|
|
99
|
+
isTriggered(): boolean;
|
|
100
|
+
cancel(): void;
|
|
101
|
+
dispose(): void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* A barrier that is initially closed and then becomes opened permanently.
|
|
105
|
+
*/
|
|
106
|
+
export declare class Barrier {
|
|
107
|
+
private _isOpen;
|
|
108
|
+
private _promise;
|
|
109
|
+
private _completePromise;
|
|
110
|
+
constructor();
|
|
111
|
+
isOpen(): boolean;
|
|
112
|
+
open(): void;
|
|
113
|
+
wait(): Promise<boolean>;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A barrier that is initially closed and then becomes opened permanently after a certain period of
|
|
117
|
+
* time or when open is called explicitly
|
|
118
|
+
*/
|
|
119
|
+
export declare class AutoOpenBarrier extends Barrier {
|
|
120
|
+
private readonly _timeout;
|
|
121
|
+
constructor(autoOpenTimeMs: number);
|
|
122
|
+
open(): void;
|
|
123
|
+
}
|
|
124
|
+
export declare function isThenable<T>(obj: any): obj is Promise<T>;
|
|
125
|
+
export declare function raceTimeout<T>(promise: Promise<T>, timeout: number, onTimeout?: () => void): Promise<T | undefined>;
|
|
126
|
+
export declare function asPromise<T>(callback: () => T | Thenable<T>): Promise<T>;
|
|
127
|
+
export interface IdleDeadline {
|
|
128
|
+
readonly didTimeout: boolean;
|
|
129
|
+
timeRemaining(): DOMHighResTimeStamp;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Execute the callback the next time the browser is idle
|
|
133
|
+
*/
|
|
134
|
+
export declare let runWhenIdle: (callback: (idle: IdleDeadline) => void, timeout?: number) => IDisposable;
|
|
135
|
+
/**
|
|
136
|
+
* An implementation of the "idle-until-urgent"-strategy as introduced
|
|
137
|
+
* here: https://philipwalton.com/articles/idle-until-urgent/
|
|
138
|
+
*/
|
|
139
|
+
export declare class IdleValue<T> {
|
|
140
|
+
private readonly _executor;
|
|
141
|
+
private readonly _handle;
|
|
142
|
+
private _didRun;
|
|
143
|
+
private _value?;
|
|
144
|
+
private _error;
|
|
145
|
+
constructor(executor: () => T);
|
|
146
|
+
dispose(): void;
|
|
147
|
+
getValue(): T;
|
|
148
|
+
}
|
|
149
|
+
export declare type Mutable<T> = {
|
|
150
|
+
-readonly [P in keyof T]: T[P];
|
|
151
|
+
};
|
|
152
|
+
export declare function first<T>(promiseFactories: ITask<Promise<T>>[], shouldStop?: (t: T) => boolean, defaultValue?: T | null): Promise<T | null>;
|
|
153
|
+
export declare function timeout(millis: number): CancelablePromise<void>;
|
|
154
|
+
export declare function timeout(millis: number, token: CancellationToken): Promise<void>;
|
|
155
|
+
export declare function raceCancellation<T>(promise: Promise<T>, token: CancellationToken): Promise<T | undefined>;
|
|
156
|
+
export declare function raceCancellation<T>(promise: Promise<T>, token: CancellationToken, defaultValue: T): Promise<T>;
|
|
157
|
+
export declare class RunOnceScheduler {
|
|
158
|
+
protected runner: ((...args: unknown[]) => void) | null;
|
|
159
|
+
private timeoutToken;
|
|
160
|
+
private timeout;
|
|
161
|
+
private timeoutHandler;
|
|
162
|
+
constructor(runner: (...args: any[]) => void, delay: number);
|
|
163
|
+
/**
|
|
164
|
+
* Dispose RunOnceScheduler
|
|
165
|
+
*/
|
|
166
|
+
dispose(): void;
|
|
167
|
+
/**
|
|
168
|
+
* Cancel current scheduled runner (if any).
|
|
169
|
+
*/
|
|
170
|
+
cancel(): void;
|
|
171
|
+
/**
|
|
172
|
+
* Cancel previous runner (if any) & schedule a new runner.
|
|
173
|
+
*/
|
|
174
|
+
schedule(delay?: number): void;
|
|
175
|
+
get delay(): number;
|
|
176
|
+
set delay(value: number);
|
|
177
|
+
/**
|
|
178
|
+
* Returns true if scheduled.
|
|
179
|
+
*/
|
|
180
|
+
isScheduled(): boolean;
|
|
181
|
+
private onTimeout;
|
|
182
|
+
protected doRun(): void;
|
|
183
|
+
}
|
|
184
|
+
export declare function disposableTimeout(handler: () => void, timeout?: number): IDisposable;
|
|
185
|
+
//# sourceMappingURL=async.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"}
|