@xterm/xterm 6.1.0-beta.25 → 6.1.0-beta.251

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 (163) 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 +25 -22
  8. package/src/browser/AccessibilityManager.ts +11 -6
  9. package/src/browser/Clipboard.ts +6 -3
  10. package/src/browser/CoreBrowserTerminal.ts +149 -319
  11. package/src/browser/Dom.ts +178 -0
  12. package/src/browser/Linkifier.ts +11 -11
  13. package/src/browser/OscLinkProvider.ts +82 -14
  14. package/src/browser/RenderDebouncer.ts +2 -2
  15. package/src/browser/TimeBasedDebouncer.ts +2 -2
  16. package/src/browser/Types.ts +12 -11
  17. package/src/browser/Viewport.ts +55 -20
  18. package/src/browser/decorations/BufferDecorationRenderer.ts +1 -1
  19. package/src/browser/decorations/OverviewRulerRenderer.ts +33 -17
  20. package/src/browser/input/CompositionHelper.ts +44 -8
  21. package/src/browser/public/Terminal.ts +25 -28
  22. package/src/browser/renderer/dom/DomRenderer.ts +242 -76
  23. package/src/browser/renderer/dom/DomRendererRowFactory.ts +19 -13
  24. package/src/browser/renderer/dom/WidthCache.ts +54 -52
  25. package/src/browser/renderer/shared/Constants.ts +7 -0
  26. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  27. package/src/browser/renderer/shared/Types.ts +8 -2
  28. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  29. package/src/browser/scrollable/fastDomNode.ts +126 -0
  30. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  31. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  32. package/src/browser/scrollable/mouseEvent.ts +292 -0
  33. package/src/browser/scrollable/scrollable.ts +486 -0
  34. package/src/browser/scrollable/scrollableElement.ts +581 -0
  35. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  36. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  37. package/src/browser/scrollable/scrollbarState.ts +246 -0
  38. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  39. package/src/browser/scrollable/touch.ts +485 -0
  40. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  41. package/src/browser/scrollable/widget.ts +23 -0
  42. package/src/browser/services/CharSizeService.ts +2 -2
  43. package/src/browser/services/CoreBrowserService.ts +7 -5
  44. package/src/browser/services/KeyboardService.ts +67 -0
  45. package/src/browser/services/LinkProviderService.ts +1 -1
  46. package/src/browser/services/MouseCoordsService.ts +47 -0
  47. package/src/browser/services/MouseService.ts +518 -25
  48. package/src/browser/services/RenderService.ts +28 -16
  49. package/src/browser/services/SelectionService.ts +45 -39
  50. package/src/browser/services/Services.ts +40 -17
  51. package/src/browser/services/ThemeService.ts +2 -2
  52. package/src/common/Async.ts +141 -0
  53. package/src/common/CircularList.ts +2 -2
  54. package/src/common/Color.ts +8 -0
  55. package/src/common/CoreTerminal.ts +32 -22
  56. package/src/common/Event.ts +118 -0
  57. package/src/common/InputHandler.ts +286 -87
  58. package/src/common/Lifecycle.ts +113 -0
  59. package/src/common/Platform.ts +13 -3
  60. package/src/common/SortedList.ts +7 -3
  61. package/src/common/StringBuilder.ts +67 -0
  62. package/src/common/TaskQueue.ts +14 -5
  63. package/src/common/Types.ts +51 -31
  64. package/src/common/Version.ts +9 -0
  65. package/src/common/buffer/Buffer.ts +34 -19
  66. package/src/common/buffer/BufferLine.ts +140 -68
  67. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  68. package/src/common/buffer/BufferReflow.ts +4 -1
  69. package/src/common/buffer/BufferSet.ts +11 -6
  70. package/src/common/buffer/CellData.ts +57 -0
  71. package/src/common/buffer/Marker.ts +2 -2
  72. package/src/common/buffer/Types.ts +6 -2
  73. package/src/common/data/EscapeSequences.ts +71 -70
  74. package/src/common/input/Keyboard.ts +14 -7
  75. package/src/common/input/KittyKeyboard.ts +526 -0
  76. package/src/common/input/Win32InputMode.ts +297 -0
  77. package/src/common/input/WriteBuffer.ts +107 -38
  78. package/src/common/input/XParseColor.ts +2 -2
  79. package/src/common/parser/ApcParser.ts +196 -0
  80. package/src/common/parser/Constants.ts +14 -4
  81. package/src/common/parser/DcsParser.ts +11 -12
  82. package/src/common/parser/EscapeSequenceParser.ts +205 -63
  83. package/src/common/parser/OscParser.ts +11 -12
  84. package/src/common/parser/Params.ts +27 -8
  85. package/src/common/parser/Types.ts +36 -2
  86. package/src/common/public/BufferLineApiView.ts +2 -2
  87. package/src/common/public/BufferNamespaceApi.ts +3 -3
  88. package/src/common/public/ParserApi.ts +3 -0
  89. package/src/common/services/BufferService.ts +14 -9
  90. package/src/common/services/CharsetService.ts +4 -0
  91. package/src/common/services/CoreService.ts +22 -9
  92. package/src/common/services/DecorationService.ts +255 -8
  93. package/src/common/services/LogService.ts +1 -31
  94. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +21 -132
  95. package/src/common/services/OptionsService.ts +13 -4
  96. package/src/common/services/ServiceRegistry.ts +9 -7
  97. package/src/common/services/Services.ts +49 -40
  98. package/src/common/services/UnicodeService.ts +1 -1
  99. package/typings/xterm.d.ts +318 -34
  100. package/src/common/Clone.ts +0 -23
  101. package/src/common/TypedArrayUtils.ts +0 -17
  102. package/src/vs/base/browser/browser.ts +0 -141
  103. package/src/vs/base/browser/canIUse.ts +0 -49
  104. package/src/vs/base/browser/dom.ts +0 -2369
  105. package/src/vs/base/browser/fastDomNode.ts +0 -316
  106. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  107. package/src/vs/base/browser/iframe.ts +0 -135
  108. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  109. package/src/vs/base/browser/mouseEvent.ts +0 -229
  110. package/src/vs/base/browser/touch.ts +0 -372
  111. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  112. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  113. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  114. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  115. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  116. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  117. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  118. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  119. package/src/vs/base/browser/ui/widget.ts +0 -57
  120. package/src/vs/base/browser/window.ts +0 -14
  121. package/src/vs/base/common/arrays.ts +0 -887
  122. package/src/vs/base/common/arraysFind.ts +0 -202
  123. package/src/vs/base/common/assert.ts +0 -71
  124. package/src/vs/base/common/async.ts +0 -1992
  125. package/src/vs/base/common/cancellation.ts +0 -148
  126. package/src/vs/base/common/charCode.ts +0 -450
  127. package/src/vs/base/common/collections.ts +0 -140
  128. package/src/vs/base/common/decorators.ts +0 -130
  129. package/src/vs/base/common/equals.ts +0 -146
  130. package/src/vs/base/common/errors.ts +0 -303
  131. package/src/vs/base/common/event.ts +0 -1778
  132. package/src/vs/base/common/functional.ts +0 -32
  133. package/src/vs/base/common/hash.ts +0 -316
  134. package/src/vs/base/common/iterator.ts +0 -159
  135. package/src/vs/base/common/keyCodes.ts +0 -526
  136. package/src/vs/base/common/keybindings.ts +0 -284
  137. package/src/vs/base/common/lazy.ts +0 -47
  138. package/src/vs/base/common/lifecycle.ts +0 -801
  139. package/src/vs/base/common/linkedList.ts +0 -142
  140. package/src/vs/base/common/map.ts +0 -202
  141. package/src/vs/base/common/numbers.ts +0 -98
  142. package/src/vs/base/common/observable.ts +0 -76
  143. package/src/vs/base/common/observableInternal/api.ts +0 -31
  144. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  145. package/src/vs/base/common/observableInternal/base.ts +0 -489
  146. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  147. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  148. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  149. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  150. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  151. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  152. package/src/vs/base/common/platform.ts +0 -281
  153. package/src/vs/base/common/scrollable.ts +0 -522
  154. package/src/vs/base/common/sequence.ts +0 -34
  155. package/src/vs/base/common/stopwatch.ts +0 -43
  156. package/src/vs/base/common/strings.ts +0 -557
  157. package/src/vs/base/common/symbols.ts +0 -9
  158. package/src/vs/base/common/uint.ts +0 -59
  159. package/src/vs/patches/nls.ts +0 -90
  160. package/src/vs/typings/base-common.d.ts +0 -20
  161. package/src/vs/typings/require.d.ts +0 -42
  162. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  163. package/src/vs/typings/vscode-globals-product.d.ts +0 -33
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xterm/xterm",
3
3
  "description": "Full xterm terminal, in your browser",
