@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.
Files changed (169) hide show
  1. package/lib/ansi.d.ts +5 -0
  2. package/lib/ansi.d.ts.map +1 -0
  3. package/lib/ansi.js +14 -0
  4. package/lib/ansi.js.map +1 -0
  5. package/lib/arrays.d.ts +49 -0
  6. package/lib/arrays.d.ts.map +1 -0
  7. package/lib/arrays.js +275 -0
  8. package/lib/arrays.js.map +1 -0
  9. package/lib/async.d.ts +185 -0
  10. package/lib/async.d.ts.map +1 -0
  11. package/lib/async.js +467 -0
  12. package/lib/async.js.map +1 -0
  13. package/lib/buffer.d.ts +35 -0
  14. package/lib/buffer.d.ts.map +1 -0
  15. package/lib/buffer.js +174 -0
  16. package/lib/buffer.js.map +1 -0
  17. package/lib/cache.d.ts +12 -0
  18. package/lib/cache.d.ts.map +1 -0
  19. package/lib/cache.js +37 -0
  20. package/lib/cache.js.map +1 -0
  21. package/lib/cancellation.d.ts +23 -0
  22. package/lib/cancellation.d.ts.map +1 -0
  23. package/lib/cancellation.js +120 -0
  24. package/lib/cancellation.js.map +1 -0
  25. package/lib/charCode.d.ts +406 -0
  26. package/lib/charCode.d.ts.map +1 -0
  27. package/lib/charCode.js +8 -0
  28. package/lib/charCode.js.map +1 -0
  29. package/lib/character-classifier.d.ts +25 -0
  30. package/lib/character-classifier.d.ts.map +1 -0
  31. package/lib/character-classifier.js +59 -0
  32. package/lib/character-classifier.js.map +1 -0
  33. package/lib/const/encoding.d.ts +10 -0
  34. package/lib/const/encoding.d.ts.map +1 -0
  35. package/lib/const/encoding.js +244 -0
  36. package/lib/const/encoding.js.map +1 -0
  37. package/lib/const/index.d.ts +2 -0
  38. package/lib/const/index.d.ts.map +1 -0
  39. package/lib/const/index.js +5 -0
  40. package/lib/const/index.js.map +1 -0
  41. package/lib/date.d.ts +2 -0
  42. package/lib/date.d.ts.map +1 -0
  43. package/lib/date.js +22 -0
  44. package/lib/date.js.map +1 -0
  45. package/lib/decorators.d.ts +11 -0
  46. package/lib/decorators.d.ts.map +1 -0
  47. package/lib/decorators.js +151 -0
  48. package/lib/decorators.js.map +1 -0
  49. package/lib/disposable.d.ts +88 -0
  50. package/lib/disposable.d.ts.map +1 -0
  51. package/lib/disposable.js +316 -0
  52. package/lib/disposable.js.map +1 -0
  53. package/lib/encoding.d.ts +34 -0
  54. package/lib/encoding.d.ts.map +1 -0
  55. package/lib/encoding.js +217 -0
  56. package/lib/encoding.js.map +1 -0
  57. package/lib/errors.d.ts +56 -0
  58. package/lib/errors.d.ts.map +1 -0
  59. package/lib/errors.js +148 -0
  60. package/lib/errors.js.map +1 -0
  61. package/lib/event.d.ts +268 -0
  62. package/lib/event.d.ts.map +1 -0
  63. package/lib/event.js +816 -0
  64. package/lib/event.js.map +1 -0
  65. package/lib/file-uri.d.ts +15 -0
  66. package/lib/file-uri.d.ts.map +1 -0
  67. package/lib/file-uri.js +46 -0
  68. package/lib/file-uri.js.map +1 -0
  69. package/lib/filters.d.ts +47 -0
  70. package/lib/filters.d.ts.map +1 -0
  71. package/lib/filters.js +698 -0
  72. package/lib/filters.js.map +1 -0
  73. package/lib/functional.d.ts +4 -0
  74. package/lib/functional.d.ts.map +1 -0
  75. package/lib/functional.js +45 -0
  76. package/lib/functional.js.map +1 -0
  77. package/lib/glob.d.ts +46 -0
  78. package/lib/glob.d.ts.map +1 -0
  79. package/lib/glob.js +561 -0
  80. package/lib/glob.js.map +1 -0
  81. package/lib/hash.d.ts +38 -0
  82. package/lib/hash.d.ts.map +1 -0
  83. package/lib/hash.js +294 -0
  84. package/lib/hash.js.map +1 -0
  85. package/lib/index.d.ts +41 -0
  86. package/lib/index.d.ts.map +1 -0
  87. package/lib/index.js +45 -0
  88. package/lib/index.js.map +1 -0
  89. package/lib/iterator.d.ts +17 -0
  90. package/lib/iterator.d.ts.map +1 -0
  91. package/lib/iterator.js +24 -0
  92. package/lib/iterator.js.map +1 -0
  93. package/lib/lifecycle.d.ts +17 -0
  94. package/lib/lifecycle.d.ts.map +1 -0
  95. package/lib/lifecycle.js +39 -0
  96. package/lib/lifecycle.js.map +1 -0
  97. package/lib/linked-list.d.ts +18 -0
  98. package/lib/linked-list.d.ts.map +1 -0
  99. package/lib/linked-list.js +138 -0
  100. package/lib/linked-list.js.map +1 -0
  101. package/lib/linked-text.d.ts +13 -0
  102. package/lib/linked-text.d.ts.map +1 -0
  103. package/lib/linked-text.js +50 -0
  104. package/lib/linked-text.js.map +1 -0
  105. package/lib/lru-map.d.ts +41 -0
  106. package/lib/lru-map.d.ts.map +1 -0
  107. package/lib/lru-map.js +120 -0
  108. package/lib/lru-map.js.map +1 -0
  109. package/lib/map.d.ts +124 -0
  110. package/lib/map.d.ts.map +1 -0
  111. package/lib/map.js +819 -0
  112. package/lib/map.js.map +1 -0
  113. package/lib/marshalling.d.ts +7 -0
  114. package/lib/marshalling.d.ts.map +1 -0
  115. package/lib/marshalling.js +59 -0
  116. package/lib/marshalling.js.map +1 -0
  117. package/lib/objects.d.ts +6 -0
  118. package/lib/objects.d.ts.map +1 -0
  119. package/lib/objects.js +103 -0
  120. package/lib/objects.js.map +1 -0
  121. package/lib/os.d.ts +40 -0
  122. package/lib/os.d.ts.map +1 -0
  123. package/lib/os.js +75 -0
  124. package/lib/os.js.map +1 -0
  125. package/lib/path.d.ts +101 -0
  126. package/lib/path.d.ts.map +1 -0
  127. package/lib/path.js +1747 -0
  128. package/lib/path.js.map +1 -0
  129. package/lib/platform.d.ts +48 -0
  130. package/lib/platform.d.ts.map +1 -0
  131. package/lib/platform.js +154 -0
  132. package/lib/platform.js.map +1 -0
  133. package/lib/process.d.ts +5 -0
  134. package/lib/process.d.ts.map +1 -0
  135. package/lib/process.js +23 -0
  136. package/lib/process.js.map +1 -0
  137. package/lib/progress.d.ts +56 -0
  138. package/lib/progress.d.ts.map +1 -0
  139. package/lib/progress.js +27 -0
  140. package/lib/progress.js.map +1 -0
  141. package/lib/promise-util.d.ts +10 -0
  142. package/lib/promise-util.d.ts.map +1 -0
  143. package/lib/promise-util.js +17 -0
  144. package/lib/promise-util.js.map +1 -0
  145. package/lib/sequence.d.ts +20 -0
  146. package/lib/sequence.d.ts.map +1 -0
  147. package/lib/sequence.js +17 -0
  148. package/lib/sequence.js.map +1 -0
  149. package/lib/strings.d.ts +181 -0
  150. package/lib/strings.d.ts.map +1 -0
  151. package/lib/strings.js +858 -0
  152. package/lib/strings.js.map +1 -0
  153. package/lib/types.d.ts +69 -0
  154. package/lib/types.d.ts.map +1 -0
  155. package/lib/types.js +201 -0
  156. package/lib/types.js.map +1 -0
  157. package/lib/uint.d.ts +32 -0
  158. package/lib/uint.d.ts.map +1 -0
  159. package/lib/uint.js +28 -0
  160. package/lib/uint.js.map +1 -0
  161. package/lib/uri.d.ts +94 -0
  162. package/lib/uri.d.ts.map +1 -0
  163. package/lib/uri.js +231 -0
  164. package/lib/uri.js.map +1 -0
  165. package/lib/uuid.d.ts +2 -0
  166. package/lib/uuid.d.ts.map +1 -0
  167. package/lib/uuid.js +10 -0
  168. package/lib/uuid.js.map +1 -0
  169. package/package.json +25 -0
package/lib/ansi.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export declare const ansiRegex: ({ onlyFirst }?: {
2
+ onlyFirst?: boolean | undefined;
3
+ }) => RegExp;
4
+ export declare const stripAnsi: (str: any) => any;
5
+ //# sourceMappingURL=ansi.d.ts.map
@@ -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
@@ -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"}
@@ -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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"}