@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
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MutableDisposable = exports.DisposableCollection = exports.Disposable = exports.toDisposable = exports.combinedDisposable = exports.dispose = exports.isDisposable = exports.DisposableStore = void 0;
4
+ /** ******************************************************************************
5
+ * Copyright (C) 2017 TypeFox and others.
6
+ *
7
+ * This program and the accompanying materials are made available under the
8
+ * terms of the Eclipse Public License v. 2.0 which is available at
9
+ * http://www.eclipse.org/legal/epl-2.0.
10
+ *
11
+ * This Source Code may also be made available under the following Secondary
12
+ * Licenses when the conditions for such availability set forth in the Eclipse
13
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
14
+ * with the GNU Classpath Exception which is available at
15
+ * https://www.gnu.org/software/classpath/license.html.
16
+ *
17
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
18
+ ********************************************************************************/
19
+ const event_1 = require("./event");
20
+ // DisposableStore 是从 vscode lifecycle 中复制而来
21
+ class DisposableStore {
22
+ constructor() {
23
+ this.toDispose = new Set();
24
+ this._isDisposed = false;
25
+ }
26
+ /**
27
+ * Dispose of all registered disposables and mark this object as disposed.
28
+ *
29
+ * Any future disposables added to this object will be disposed of on `add`.
30
+ */
31
+ dispose() {
32
+ if (this._isDisposed) {
33
+ return;
34
+ }
35
+ markTracked(this);
36
+ this._isDisposed = true;
37
+ this.clear();
38
+ }
39
+ /**
40
+ * Dispose of all registered disposables but do not mark this object as disposed.
41
+ */
42
+ clear() {
43
+ this.toDispose.forEach((item) => item.dispose());
44
+ this.toDispose.clear();
45
+ }
46
+ add(t) {
47
+ if (!t) {
48
+ return t;
49
+ }
50
+ if (t === this) {
51
+ throw new Error('Cannot register a disposable on itself!');
52
+ }
53
+ markTracked(t);
54
+ if (this._isDisposed) {
55
+ // eslint-disable-next-line no-console
56
+ console.warn(new Error('Registering disposable on object that has already been disposed of').stack);
57
+ t.dispose();
58
+ }
59
+ else {
60
+ this.toDispose.add(t);
61
+ }
62
+ return t;
63
+ }
64
+ }
65
+ exports.DisposableStore = DisposableStore;
66
+ function isDisposable(thing) {
67
+ return typeof thing.dispose === 'function' && thing.dispose.length === 0;
68
+ }
69
+ exports.isDisposable = isDisposable;
70
+ function dispose(first, ...rest) {
71
+ if (Array.isArray(first)) {
72
+ first.forEach((d) => {
73
+ if (d) {
74
+ markTracked(d);
75
+ d.dispose();
76
+ }
77
+ });
78
+ return [];
79
+ }
80
+ else if (rest.length === 0) {
81
+ if (first) {
82
+ markTracked(first);
83
+ first.dispose();
84
+ return first;
85
+ }
86
+ return undefined;
87
+ }
88
+ else {
89
+ dispose(first);
90
+ dispose(rest);
91
+ return [];
92
+ }
93
+ }
94
+ exports.dispose = dispose;
95
+ function combinedDisposable(disposables) {
96
+ disposables.forEach(markTracked);
97
+ return trackDisposable({ dispose: () => dispose(disposables) });
98
+ }
99
+ exports.combinedDisposable = combinedDisposable;
100
+ function toDisposable(fn) {
101
+ return {
102
+ dispose() {
103
+ fn();
104
+ },
105
+ };
106
+ }
107
+ exports.toDisposable = toDisposable;
108
+ class Disposable {
109
+ constructor(...toDispose) {
110
+ this.disposables = [];
111
+ this.onDisposeEmitter = new event_1.Emitter();
112
+ this.disposingElements = false;
113
+ toDispose.forEach((d) => this.addDispose(d));
114
+ }
115
+ static create(func) {
116
+ return {
117
+ dispose: func,
118
+ };
119
+ }
120
+ get onDispose() {
121
+ return this.onDisposeEmitter.event;
122
+ }
123
+ checkDisposed() {
124
+ if (this.disposed && !this.disposingElements) {
125
+ this.onDisposeEmitter.fire(undefined);
126
+ }
127
+ }
128
+ get disposed() {
129
+ return this.disposables.length === 0;
130
+ }
131
+ dispose() {
132
+ if (this.disposed || this.disposingElements) {
133
+ return;
134
+ }
135
+ this.disposingElements = true;
136
+ while (!this.disposed) {
137
+ try {
138
+ this.disposables.pop().dispose();
139
+ }
140
+ catch (e) {
141
+ // eslint-disable-next-line no-console
142
+ console.error(e);
143
+ }
144
+ }
145
+ this.disposingElements = false;
146
+ this.checkDisposed();
147
+ }
148
+ addDispose(disposable) {
149
+ if (Array.isArray(disposable)) {
150
+ const disposables = disposable;
151
+ return disposables.map((disposable) => this.addDispose(disposable));
152
+ }
153
+ else {
154
+ return this.add(disposable);
155
+ }
156
+ }
157
+ registerDispose(disposable) {
158
+ if (disposable === this) {
159
+ throw new Error('Cannot register a disposable on itself!');
160
+ }
161
+ this.add(disposable);
162
+ return disposable;
163
+ }
164
+ add(disposable) {
165
+ const disposables = this.disposables;
166
+ disposables.push(disposable);
167
+ const originalDispose = disposable.dispose.bind(disposable);
168
+ const toRemove = Disposable.create(() => {
169
+ const index = disposables.indexOf(disposable);
170
+ if (index !== -1) {
171
+ disposables.splice(index, 1);
172
+ }
173
+ this.checkDisposed();
174
+ });
175
+ disposable.dispose = () => {
176
+ toRemove.dispose();
177
+ originalDispose();
178
+ };
179
+ return toRemove;
180
+ }
181
+ }
182
+ exports.Disposable = Disposable;
183
+ Disposable.NULL = Disposable.create(() => { });
184
+ Disposable.None = Object.freeze({ dispose() { } });
185
+ class DisposableCollection {
186
+ constructor(...toDispose) {
187
+ this.disposables = [];
188
+ this.onDisposeEmitter = new event_1.Emitter();
189
+ this.disposingElements = false;
190
+ toDispose.forEach((d) => this.push(d));
191
+ }
192
+ get onDispose() {
193
+ return this.onDisposeEmitter.event;
194
+ }
195
+ checkDisposed() {
196
+ if (this.disposed && !this.disposingElements) {
197
+ this.onDisposeEmitter.fire(undefined);
198
+ }
199
+ }
200
+ get disposed() {
201
+ return this.disposables.length === 0;
202
+ }
203
+ dispose() {
204
+ if (this.disposed || this.disposingElements) {
205
+ return;
206
+ }
207
+ this.disposingElements = true;
208
+ while (!this.disposed) {
209
+ try {
210
+ this.disposables.pop().dispose();
211
+ }
212
+ catch (e) {
213
+ // eslint-disable-next-line no-console
214
+ console.error(e);
215
+ }
216
+ }
217
+ this.disposingElements = false;
218
+ this.checkDisposed();
219
+ }
220
+ push(disposable) {
221
+ const disposables = this.disposables;
222
+ disposables.push(disposable);
223
+ const originalDispose = disposable.dispose.bind(disposable);
224
+ const toRemove = Disposable.create(() => {
225
+ const index = disposables.indexOf(disposable);
226
+ if (index !== -1) {
227
+ disposables.splice(index, 1);
228
+ }
229
+ this.checkDisposed();
230
+ });
231
+ disposable.dispose = () => {
232
+ toRemove.dispose();
233
+ originalDispose();
234
+ };
235
+ return toRemove;
236
+ }
237
+ pushAll(disposables) {
238
+ return disposables.map((disposable) => this.push(disposable));
239
+ }
240
+ }
241
+ exports.DisposableCollection = DisposableCollection;
242
+ /**
243
+ * Enables logging of potentially leaked disposables.
244
+ *
245
+ * A disposable is considered leaked if it is not disposed or not registered as the child of
246
+ * another disposable. This tracking is very simple an only works for classes that either
247
+ * extend Disposable or use a DisposableStore. This means there are a lot of false positives.
248
+ */
249
+ const TRACK_DISPOSABLES = false;
250
+ const __is_disposable_tracked__ = '__is_disposable_tracked__';
251
+ function markTracked(x) {
252
+ if (!TRACK_DISPOSABLES) {
253
+ return;
254
+ }
255
+ if (x && x !== Disposable.None) {
256
+ try {
257
+ x[__is_disposable_tracked__] = true;
258
+ }
259
+ catch (_a) {
260
+ // noop
261
+ }
262
+ }
263
+ }
264
+ function trackDisposable(x) {
265
+ if (!TRACK_DISPOSABLES) {
266
+ return x;
267
+ }
268
+ const stack = new Error('Potentially leaked disposable').stack;
269
+ setTimeout(() => {
270
+ if (!x[__is_disposable_tracked__]) {
271
+ // eslint-disable-next-line no-console
272
+ console.log(stack);
273
+ }
274
+ }, 3000);
275
+ return x;
276
+ }
277
+ /**
278
+ * Manages the lifecycle of a disposable value that may be changed.
279
+ *
280
+ * This ensures that when the the disposable value is changed, the previously held disposable is disposed of. You can
281
+ * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.
282
+ */
283
+ class MutableDisposable {
284
+ constructor() {
285
+ this._isDisposed = false;
286
+ trackDisposable(this);
287
+ }
288
+ get value() {
289
+ return this._isDisposed ? undefined : this._value;
290
+ }
291
+ set value(value) {
292
+ if (this._isDisposed || value === this._value) {
293
+ return;
294
+ }
295
+ if (this._value) {
296
+ this._value.dispose();
297
+ }
298
+ if (value) {
299
+ markTracked(value);
300
+ }
301
+ this._value = value;
302
+ }
303
+ clear() {
304
+ this.value = undefined;
305
+ }
306
+ dispose() {
307
+ this._isDisposed = true;
308
+ markTracked(this);
309
+ if (this._value) {
310
+ this._value.dispose();
311
+ }
312
+ this._value = undefined;
313
+ }
314
+ }
315
+ exports.MutableDisposable = MutableDisposable;
316
+ //# sourceMappingURL=disposable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposable.js","sourceRoot":"","sources":["../src/disposable.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,mCAAyC;AAEzC,4CAA4C;AAC5C,MAAa,eAAe;IAA5B;QACU,cAAS,GAAG,IAAI,GAAG,EAAe,CAAC;QACnC,gBAAW,GAAG,KAAK,CAAC;IA4C9B,CAAC;IA1CC;;;;OAIG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;SACR;QAED,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEM,GAAG,CAAwB,CAAI;QACpC,IAAI,CAAC,CAAC,EAAE;YACN,OAAO,CAAC,CAAC;SACV;QACD,IAAK,CAA4B,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC,KAAK,CAAC,CAAC;YACpG,CAAC,CAAC,OAAO,EAAE,CAAC;SACb;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACvB;QAED,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AA9CD,0CA8CC;AASD,SAAgB,YAAY,CAAmB,KAAQ;IACrD,OAAO,OAAQ,KAAqB,CAAC,OAAO,KAAK,UAAU,IAAK,KAAqB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7G,CAAC;AAFD,oCAEC;AAKD,SAAgB,OAAO,CAAwB,KAAc,EAAE,GAAG,IAAS;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,EAAE;gBACL,WAAW,CAAC,CAAC,CAAC,CAAC;gBACf,CAAC,CAAC,OAAO,EAAE,CAAC;aACb;QACH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;KACX;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,IAAI,KAAK,EAAE;YACT,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AArBD,0BAqBC;AAED,SAAgB,kBAAkB,CAAC,WAA0B;IAC3D,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjC,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AAHD,gDAGC;AAED,SAAgB,YAAY,CAAC,EAAc;IACzC,OAAO;QACL,OAAO;YACL,EAAE,EAAE,CAAC;QACP,CAAC;KACF,CAAC;AACJ,CAAC;AAND,oCAMC;AAED,MAAa,UAAU;IAIrB,YAAY,GAAG,SAAwB;QAHpB,gBAAW,GAAkB,EAAE,CAAC;QAChC,qBAAgB,GAAG,IAAI,eAAO,EAAQ,CAAC;QA8BlD,sBAAiB,GAAG,KAAK,CAAC;QA3BhC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAgB;QAC5B,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAMD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACrC,CAAC;IAES,aAAa;QACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;IACvC,CAAC;IAGD,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC3C,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrB,IAAI;gBACF,IAAI,CAAC,WAAW,CAAC,GAAG,EAAG,CAAC,OAAO,EAAE,CAAC;aACnC;YAAC,OAAO,CAAC,EAAE;gBACV,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;SACF;QACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAID,UAAU,CAAC,UAAuC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,WAAW,GAAG,UAAU,CAAC;YAC/B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;SACrE;aAAM;YACL,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC7B;IACH,CAAC;IAES,eAAe,CAAwB,UAAa;QAC5D,IAAK,UAAgC,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,GAAG,CAAC,UAAuB;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE;YACtC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,OAAO,GAAG,GAAG,EAAE;YACxB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAtFH,gCAuFC;AAzEQ,eAAI,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAEnC,eAAI,GAAG,MAAM,CAAC,MAAM,CAAc,EAAE,OAAO,KAAI,CAAC,EAAE,CAAC,CAAC;AAyE7D,MAAa,oBAAoB;IAI/B,YAAY,GAAG,SAAwB;QAHpB,gBAAW,GAAkB,EAAE,CAAC;QAChC,qBAAgB,GAAG,IAAI,eAAO,EAAQ,CAAC;QAoBlD,sBAAiB,GAAG,KAAK,CAAC;QAjBhC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACrC,CAAC;IAES,aAAa;QACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;IACvC,CAAC;IAGD,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC3C,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrB,IAAI;gBACF,IAAI,CAAC,WAAW,CAAC,GAAG,EAAG,CAAC,OAAO,EAAE,CAAC;aACnC;YAAC,OAAO,CAAC,EAAE;gBACV,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;SACF;QACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,UAAuB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE;YACtC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,OAAO,GAAG,GAAG,EAAE;YACxB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,WAA0B;QAChC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;CACF;AA7DD,oDA6DC;AAED;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AAE9D,SAAS,WAAW,CAAwB,CAAI;IAC9C,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO;KACR;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,EAAE;QAC9B,IAAI;YACD,CAAS,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;SAC9C;QAAC,WAAM;YACN,OAAO;SACR;KACF;AACH,CAAC;AAED,SAAS,eAAe,CAAwB,CAAI;IAClD,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,CAAC,CAAC;KACV;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,KAAM,CAAC;IAChE,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAE,CAAS,CAAC,yBAAyB,CAAC,EAAE;YAC1C,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACpB;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAa,iBAAiB;IAI5B;QAFQ,gBAAW,GAAG,KAAK,CAAC;QAG1B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,CAAC,KAAoB;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;YAC7C,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;QACD,IAAI,KAAK,EAAE;YACT,WAAW,CAAC,KAAK,CAAC,CAAC;SACpB;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;CACF;AAtCD,8CAsCC"}
@@ -0,0 +1,34 @@
1
+ /// <reference types="node" />
2
+ import { BinaryBuffer } from './buffer';
3
+ export declare const UTF8 = "utf8";
4
+ export declare const UTF8_with_bom = "utf8bom";
5
+ export declare const UTF16be = "utf16be";
6
+ export declare const UTF16le = "utf16le";
7
+ export declare const UTF16be_BOM: number[];
8
+ export declare const UTF16le_BOM: number[];
9
+ export declare const UTF8_BOM: number[];
10
+ export declare function isUTF8(encoding: string | null): boolean;
11
+ export declare function toIconvLiteEncoding(encodingName: string): string;
12
+ /**
13
+ * The encodings that are allowed in a settings file don't match the canonical encoding labels specified by WHATWG.
14
+ * See https://encoding.spec.whatwg.org/#names-and-labels
15
+ * Iconv-lite strips all non-alphanumeric characters, but ripgrep doesn't. For backcompat, allow these labels.
16
+ */
17
+ export declare function toCanonicalName(enc: string): string;
18
+ export declare function encodingExists(encoding: string): Promise<boolean>;
19
+ export declare function toNodeEncoding(enc: string | null): string;
20
+ /**
21
+ * nodejs 内置的 Buffer 转换编码不支持 GBK,使用第三方的 iconv-lite
22
+ * @param buffer Uint8Array | Buffer
23
+ * @param encoding 传入的是 SUPPORTED_ENCODINGS 已有的键值(已通过 tests case 的)
24
+ */
25
+ export declare function iconvDecode(buffer: Uint8Array | Buffer, encoding: string): string;
26
+ export declare function iconvEncode(content: string, encoding: string): Uint8Array | Buffer;
27
+ export declare function detectEncodingByBOMFromBuffer(buffer: BinaryBuffer | null, bytesRead: number): typeof UTF8_with_bom | typeof UTF16le | typeof UTF16be | null;
28
+ export interface IDetectedEncodingResult {
29
+ encoding: string | null;
30
+ seemsBinary: boolean;
31
+ }
32
+ export declare function detectEncodingFromBuffer(buffer: BinaryBuffer, autoGuessEncoding?: false): IDetectedEncodingResult;
33
+ export declare function detectEncodingFromBuffer(buffer: BinaryBuffer, autoGuessEncoding?: boolean): Promise<IDetectedEncodingResult>;
34
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,eAAO,MAAM,WAAW,UAAe,CAAC;AACxC,eAAO,MAAM,WAAW,UAAe,CAAC;AACxC,eAAO,MAAM,QAAQ,UAAqB,CAAC;AAK3C,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,WAK7C;AAQD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA+BnD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKzD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,UAGxE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAGlF;AAWD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,GAAG,IAAI,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,aAAa,GAAG,OAAO,OAAO,GAAG,OAAO,OAAO,GAAG,IAAI,CA8B/D;AAkCD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,KAAK,GAAG,uBAAuB,CAAC;AACnH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectEncodingFromBuffer = exports.detectEncodingByBOMFromBuffer = exports.iconvEncode = exports.iconvDecode = exports.toNodeEncoding = exports.encodingExists = exports.toCanonicalName = exports.toIconvLiteEncoding = exports.isUTF8 = exports.UTF8_BOM = exports.UTF16le_BOM = exports.UTF16be_BOM = exports.UTF16le = exports.UTF16be = exports.UTF8_with_bom = exports.UTF8 = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /* ---------------------------------------------------------------------------------------------
6
+ * Copyright (c) Microsoft Corporation. All rights reserved.
7
+ * Licensed under the MIT License. See License.txt in the project root for license information.
8
+ *--------------------------------------------------------------------------------------------*/
9
+ const iconv_lite_1 = (0, tslib_1.__importDefault)(require("iconv-lite"));
10
+ exports.UTF8 = 'utf8';
11
+ exports.UTF8_with_bom = 'utf8bom';
12
+ exports.UTF16be = 'utf16be';
13
+ exports.UTF16le = 'utf16le';
14
+ exports.UTF16be_BOM = [0xfe, 0xff];
15
+ exports.UTF16le_BOM = [0xff, 0xfe];
16
+ exports.UTF8_BOM = [0xef, 0xbb, 0xbf];
17
+ const ZERO_BYTE_DETECTION_BUFFER_MAX_LEN = 512; // number of bytes to look at to decide about a file being binary or not
18
+ const AUTO_ENCODING_GUESS_MAX_BYTES = 512 * 128; // set an upper limit for the number of bytes we pass on to jschardet
19
+ function isUTF8(encoding) {
20
+ if (encoding) {
21
+ return toIconvLiteEncoding(encoding) === exports.UTF8;
22
+ }
23
+ return false;
24
+ }
25
+ exports.isUTF8 = isUTF8;
26
+ const SUPPORT_ENCODINGS_TO_ICONV_ENCODINGS = {
27
+ ibm866: 'cp866',
28
+ big5: 'cp950',
29
+ utf8bom: 'utf8',
30
+ };
31
+ function toIconvLiteEncoding(encodingName) {
32
+ const normalizedEncodingName = encodingName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
33
+ const mapped = SUPPORT_ENCODINGS_TO_ICONV_ENCODINGS[normalizedEncodingName];
34
+ return mapped || normalizedEncodingName;
35
+ }
36
+ exports.toIconvLiteEncoding = toIconvLiteEncoding;
37
+ /**
38
+ * The encodings that are allowed in a settings file don't match the canonical encoding labels specified by WHATWG.
39
+ * See https://encoding.spec.whatwg.org/#names-and-labels
40
+ * Iconv-lite strips all non-alphanumeric characters, but ripgrep doesn't. For backcompat, allow these labels.
41
+ */
42
+ function toCanonicalName(enc) {
43
+ switch (enc) {
44
+ case 'shiftjis':
45
+ return 'shift-jis';
46
+ case 'utf16le':
47
+ return 'utf-16le';
48
+ case 'utf16be':
49
+ return 'utf-16be';
50
+ case 'big5hkscs':
51
+ return 'big5-hkscs';
52
+ case 'eucjp':
53
+ return 'euc-jp';
54
+ case 'euckr':
55
+ return 'euc-kr';
56
+ case 'koi8r':
57
+ return 'koi8-r';
58
+ case 'koi8u':
59
+ return 'koi8-u';
60
+ case 'macroman':
61
+ return 'x-mac-roman';
62
+ case 'utf8bom':
63
+ return 'utf8';
64
+ default: {
65
+ const m = enc.match(/windows(\d+)/);
66
+ if (m) {
67
+ return 'windows-' + m[1];
68
+ }
69
+ return enc;
70
+ }
71
+ }
72
+ }
73
+ exports.toCanonicalName = toCanonicalName;
74
+ async function encodingExists(encoding) {
75
+ return iconv_lite_1.default.encodingExists(toNodeEncoding(encoding));
76
+ }
77
+ exports.encodingExists = encodingExists;
78
+ function toNodeEncoding(enc) {
79
+ if (enc === exports.UTF8_with_bom || enc === null) {
80
+ return exports.UTF8; // iconv does not distinguish UTF 8 with or without BOM, so we need to help it
81
+ }
82
+ return enc;
83
+ }
84
+ exports.toNodeEncoding = toNodeEncoding;
85
+ /**
86
+ * nodejs 内置的 Buffer 转换编码不支持 GBK,使用第三方的 iconv-lite
87
+ * @param buffer Uint8Array | Buffer
88
+ * @param encoding 传入的是 SUPPORTED_ENCODINGS 已有的键值(已通过 tests case 的)
89
+ */
90
+ function iconvDecode(buffer, encoding) {
91
+ encoding = toIconvLiteEncoding(encoding);
92
+ return iconv_lite_1.default.decode(buffer, encoding);
93
+ }
94
+ exports.iconvDecode = iconvDecode;
95
+ function iconvEncode(content, encoding) {
96
+ encoding = toIconvLiteEncoding(encoding);
97
+ return iconv_lite_1.default.encode(content, encoding);
98
+ }
99
+ exports.iconvEncode = iconvEncode;
100
+ function encodeLatin1(buffer) {
101
+ let result = '';
102
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
103
+ for (let i = 0; i < buffer.length; i++) {
104
+ result += String.fromCharCode(buffer[i]);
105
+ }
106
+ return result;
107
+ }
108
+ function detectEncodingByBOMFromBuffer(buffer, bytesRead) {
109
+ if (!buffer || bytesRead < exports.UTF16be_BOM.length) {
110
+ return null;
111
+ }
112
+ const b0 = buffer.readUInt8(0);
113
+ const b1 = buffer.readUInt8(1);
114
+ // UTF-16 BE
115
+ if (b0 === exports.UTF16be_BOM[0] && b1 === exports.UTF16be_BOM[1]) {
116
+ return exports.UTF16be;
117
+ }
118
+ // UTF-16 LE
119
+ if (b0 === exports.UTF16le_BOM[0] && b1 === exports.UTF16le_BOM[1]) {
120
+ return exports.UTF16le;
121
+ }
122
+ if (bytesRead < exports.UTF8_BOM.length) {
123
+ return null;
124
+ }
125
+ const b2 = buffer.readUInt8(2);
126
+ // UTF-8
127
+ if (b0 === exports.UTF8_BOM[0] && b1 === exports.UTF8_BOM[1] && b2 === exports.UTF8_BOM[2]) {
128
+ return exports.UTF8_with_bom;
129
+ }
130
+ return null;
131
+ }
132
+ exports.detectEncodingByBOMFromBuffer = detectEncodingByBOMFromBuffer;
133
+ // we explicitly ignore a specific set of encodings from auto guessing
134
+ // - ASCII: we never want this encoding (most UTF-8 files would happily detect as
135
+ // ASCII files and then you could not type non-ASCII characters anymore)
136
+ // - UTF-16: we have our own detection logic for UTF-16
137
+ // - UTF-32: we do not support this encoding in VSCode
138
+ const IGNORE_ENCODINGS = ['ascii', 'utf-16', 'utf-32'];
139
+ async function guessEncodingByBuffer(buffer) {
140
+ // lazy load
141
+ const jschardet = require('jschardet');
142
+ // ensure to limit buffer for guessing due to https://github.com/aadsm/jschardet/issues/53
143
+ const limitedBuffer = buffer.slice(0, AUTO_ENCODING_GUESS_MAX_BYTES);
144
+ // before guessing jschardet calls toString('binary') on input if it is a Buffer,
145
+ // since we are using it inside browser environment as well we do conversion ourselves
146
+ // https://github.com/aadsm/jschardet/blob/v2.1.1/src/index.js#L36-L40
147
+ const binaryString = encodeLatin1(limitedBuffer.buffer);
148
+ const guessed = jschardet.detect(binaryString);
149
+ if (!guessed || !guessed.encoding) {
150
+ return null;
151
+ }
152
+ const enc = guessed.encoding.toLowerCase();
153
+ if (0 <= IGNORE_ENCODINGS.indexOf(enc)) {
154
+ return null; // see comment above why we ignore some encodings
155
+ }
156
+ return toIconvLiteEncoding(guessed.encoding);
157
+ }
158
+ function detectEncodingFromBuffer(buffer, autoGuessEncoding) {
159
+ const bytesRead = buffer.byteLength;
160
+ // Always first check for BOM to find out about encoding
161
+ let encoding = detectEncodingByBOMFromBuffer(buffer, bytesRead);
162
+ // Detect 0 bytes to see if file is binary or UTF-16 LE/BE
163
+ // unless we already know that this file has a UTF-16 encoding
164
+ let seemsBinary = false;
165
+ if (encoding !== exports.UTF16be && encoding !== exports.UTF16le && buffer) {
166
+ let couldBeUTF16LE = true; // e.g. 0xAA 0x00
167
+ let couldBeUTF16BE = true; // e.g. 0x00 0xAA
168
+ let containsZeroByte = false;
169
+ // This is a simplified guess to detect UTF-16 BE or LE by just checking if
170
+ // the first 512 bytes have the 0-byte at a specific location. For UTF-16 LE
171
+ // this would be the odd byte index and for UTF-16 BE the even one.
172
+ // Note: this can produce false positives (a binary file that uses a 2-byte
173
+ // encoding of the same format as UTF-16) and false negatives (a UTF-16 file
174
+ // that is using 4 bytes to encode a character).
175
+ for (let i = 0; i < bytesRead && i < ZERO_BYTE_DETECTION_BUFFER_MAX_LEN; i++) {
176
+ const isEndian = i % 2 === 1; // assume 2-byte sequences typical for UTF-16
177
+ const isZeroByte = buffer.readUInt8(i) === 0;
178
+ if (isZeroByte) {
179
+ containsZeroByte = true;
180
+ }
181
+ // UTF-16 LE: expect e.g. 0xAA 0x00
182
+ if (couldBeUTF16LE && ((isEndian && !isZeroByte) || (!isEndian && isZeroByte))) {
183
+ couldBeUTF16LE = false;
184
+ }
185
+ // UTF-16 BE: expect e.g. 0x00 0xAA
186
+ if (couldBeUTF16BE && ((isEndian && isZeroByte) || (!isEndian && !isZeroByte))) {
187
+ couldBeUTF16BE = false;
188
+ }
189
+ // Return if this is neither UTF16-LE nor UTF16-BE and thus treat as binary
190
+ if (isZeroByte && !couldBeUTF16LE && !couldBeUTF16BE) {
191
+ break;
192
+ }
193
+ }
194
+ // Handle case of 0-byte included
195
+ if (containsZeroByte) {
196
+ if (couldBeUTF16LE) {
197
+ encoding = exports.UTF16le;
198
+ }
199
+ else if (couldBeUTF16BE) {
200
+ encoding = exports.UTF16be;
201
+ }
202
+ else {
203
+ seemsBinary = true;
204
+ }
205
+ }
206
+ }
207
+ // Auto guess encoding if configured
208
+ if (autoGuessEncoding && !seemsBinary && !encoding && buffer) {
209
+ return guessEncodingByBuffer(buffer.slice(0, bytesRead)).then((guessedEncoding) => ({
210
+ seemsBinary: false,
211
+ encoding: guessedEncoding,
212
+ }));
213
+ }
214
+ return { seemsBinary, encoding };
215
+ }
216
+ exports.detectEncodingFromBuffer = detectEncodingFromBuffer;
217
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAChG,yEAA+B;AAIlB,QAAA,IAAI,GAAG,MAAM,CAAC;AACd,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,OAAO,GAAG,SAAS,CAAC;AAEpB,QAAA,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3B,QAAA,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3B,QAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE3C,MAAM,kCAAkC,GAAG,GAAG,CAAC,CAAC,wEAAwE;AACxH,MAAM,6BAA6B,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,qEAAqE;AAEtH,SAAgB,MAAM,CAAC,QAAuB;IAC5C,IAAI,QAAQ,EAAE;QACZ,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,YAAI,CAAC;KAC/C;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,wBAKC;AAED,MAAM,oCAAoC,GAA+B;IACvE,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,SAAgB,mBAAmB,CAAC,YAAoB;IACtD,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvF,MAAM,MAAM,GAAG,oCAAoC,CAAC,sBAAsB,CAAC,CAAC;IAE5E,OAAO,MAAM,IAAI,sBAAsB,CAAC;AAC1C,CAAC;AALD,kDAKC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,QAAQ,GAAG,EAAE;QACX,KAAK,UAAU;YACb,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,OAAO,CAAC,CAAC;YACP,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE;gBACL,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YAED,OAAO,GAAG,CAAC;SACZ;KACF;AACH,CAAC;AA/BD,0CA+BC;AAEM,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,OAAO,oBAAK,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAFD,wCAEC;AAED,SAAgB,cAAc,CAAC,GAAkB;IAC/C,IAAI,GAAG,KAAK,qBAAa,IAAI,GAAG,KAAK,IAAI,EAAE;QACzC,OAAO,YAAI,CAAC,CAAC,8EAA8E;KAC5F;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AALD,wCAKC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,MAA2B,EAAE,QAAgB;IACvE,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,oBAAK,CAAC,MAAM,CAAC,MAAgB,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAHD,kCAGC;AAED,SAAgB,WAAW,CAAC,OAAe,EAAE,QAAgB;IAC3D,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,oBAAK,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,kCAGC;AAED,SAAS,YAAY,CAAC,MAAkB;IACtC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,4DAA4D;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,6BAA6B,CAC3C,MAA2B,EAC3B,SAAiB;IAEjB,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,mBAAW,CAAC,MAAM,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE/B,YAAY;IACZ,IAAI,EAAE,KAAK,mBAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,mBAAW,CAAC,CAAC,CAAC,EAAE;QAClD,OAAO,eAAO,CAAC;KAChB;IAED,YAAY;IACZ,IAAI,EAAE,KAAK,mBAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,mBAAW,CAAC,CAAC,CAAC,EAAE;QAClD,OAAO,eAAO,CAAC;KAChB;IAED,IAAI,SAAS,GAAG,gBAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE/B,QAAQ;IACR,IAAI,EAAE,KAAK,gBAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,gBAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,gBAAQ,CAAC,CAAC,CAAC,EAAE;QAClE,OAAO,qBAAa,CAAC;KACtB;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAjCD,sEAiCC;AAED,sEAAsE;AACtE,iFAAiF;AACjF,iFAAiF;AACjF,uDAAuD;AACvD,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEvD,KAAK,UAAU,qBAAqB,CAAC,MAAoB;IACvD,YAAY;IACZ,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEvC,0FAA0F;IAC1F,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAErE,iFAAiF;IACjF,sFAAsF;IACtF,sEAAsE;IACtE,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtC,OAAO,IAAI,CAAC,CAAC,iDAAiD;KAC/D;IAED,OAAO,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAYD,SAAgB,wBAAwB,CACtC,MAAoB,EACpB,iBAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,wDAAwD;IACxD,IAAI,QAAQ,GAAG,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEhE,0DAA0D;IAC1D,8DAA8D;IAC9D,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,QAAQ,KAAK,eAAO,IAAI,QAAQ,KAAK,eAAO,IAAI,MAAM,EAAE;QAC1D,IAAI,cAAc,GAAG,IAAI,CAAC,CAAC,iBAAiB;QAC5C,IAAI,cAAc,GAAG,IAAI,CAAC,CAAC,iBAAiB;QAC5C,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,2EAA2E;QAC3E,4EAA4E;QAC5E,mEAAmE;QACnE,2EAA2E;QAC3E,4EAA4E;QAC5E,gDAAgD;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,kCAAkC,EAAE,CAAC,EAAE,EAAE;YAC5E,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;YAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAE7C,IAAI,UAAU,EAAE;gBACd,gBAAgB,GAAG,IAAI,CAAC;aACzB;YAED,mCAAmC;YACnC,IAAI,cAAc,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC,EAAE;gBAC9E,cAAc,GAAG,KAAK,CAAC;aACxB;YAED,mCAAmC;YACnC,IAAI,cAAc,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAC9E,cAAc,GAAG,KAAK,CAAC;aACxB;YAED,2EAA2E;YAC3E,IAAI,UAAU,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE;gBACpD,MAAM;aACP;SACF;QAED,iCAAiC;QACjC,IAAI,gBAAgB,EAAE;YACpB,IAAI,cAAc,EAAE;gBAClB,QAAQ,GAAG,eAAO,CAAC;aACpB;iBAAM,IAAI,cAAc,EAAE;gBACzB,QAAQ,GAAG,eAAO,CAAC;aACpB;iBAAM;gBACL,WAAW,GAAG,IAAI,CAAC;aACpB;SACF;KACF;IAED,oCAAoC;IACpC,IAAI,iBAAiB,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE;QAC5D,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAClF,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC,CAAC;KACL;IAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAnED,4DAmEC"}
@@ -0,0 +1,56 @@
1
+ export declare type ErrorListenerCallback = (error: any) => void;
2
+ export declare type ErrorListenerUnbind = () => void;
3
+ export declare class ErrorHandler {
4
+ private unexpectedErrorHandler;
5
+ private listeners;
6
+ constructor();
7
+ addListener(listener: ErrorListenerCallback): ErrorListenerUnbind;
8
+ private emit;
9
+ private _removeListener;
10
+ setUnexpectedErrorHandler(newUnexpectedErrorHandler: (e: any) => void): void;
11
+ getUnexpectedErrorHandler(): (e: any) => void;
12
+ onUnexpectedError(e: any): void;
13
+ onUnexpectedExternalError(e: any): void;
14
+ }
15
+ export declare const errorHandler: ErrorHandler;
16
+ export declare function setUnexpectedErrorHandler(newUnexpectedErrorHandler: (e: any) => void): void;
17
+ export declare function onUnexpectedError(e: any): undefined;
18
+ export declare function onUnexpectedExternalError(e: any): undefined;
19
+ export interface SerializedError {
20
+ readonly $isError: true;
21
+ readonly name: string;
22
+ readonly message: string;
23
+ readonly stack: string;
24
+ }
25
+ export declare function transformErrorForSerialization(error: Error): SerializedError;
26
+ export declare function transformErrorForSerialization(error: any): any;
27
+ export interface V8CallSite {
28
+ getThis(): any;
29
+ getTypeName(): string;
30
+ getFunction(): string;
31
+ getFunctionName(): string;
32
+ getMethodName(): string;
33
+ getFileName(): string;
34
+ getLineNumber(): number;
35
+ getColumnNumber(): number;
36
+ getEvalOrigin(): string;
37
+ isToplevel(): boolean;
38
+ isEval(): boolean;
39
+ isNative(): boolean;
40
+ isConstructor(): boolean;
41
+ toString(): string;
42
+ }
43
+ /**
44
+ * Checks if the given error is a promise in canceled state
45
+ */
46
+ export declare function isPromiseCanceledError(error: any): boolean;
47
+ /**
48
+ * Returns an error that signals cancellation.
49
+ */
50
+ export declare function canceled(): Error;
51
+ export declare function illegalArgument(name?: string): Error;
52
+ export declare function illegalState(name?: string): Error;
53
+ export declare function readonly(name?: string): Error;
54
+ export declare function disposed(what: string): Error;
55
+ export declare function getErrorMessage(err: any): string;
56
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAMA,oBAAY,qBAAqB,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;AAEzD,oBAAY,mBAAmB,GAAG,MAAM,IAAI,CAAC;AAG7C,qBAAa,YAAY;IACvB,OAAO,CAAC,sBAAsB,CAAmB;IACjD,OAAO,CAAC,SAAS,CAA0B;;IAgBpC,WAAW,CAAC,QAAQ,EAAE,qBAAqB,GAAG,mBAAmB;IAQxE,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,eAAe;IAIhB,yBAAyB,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI5E,yBAAyB,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI;IAI7C,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAM/B,yBAAyB,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;CAG/C;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C,wBAAgB,yBAAyB,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAE3F;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,CAMnD;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,CAM3D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAAC;AAC9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC;AAkBhE,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,GAAG,CAAC;IACf,WAAW,IAAI,MAAM,CAAC;IACtB,WAAW,IAAI,MAAM,CAAC;IACtB,eAAe,IAAI,MAAM,CAAC;IAC1B,aAAa,IAAI,MAAM,CAAC;IACxB,WAAW,IAAI,MAAM,CAAC;IACtB,aAAa,IAAI,MAAM,CAAC;IACxB,eAAe,IAAI,MAAM,CAAC;IAC1B,aAAa,IAAI,MAAM,CAAC;IACxB,UAAU,IAAI,OAAO,CAAC;IACtB,MAAM,IAAI,OAAO,CAAC;IAClB,QAAQ,IAAI,OAAO,CAAC;IACpB,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,CAIhC;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAMpD;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAMjD;AAED,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAI7C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAI5C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAchD"}