@opensumi/ide-core-common 2.17.9 → 2.18.1

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 (296) hide show
  1. package/lib/application-error.d.ts.map +1 -1
  2. package/lib/application-error.js +6 -0
  3. package/lib/application-error.js.map +1 -1
  4. package/lib/command.d.ts +1 -2
  5. package/lib/command.d.ts.map +1 -1
  6. package/lib/command.js +4 -4
  7. package/lib/command.js.map +1 -1
  8. package/lib/{utils/comparers.d.ts → comparers.d.ts} +1 -1
  9. package/lib/comparers.d.ts.map +1 -0
  10. package/lib/{utils/comparers.js → comparers.js} +5 -5
  11. package/lib/comparers.js.map +1 -0
  12. package/lib/const/application.d.ts +1 -0
  13. package/lib/const/application.d.ts.map +1 -1
  14. package/lib/const/application.js +3 -1
  15. package/lib/const/application.js.map +1 -1
  16. package/lib/const/index.d.ts +1 -1
  17. package/lib/const/index.d.ts.map +1 -1
  18. package/lib/const/index.js +1 -1
  19. package/lib/const/index.js.map +1 -1
  20. package/lib/crypto.d.ts +7 -0
  21. package/lib/{cryptr.d.ts.map → crypto.d.ts.map} +1 -1
  22. package/lib/crypto.js +6 -0
  23. package/lib/crypto.js.map +1 -0
  24. package/lib/electron.d.ts +2 -2
  25. package/lib/electron.d.ts.map +1 -1
  26. package/lib/electron.js.map +1 -1
  27. package/lib/event-bus/event-bus-types.d.ts +3 -4
  28. package/lib/event-bus/event-bus-types.d.ts.map +1 -1
  29. package/lib/event-bus/event-bus.d.ts +3 -3
  30. package/lib/event-bus/event-bus.d.ts.map +1 -1
  31. package/lib/event-bus/event-bus.js +3 -3
  32. package/lib/event-bus/event-bus.js.map +1 -1
  33. package/lib/event-bus/event-decorator.d.ts +1 -1
  34. package/lib/event-bus/event-decorator.d.ts.map +1 -1
  35. package/lib/event-bus/event-decorator.js +2 -2
  36. package/lib/event-bus/event-decorator.js.map +1 -1
  37. package/lib/hash-calculate/hash-calculate.d.ts.map +1 -1
  38. package/lib/hash-calculate/hash-calculate.js +2 -2
  39. package/lib/hash-calculate/hash-calculate.js.map +1 -1
  40. package/lib/index.d.ts +4 -18
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +4 -18
  43. package/lib/index.js.map +1 -1
  44. package/lib/keyboard/keyboard-layout-provider.d.ts +1 -1
  45. package/lib/keyboard/keyboard-layout-provider.d.ts.map +1 -1
  46. package/lib/keyboard/keymap.js +4 -4
  47. package/lib/keyboard/keymap.js.map +1 -1
  48. package/lib/localize.d.ts.map +1 -1
  49. package/lib/localize.js +7 -7
  50. package/lib/localize.js.map +1 -1
  51. package/lib/log.d.ts +1 -1
  52. package/lib/log.d.ts.map +1 -1
  53. package/lib/{utils/markdown.d.ts → markdown.d.ts} +1 -1
  54. package/lib/markdown.d.ts.map +1 -0
  55. package/lib/{utils/markdown.js → markdown.js} +0 -0
  56. package/lib/markdown.js.map +1 -0
  57. package/lib/menu.d.ts +1 -1
  58. package/lib/menu.d.ts.map +1 -1
  59. package/lib/menu.js.map +1 -1
  60. package/lib/network.d.ts +2 -1
  61. package/lib/network.d.ts.map +1 -1
  62. package/lib/network.js +19 -18
  63. package/lib/network.js.map +1 -1
  64. package/lib/problem-matcher.d.ts +1 -3
  65. package/lib/problem-matcher.d.ts.map +1 -1
  66. package/lib/problem-matcher.js +5 -6
  67. package/lib/problem-matcher.js.map +1 -1
  68. package/lib/problem-pattern.d.ts +1 -2
  69. package/lib/problem-pattern.d.ts.map +1 -1
  70. package/lib/problem-pattern.js +9 -10
  71. package/lib/problem-pattern.js.map +1 -1
  72. package/lib/reference.d.ts +1 -3
  73. package/lib/reference.d.ts.map +1 -1
  74. package/lib/reference.js +4 -5
  75. package/lib/reference.js.map +1 -1
  76. package/lib/reporter.d.ts +1 -1
  77. package/lib/reporter.d.ts.map +1 -1
  78. package/lib/storage.d.ts +1 -4
  79. package/lib/storage.d.ts.map +1 -1
  80. package/lib/storage.js +11 -11
  81. package/lib/storage.js.map +1 -1
  82. package/lib/task-definition.d.ts +1 -1
  83. package/lib/task-definition.d.ts.map +1 -1
  84. package/lib/task-definition.js +6 -6
  85. package/lib/task-definition.js.map +1 -1
  86. package/lib/types/application.d.ts +4 -4
  87. package/lib/types/application.d.ts.map +1 -1
  88. package/lib/types/authentication.d.ts +1 -2
  89. package/lib/types/authentication.d.ts.map +1 -1
  90. package/lib/types/authentication.js.map +1 -1
  91. package/lib/types/common.d.ts +2 -2
  92. package/lib/types/common.d.ts.map +1 -1
  93. package/lib/types/extension.d.ts +1 -1
  94. package/lib/types/extension.d.ts.map +1 -1
  95. package/lib/types/extension.js.map +1 -1
  96. package/lib/types/file-watch.d.ts +1 -1
  97. package/lib/types/file-watch.d.ts.map +1 -1
  98. package/lib/types/file-watch.js +2 -2
  99. package/lib/types/file-watch.js.map +1 -1
  100. package/lib/types/file.d.ts +1 -1
  101. package/lib/types/file.d.ts.map +1 -1
  102. package/lib/types/index.d.ts +1 -0
  103. package/lib/types/index.d.ts.map +1 -1
  104. package/lib/types/index.js +1 -0
  105. package/lib/types/index.js.map +1 -1
  106. package/lib/types/markdown.d.ts +2 -1
  107. package/lib/types/markdown.d.ts.map +1 -1
  108. package/lib/types/markers/markers-manager.d.ts +2 -2
  109. package/lib/types/markers/markers-manager.d.ts.map +1 -1
  110. package/lib/types/markers/markers-manager.js +25 -23
  111. package/lib/types/markers/markers-manager.js.map +1 -1
  112. package/lib/types/markers/markers.js +2 -2
  113. package/lib/types/markers/markers.js.map +1 -1
  114. package/lib/utils/ipc.d.ts.map +1 -1
  115. package/lib/utils/ipc.js +7 -8
  116. package/lib/utils/ipc.js.map +1 -1
  117. package/package.json +4 -7
  118. package/lib/arrays.d.ts +0 -134
  119. package/lib/arrays.d.ts.map +0 -1
  120. package/lib/arrays.js +0 -545
  121. package/lib/arrays.js.map +0 -1
  122. package/lib/async.d.ts +0 -185
  123. package/lib/async.d.ts.map +0 -1
  124. package/lib/async.js +0 -469
  125. package/lib/async.js.map +0 -1
  126. package/lib/cache.d.ts +0 -12
  127. package/lib/cache.d.ts.map +0 -1
  128. package/lib/cache.js +0 -37
  129. package/lib/cache.js.map +0 -1
  130. package/lib/cancellation.d.ts +0 -23
  131. package/lib/cancellation.d.ts.map +0 -1
  132. package/lib/cancellation.js +0 -120
  133. package/lib/cancellation.js.map +0 -1
  134. package/lib/charCode.d.ts +0 -406
  135. package/lib/charCode.d.ts.map +0 -1
  136. package/lib/charCode.js +0 -8
  137. package/lib/charCode.js.map +0 -1
  138. package/lib/character-classifier.d.ts +0 -25
  139. package/lib/character-classifier.d.ts.map +0 -1
  140. package/lib/character-classifier.js +0 -59
  141. package/lib/character-classifier.js.map +0 -1
  142. package/lib/const/encodings.d.ts +0 -10
  143. package/lib/const/encodings.d.ts.map +0 -1
  144. package/lib/const/encodings.js +0 -244
  145. package/lib/const/encodings.js.map +0 -1
  146. package/lib/cryptr.d.ts +0 -7
  147. package/lib/cryptr.js +0 -6
  148. package/lib/cryptr.js.map +0 -1
  149. package/lib/date.d.ts +0 -2
  150. package/lib/date.d.ts.map +0 -1
  151. package/lib/date.js +0 -22
  152. package/lib/date.js.map +0 -1
  153. package/lib/disposable.d.ts +0 -88
  154. package/lib/disposable.d.ts.map +0 -1
  155. package/lib/disposable.js +0 -316
  156. package/lib/disposable.js.map +0 -1
  157. package/lib/encoding/index.d.ts +0 -34
  158. package/lib/encoding/index.d.ts.map +0 -1
  159. package/lib/encoding/index.js +0 -219
  160. package/lib/encoding/index.js.map +0 -1
  161. package/lib/errors.d.ts +0 -56
  162. package/lib/errors.d.ts.map +0 -1
  163. package/lib/errors.js +0 -148
  164. package/lib/errors.js.map +0 -1
  165. package/lib/event.d.ts +0 -268
  166. package/lib/event.d.ts.map +0 -1
  167. package/lib/event.js +0 -816
  168. package/lib/event.js.map +0 -1
  169. package/lib/filters.d.ts +0 -47
  170. package/lib/filters.d.ts.map +0 -1
  171. package/lib/filters.js +0 -699
  172. package/lib/filters.js.map +0 -1
  173. package/lib/functional.d.ts +0 -4
  174. package/lib/functional.d.ts.map +0 -1
  175. package/lib/functional.js +0 -45
  176. package/lib/functional.js.map +0 -1
  177. package/lib/iterator.d.ts +0 -17
  178. package/lib/iterator.d.ts.map +0 -1
  179. package/lib/iterator.js +0 -24
  180. package/lib/iterator.js.map +0 -1
  181. package/lib/lifecycle.d.ts +0 -17
  182. package/lib/lifecycle.d.ts.map +0 -1
  183. package/lib/lifecycle.js +0 -39
  184. package/lib/lifecycle.js.map +0 -1
  185. package/lib/linked-list.d.ts +0 -18
  186. package/lib/linked-list.d.ts.map +0 -1
  187. package/lib/linked-list.js +0 -138
  188. package/lib/linked-list.js.map +0 -1
  189. package/lib/linkedText.d.ts +0 -13
  190. package/lib/linkedText.d.ts.map +0 -1
  191. package/lib/linkedText.js +0 -50
  192. package/lib/linkedText.js.map +0 -1
  193. package/lib/map.d.ts +0 -124
  194. package/lib/map.d.ts.map +0 -1
  195. package/lib/map.js +0 -819
  196. package/lib/map.js.map +0 -1
  197. package/lib/path.d.ts +0 -92
  198. package/lib/path.d.ts.map +0 -1
  199. package/lib/path.js +0 -1695
  200. package/lib/path.js.map +0 -1
  201. package/lib/platform.d.ts +0 -48
  202. package/lib/platform.d.ts.map +0 -1
  203. package/lib/platform.js +0 -153
  204. package/lib/platform.js.map +0 -1
  205. package/lib/process.d.ts +0 -5
  206. package/lib/process.d.ts.map +0 -1
  207. package/lib/process.js +0 -23
  208. package/lib/process.js.map +0 -1
  209. package/lib/progress.d.ts +0 -56
  210. package/lib/progress.d.ts.map +0 -1
  211. package/lib/progress.js +0 -27
  212. package/lib/progress.js.map +0 -1
  213. package/lib/sequence.d.ts +0 -20
  214. package/lib/sequence.d.ts.map +0 -1
  215. package/lib/sequence.js +0 -17
  216. package/lib/sequence.js.map +0 -1
  217. package/lib/uint.d.ts +0 -32
  218. package/lib/uint.d.ts.map +0 -1
  219. package/lib/uint.js +0 -28
  220. package/lib/uint.js.map +0 -1
  221. package/lib/uri.d.ts +0 -94
  222. package/lib/uri.d.ts.map +0 -1
  223. package/lib/uri.js +0 -231
  224. package/lib/uri.js.map +0 -1
  225. package/lib/utils/ansi.d.ts +0 -5
  226. package/lib/utils/ansi.d.ts.map +0 -1
  227. package/lib/utils/ansi.js +0 -14
  228. package/lib/utils/ansi.js.map +0 -1
  229. package/lib/utils/arrays.d.ts +0 -66
  230. package/lib/utils/arrays.d.ts.map +0 -1
  231. package/lib/utils/arrays.js +0 -260
  232. package/lib/utils/arrays.js.map +0 -1
  233. package/lib/utils/buffer.d.ts +0 -35
  234. package/lib/utils/buffer.d.ts.map +0 -1
  235. package/lib/utils/buffer.js +0 -174
  236. package/lib/utils/buffer.js.map +0 -1
  237. package/lib/utils/comparers.d.ts.map +0 -1
  238. package/lib/utils/comparers.js.map +0 -1
  239. package/lib/utils/decorators.d.ts +0 -11
  240. package/lib/utils/decorators.d.ts.map +0 -1
  241. package/lib/utils/decorators.js +0 -151
  242. package/lib/utils/decorators.js.map +0 -1
  243. package/lib/utils/file-uri.d.ts +0 -15
  244. package/lib/utils/file-uri.d.ts.map +0 -1
  245. package/lib/utils/file-uri.js +0 -46
  246. package/lib/utils/file-uri.js.map +0 -1
  247. package/lib/utils/glob.d.ts +0 -46
  248. package/lib/utils/glob.d.ts.map +0 -1
  249. package/lib/utils/glob.js +0 -556
  250. package/lib/utils/glob.js.map +0 -1
  251. package/lib/utils/hash.d.ts +0 -38
  252. package/lib/utils/hash.d.ts.map +0 -1
  253. package/lib/utils/hash.js +0 -294
  254. package/lib/utils/hash.js.map +0 -1
  255. package/lib/utils/index.d.ts +0 -15
  256. package/lib/utils/index.d.ts.map +0 -1
  257. package/lib/utils/index.js +0 -18
  258. package/lib/utils/index.js.map +0 -1
  259. package/lib/utils/json.d.ts +0 -76
  260. package/lib/utils/json.d.ts.map +0 -1
  261. package/lib/utils/json.js +0 -188
  262. package/lib/utils/json.js.map +0 -1
  263. package/lib/utils/markdown.d.ts.map +0 -1
  264. package/lib/utils/markdown.js.map +0 -1
  265. package/lib/utils/marshalling.d.ts +0 -7
  266. package/lib/utils/marshalling.d.ts.map +0 -1
  267. package/lib/utils/marshalling.js +0 -59
  268. package/lib/utils/marshalling.js.map +0 -1
  269. package/lib/utils/objects.d.ts +0 -6
  270. package/lib/utils/objects.d.ts.map +0 -1
  271. package/lib/utils/objects.js +0 -103
  272. package/lib/utils/objects.js.map +0 -1
  273. package/lib/utils/os.d.ts +0 -49
  274. package/lib/utils/os.d.ts.map +0 -1
  275. package/lib/utils/os.js +0 -98
  276. package/lib/utils/os.js.map +0 -1
  277. package/lib/utils/paths.d.ts +0 -35
  278. package/lib/utils/paths.d.ts.map +0 -1
  279. package/lib/utils/paths.js +0 -313
  280. package/lib/utils/paths.js.map +0 -1
  281. package/lib/utils/promise-util.d.ts +0 -10
  282. package/lib/utils/promise-util.d.ts.map +0 -1
  283. package/lib/utils/promise-util.js +0 -17
  284. package/lib/utils/promise-util.js.map +0 -1
  285. package/lib/utils/strings.d.ts +0 -181
  286. package/lib/utils/strings.d.ts.map +0 -1
  287. package/lib/utils/strings.js +0 -858
  288. package/lib/utils/strings.js.map +0 -1
  289. package/lib/utils/types.d.ts +0 -69
  290. package/lib/utils/types.d.ts.map +0 -1
  291. package/lib/utils/types.js +0 -201
  292. package/lib/utils/types.js.map +0 -1
  293. package/lib/uuid.d.ts +0 -2
  294. package/lib/uuid.d.ts.map +0 -1
  295. package/lib/uuid.js +0 -10
  296. package/lib/uuid.js.map +0 -1
