@xterm/xterm 6.1.0-beta.26 → 6.1.0-beta.260

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 (179) 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 -48
  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 +177 -346
  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 +4 -4
  16. package/src/browser/TimeBasedDebouncer.ts +3 -3
  17. package/src/browser/Types.ts +15 -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/MoveToCell.ts +2 -2
  24. package/src/browser/public/Terminal.ts +33 -36
  25. package/src/browser/renderer/dom/DomRenderer.ts +251 -85
  26. package/src/browser/renderer/dom/DomRendererRowFactory.ts +33 -27
  27. package/src/browser/renderer/dom/WidthCache.ts +57 -55
  28. package/src/browser/renderer/shared/Constants.ts +7 -0
  29. package/src/browser/renderer/shared/RendererUtils.ts +1 -1
  30. package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
  31. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  32. package/src/browser/renderer/shared/Types.ts +10 -4
  33. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  34. package/src/browser/scrollable/fastDomNode.ts +126 -0
  35. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  36. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  37. package/src/browser/scrollable/mouseEvent.ts +292 -0
  38. package/src/browser/scrollable/scrollable.ts +486 -0
  39. package/src/browser/scrollable/scrollableElement.ts +581 -0
  40. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  41. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  42. package/src/browser/scrollable/scrollbarState.ts +246 -0
  43. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  44. package/src/browser/scrollable/touch.ts +485 -0
  45. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  46. package/src/browser/scrollable/widget.ts +23 -0
  47. package/src/browser/selection/SelectionModel.ts +1 -1
  48. package/src/browser/services/CharSizeService.ts +4 -4
  49. package/src/browser/services/CharacterJoinerService.ts +7 -7
  50. package/src/browser/services/CoreBrowserService.ts +7 -5
  51. package/src/browser/services/KeyboardService.ts +67 -0
  52. package/src/browser/services/LinkProviderService.ts +3 -3
  53. package/src/browser/services/MouseCoordsService.ts +47 -0
  54. package/src/browser/services/MouseService.ts +619 -23
  55. package/src/browser/services/RenderService.ts +33 -21
  56. package/src/browser/services/SelectionService.ts +72 -54
  57. package/src/browser/services/Services.ts +44 -21
  58. package/src/browser/services/ThemeService.ts +8 -8
  59. package/src/common/Async.ts +141 -0
  60. package/src/common/CircularList.ts +3 -3
  61. package/src/common/Color.ts +9 -1
  62. package/src/common/CoreTerminal.ts +45 -35
  63. package/src/common/Event.ts +118 -0
  64. package/src/common/InputHandler.ts +301 -102
  65. package/src/common/Lifecycle.ts +113 -0
  66. package/src/common/Platform.ts +13 -3
  67. package/src/common/SortedList.ts +8 -4
  68. package/src/common/StringBuilder.ts +67 -0
  69. package/src/common/TaskQueue.ts +16 -7
  70. package/src/common/Types.ts +55 -35
  71. package/src/common/Version.ts +9 -0
  72. package/src/common/WindowsMode.ts +2 -2
  73. package/src/common/buffer/AttributeData.ts +2 -2
  74. package/src/common/buffer/Buffer.ts +45 -30
  75. package/src/common/buffer/BufferLine.ts +145 -73
  76. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  77. package/src/common/buffer/BufferReflow.ts +7 -4
  78. package/src/common/buffer/BufferSet.ts +14 -9
  79. package/src/common/buffer/CellData.ts +61 -4
  80. package/src/common/buffer/Marker.ts +3 -3
  81. package/src/common/buffer/Types.ts +7 -3
  82. package/src/common/data/Charsets.ts +4 -7
  83. package/src/common/data/EscapeSequences.ts +71 -70
  84. package/src/common/input/Keyboard.ts +16 -9
  85. package/src/common/input/KittyKeyboard.ts +526 -0
  86. package/src/common/input/TextDecoder.ts +1 -1
  87. package/src/common/input/UnicodeV6.ts +2 -2
  88. package/src/common/input/Win32InputMode.ts +297 -0
  89. package/src/common/input/WriteBuffer.ts +107 -38
  90. package/src/common/input/XParseColor.ts +2 -2
  91. package/src/common/parser/ApcParser.ts +196 -0
  92. package/src/common/parser/Constants.ts +14 -4
  93. package/src/common/parser/DcsParser.ts +15 -16
  94. package/src/common/parser/EscapeSequenceParser.ts +212 -70
  95. package/src/common/parser/OscParser.ts +14 -15
  96. package/src/common/parser/Params.ts +28 -9
  97. package/src/common/parser/Types.ts +38 -4
  98. package/src/common/public/BufferApiView.ts +3 -3
  99. package/src/common/public/BufferLineApiView.ts +4 -4
  100. package/src/common/public/BufferNamespaceApi.ts +5 -5
  101. package/src/common/public/ParserApi.ts +5 -2
  102. package/src/common/public/UnicodeApi.ts +1 -1
  103. package/src/common/services/BufferService.ts +18 -13
  104. package/src/common/services/CharsetService.ts +6 -2
  105. package/src/common/services/CoreService.ts +23 -10
  106. package/src/common/services/DecorationService.ts +260 -15
  107. package/src/common/services/InstantiationService.ts +2 -2
  108. package/src/common/services/LogService.ts +2 -32
  109. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
  110. package/src/common/services/OptionsService.ts +17 -7
  111. package/src/common/services/OscLinkService.ts +2 -2
  112. package/src/common/services/ServiceRegistry.ts +10 -8
  113. package/src/common/services/Services.ts +52 -42
  114. package/src/common/services/UnicodeService.ts +3 -3
  115. package/typings/xterm.d.ts +329 -34
  116. package/src/common/Clone.ts +0 -23
  117. package/src/common/TypedArrayUtils.ts +0 -17
  118. package/src/vs/base/browser/browser.ts +0 -141
  119. package/src/vs/base/browser/canIUse.ts +0 -49
  120. package/src/vs/base/browser/dom.ts +0 -2369
  121. package/src/vs/base/browser/fastDomNode.ts +0 -316
  122. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  123. package/src/vs/base/browser/iframe.ts +0 -135
  124. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  125. package/src/vs/base/browser/mouseEvent.ts +0 -229
  126. package/src/vs/base/browser/touch.ts +0 -372
  127. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  128. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  129. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  130. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  131. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  132. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  133. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  134. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  135. package/src/vs/base/browser/ui/widget.ts +0 -57
  136. package/src/vs/base/browser/window.ts +0 -14
  137. package/src/vs/base/common/arrays.ts +0 -887
  138. package/src/vs/base/common/arraysFind.ts +0 -202
  139. package/src/vs/base/common/assert.ts +0 -71
  140. package/src/vs/base/common/async.ts +0 -1992
  141. package/src/vs/base/common/cancellation.ts +0 -148
  142. package/src/vs/base/common/charCode.ts +0 -450
  143. package/src/vs/base/common/collections.ts +0 -140
  144. package/src/vs/base/common/decorators.ts +0 -130
  145. package/src/vs/base/common/equals.ts +0 -146
  146. package/src/vs/base/common/errors.ts +0 -303
  147. package/src/vs/base/common/event.ts +0 -1778
  148. package/src/vs/base/common/functional.ts +0 -32
  149. package/src/vs/base/common/hash.ts +0 -316
  150. package/src/vs/base/common/iterator.ts +0 -159
  151. package/src/vs/base/common/keyCodes.ts +0 -526
  152. package/src/vs/base/common/keybindings.ts +0 -284
  153. package/src/vs/base/common/lazy.ts +0 -47
  154. package/src/vs/base/common/lifecycle.ts +0 -801
  155. package/src/vs/base/common/linkedList.ts +0 -142
  156. package/src/vs/base/common/map.ts +0 -202
  157. package/src/vs/base/common/numbers.ts +0 -98
  158. package/src/vs/base/common/observable.ts +0 -76
  159. package/src/vs/base/common/observableInternal/api.ts +0 -31
  160. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  161. package/src/vs/base/common/observableInternal/base.ts +0 -489
  162. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  163. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  164. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  165. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  166. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  167. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  168. package/src/vs/base/common/platform.ts +0 -281
  169. package/src/vs/base/common/scrollable.ts +0 -522
  170. package/src/vs/base/common/sequence.ts +0 -34
  171. package/src/vs/base/common/stopwatch.ts +0 -43
  172. package/src/vs/base/common/strings.ts +0 -557
  173. package/src/vs/base/common/symbols.ts +0 -9
  174. package/src/vs/base/common/uint.ts +0 -59
  175. package/src/vs/patches/nls.ts +0 -90
  176. package/src/vs/typings/base-common.d.ts +0 -20
  177. package/src/vs/typings/require.d.ts +0 -42
  178. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  179. 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.26",
