@xterm/xterm 6.1.0-beta.28 → 6.1.0-beta.280

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 (181) hide show
  1. package/README.md +62 -38
  2. package/css/xterm.css +29 -22
  3. package/lib/xterm.js +1 -1
  4. package/lib/xterm.js.map +1 -1
  5. package/lib/xterm.mjs +8 -34
  6. package/lib/xterm.mjs.map +4 -4
  7. package/package.json +56 -45
  8. package/src/browser/AccessibilityManager.ts +18 -13
  9. package/src/browser/Clipboard.ts +8 -5
  10. package/src/browser/ColorContrastCache.ts +3 -3
  11. package/src/browser/CoreBrowserTerminal.ts +179 -348
  12. package/src/browser/Dom.ts +178 -0
  13. package/src/browser/Linkifier.ts +14 -14
  14. package/src/browser/OscLinkProvider.ts +86 -18
  15. package/src/browser/RenderDebouncer.ts +7 -9
  16. package/src/browser/TimeBasedDebouncer.ts +12 -5
  17. package/src/browser/Types.ts +16 -14
  18. package/src/browser/Viewport.ts +58 -23
  19. package/src/browser/decorations/BufferDecorationRenderer.ts +3 -3
  20. package/src/browser/decorations/ColorZoneStore.ts +1 -1
  21. package/src/browser/decorations/OverviewRulerRenderer.ts +36 -20
  22. package/src/browser/input/CompositionHelper.ts +47 -11
  23. package/src/browser/input/Mouse.ts +5 -9
  24. package/src/browser/input/MoveToCell.ts +3 -3
  25. package/src/browser/public/Terminal.ts +33 -36
  26. package/src/browser/renderer/dom/DomRenderer.ts +265 -89
  27. package/src/browser/renderer/dom/DomRendererRowFactory.ts +34 -27
  28. package/src/browser/renderer/dom/WidthCache.ts +57 -55
  29. package/src/browser/renderer/shared/Constants.ts +7 -0
  30. package/src/browser/renderer/shared/RendererUtils.ts +1 -1
  31. package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
  32. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  33. package/src/browser/renderer/shared/Types.ts +10 -4
  34. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  35. package/src/browser/scrollable/fastDomNode.ts +126 -0
  36. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  37. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  38. package/src/browser/scrollable/mouseEvent.ts +292 -0
  39. package/src/browser/scrollable/scrollable.ts +486 -0
  40. package/src/browser/scrollable/scrollableElement.ts +581 -0
  41. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  42. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  43. package/src/browser/scrollable/scrollbarState.ts +246 -0
  44. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  45. package/src/browser/scrollable/touch.ts +485 -0
  46. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  47. package/src/browser/scrollable/widget.ts +23 -0
  48. package/src/browser/selection/SelectionModel.ts +1 -1
  49. package/src/browser/services/CharSizeService.ts +4 -4
  50. package/src/browser/services/CharacterJoinerService.ts +13 -11
  51. package/src/browser/services/CoreBrowserService.ts +7 -5
  52. package/src/browser/services/KeyboardService.ts +67 -0
  53. package/src/browser/services/LinkProviderService.ts +3 -3
  54. package/src/browser/services/MouseCoordsService.ts +47 -0
  55. package/src/browser/services/MouseService.ts +619 -23
  56. package/src/browser/services/RenderService.ts +33 -21
  57. package/src/browser/services/SelectionService.ts +72 -54
  58. package/src/browser/services/Services.ts +44 -21
  59. package/src/browser/services/ThemeService.ts +9 -9
  60. package/src/common/Async.ts +141 -0
  61. package/src/common/CircularList.ts +24 -3
  62. package/src/common/Color.ts +13 -5
  63. package/src/common/CoreTerminal.ts +61 -35
  64. package/src/common/Event.ts +118 -0
  65. package/src/common/InputHandler.ts +286 -105
  66. package/src/common/Lifecycle.ts +113 -0
  67. package/src/common/Platform.ts +15 -5
  68. package/src/common/SortedList.ts +8 -4
  69. package/src/common/StringBuilder.ts +67 -0
  70. package/src/common/TaskQueue.ts +17 -8
  71. package/src/common/Types.ts +68 -206
  72. package/src/common/Version.ts +1 -1
  73. package/src/common/WindowsMode.ts +2 -2
  74. package/src/common/buffer/AttributeData.ts +3 -2
  75. package/src/common/buffer/Buffer.ts +47 -32
  76. package/src/common/buffer/BufferLine.ts +175 -100
  77. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  78. package/src/common/buffer/BufferReflow.ts +7 -4
  79. package/src/common/buffer/BufferSet.ts +13 -9
  80. package/src/common/buffer/CellData.ts +61 -4
  81. package/src/common/buffer/Constants.ts +13 -13
  82. package/src/common/buffer/Marker.ts +4 -4
  83. package/src/common/buffer/Types.ts +153 -3
  84. package/src/common/data/Charsets.ts +4 -7
  85. package/src/common/data/EscapeSequences.ts +71 -70
  86. package/src/common/input/Keyboard.ts +17 -10
  87. package/src/common/input/KittyKeyboard.ts +526 -0
  88. package/src/common/input/TextDecoder.ts +3 -3
  89. package/src/common/input/UnicodeV6.ts +3 -2
  90. package/src/common/input/Win32InputMode.ts +297 -0
  91. package/src/common/input/WriteBuffer.ts +108 -39
  92. package/src/common/input/XParseColor.ts +2 -2
  93. package/src/common/parser/ApcParser.ts +196 -0
  94. package/src/common/parser/Constants.ts +14 -4
  95. package/src/common/parser/DcsParser.ts +15 -16
  96. package/src/common/parser/EscapeSequenceParser.ts +214 -72
  97. package/src/common/parser/OscParser.ts +14 -15
  98. package/src/common/parser/Params.ts +31 -12
  99. package/src/common/parser/Types.ts +40 -30
  100. package/src/common/public/BufferApiView.ts +3 -3
  101. package/src/common/public/BufferLineApiView.ts +4 -4
  102. package/src/common/public/BufferNamespaceApi.ts +5 -5
  103. package/src/common/public/ParserApi.ts +5 -2
  104. package/src/common/public/UnicodeApi.ts +1 -1
  105. package/src/common/services/BufferService.ts +17 -13
  106. package/src/common/services/CharsetService.ts +6 -2
  107. package/src/common/services/CoreService.ts +23 -10
  108. package/src/common/services/DecorationService.ts +260 -15
  109. package/src/common/services/InstantiationService.ts +2 -2
  110. package/src/common/services/LogService.ts +2 -32
  111. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
  112. package/src/common/services/OptionsService.ts +17 -7
  113. package/src/common/services/OscLinkService.ts +3 -2
  114. package/src/common/services/ServiceRegistry.ts +14 -8
  115. package/src/common/services/Services.ts +54 -50
  116. package/src/common/services/UnicodeService.ts +6 -11
  117. package/typings/xterm.d.ts +329 -34
  118. package/src/common/Clone.ts +0 -23
  119. package/src/common/TypedArrayUtils.ts +0 -17
  120. package/src/vs/base/browser/browser.ts +0 -141
  121. package/src/vs/base/browser/canIUse.ts +0 -49
  122. package/src/vs/base/browser/dom.ts +0 -2369
  123. package/src/vs/base/browser/fastDomNode.ts +0 -316
  124. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  125. package/src/vs/base/browser/iframe.ts +0 -135
  126. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  127. package/src/vs/base/browser/mouseEvent.ts +0 -229
  128. package/src/vs/base/browser/touch.ts +0 -372
  129. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  130. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  131. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  132. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  133. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  134. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  135. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  136. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  137. package/src/vs/base/browser/ui/widget.ts +0 -57
  138. package/src/vs/base/browser/window.ts +0 -14
  139. package/src/vs/base/common/arrays.ts +0 -887
  140. package/src/vs/base/common/arraysFind.ts +0 -202
  141. package/src/vs/base/common/assert.ts +0 -71
  142. package/src/vs/base/common/async.ts +0 -1992
  143. package/src/vs/base/common/cancellation.ts +0 -148
  144. package/src/vs/base/common/charCode.ts +0 -450
  145. package/src/vs/base/common/collections.ts +0 -140
  146. package/src/vs/base/common/decorators.ts +0 -130
  147. package/src/vs/base/common/equals.ts +0 -146
  148. package/src/vs/base/common/errors.ts +0 -303
  149. package/src/vs/base/common/event.ts +0 -1778
  150. package/src/vs/base/common/functional.ts +0 -32
  151. package/src/vs/base/common/hash.ts +0 -316
  152. package/src/vs/base/common/iterator.ts +0 -159
  153. package/src/vs/base/common/keyCodes.ts +0 -526
  154. package/src/vs/base/common/keybindings.ts +0 -284
  155. package/src/vs/base/common/lazy.ts +0 -47
  156. package/src/vs/base/common/lifecycle.ts +0 -801
  157. package/src/vs/base/common/linkedList.ts +0 -142
  158. package/src/vs/base/common/map.ts +0 -202
  159. package/src/vs/base/common/numbers.ts +0 -98
  160. package/src/vs/base/common/observable.ts +0 -76
  161. package/src/vs/base/common/observableInternal/api.ts +0 -31
  162. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  163. package/src/vs/base/common/observableInternal/base.ts +0 -489
  164. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  165. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  166. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  167. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  168. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  169. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  170. package/src/vs/base/common/platform.ts +0 -281
  171. package/src/vs/base/common/scrollable.ts +0 -522
  172. package/src/vs/base/common/sequence.ts +0 -34
  173. package/src/vs/base/common/stopwatch.ts +0 -43
  174. package/src/vs/base/common/strings.ts +0 -557
  175. package/src/vs/base/common/symbols.ts +0 -9
  176. package/src/vs/base/common/uint.ts +0 -59
  177. package/src/vs/patches/nls.ts +0 -90
  178. package/src/vs/typings/base-common.d.ts +0 -20
  179. package/src/vs/typings/require.d.ts +0 -42
  180. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  181. package/src/vs/typings/vscode-globals-product.d.ts +0 -33