package/lib/event.js DELETED
@@ -1,816 +0,0 @@
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/event.ts
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.ReadyEvent = exports.Relay = exports.EventBufferer = exports.EventMultiplexer = exports.AsyncEmitter = exports.WaitUntilEvent = exports.PauseableEmitter = exports.Emitter = exports.setGlobalLeakWarningThreshold = exports.Event = void 0;
9
- const disposable_1 = require("./disposable");
10
- const errors_1 = require("./errors");
11
- const functional_1 = require("./functional");
12
- const linked_list_1 = require("./linked-list");
13
- var Event;
14
- (function (Event) {
15
- const _disposable = { dispose() { } };
16
- Event.None = function () {
17
- return _disposable;
18
- };
19
- /**
20
- * Given an event, returns another event which only fires once.
21
- */
22
- function once(event) {
23
- return (listener, thisArgs = null, disposables) => {
24
- // we need this, in case the event fires during the listener call
25
- let didFire = false;
26
- let result;
27
- result = event((e) => {
28
- if (didFire) {
29
- return;
30
- }
31
- else if (result) {
32
- result.dispose();
33
- }
34
- else {
35
- didFire = true;
36
- }
37
- return listener.call(thisArgs, e);
38
- }, null, disposables);
39
- if (didFire) {
40
- result.dispose();
41
- }
42
- return result;
43
- };
44
- }
45
- Event.once = once;
46
- /**
47
- * Given an event and a `map` function, returns another event which maps each element
48
- * throught the mapping function.
49
- */
50
- function map(event, map) {
51
- return snapshot((listener, thisArgs = null, disposables) => event((i) => listener.call(thisArgs, map(i)), null, disposables));
52
- }
53
- Event.map = map;
54
- /**
55
- * Given an event and an `each` function, returns another identical event and calls
56
- * the `each` function per each element.
57
- */
58
- function forEach(event, each) {
59
- return snapshot((listener, thisArgs = null, disposables) => event((i) => {
60
- each(i);
61
- listener.call(thisArgs, i);
62
- }, null, disposables));
63
- }
64
- Event.forEach = forEach;
65
- function filter(event, filter) {
66
- return snapshot((listener, thisArgs = null, disposables) => event((e) => filter(e) && listener.call(thisArgs, e), null, disposables));
67
- }
68
- Event.filter = filter;
69
- /**
70
- * Given an event, returns the same event but typed as `Event<void>`.
71
- */
72
- function signal(event) {
73
- return event;
74
- }
75
- Event.signal = signal;
76
- /**
77
- * Given a collection of events, returns a single event which emits
78
- * whenever any of the provided events emit.
79
- */
80
- function any(...events) {
81
- return (listener, thisArgs = null, disposables) => (0, disposable_1.combinedDisposable)(events.map((event) => event((e) => listener.call(thisArgs, e), null, disposables)));
82
- }
83
- Event.any = any;
84
- /**
85
- * Given an event and a `merge` function, returns another event which maps each element
86
- * and the cummulative result throught the `merge` function. Similar to `map`, but with memory.
87
- */
88
- function reduce(event, merge, initial) {
89
- let output = initial;
90
- return map(event, (e) => {
91
- output = merge(output, e);
92
- return output;
93
- });
94
- }
95
- Event.reduce = reduce;
96
- /**
97
- * Given a chain of event processing functions (filter, map, etc), each
98
- * function will be invoked per event & per listener. Snapshotting an event
99
- * chain allows each function to be invoked just once per event.
100
- */
101
- function snapshot(event) {
102
- let listener;
103
- const emitter = new Emitter({
104
- onFirstListenerAdd() {
105
- listener = event(emitter.fire, emitter);
106
- },
107
- onLastListenerRemove() {
108
- listener.dispose();
109
- },
110
- });
111
- return emitter.event;
112
- }
113
- Event.snapshot = snapshot;
114
- function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {
115
- let subscription;
116
- let output;
117
- let handle;
118
- let numDebouncedCalls = 0;
119
- const emitter = new Emitter({
120
- leakWarningThreshold,
121
- onFirstListenerAdd() {
122
- subscription = event((cur) => {
123
- numDebouncedCalls++;
124
- output = merge(output, cur);
125
- if (leading && !handle) {
126
- emitter.fire(output);
127
- }
128
- clearTimeout(handle);
129
- handle = setTimeout(() => {
130
- const _output = output;
131
- output = undefined;
132
- handle = undefined;
133
- if (!leading || numDebouncedCalls > 1) {
134
- emitter.fire(_output);
135
- }
136
- numDebouncedCalls = 0;
137
- }, delay);
138
- });
139
- },
140
- onLastListenerRemove() {
141
- subscription.dispose();
142
- },
143
- });
144
- return emitter.event;
145
- }
146
- Event.debounce = debounce;
147
- /**
148
- * Given an event, it returns another event which fires only once and as soon as
149
- * the input event emits. The event data is the number of millis it took for the
150
- * event to fire.
151
- */
152
- function stopwatch(event) {
153
- const start = new Date().getTime();
154
- return map(once(event), (_) => new Date().getTime() - start);
155
- }
156
- Event.stopwatch = stopwatch;
157
- /**
158
- * Given an event, it returns another event which fires only when the event
159
- * element changes.
160
- */
161
- function latch(event) {
162
- let firstCall = true;
163
- let cache;
164
- return filter(event, (value) => {
165
- const shouldEmit = firstCall || value !== cache;
166
- firstCall = false;
167
- cache = value;
168
- return shouldEmit;
169
- });
170
- }
171
- Event.latch = latch;
172
- /**
173
- * Buffers the provided event until a first listener comes
174
- * along, at which point fire all the events at once and
175
- * pipe the event from then on.
176
- *
177
- * ```typescript
178
- * const emitter = new Emitter<number>();
179
- * const event = emitter.event;
180
- * const bufferedEvent = buffer(event);
181
- *
182
- * emitter.fire(1);
183
- * emitter.fire(2);
184
- * emitter.fire(3);
185
- * // nothing...
186
- *
187
- * const listener = bufferedEvent(num => console.log(num));
188
- * // 1, 2, 3
189
- *
190
- * emitter.fire(4);
191
- * // 4
192
- * ```
193
- */
194
- function buffer(event, nextTick = false, _buffer = []) {
195
- let buffer = _buffer.slice();
196
- let listener = event((e) => {
197
- if (buffer) {
198
- buffer.push(e);
199
- }
200
- else {
201
- emitter.fire(e);
202
- }
203
- });
204
- const flush = () => {
205
- if (buffer) {
206
- buffer.forEach((e) => emitter.fire(e));
207
- }
208
- buffer = null;
209
- };
210
- const emitter = new Emitter({
211
- onFirstListenerAdd() {
212
- if (!listener) {
213
- listener = event((e) => emitter.fire(e));
214
- }
215
- },
216
- onFirstListenerDidAdd() {
217
- if (buffer) {
218
- if (nextTick) {
219
- setTimeout(flush);
220
- }
221
- else {
222
- flush();
223
- }
224
- }
225
- },
226
- onLastListenerRemove() {
227
- if (listener) {
228
- listener.dispose();
229
- }
230
- listener = null;
231
- },
232
- });
233
- return emitter.event;
234
- }
235
- Event.buffer = buffer;
236
- class ChainableEvent {
237
- constructor(event) {
238
- this.event = event;
239
- }
240
- map(fn) {
241
- return new ChainableEvent(map(this.event, fn));
242
- }
243
- forEach(fn) {
244
- return new ChainableEvent(forEach(this.event, fn));
245
- }
246
- filter(fn) {
247
- return new ChainableEvent(filter(this.event, fn));
248
- }
249
- reduce(merge, initial) {
250
- return new ChainableEvent(reduce(this.event, merge, initial));
251
- }
252
- latch() {
253
- return new ChainableEvent(latch(this.event));
254
- }
255
- on(listener, thisArgs, disposables) {
256
- return this.event(listener, thisArgs, disposables);
257
- }
258
- once(listener, thisArgs, disposables) {
259
- return once(this.event)(listener, thisArgs, disposables);
260
- }
261
- }
262
- function chain(event) {
263
- return new ChainableEvent(event);
264
- }
265
- Event.chain = chain;
266
- function fromNodeEventEmitter(emitter, eventName, map = (id) => id) {
267
- const fn = (...args) => result.fire(map(...args));
268
- const onFirstListenerAdd = () => emitter.on(eventName, fn);
269
- const onLastListenerRemove = () => emitter.removeListener(eventName, fn);
270
- const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });
271
- return result.event;
272
- }
273
- Event.fromNodeEventEmitter = fromNodeEventEmitter;
274
- function fromPromise(promise) {
275
- const emitter = new Emitter();
276
- let shouldEmit = false;
277
- promise
278
- .then(undefined, () => null)
279
- .then(() => {
280
- if (!shouldEmit) {
281
- setTimeout(() => emitter.fire(undefined), 0);
282
- }
283
- else {
284
- emitter.fire(undefined);
285
- }
286
- });
287
- shouldEmit = true;
288
- return emitter.event;
289
- }
290
- Event.fromPromise = fromPromise;
291
- function toPromise(event) {
292
- return new Promise((c) => once(event)(c));
293
- }
294
- Event.toPromise = toPromise;
295
- })(Event = exports.Event || (exports.Event = {}));
296
- let _globalLeakWarningThreshold = -1;
297
- function setGlobalLeakWarningThreshold(n) {
298
- const oldValue = _globalLeakWarningThreshold;
299
- _globalLeakWarningThreshold = n;
300
- return {
301
- dispose() {
302
- _globalLeakWarningThreshold = oldValue;
303
- },
304
- };
305
- }
306
- exports.setGlobalLeakWarningThreshold = setGlobalLeakWarningThreshold;
307
- class LeakageMonitor {
308
- constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {
309
- this.customThreshold = customThreshold;
310
- this.name = name;
311
- this._warnCountdown = 0;
312
- }
313
- dispose() {
314
- if (this._stacks) {
315
- this._stacks.clear();
316
- }
317
- }
318
- check(listenerCount) {
319
- let threshold = _globalLeakWarningThreshold;
320
- if (typeof this.customThreshold === 'number') {
321
- threshold = this.customThreshold;
322
- }
323
- if (threshold <= 0 || listenerCount < threshold) {
324
- return undefined;
325
- }
326
- if (!this._stacks) {
327
- this._stacks = new Map();
328
- }
329
- const stack = new Error().stack.split('\n').slice(3).join('\n');
330
- const count = this._stacks.get(stack) || 0;
331
- this._stacks.set(stack, count + 1);
332
- this._warnCountdown -= 1;
333
- if (this._warnCountdown <= 0) {
334
- // only warn on first exceed and then every time the limit
335
- // is exceeded by 50% again
336
- this._warnCountdown = threshold * 0.5;
337
- // find most frequent listener and print warning
338
- let topStack = '';
339
- let topCount = 0;
340
- this._stacks.forEach((count, stack) => {
341
- if (!topStack || topCount < count) {
342
- topStack = stack;
343
- topCount = count;
344
- }
345
- });
346
- // eslint-disable-next-line no-console
347
- console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);
348
- // eslint-disable-next-line no-console
349
- console.warn(topStack);
350
- }
351
- return () => {
352
- const count = this._stacks.get(stack) || 0;
353
- this._stacks.set(stack, count - 1);
354
- };
355
- }
356
- }
357
- class Emitter {
358
- constructor(options) {
359
- this._disposed = false;
360
- this._options = options;
361
- this._leakageMon =
362
- _globalLeakWarningThreshold > 0
363
- ? new LeakageMonitor(this._options && this._options.leakWarningThreshold)
364
- : undefined;
365
- }
366
- /**
367
- * For the public to allow to subscribe
368
- * to events from this Emitter
369
- */
370
- get event() {
371
- if (!this._event) {
372
- this._event = (listener, thisArgs, disposables) => {
373
- if (!this._listeners) {
374
- this._listeners = new linked_list_1.LinkedList();
375
- }
376
- const firstListener = this._listeners.isEmpty();
377
- if (firstListener && this._options && this._options.onFirstListenerAdd) {
378
- this._options.onFirstListenerAdd(this);
379
- }
380
- const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);
381
- if (firstListener && this._options && this._options.onFirstListenerDidAdd) {
382
- this._options.onFirstListenerDidAdd(this);
383
- }
384
- if (this._options && this._options.onListenerDidAdd) {
385
- this._options.onListenerDidAdd(this, listener, thisArgs);
386
- }
387
- // check and record this emitter for potential leakage
388
- let removeMonitor;
389
- if (this._leakageMon) {
390
- removeMonitor = this._leakageMon.check(this._listeners.size);
391
- }
392
- let result;
393
- result = {
394
- dispose: () => {
395
- if (removeMonitor) {
396
- removeMonitor();
397
- }
398
- result.dispose = Emitter._noop;
399
- if (!this._disposed) {
400
- remove();
401
- if (this._options && this._options.onLastListenerRemove) {
402
- const hasListeners = this._listeners && !this._listeners.isEmpty();
403
- if (!hasListeners) {
404
- this._options.onLastListenerRemove(this);
405
- }
406
- }
407
- }
408
- },
409
- };
410
- if (disposables instanceof disposable_1.DisposableStore) {
411
- disposables.add(result);
412
- }
413
- else if (Array.isArray(disposables)) {
414
- disposables.push(result);
415
- }
416
- return result;
417
- };
418
- }
419
- return this._event;
420
- }
421
- /**
422
- * To be kept private to fire an event to
423
- * subscribers
424
- */
425
- fire(event) {
426
- if (this._listeners) {
427
- // put all [listener,event]-pairs into delivery queue
428
- // then emit all event. an inner/nested event might be
429
- // the driver of this
430
- if (!this._deliveryQueue) {
431
- this._deliveryQueue = new linked_list_1.LinkedList();
432
- }
433
- for (let iter = this._listeners.iterator(), e = iter.next(); !e.done; e = iter.next()) {
434
- this._deliveryQueue.push([e.value, event]);
435
- }
436
- while (this._deliveryQueue.size > 0) {
437
- const [listener, event] = this._deliveryQueue.shift();
438
- try {
439
- if (typeof listener === 'function') {
440
- listener.call(undefined, event);
441
- }
442
- else {
443
- listener[0].call(listener[1], event);
444
- }
445
- }
446
- catch (e) {
447
- (0, errors_1.onUnexpectedError)(e);
448
- }
449
- }
450
- }
451
- }
452
- /**
453
- * 发送一个异步事件,等待所有监听器返回,并收集返回值
454
- * @param e
455
- * @param timeout
456
- */
457
- async fireAndAwait(event, timeout = 2000) {
458
- if (this._listeners) {
459
- if (!this._deliveryQueue) {
460
- this._deliveryQueue = new linked_list_1.LinkedList();
461
- }
462
- for (let iter = this._listeners.iterator(), e = iter.next(); !e.done; e = iter.next()) {
463
- this._deliveryQueue.push([e.value, event]);
464
- }
465
- const promises = [];
466
- const timeoutPromise = new Promise((resolve) => {
467
- setTimeout(() => {
468
- resolve({
469
- err: new Error('timeout'),
470
- });
471
- }, timeout);
472
- });
473
- while (this._deliveryQueue.size > 0) {
474
- const [listener, event] = this._deliveryQueue.shift();
475
- try {
476
- const promise = (async () => {
477
- try {
478
- if (typeof listener === 'function') {
479
- return {
480
- result: (await listener.call(undefined, event)),
481
- };
482
- }
483
- else {
484
- return {
485
- result: (await listener[0].call(listener[1], event)),
486
- };
487
- }
488
- }
489
- catch (e) {
490
- return {
491
- err: e,
492
- };
493
- }
494
- })();
495
- promises.push(Promise.race([timeoutPromise, promise]));
496
- }
497
- catch (e) {
498
- (0, errors_1.onUnexpectedError)(e);
499
- }
500
- }
501
- return Promise.all(promises);
502
- }
503
- else {
504
- return [];
505
- }
506
- }
507
- get listenerSize() {
508
- return this._listeners ? this._listeners.size : 0;
509
- }
510
- dispose() {
511
- if (this._listeners) {
512
- this._listeners.clear();
513
- }
514
- if (this._deliveryQueue) {
515
- this._deliveryQueue.clear();
516
- }
517
- if (this._leakageMon) {
518
- this._leakageMon.dispose();
519
- }
520
- this._disposed = true;
521
- }
522
- }
523
- exports.Emitter = Emitter;
524
- Emitter._noop = function () { };
525
- class PauseableEmitter extends Emitter {
526
- constructor(options) {
527
- super(options);
528
- this._isPaused = 0;
529
- this._eventQueue = new linked_list_1.LinkedList();
530
- this._mergeFn = options && options.merge;
531
- }
532
- pause() {
533
- this._isPaused++;
534
- }
535
- resume() {
536
- if (this._isPaused !== 0 && --this._isPaused === 0) {
537
- if (this._mergeFn) {
538
- // use the merge function to create a single composite
539
- // event. make a copy in case firing pauses this emitter
540
- const events = this._eventQueue.toArray();
541
- this._eventQueue.clear();
542
- super.fire(this._mergeFn(events));
543
- }
544
- else {
545
- // no merging, fire each event individually and test
546
- // that this emitter isn't paused halfway through
547
- while (!this._isPaused && this._eventQueue.size !== 0) {
548
- super.fire(this._eventQueue.shift());
549
- }
550
- }
551
- }
552
- }
553
- fire(event) {
554
- if (this._listeners) {
555
- if (this._isPaused !== 0) {
556
- this._eventQueue.push(event);
557
- }
558
- else {
559
- super.fire(event);
560
- }
561
- }
562
- }
563
- }
564
- exports.PauseableEmitter = PauseableEmitter;
565
- var WaitUntilEvent;
566
- (function (WaitUntilEvent) {
567
- async function fire(emitter, event, timeout = undefined) {
568
- const waitables = [];
569
- const asyncEvent = Object.assign(event, {
570
- waitUntil: (thenable) => {
571
- if (Object.isFrozen(waitables)) {
572
- throw new Error('waitUntil cannot be called asynchronously.');
573
- }
574
- waitables.push(thenable);
575
- },
576
- });
577
- emitter.fire(asyncEvent);
578
- // Asynchronous calls to `waitUntil` should fail.
579
- Object.freeze(waitables);
580
- // ts 要求 delete 的属性是 optional
581
- delete asyncEvent.waitUntil;
582
- if (!waitables.length) {
583
- return;
584
- }
585
- if (timeout !== undefined) {
586
- await Promise.race([Promise.all(waitables), new Promise((resolve) => setTimeout(resolve, timeout))]);
587
- }
588
- else {
589
- await Promise.all(waitables);
590
- }
591
- }
592
- WaitUntilEvent.fire = fire;
593
- })(WaitUntilEvent = exports.WaitUntilEvent || (exports.WaitUntilEvent = {}));
594
- class AsyncEmitter extends Emitter {
595
- async fireAsync(data, token, promiseJoin) {
596
- if (!this._listeners) {
597
- return;
598
- }
599
- if (!this._asyncDeliveryQueue) {
600
- this._asyncDeliveryQueue = new linked_list_1.LinkedList();
601
- }
602
- for (let iter = this._listeners.iterator(), e = iter.next(); !e.done; e = iter.next()) {
603
- this._asyncDeliveryQueue.push([e.value, data]);
604
- }
605
- while (this._asyncDeliveryQueue.size > 0 && !token.isCancellationRequested) {
606
- const [listener, data] = this._asyncDeliveryQueue.shift();
607
- const thenables = [];
608
- const event = Object.assign(Object.assign({}, data), { waitUntil: (p) => {
609
- if (Object.isFrozen(thenables)) {
610
- throw new Error('waitUntil can NOT be called asynchronous');
611
- }
612
- if (promiseJoin) {
613
- p = promiseJoin(p, typeof listener === 'function' ? listener : listener[0]);
614
- }
615
- thenables.push(p);
616
- } });
617
- try {
618
- if (typeof listener === 'function') {
619
- listener.call(undefined, event);
620
- }
621
- else {
622
- listener[0].call(listener[1], event);
623
- }
624
- }
625
- catch (e) {
626
- (0, errors_1.onUnexpectedError)(e);
627
- continue;
628
- }
629
- // freeze thenables-collection to enforce sync-calls to
630
- // wait until and then wait for all thenables to resolve
631
- Object.freeze(thenables);
632
- await Promise.all(
633
- // Promise.allSettled 只有 core-js3 才支持,先手动加 catch 处理下
634
- thenables.map((thenable) => thenable.catch((e) => e))).catch((e) => (0, errors_1.onUnexpectedError)(e));
635
- }
636
- }
637
- }
638
- exports.AsyncEmitter = AsyncEmitter;
639
- class EventMultiplexer {
640
- constructor() {
641
- this.hasListeners = false;
642
- this.events = [];
643
- this.emitter = new Emitter({
644
- onFirstListenerAdd: () => this.onFirstListenerAdd(),
645
- onLastListenerRemove: () => this.onLastListenerRemove(),
646
- });
647
- }
648
- get event() {
649
- return this.emitter.event;
650
- }
651
- add(event) {
652
- const e = { event, listener: null };
653
- this.events.push(e);
654
- if (this.hasListeners) {
655
- this.hook(e);
656
- }
657
- const dispose = () => {
658
- if (this.hasListeners) {
659
- this.unhook(e);
660
- }
661
- const idx = this.events.indexOf(e);
662
- this.events.splice(idx, 1);
663
- };
664
- return (0, disposable_1.toDisposable)((0, functional_1.once)(dispose));
665
- }
666
- onFirstListenerAdd() {
667
- this.hasListeners = true;
668
- this.events.forEach((e) => this.hook(e));
669
- }
670
- onLastListenerRemove() {
671
- this.hasListeners = false;
672
- this.events.forEach((e) => this.unhook(e));
673
- }
674
- hook(e) {
675
- e.listener = e.event((r) => this.emitter.fire(r));
676
- }
677
- unhook(e) {
678
- if (e.listener) {
679
- e.listener.dispose();
680
- }
681
- e.listener = null;
682
- }
683
- dispose() {
684
- this.emitter.dispose();
685
- }
686
- }
687
- exports.EventMultiplexer = EventMultiplexer;
688
- /**
689
- * The EventBufferer is useful in situations in which you want
690
- * to delay firing your events during some code.
691
- * You can wrap that code and be sure that the event will not
692
- * be fired during that wrap.
693
- *
694
- * ```
695
- * const emitter: Emitter;
696
- * const delayer = new EventDelayer();
697
- * const delayedEvent = delayer.wrapEvent(emitter.event);
698
- *
699
- * delayedEvent(console.log);
700
- *
701
- * delayer.bufferEvents(() => {
702
- * emitter.fire(); // event will not be fired yet
703
- * });
704
- *
705
- * // event will only be fired at this point
706
- * ```
707
- */
708
- class EventBufferer {
709
- constructor() {
710
- this.buffers = [];
711
- }
712
- wrapEvent(event) {
713
- return (listener, thisArgs, disposables) => event((i) => {
714
- const buffer = this.buffers[this.buffers.length - 1];
715
- if (buffer) {
716
- buffer.push(() => listener.call(thisArgs, i));
717
- }
718
- else {
719
- listener.call(thisArgs, i);
720
- }
721
- }, undefined, disposables);
722
- }
723
- bufferEvents(fn) {
724
- const buffer = [];
725
- this.buffers.push(buffer);
726
- const r = fn();
727
- this.buffers.pop();
728
- buffer.forEach((flush) => flush());
729
- return r;
730
- }
731
- }
732
- exports.EventBufferer = EventBufferer;
733
- /**
734
- * A Relay is an event forwarder which functions as a replugabble event pipe.
735
- * Once created, you can connect an input event to it and it will simply forward
736
- * events from that input event through its own `event` property. The `input`
737
- * can be changed at any point in time.
738
- */
739
- class Relay {
740
- constructor() {
741
- this.listening = false;
742
- this.inputEvent = Event.None;
743
- this.inputEventListener = disposable_1.Disposable.None;
744
- this.emitter = new Emitter({
745
- onFirstListenerDidAdd: () => {
746
- this.listening = true;
747
- this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);
748
- },
749
- onLastListenerRemove: () => {
750
- this.listening = false;
751
- this.inputEventListener.dispose();
752
- },
753
- });
754
- this.event = this.emitter.event;
755
- }
756
- set input(event) {
757
- this.inputEvent = event;
758
- if (this.listening) {
759
- this.inputEventListener.dispose();
760
- this.inputEventListener = event(this.emitter.fire, this.emitter);
761
- }
762
- }
763
- dispose() {
764
- this.inputEventListener.dispose();
765
- this.emitter.dispose();
766
- }
767
- }
768
- exports.Relay = Relay;
769
- /**
770
- * 同步执行的 Ready, 对 ready 的实时响应比 promise 快,多用在需要快速响应初始化回调的场景
771
- */
772
- class ReadyEvent {
773
- constructor() {
774
- this._isReady = false;
775
- this._param = undefined;
776
- this._emitter = new Emitter();
777
- }
778
- onceReady(cb) {
779
- if (this._isReady) {
780
- try {
781
- return Promise.resolve(cb(this._param));
782
- }
783
- catch (e) {
784
- return Promise.reject(e);
785
- }
786
- }
787
- else {
788
- return new Promise((resolve, reject) => {
789
- this._emitter.event((param) => {
790
- try {
791
- resolve(cb(param));
792
- }
793
- catch (e) {
794
- reject(e);
795
- }
796
- });
797
- });
798
- }
799
- }
800
- ready(param) {
801
- if (!this._isReady) {
802
- this._isReady = true;
803
- this._param = param;
804
- }
805
- this._emitter.fire(param);
806
- this._emitter.dispose;
807
- this._emitter = null;
808
- }
809
- dispose() {
810
- if (this._emitter) {
811
- this._emitter.dispose();
812
- }
813
- }
814
- }
815
- exports.ReadyEvent = ReadyEvent;
816
- //# sourceMappingURL=event.js.map