4
+ "version": "6.1.0-beta.260",
5
5
  "main": "lib/xterm.js",
6
6
  "module": "lib/xterm.mjs",
7
7
  "style": "css/xterm.css",
@@ -27,37 +27,45 @@
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/",
47
- "lint-api": "eslint --config eslint.config.typings.mjs --max-warnings 0 typings/",
51
+ "lint": "oxlint --type-aware --max-warnings 0 src addons demo test && eslint --config eslint.config.naming.mjs --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": "oxlint --type-aware --fix --max-warnings 0 src addons demo test",
55
+ "lint-api": "oxlint --max-warnings 0 -c .oxlintrc.typings.json typings && eslint --config eslint.config.naming.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",
56
- "benchmark": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json",
57
- "benchmark-baseline": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json --baseline out-test/benchmark/*benchmark.js",
58
- "benchmark-eval": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json --eval out-test/benchmark/*benchmark.js",
64
+ "benchmark": "xterm-benchmark -r 5 -c test/benchmark/benchmark.json",
65
+ "benchmark-baseline": "xterm-benchmark -r 5 -c test/benchmark/benchmark.json --baseline out-test/benchmark/*benchmark.js",
66
+ "benchmark-eval": "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",
@@ -67,46 +75,46 @@
67
75
  "prepublishOnly": "npm run package"
68
76
  },
69
77
  "devDependencies": {
78
+ "@eslint/js": "^10.0.1",
70
79
  "@lunapaint/png-codec": "^0.2.0",
71
- "@playwright/test": "^1.37.1",
72
- "@stylistic/eslint-plugin": "^4.4.1",
73
- "@types/chai": "^4.2.22",
74
- "@types/debug": "^4.1.7",
75
- "@types/deep-equal": "^1.0.1",
76
- "@types/express": "4",
80
+ "@playwright/test": "^1.59.1",
81
+ "@stylistic/eslint-plugin": "^5.10.0",
82
+ "@types/chai": "^5.2.3",
83
+ "@types/express": "^5.0.6",
77
84
  "@types/express-ws": "^3.0.1",
78
- "@types/jsdom": "^27.0.0",
79
- "@types/mocha": "^9.0.0",
85
+ "@types/jsdom": "^28.0.1",
86
+ "@types/mocha": "^10.0.10",
80
87
  "@types/node": "^22.19.3",
81
- "@types/trusted-types": "^1.0.6",
82
- "@types/utf8": "^3.0.0",
83
88
  "@types/webpack": "^5.28.0",
84
89
  "@types/ws": "^8.2.0",
85
- "@typescript-eslint/eslint-plugin": "^8.50.1",
86
- "@typescript-eslint/parser": "^8.50.1",
87
- "chai": "^4.3.4",
88
- "cross-env": "^7.0.3",
89
- "deep-equal": "^2.0.5",
90
- "esbuild": "~0.25.2",
91
- "eslint": "^9.39.2",
92
- "eslint-plugin-jsdoc": "^50.8.0",
93
- "express": "^4.19.2",
90
+ "@typescript-eslint/eslint-plugin": "^8.59.2",
91
+ "@typescript-eslint/parser": "^8.59.2",
92
+ "@typescript/native-preview": "^7.0.0-dev.20260509.2",
93
+ "chai": "^6.2.2",
94
+ "concurrently": "^9.1.2",
95
+ "esbuild": "^0.28.0",
96
+ "eslint": "^10.3.0",
97
+ "eslint-plugin-jsdoc": "^62.9.0",
98
+ "eslint-plugin-oxlint": "^1.67.0",
99
+ "express": "^5.2.1",
94
100
  "express-ws": "^5.0.2",
95
- "jsdom": "^27.3.0",
96
- "mocha": "^10.1.0",
101
+ "jsdom": "^29.1.1",
102
+ "mocha": "^11.7.5",
97
103
  "mustache": "^4.2.0",
98
- "node-pty": "1.1.0-beta19",
99
- "nyc": "^17.1.0",
100
- "source-map-loader": "^3.0.0",
104
+ "node-pty": "^1.2.0-beta.9",
105
+ "nyc": "^18.0.0",
106
+ "oxlint": "^1.67.0",
107
+ "oxlint-plugin-eslint": "^1.67.0",
108
+ "oxlint-tsgolint": "^0.23.0",
109
+ "source-map-loader": "^5.0.0",
101
110
  "source-map-support": "^0.5.20",
102
- "ts-loader": "^9.3.1",
103
- "typescript": "5.5",
104
- "typescript-eslint": "^8.50.1",
105
- "utf8": "^3.0.0",
106
- "webpack": "^5.61.0",
107
- "webpack-cli": "^4.9.1",
108
- "ws": "^8.2.3",
109
- "xterm-benchmark": "^0.3.1"
111
+ "ts-loader": "^9.5.7",
112
+ "typescript": "^5.9.3",
113
+ "typescript-eslint": "^8.59.2",
114
+ "webpack": "^5.106.2",
115
+ "webpack-cli": "^7.0.2",
116
+ "ws": "^8.20.0",
117
+ "xterm-benchmark": "^0.3.2"
110
118
  },
111
- "commit": "79621a4e3fec1e2a5311d351e2eeec7a4e91785d"
119
+ "commit": "936442c813eb497af957409c224ed0e250600640"
112
120
  }
@@ -3,16 +3,18 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import * as Strings from 'browser/LocalizableStrings';
7
- import { ITerminal, IRenderDebouncer } from 'browser/Types';
8
- import { TimeBasedDebouncer } from 'browser/TimeBasedDebouncer';
9
- import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
10
- import { ICoreBrowserService, IRenderService } from 'browser/services/Services';
11
- import { IBuffer } from 'common/buffer/Types';
12
- import { IInstantiationService } from 'common/services/Services';
13
- import { addDisposableListener } from 'vs/base/browser/dom';
14
-
15
- const MAX_ROWS_TO_READ = 20;
6
+ import * as Strings from './LocalizableStrings';
7
+ import { ITerminal, IRenderDebouncer } from './Types';
8
+ import { TimeBasedDebouncer } from './TimeBasedDebouncer';
9
+ import { Disposable, toDisposable } from '../common/Lifecycle';
10
+ import { ICoreBrowserService, IRenderService } from './services/Services';
11
+ import { IBuffer } from '../common/buffer/Types';
12
+ import { IInstantiationService } from '../common/services/Services';
13
+ import { addDisposableListener } from './Dom';
14
+
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
  }
@@ -3,8 +3,8 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { ISelectionService } from 'browser/services/Services';
7
- import { ICoreService, IOptionsService } from 'common/services/Services';
6
+ import { ISelectionService } from './services/Services';
7
+ import { ICoreService, IOptionsService } from '../common/services/Services';
8
8
 
9
9
  /**
10
10
  * Prepares text to be pasted into the terminal by normalizing the line endings
@@ -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
  /**
@@ -3,9 +3,9 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { IColorContrastCache } from 'browser/Types';
7
- import { IColor } from 'common/Types';
8
- import { TwoKeyMap } from 'common/MultiKeyMap';
6
+ import { IColorContrastCache } from './Types';
7
+ import { IColor } from '../common/Types';
8
+ import { TwoKeyMap } from '../common/MultiKeyMap';
9
9
 
10
10
  export class ColorContrastCache implements IColorContrastCache {
11
11
  private _color: TwoKeyMap</* bg */number, /* fg */number, IColor | null> = new TwoKeyMap();