@@ -1,32 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
-
6
- /**
7
- * Given a function, returns a function that is only calling that function once.
8
- */
9
- export function createSingleCallFunction<T extends Function>(this: unknown, fn: T, fnDidRunCallback?: () => void): T {
10
- const _this = this;
11
- let didCall = false;
12
- let result: unknown;
13
-
14
- return function () {
15
- if (didCall) {
16
- return result;
17
- }
18
-
19
- didCall = true;
20
- if (fnDidRunCallback) {
21
- try {
22
- result = fn.apply(_this, arguments);
23
- } finally {
24
- fnDidRunCallback();
25
- }
26
- } else {
27
- result = fn.apply(_this, arguments);
28
- }
29
-
30
- return result;
31
- } as unknown as T;
32
- }
@@ -1,316 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
-
6
- import * as strings from 'vs/base/common/strings';
7
-
8
- /**
9
- * Return a hash value for an object.
10
- */
11
- export function hash(obj: any): number {
12
- return doHash(obj, 0);
13
- }
14
-
15
- export function doHash(obj: any, hashVal: number): number {
16
- switch (typeof obj) {
17
- case 'object':
18
- if (obj === null) {
19
- return numberHash(349, hashVal);
20
- } else if (Array.isArray(obj)) {
21
- return arrayHash(obj, hashVal);
22
- }
23
- return objectHash(obj, hashVal);
24
- case 'string':
25
- return stringHash(obj, hashVal);
26
- case 'boolean':
27
- return booleanHash(obj, hashVal);
28
- case 'number':
29
- return numberHash(obj, hashVal);
30
- case 'undefined':
31
- return numberHash(937, hashVal);
32
- default:
33
- return numberHash(617, hashVal);
34
- }
35
- }
36
-
37
- export function numberHash(val: number, initialHashVal: number): number {
38
- return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32
39
- }
40
-
41
- function booleanHash(b: boolean, initialHashVal: number): number {
42
- return numberHash(b ? 433 : 863, initialHashVal);
43
- }
44
-
45
- export function stringHash(s: string, hashVal: number) {
46
- hashVal = numberHash(149417, hashVal);
47
- for (let i = 0, length = s.length; i < length; i++) {
48
- hashVal = numberHash(s.charCodeAt(i), hashVal);
49
- }
50
- return hashVal;
51
- }
52
-
53
- function arrayHash(arr: any[], initialHashVal: number): number {
54
- initialHashVal = numberHash(104579, initialHashVal);
55
- return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);
56
- }
57
-
58
- function objectHash(obj: any, initialHashVal: number): number {
59
- initialHashVal = numberHash(181387, initialHashVal);
60
- return Object.keys(obj).sort().reduce((hashVal, key) => {
61
- hashVal = stringHash(key, hashVal);
62
- return doHash(obj[key], hashVal);
63
- }, initialHashVal);
64
- }
65
-
66
- export class Hasher {
67
-
68
- private _value = 0;
69
-
70
- get value(): number {
71
- return this._value;
72
- }
73
-
74
- hash(obj: any): number {
75
- this._value = doHash(obj, this._value);
76
- return this._value;
77
- }
78
- }
79
-
80
- const enum SHA1Constant {
81
- BLOCK_SIZE = 64, // 512 / 8
82
- UNICODE_REPLACEMENT = 0xFFFD,
83
- }
84
-
85
- function leftRotate(value: number, bits: number, totalBits: number = 32): number {
86
- // delta + bits = totalBits
87
- const delta = totalBits - bits;
88
-
89
- // All ones, expect `delta` zeros aligned to the right
90
- const mask = ~((1 << delta) - 1);
91
-
92
- // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)
93
- return ((value << bits) | ((mask & value) >>> delta)) >>> 0;
94
- }
95
-
96
- function fill(dest: Uint8Array, index: number = 0, count: number = dest.byteLength, value: number = 0): void {
97
- for (let i = 0; i < count; i++) {
98
- dest[index + i] = value;
99
- }
100
- }
101
-
102
- function leftPad(value: string, length: number, char: string = '0'): string {
103
- while (value.length < length) {
104
- value = char + value;
105
- }
106
- return value;
107
- }
108
-
109
- export function toHexString(buffer: ArrayBuffer): string;
110
- export function toHexString(value: number, bitsize?: number): string;
111
- export function toHexString(bufferOrValue: ArrayBuffer | number, bitsize: number = 32): string {
112
- if (bufferOrValue instanceof ArrayBuffer) {
113
- return Array.from(new Uint8Array(bufferOrValue)).map(b => b.toString(16).padStart(2, '0')).join('');
114
- }
115
-
116
- return leftPad((bufferOrValue >>> 0).toString(16), bitsize / 4);
117
- }
118
-
119
- /**
120
- * A SHA1 implementation that works with strings and does not allocate.
121
- */
122
- export class StringSHA1 {
123
- private static _bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320
124
-
125
- private _h0 = 0x67452301;
126
- private _h1 = 0xEFCDAB89;
127
- private _h2 = 0x98BADCFE;
128
- private _h3 = 0x10325476;
129
- private _h4 = 0xC3D2E1F0;
130
-
131
- private readonly _buff: Uint8Array;
132
- private readonly _buffDV: DataView;
133
- private _buffLen: number;
134
- private _totalLen: number;
135
- private _leftoverHighSurrogate: number;
136
- private _finished: boolean;
137
-
138
- constructor() {
139
- this._buff = new Uint8Array(SHA1Constant.BLOCK_SIZE + 3 /* to fit any utf-8 */);
140
- this._buffDV = new DataView(this._buff.buffer);
141
- this._buffLen = 0;
142
- this._totalLen = 0;
143
- this._leftoverHighSurrogate = 0;
144
- this._finished = false;
145
- }
146
-
147
- public update(str: string): void {
148
- const strLen = str.length;
149
- if (strLen === 0) {
150
- return;
151
- }
152
-
153
- const buff = this._buff;
154
- let buffLen = this._buffLen;
155
- let leftoverHighSurrogate = this._leftoverHighSurrogate;
156
- let charCode: number;
157
- let offset: number;
158
-
159
- if (leftoverHighSurrogate !== 0) {
160
- charCode = leftoverHighSurrogate;
161
- offset = -1;
162
- leftoverHighSurrogate = 0;
163
- } else {
164
- charCode = str.charCodeAt(0);
165
- offset = 0;
166
- }
167
-
168
- while (true) {
169
- let codePoint = charCode;
170
- if (strings.isHighSurrogate(charCode)) {
171
- if (offset + 1 < strLen) {
172
- const nextCharCode = str.charCodeAt(offset + 1);
173
- if (strings.isLowSurrogate(nextCharCode)) {
174
- offset++;
175
- codePoint = strings.computeCodePoint(charCode, nextCharCode);
176
- } else {
177
- // illegal => unicode replacement character
178
- codePoint = SHA1Constant.UNICODE_REPLACEMENT;
179
- }
180
- } else {
181
- // last character is a surrogate pair
182
- leftoverHighSurrogate = charCode;
183
- break;
184
- }
185
- } else if (strings.isLowSurrogate(charCode)) {
186
- // illegal => unicode replacement character
187
- codePoint = SHA1Constant.UNICODE_REPLACEMENT;
188
- }
189
-
190
- buffLen = this._push(buff, buffLen, codePoint);
191
- offset++;
192
- if (offset < strLen) {
193
- charCode = str.charCodeAt(offset);
194
- } else {
195
- break;
196
- }
197
- }
198
-
199
- this._buffLen = buffLen;
200
- this._leftoverHighSurrogate = leftoverHighSurrogate;
201
- }
202
-
203
- private _push(buff: Uint8Array, buffLen: number, codePoint: number): number {
204
- if (codePoint < 0x0080) {
205
- buff[buffLen++] = codePoint;
206
- } else if (codePoint < 0x0800) {
207
- buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);
208
- buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);
209
- } else if (codePoint < 0x10000) {
210
- buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);
211
- buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);
212
- buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);
213
- } else {
214
- buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);
215
- buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);
216
- buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);
217
- buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);
218
- }
219
-
220
- if (buffLen >= SHA1Constant.BLOCK_SIZE) {
221
- this._step();
222
- buffLen -= SHA1Constant.BLOCK_SIZE;
223
- this._totalLen += SHA1Constant.BLOCK_SIZE;
224
- // take last 3 in case of UTF8 overflow
225
- buff[0] = buff[SHA1Constant.BLOCK_SIZE + 0];
226
- buff[1] = buff[SHA1Constant.BLOCK_SIZE + 1];
227
- buff[2] = buff[SHA1Constant.BLOCK_SIZE + 2];
228
- }
229
-
230
- return buffLen;
231
- }
232
-
233
- public digest(): string {
234
- if (!this._finished) {
235
- this._finished = true;
236
- if (this._leftoverHighSurrogate) {
237
- // illegal => unicode replacement character
238
- this._leftoverHighSurrogate = 0;
239
- this._buffLen = this._push(this._buff, this._buffLen, SHA1Constant.UNICODE_REPLACEMENT);
240
- }
241
- this._totalLen += this._buffLen;
242
- this._wrapUp();
243
- }
244
-
245
- return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);
246
- }
247
-
248
- private _wrapUp(): void {
249
- this._buff[this._buffLen++] = 0x80;
250
- fill(this._buff, this._buffLen);
251
-
252
- if (this._buffLen > 56) {
253
- this._step();
254
- fill(this._buff);
255
- }
256
-
257
- // this will fit because the mantissa can cover up to 52 bits
258
- const ml = 8 * this._totalLen;
259
-
260
- this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);
261
- this._buffDV.setUint32(60, ml % 4294967296, false);
262
-
263
- this._step();
264
- }
265
-
266
- private _step(): void {
267
- const bigBlock32 = StringSHA1._bigBlock32;
268
- const data = this._buffDV;
269
-
270
- for (let j = 0; j < 64 /* 16*4 */; j += 4) {
271
- bigBlock32.setUint32(j, data.getUint32(j, false), false);
272
- }
273
-
274
- for (let j = 64; j < 320 /* 80*4 */; j += 4) {
275
- bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);
276
- }
277
-
278
- let a = this._h0;
279
- let b = this._h1;
280
- let c = this._h2;
281
- let d = this._h3;
282
- let e = this._h4;
283
-
284
- let f: number, k: number;
285
- let temp: number;
286
-
287
- for (let j = 0; j < 80; j++) {
288
- if (j < 20) {
289
- f = (b & c) | ((~b) & d);
290
- k = 0x5A827999;
291
- } else if (j < 40) {
292
- f = b ^ c ^ d;
293
- k = 0x6ED9EBA1;
294
- } else if (j < 60) {
295
- f = (b & c) | (b & d) | (c & d);
296
- k = 0x8F1BBCDC;
297
- } else {
298
- f = b ^ c ^ d;
299
- k = 0xCA62C1D6;
300
- }
301
-
302
- temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;
303
- e = d;
304
- d = c;
305
- c = leftRotate(b, 30);
306
- b = a;
307
- a = temp;
308
- }
309
-
310
- this._h0 = (this._h0 + a) & 0xffffffff;
311
- this._h1 = (this._h1 + b) & 0xffffffff;
312
- this._h2 = (this._h2 + c) & 0xffffffff;
313
- this._h3 = (this._h3 + d) & 0xffffffff;
314
- this._h4 = (this._h4 + e) & 0xffffffff;
315
- }
316
- }
@@ -1,159 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
-
6
- export namespace Iterable {
7
-
8
- export function is<T = any>(thing: any): thing is Iterable<T> {
9
- return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';
10
- }
11
-
12
- const _empty: Iterable<any> = Object.freeze([]);
13
- export function empty<T = any>(): Iterable<T> {
14
- return _empty;
15
- }
16
-
17
- export function* single<T>(element: T): Iterable<T> {
18
- yield element;
19
- }
20
-
21
- export function wrap<T>(iterableOrElement: Iterable<T> | T): Iterable<T> {
22
- if (is(iterableOrElement)) {
23
- return iterableOrElement;
24
- } else {
25
- return single(iterableOrElement);
26
- }
27
- }
28
-
29
- export function from<T>(iterable: Iterable<T> | undefined | null): Iterable<T> {
30
- return iterable || _empty;
31
- }
32
-
33
- export function* reverse<T>(array: Array<T>): Iterable<T> {
34
- for (let i = array.length - 1; i >= 0; i--) {
35
- yield array[i];
36
- }
37
- }
38
-
39
- export function isEmpty<T>(iterable: Iterable<T> | undefined | null): boolean {
40
- return !iterable || iterable[Symbol.iterator]().next().done === true;
41
- }
42
-
43
- export function first<T>(iterable: Iterable<T>): T | undefined {
44
- return iterable[Symbol.iterator]().next().value;
45
- }
46
-
47
- export function some<T>(iterable: Iterable<T>, predicate: (t: T, i: number) => unknown): boolean {
48
- let i = 0;
49
- for (const element of iterable) {
50
- if (predicate(element, i++)) {
51
- return true;
52
- }
53
- }
54
- return false;
55
- }
56
-
57
- export function find<T, R extends T>(iterable: Iterable<T>, predicate: (t: T) => t is R): R | undefined;
58
- export function find<T>(iterable: Iterable<T>, predicate: (t: T) => boolean): T | undefined;
59
- export function find<T>(iterable: Iterable<T>, predicate: (t: T) => boolean): T | undefined {
60
- for (const element of iterable) {
61
- if (predicate(element)) {
62
- return element;
63
- }
64
- }
65
-
66
- return undefined;
67
- }
68
-
69
- export function filter<T, R extends T>(iterable: Iterable<T>, predicate: (t: T) => t is R): Iterable<R>;
70
- export function filter<T>(iterable: Iterable<T>, predicate: (t: T) => boolean): Iterable<T>;
71
- export function* filter<T>(iterable: Iterable<T>, predicate: (t: T) => boolean): Iterable<T> {
72
- for (const element of iterable) {
73
- if (predicate(element)) {
74
- yield element;
75
- }
76
- }
77
- }
78
-
79
- export function* map<T, R>(iterable: Iterable<T>, fn: (t: T, index: number) => R): Iterable<R> {
80
- let index = 0;
81
- for (const element of iterable) {
82
- yield fn(element, index++);
83
- }
84
- }
85
-
86
- export function* flatMap<T, R>(iterable: Iterable<T>, fn: (t: T, index: number) => Iterable<R>): Iterable<R> {
87
- let index = 0;
88
- for (const element of iterable) {
89
- yield* fn(element, index++);
90
- }
91
- }
92
-
93
- export function* concat<T>(...iterables: Iterable<T>[]): Iterable<T> {
94
- for (const iterable of iterables) {
95
- yield* iterable;
96
- }
97
- }
98
-
99
- export function reduce<T, R>(iterable: Iterable<T>, reducer: (previousValue: R, currentValue: T) => R, initialValue: R): R {
100
- let value = initialValue;
101
- for (const element of iterable) {
102
- value = reducer(value, element);
103
- }
104
- return value;
105
- }
106
-
107
- /**
108
- * Returns an iterable slice of the array, with the same semantics as `array.slice()`.
109
- */
110
- export function* slice<T>(arr: ReadonlyArray<T>, from: number, to = arr.length): Iterable<T> {
111
- if (from < 0) {
112
- from += arr.length;
113
- }
114
-
115
- if (to < 0) {
116
- to += arr.length;
117
- } else if (to > arr.length) {
118
- to = arr.length;
119
- }
120
-
121
- for (; from < to; from++) {
122
- yield arr[from];
123
- }
124
- }
125
-
126
- /**
127
- * Consumes `atMost` elements from iterable and returns the consumed elements,
128
- * and an iterable for the rest of the elements.
129
- */
130
- export function consume<T>(iterable: Iterable<T>, atMost: number = Number.POSITIVE_INFINITY): [T[], Iterable<T>] {
131
- const consumed: T[] = [];
132
-
133
- if (atMost === 0) {
134
- return [consumed, iterable];
135
- }
136
-
137
- const iterator = iterable[Symbol.iterator]();
138
-
139
- for (let i = 0; i < atMost; i++) {
140
- const next = iterator.next();
141
-
142
- if (next.done) {
143
- return [consumed, Iterable.empty()];
144
- }
145
-
146
- consumed.push(next.value);
147
- }
148
-
149
- return [consumed, { [Symbol.iterator]() { return iterator; } }];
150
- }
151
-
152
- export async function asyncToArray<T>(iterable: AsyncIterable<T>): Promise<T[]> {
153
- const result: T[] = [];
154
- for await (const item of iterable) {
155
- result.push(item);
156
- }
157
- return Promise.resolve(result);
158
- }
159
- }