4
- "version": "6.1.0-beta.25",
4
+ "version": "6.1.0-beta.251",
5
5
  "main": "lib/xterm.js",
6
6
  "module": "lib/xterm.mjs",
7
7
  "style": "css/xterm.css",
@@ -27,29 +27,37 @@
27
27
  "xterm"
28
28
  ],
29
29
  "scripts": {
30
- "setup": "npm run build",
30
+ "presetup": "npm run build",
31
+ "setup": "npm run esbuild",
32
+ "setup-full": "node bin/setup-full.mjs",
33
+ "postsetup": "npm run esbuild-demo-server",
31
34
  "start": "node demo/start",
35
+ "dev": "concurrently -k -p [{name}] -n tsc,esbuild,esbuild-demo-client,esbuild-demo-server,server -c blue,yellow,cyan,green,magenta \"npm:tsc-watch\" \"npm:esbuild-watch\" \"npm:esbuild-demo-client-watch\" \"npm:esbuild-demo-server-watch\" \"npm:start\"",
32
36
  "build": "npm run tsc",
33
37
  "watch": "npm run tsc-watch",
34
- "tsc": "tsc -b ./tsconfig.all.json",
35
- "tsc-watch": "tsc -b -w ./tsconfig.all.json --preserveWatchOutput",
38
+ "tsc": "tsgo -b ./tsconfig.all.json",
39
+ "tsc-watch": "tsgo -b -w ./tsconfig.all.json --preserveWatchOutput",
36
40
  "esbuild": "node bin/esbuild_all.mjs",
37
41
  "esbuild-watch": "node bin/esbuild_all.mjs --watch",
38
42
  "esbuild-package": "node bin/esbuild_all.mjs --prod",
39
43
  "esbuild-package-watch": "node bin/esbuild_all.mjs --prod --watch",
40
44
  "esbuild-package-headless-only": "node bin/esbuild.mjs --prod --headless",
41
- "esbuild-demo": "node bin/esbuild.mjs --demo-client",
42
- "esbuild-demo-watch": "node bin/esbuild.mjs --demo-client --watch",
45
+ "esbuild-demo-client": "node bin/esbuild.mjs --demo-client",
46
+ "esbuild-demo-client-watch": "node bin/esbuild.mjs --demo-client --watch",
47
+ "esbuild-demo-server": "node bin/esbuild.mjs --demo-server",
48
+ "esbuild-demo-server-watch": "node bin/esbuild.mjs --demo-server --watch",
43
49
  "test": "npm run test-unit",
44
50
  "posttest": "npm run lint",
45
- "lint": "eslint --max-warnings 0 src/ addons/",
46
- "lint-fix": "eslint --fix src/ addons/",
51
+ "lint": "eslint --max-warnings 0 src/ addons/ demo/ test/",
52
+ "lint-changes": "node ./bin/lint_changes.js",
53
+ "lint-changes-fix": "node ./bin/lint_changes.js --fix",
54
+ "lint-fix": "eslint --fix src/ addons/ demo/ test/",
47
55
  "lint-api": "eslint --config eslint.config.typings.mjs --max-warnings 0 typings/",
48
56
  "test-unit": "node ./bin/test_unit.js",
57
+ "test-unit-slow-tests": "npm run test-unit | grep \"ms)\"",
49
58
  "test-unit-coverage": "node ./bin/test_unit.js --coverage",
50
- "test-unit-dev": "cross-env NODE_PATH='./out' mocha",
51
59
  "test-integration": "node ./bin/test_integration.js --workers=75%",
52
- "test-integration-chromium": "node ./bin/test_integration.js --workers=75% \"--project=ChromeStable\"",
60
+ "test-integration-chromium": "node ./bin/test_integration.js --workers=75% \"--project=Chromium\"",
53
61
  "test-integration-firefox": "node ./bin/test_integration.js --workers=75% \"--project=FirefoxStable\"",
54
62
  "test-integration-webkit": "node ./bin/test_integration.js --workers=75% \"--project=WebKit\"",
55
63
  "test-integration-debug": "node ./bin/test_integration.js --workers=1 --headed --timeout=30000",
@@ -57,7 +65,7 @@
57
65
  "benchmark-baseline": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json --baseline out-test/benchmark/*benchmark.js",
58
66
  "benchmark-eval": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json --eval out-test/benchmark/*benchmark.js",
59
67
  "clean": "rm -rf lib out addons/*/lib addons/*/out",
60
- "vtfeatures": "node bin/extract_vtfeatures.js src/**/*.ts src/*.ts",
68
+ "vtfeatures": "node bin/extract_vtfeatures.js src/*/*.ts src/*/*/*.ts src/*.ts addons/**/src/*.ts",
61
69
  "prepackage": "npm run build",
62
70
  "package": "webpack",
63
71
  "postpackage": "npm run esbuild-package",
@@ -68,25 +76,21 @@
68
76
  },
69
77
  "devDependencies": {
70
78
  "@lunapaint/png-codec": "^0.2.0",
71
- "@playwright/test": "^1.37.1",
79
+ "@playwright/test": "^1.57.0",
72
80
  "@stylistic/eslint-plugin": "^4.4.1",
73
81
  "@types/chai": "^4.2.22",
74
- "@types/debug": "^4.1.7",
75
- "@types/deep-equal": "^1.0.1",
76
82
  "@types/express": "4",
77
83
  "@types/express-ws": "^3.0.1",
78
84
  "@types/jsdom": "^27.0.0",
79
85
  "@types/mocha": "^9.0.0",
80
86
  "@types/node": "^22.19.3",
81
- "@types/trusted-types": "^1.0.6",
82
- "@types/utf8": "^3.0.0",
83
87
  "@types/webpack": "^5.28.0",
84
88
  "@types/ws": "^8.2.0",
85
89
  "@typescript-eslint/eslint-plugin": "^8.50.1",
86
90
  "@typescript-eslint/parser": "^8.50.1",
91
+ "@typescript/native-preview": "^7.0.0-dev.20260213.1",
87
92
  "chai": "^4.3.4",
88
- "cross-env": "^7.0.3",
89
- "deep-equal": "^2.0.5",
93
+ "concurrently": "^9.1.2",
90
94
  "esbuild": "~0.25.2",
91
95
  "eslint": "^9.39.2",
92
96
  "eslint-plugin-jsdoc": "^50.8.0",
@@ -95,18 +99,17 @@
95
99
  "jsdom": "^27.3.0",
96
100
  "mocha": "^10.1.0",
97
101
  "mustache": "^4.2.0",
98
- "node-pty": "1.1.0-beta19",
102
+ "node-pty": "^1.2.0-beta.9",
99
103
  "nyc": "^17.1.0",
100
104
  "source-map-loader": "^3.0.0",
101
105
  "source-map-support": "^0.5.20",
102
106
  "ts-loader": "^9.3.1",
103
- "typescript": "5.5",
107
+ "typescript": "^5.9.3",
104
108
  "typescript-eslint": "^8.50.1",
105
- "utf8": "^3.0.0",
106
109
  "webpack": "^5.61.0",
107
110
  "webpack-cli": "^4.9.1",
108
111
  "ws": "^8.2.3",
109
112
  "xterm-benchmark": "^0.3.1"
110
113
  },
111
- "commit": "6fe5a124ca8a8e1643a7560aa13bc21005e59445"
114
+ "commit": "c2ecfe744688be7ebe8728004fd8f36717d0de33"
112
115
  }
@@ -6,13 +6,15 @@
6
6
  import * as Strings from 'browser/LocalizableStrings';
7
7
  import { ITerminal, IRenderDebouncer } from 'browser/Types';
8
8
  import { TimeBasedDebouncer } from 'browser/TimeBasedDebouncer';
9
- import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
9
+ import { Disposable, toDisposable } from 'common/Lifecycle';
10
10
  import { ICoreBrowserService, IRenderService } from 'browser/services/Services';
11
11
  import { IBuffer } from 'common/buffer/Types';
12
12
  import { IInstantiationService } from 'common/services/Services';
13
- import { addDisposableListener } from 'vs/base/browser/dom';
13
+ import { addDisposableListener } from 'browser/Dom';
14
14
 
15
- const MAX_ROWS_TO_READ = 20;
15
+ const enum Constants {
16
+ MAX_ROWS_TO_READ = 20
17
+ }
16
18
 
17
19
  const enum BoundaryPosition {
18
20
  TOP,
@@ -137,7 +139,7 @@ export class AccessibilityManager extends Disposable {
137
139
  }
138
140
 
139
141
  private _handleChar(char: string): void {
140
- if (this._liveRegionLineCount < MAX_ROWS_TO_READ + 1) {
142
+ if (this._liveRegionLineCount < Constants.MAX_ROWS_TO_READ + 1) {
141
143
  if (this._charsToConsume.length > 0) {
142
144
  // Have the screen reader ignore the char if it was just input
143
145
  const shiftedChar = this._charsToConsume.shift();
@@ -150,8 +152,8 @@ export class AccessibilityManager extends Disposable {
150
152
 
151
153
  if (char === '\n') {
152
154
  this._liveRegionLineCount++;
153
- if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) {
154
- this._liveRegion.textContent += Strings.tooMuchOutput.get();
155
+ if (this._liveRegionLineCount === Constants.MAX_ROWS_TO_READ + 1) {
156
+ this._liveRegion.textContent = Strings.tooMuchOutput.get();
155
157
  }
156
158
  }
157
159
  }
@@ -203,6 +205,9 @@ export class AccessibilityManager extends Disposable {
203
205
  if (this._charsToAnnounce.length === 0) {
204
206
  return;
205
207
  }
208
+ if (this._liveRegion.textContent === Strings.tooMuchOutput.get()) {
209
+ this._clearLiveRegion();
210
+ }
206
211
  this._liveRegion.textContent += this._charsToAnnounce;
207
212
  this._charsToAnnounce = '';
208
213
  }
@@ -19,10 +19,13 @@ export function prepareTextForTerminal(text: string): string {
19
19
  * @param text The pasted text to bracket
20
20
  */
21
21
  export function bracketTextForPaste(text: string, bracketedPasteMode: boolean): string {
22
- if (bracketedPasteMode) {
23
- return '\x1b[200~' + text + '\x1b[201~';
22
+ if (!bracketedPasteMode) {
23
+ return text;
24
24
  }
25
- return text;
25
+ // Sanitize pasted text to prevent injected escape sequences (e.g. exiting bracketed paste)
26
+ // by replacing ESC (\x1b) with its visible representation U+241B (␛).
27
+ const sanitizedText = text.replace(/\x1b/g, '\u241b');
28
+ return `\x1b[200~${sanitizedText}\x1b[201~`;
26
29
  }
27
30
 
28
31
  /**