@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
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Copyright (c) 2025 The xterm.js authors. All rights reserved.
3
+ * @license MIT
4
+ */
5
+
6
+ import { IApcHandler, IHandlerCollection, ApcFallbackHandlerType, IApcParser, ISubParserStackState } from './Types';
7
+ import { ParserConstants } from './Constants';
8
+ import { utf32ToString } from '../input/TextDecoder';
9
+ import { IDisposable } from '../Types';
10
+ import { LimitedStringBuilder } from '../StringBuilder';
11
+
12
+ const EMPTY_HANDLERS: IApcHandler[] = [];
13
+
14
+ /**
15
+ * APC Parser for handling Application Program Command sequences.
16
+ * APC sequences use the format: ESC _ <identifier><data> ESC \
17
+ *
18
+ * Unlike OSC which uses numeric identifiers (e.g., OSC 1337),
19
+ * APC uses the first character as the identifier (e.g., 'G' for Kitty graphics).
20
+ * The identifier is the character code of the first byte after ESC _.
21
+ */
22
+ export class ApcParser implements IApcParser {
23
+ private _handlers: IHandlerCollection<IApcHandler> = Object.create(null);
24
+ private _active = EMPTY_HANDLERS;
25
+ private _ident: number = 0;
26
+ private _handlerFb: ApcFallbackHandlerType = () => { };
27
+ private _stack: ISubParserStackState = {
28
+ paused: false,
29
+ loopPosition: 0,
30
+ fallThrough: false
31
+ };
32
+
33
+ /**
34
+ * Register an APC handler for a specific identifier.
35
+ * @param ident The character code of the first byte (e.g., 0x47 for 'G')
36
+ * @param handler The handler to register
37
+ */
38
+ public registerHandler(ident: number, handler: IApcHandler): IDisposable {
39
+ this._handlers[ident] ??= [];
40
+ const handlerList = this._handlers[ident];
41
+ handlerList.push(handler);
42
+ return {
43
+ dispose: () => {
44
+ const handlerIndex = handlerList.indexOf(handler);
45
+ if (handlerIndex !== -1) {
46
+ handlerList.splice(handlerIndex, 1);
47
+ }
48
+ }
49
+ };
50
+ }
51
+
52
+ public clearHandler(ident: number): void {
53
+ if (this._handlers[ident]) delete this._handlers[ident];
54
+ }
55
+
56
+ public setHandlerFallback(handler: ApcFallbackHandlerType): void {
57
+ this._handlerFb = handler;
58
+ }
59
+
60
+ public dispose(): void {
61
+ this._handlers = Object.create(null);
62
+ this._handlerFb = () => { };
63
+ this._active = EMPTY_HANDLERS;
64
+ }
65
+
66
+ public reset(): void {
67
+ // force cleanup handlers
68
+ if (this._active.length) {
69
+ for (let j = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; j >= 0; --j) {
70
+ this._active[j].end(false);
71
+ }
72
+ }
73
+ this._stack.paused = false;
74
+ this._active = EMPTY_HANDLERS;
75
+ this._ident = 0;
76
+ }
77
+
78
+ public start(ident: number): void {
79
+ // always reset leftover handlers
80
+ this.reset();
81
+ this._ident = ident;
82
+ this._active = this._handlers[ident] || EMPTY_HANDLERS;
83
+ if (!this._active.length) {
84
+ this._handlerFb(this._ident, 'START');
85
+ } else {
86
+ for (let j = this._active.length - 1; j >= 0; j--) {
87
+ this._active[j].start();
88
+ }
89
+ }
90
+ }
91
+
92
+ public put(data: Uint32Array, start: number, end: number): void {
93
+ if (!this._active.length) {
94
+ this._handlerFb(this._ident, 'PUT', utf32ToString(data, start, end));
95
+ } else {
96
+ for (let j = this._active.length - 1; j >= 0; j--) {
97
+ this._active[j].put(data, start, end);
98
+ }
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Indicates end of an APC command.
104
+ * Whether the APC got aborted or finished normally
105
+ * is indicated by `success`.
106
+ */
107
+ public end(success: boolean, promiseResult: boolean = true): void | Promise<boolean> {
108
+ if (!this._active.length) {
109
+ this._handlerFb(this._ident, 'END', success);
110
+ } else {
111
+ let handlerResult: boolean | Promise<boolean> = false;
112
+ let j = this._active.length - 1;
113
+ let fallThrough = false;
114
+ if (this._stack.paused) {
115
+ j = this._stack.loopPosition - 1;
116
+ handlerResult = promiseResult;
117
+ fallThrough = this._stack.fallThrough;
118
+ this._stack.paused = false;
119
+ }
120
+ if (!fallThrough && handlerResult === false) {
121
+ for (; j >= 0; j--) {
122
+ handlerResult = this._active[j].end(success);
123
+ if (handlerResult === true) {
124
+ break;
125
+ } else if (handlerResult instanceof Promise) {
126
+ this._stack.paused = true;
127
+ this._stack.loopPosition = j;
128
+ this._stack.fallThrough = false;
129
+ return handlerResult;
130
+ }
131
+ }
132
+ j--;
133
+ }
134
+ // cleanup left over handlers (fallThrough for async)
135
+ for (; j >= 0; j--) {
136
+ handlerResult = this._active[j].end(false);
137
+ if (handlerResult instanceof Promise) {
138
+ this._stack.paused = true;
139
+ this._stack.loopPosition = j;
140
+ this._stack.fallThrough = true;
141
+ return handlerResult;
142
+ }
143
+ }
144
+ }
145
+ this._active = EMPTY_HANDLERS;
146
+ this._ident = 0;
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Convenient class to allow attaching string based handler functions
152
+ * as APC handlers.
153
+ */
154
+ export class ApcHandler implements IApcHandler {
155
+ private static _payloadLimit = ParserConstants.PAYLOAD_LIMIT;
156
+
157
+ private _data = new LimitedStringBuilder(ApcHandler._payloadLimit);
158
+ private _hitLimit: boolean = false;
159
+
160
+ constructor(private _handler: (data: string) => boolean | Promise<boolean>) { }
161
+
162
+ public start(): void {
163
+ this._data.reset();
164
+ this._hitLimit = false;
165
+ }
166
+
167
+ public put(data: Uint32Array, start: number, end: number): void {
168
+ if (this._hitLimit) {
169
+ return;
170
+ }
171
+ if (this._data.append(utf32ToString(data, start, end))) {
172
+ this._hitLimit = true;
173
+ }
174
+ }
175
+
176
+ public end(success: boolean): boolean | Promise<boolean> {
177
+ let ret: boolean | Promise<boolean> = false;
178
+ if (this._hitLimit) {
179
+ ret = false;
180
+ } else if (success) {
181
+ ret = this._handler(this._data.toString());
182
+ if (ret instanceof Promise) {
183
+ // need to hold data until `ret` got resolved
184
+ // dont care for errors, data will be freed anyway on next start
185
+ return ret.then(res => {
186
+ this._data.reset();
187
+ this._hitLimit = false;
188
+ return res;
189
+ });
190
+ }
191
+ }
192
+ this._data.reset();
193
+ this._hitLimit = false;
194
+ return ret;
195
+ }
196
+ }
@@ -14,13 +14,18 @@ export const enum ParserState {
14
14
  CSI_PARAM = 4,
15
15
  CSI_INTERMEDIATE = 5,
16
16
  CSI_IGNORE = 6,
17
- SOS_PM_APC_STRING = 7,
17
+ SOS_PM_STRING = 7,
18
18
  OSC_STRING = 8,
19
19
  DCS_ENTRY = 9,
20
20
  DCS_PARAM = 10,
21
21
  DCS_IGNORE = 11,
22
22
  DCS_INTERMEDIATE = 12,
23
- DCS_PASSTHROUGH = 13
23
+ DCS_PASSTHROUGH = 13,
24
+ APC_ENTRY = 14,
25
+ APC_INTERMEDIATE = 15,
26
+ APC_PASSTHROUGH = 16,
27
+ // Number of states, meaning LAST_STATE + 1.
28
+ STATE_LENGTH = 17
24
29
  }
25
30
 
26
31
  /**
@@ -41,7 +46,10 @@ export const enum ParserAction {
41
46
  CLEAR = 11,
42
47
  DCS_HOOK = 12,
43
48
  DCS_PUT = 13,
44
- DCS_UNHOOK = 14
49
+ DCS_UNHOOK = 14,
50
+ APC_START = 15,
51
+ APC_PUT = 16,
52
+ APC_END = 17
45
53
  }
46
54
 
47
55
  /**
@@ -55,4 +63,6 @@ export const enum OscState {
55
63
  }
56
64
 
57
65
  // payload limit for OSC and DCS
58
- export const PAYLOAD_LIMIT = 10000000;
66
+ export const enum ParserConstants {
67
+ PAYLOAD_LIMIT = 10000000
68
+ }
@@ -3,11 +3,12 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { IDisposable } from 'common/Types';
7
- import { IDcsHandler, IParams, IHandlerCollection, IDcsParser, DcsFallbackHandlerType, ISubParserStackState } from 'common/parser/Types';
8
- import { utf32ToString } from 'common/input/TextDecoder';
9
- import { Params } from 'common/parser/Params';
10
- import { PAYLOAD_LIMIT } from 'common/parser/Constants';
6
+ import { IDisposable } from '../Types';
7
+ import { IDcsHandler, IParams, IHandlerCollection, IDcsParser, DcsFallbackHandlerType, ISubParserStackState } from './Types';
8
+ import { utf32ToString } from '../input/TextDecoder';
9
+ import { Params } from './Params';
10
+ import { ParserConstants } from './Constants';
11
+ import { LimitedStringBuilder } from '../StringBuilder';
11
12
 
12
13
  const EMPTY_HANDLERS: IDcsHandler[] = [];
13
14
 
@@ -29,9 +30,7 @@ export class DcsParser implements IDcsParser {
29
30
  }
30
31
 
31
32
  public registerHandler(ident: number, handler: IDcsHandler): IDisposable {
32
- if (this._handlers[ident] === undefined) {
33
- this._handlers[ident] = [];
34
- }
33
+ this._handlers[ident] ??= [];
35
34
  const handlerList = this._handlers[ident];
36
35
  handlerList.push(handler);
37
36
  return {
@@ -140,7 +139,9 @@ EMPTY_PARAMS.addParam(0);
140
139
  * Note: The payload is currently limited to 50 MB (hardcoded).
141
140
  */
142
141
  export class DcsHandler implements IDcsHandler {
143
- private _data = '';
142
+ private static _payloadLimit = ParserConstants.PAYLOAD_LIMIT;
143
+
144
+ private _data = new LimitedStringBuilder(DcsHandler._payloadLimit);
144
145
  private _params: IParams = EMPTY_PARAMS;
145
146
  private _hitLimit: boolean = false;
146
147
 
@@ -152,7 +153,7 @@ export class DcsHandler implements IDcsHandler {
152
153
  // perf optimization:
153
154
  // clone only, if we have non empty params, otherwise stick with default
154
155
  this._params = (params.length > 1 || params.params[0]) ? params.clone() : EMPTY_PARAMS;
155
- this._data = '';
156
+ this._data.reset();
156
157
  this._hitLimit = false;
157
158
  }
158
159
 
@@ -160,9 +161,7 @@ export class DcsHandler implements IDcsHandler {
160
161
  if (this._hitLimit) {
161
162
  return;
162
163
  }
163
- this._data += utf32ToString(data, start, end);
164
- if (this._data.length > PAYLOAD_LIMIT) {
165
- this._data = '';
164
+ if (this._data.append(utf32ToString(data, start, end))) {
166
165
  this._hitLimit = true;
167
166
  }
168
167
  }
@@ -172,20 +171,20 @@ export class DcsHandler implements IDcsHandler {
172
171
  if (this._hitLimit) {
173
172
  ret = false;
174
173
  } else if (success) {
175
- ret = this._handler(this._data, this._params);
174
+ ret = this._handler(this._data.toString(), this._params);
176
175
  if (ret instanceof Promise) {
177
176
  // need to hold data and params until `ret` got resolved
178
177
  // dont care for errors, data will be freed anyway on next start
179
178
  return ret.then(res => {
180
179
  this._params = EMPTY_PARAMS;
181
- this._data = '';
180
+ this._data.reset();
182
181
  this._hitLimit = false;
183
182
  return res;
184
183
  });
185
184
  }
186
185
  }
187
186
  this._params = EMPTY_PARAMS;
188
- this._data = '';
187
+ this._data.reset();
189
188
  this._hitLimit = false;
190
189
  return ret;
191
190
  }