@xterm/xterm 6.1.0-beta.23 → 6.1.0-beta.231

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 (160) 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 +31 -21
  56. package/src/common/Event.ts +118 -0
  57. package/src/common/InputHandler.ts +283 -81
  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/TaskQueue.ts +14 -5
  62. package/src/common/Types.ts +51 -31
  63. package/src/common/Version.ts +9 -0
  64. package/src/common/buffer/Buffer.ts +34 -19
  65. package/src/common/buffer/BufferLine.ts +133 -65
  66. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  67. package/src/common/buffer/BufferSet.ts +11 -6
  68. package/src/common/buffer/CellData.ts +57 -0
  69. package/src/common/buffer/Marker.ts +2 -2
  70. package/src/common/buffer/Types.ts +6 -2
  71. package/src/common/data/EscapeSequences.ts +71 -70
  72. package/src/common/input/Keyboard.ts +14 -7
  73. package/src/common/input/KittyKeyboard.ts +526 -0
  74. package/src/common/input/Win32InputMode.ts +297 -0
  75. package/src/common/input/WriteBuffer.ts +69 -32
  76. package/src/common/input/XParseColor.ts +2 -2
  77. package/src/common/parser/ApcParser.ts +197 -0
  78. package/src/common/parser/Constants.ts +14 -4
  79. package/src/common/parser/DcsParser.ts +5 -5
  80. package/src/common/parser/EscapeSequenceParser.ts +205 -63
  81. package/src/common/parser/OscParser.ts +5 -5
  82. package/src/common/parser/Params.ts +27 -8
  83. package/src/common/parser/Types.ts +36 -2
  84. package/src/common/public/BufferLineApiView.ts +2 -2
  85. package/src/common/public/BufferNamespaceApi.ts +3 -3
  86. package/src/common/public/ParserApi.ts +3 -0
  87. package/src/common/services/BufferService.ts +14 -9
  88. package/src/common/services/CharsetService.ts +4 -0
  89. package/src/common/services/CoreService.ts +18 -4
  90. package/src/common/services/DecorationService.ts +258 -8
  91. package/src/common/services/LogService.ts +1 -31
  92. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +21 -132
  93. package/src/common/services/OptionsService.ts +13 -4
  94. package/src/common/services/ServiceRegistry.ts +9 -7
  95. package/src/common/services/Services.ts +49 -40
  96. package/src/common/services/UnicodeService.ts +1 -1
  97. package/typings/xterm.d.ts +318 -34
  98. package/src/common/TypedArrayUtils.ts +0 -17
  99. package/src/vs/base/browser/browser.ts +0 -141
  100. package/src/vs/base/browser/canIUse.ts +0 -49
  101. package/src/vs/base/browser/dom.ts +0 -2369
  102. package/src/vs/base/browser/fastDomNode.ts +0 -316
  103. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  104. package/src/vs/base/browser/iframe.ts +0 -135
  105. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  106. package/src/vs/base/browser/mouseEvent.ts +0 -229
  107. package/src/vs/base/browser/touch.ts +0 -372
  108. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  109. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  110. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  111. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  112. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  113. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  114. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  115. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  116. package/src/vs/base/browser/ui/widget.ts +0 -57
  117. package/src/vs/base/browser/window.ts +0 -14
  118. package/src/vs/base/common/arrays.ts +0 -887
  119. package/src/vs/base/common/arraysFind.ts +0 -202
  120. package/src/vs/base/common/assert.ts +0 -71
  121. package/src/vs/base/common/async.ts +0 -1992
  122. package/src/vs/base/common/cancellation.ts +0 -148
  123. package/src/vs/base/common/charCode.ts +0 -450
  124. package/src/vs/base/common/collections.ts +0 -140
  125. package/src/vs/base/common/decorators.ts +0 -130
  126. package/src/vs/base/common/equals.ts +0 -146
  127. package/src/vs/base/common/errors.ts +0 -303
  128. package/src/vs/base/common/event.ts +0 -1778
  129. package/src/vs/base/common/functional.ts +0 -32
  130. package/src/vs/base/common/hash.ts +0 -316
  131. package/src/vs/base/common/iterator.ts +0 -159
  132. package/src/vs/base/common/keyCodes.ts +0 -526
  133. package/src/vs/base/common/keybindings.ts +0 -284
  134. package/src/vs/base/common/lazy.ts +0 -47
  135. package/src/vs/base/common/lifecycle.ts +0 -801
  136. package/src/vs/base/common/linkedList.ts +0 -142
  137. package/src/vs/base/common/map.ts +0 -202
  138. package/src/vs/base/common/numbers.ts +0 -98
  139. package/src/vs/base/common/observable.ts +0 -76
  140. package/src/vs/base/common/observableInternal/api.ts +0 -31
  141. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  142. package/src/vs/base/common/observableInternal/base.ts +0 -489
  143. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  144. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  145. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  146. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  147. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  148. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  149. package/src/vs/base/common/platform.ts +0 -281
  150. package/src/vs/base/common/scrollable.ts +0 -522
  151. package/src/vs/base/common/sequence.ts +0 -34
  152. package/src/vs/base/common/stopwatch.ts +0 -43
  153. package/src/vs/base/common/strings.ts +0 -557
  154. package/src/vs/base/common/symbols.ts +0 -9
  155. package/src/vs/base/common/uint.ts +0 -59
  156. package/src/vs/patches/nls.ts +0 -90
  157. package/src/vs/typings/base-common.d.ts +0 -20
  158. package/src/vs/typings/require.d.ts +0 -42
  159. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  160. 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.23",
4
+ "version": "6.1.0-beta.231",
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": "7b2a5cb50f92e1baf680364524714d29354008a0"
114
+ "commit": "b787ac8b1b5e7e6dbe88c32e3bdc5605b64a491c"
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
  /**