@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
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.28",
4
+ "version": "6.1.0-beta.280",
5
5
  "main": "lib/xterm.js",
6
6
  "module": "lib/xterm.mjs",
7
7
  "style": "css/xterm.css",
@@ -11,6 +11,9 @@
11
11
  "workspaces": [
12
12
  "addons/*"
13
13
  ],
14
+ "overrides": {
15
+ "serialize-javascript": "^7.0.3"
16
+ },
14
17
  "keywords": [
15
18
  "cli",
16
19
  "command-line",
@@ -27,29 +30,37 @@
27
30
  "xterm"
28
31
  ],
29
32
  "scripts": {
30
- "setup": "npm run build",
33
+ "presetup": "npm run build",
34
+ "setup": "npm run esbuild",
35
+ "setup-full": "node bin/setup-full.mjs",
36
+ "postsetup": "npm run esbuild-demo-server",
31
37
  "start": "node demo/start",
38
+ "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
39
  "build": "npm run tsc",
33
40
  "watch": "npm run tsc-watch",
34
- "tsc": "tsc -b ./tsconfig.all.json",
35
- "tsc-watch": "tsc -b -w ./tsconfig.all.json --preserveWatchOutput",
41
+ "tsc": "tsgo -b ./tsconfig.all.json",
42
+ "tsc-watch": "tsgo -b -w ./tsconfig.all.json --preserveWatchOutput",
36
43
  "esbuild": "node bin/esbuild_all.mjs",
37
44
  "esbuild-watch": "node bin/esbuild_all.mjs --watch",
38
45
  "esbuild-package": "node bin/esbuild_all.mjs --prod",
39
46
  "esbuild-package-watch": "node bin/esbuild_all.mjs --prod --watch",
40
47
  "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",
48
+ "esbuild-demo-client": "node bin/esbuild.mjs --demo-client",
49
+ "esbuild-demo-client-watch": "node bin/esbuild.mjs --demo-client --watch",
50
+ "esbuild-demo-server": "node bin/esbuild.mjs --demo-server",
51
+ "esbuild-demo-server-watch": "node bin/esbuild.mjs --demo-server --watch",
43
52
  "test": "npm run test-unit",
44
53
  "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/",
54
+ "lint": "oxlint --type-aware --max-warnings 0 src addons demo test && eslint --config eslint.config.naming.mjs --max-warnings 0 src addons demo test",
55
+ "lint-changes": "node ./bin/lint_changes.js",
56
+ "lint-changes-fix": "node ./bin/lint_changes.js --fix",
57
+ "lint-fix": "oxlint --type-aware --fix --max-warnings 0 src addons demo test",
58
+ "lint-api": "oxlint --max-warnings 0 -c .oxlintrc.typings.json typings && eslint --config eslint.config.naming.mjs --max-warnings 0 typings",
48
59
  "test-unit": "node ./bin/test_unit.js",
60
+ "test-unit-slow-tests": "npm run test-unit | grep \"ms)\"",
49
61
  "test-unit-coverage": "node ./bin/test_unit.js --coverage",
50
- "test-unit-dev": "cross-env NODE_PATH='./out' mocha",
51
62
  "test-integration": "node ./bin/test_integration.js --workers=75%",
52
- "test-integration-chromium": "node ./bin/test_integration.js --workers=75% \"--project=ChromeStable\"",
63
+ "test-integration-chromium": "node ./bin/test_integration.js --workers=75% \"--project=Chromium\"",
53
64
  "test-integration-firefox": "node ./bin/test_integration.js --workers=75% \"--project=FirefoxStable\"",
54
65
  "test-integration-webkit": "node ./bin/test_integration.js --workers=75% \"--project=WebKit\"",
55
66
  "test-integration-debug": "node ./bin/test_integration.js --workers=1 --headed --timeout=30000",
@@ -57,7 +68,7 @@
57
68
  "benchmark-baseline": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json --baseline out-test/benchmark/*benchmark.js",
58
69
  "benchmark-eval": "NODE_PATH=./out xterm-benchmark -r 5 -c test/benchmark/benchmark.json --eval out-test/benchmark/*benchmark.js",
59
70
  "clean": "rm -rf lib out addons/*/lib addons/*/out",
60
- "vtfeatures": "node bin/extract_vtfeatures.js src/**/*.ts src/*.ts",
71
+ "vtfeatures": "node bin/extract_vtfeatures.js src/*/*.ts src/*/*/*.ts src/*.ts addons/**/src/*.ts",
61
72
  "prepackage": "npm run build",
62
73
  "package": "webpack",
63
74
  "postpackage": "npm run esbuild-package",
@@ -67,46 +78,46 @@
67
78
  "prepublishOnly": "npm run package"
68
79
  },
69
80
  "devDependencies": {
81
+ "@eslint/js": "^10.0.1",
70
82
  "@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",
83
+ "@playwright/test": "^1.59.1",
84
+ "@stylistic/eslint-plugin": "^5.10.0",
85
+ "@types/chai": "^5.2.3",
86
+ "@types/express": "^5.0.6",
77
87
  "@types/express-ws": "^3.0.1",
78
- "@types/jsdom": "^27.0.0",
79
- "@types/mocha": "^9.0.0",
88
+ "@types/jsdom": "^28.0.1",
89
+ "@types/mocha": "^10.0.10",
80
90
  "@types/node": "^22.19.3",
81
- "@types/trusted-types": "^1.0.6",
82
- "@types/utf8": "^3.0.0",
83
91
  "@types/webpack": "^5.28.0",
84
92
  "@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",
93
+ "@typescript-eslint/eslint-plugin": "^8.59.2",
94
+ "@typescript-eslint/parser": "^8.59.2",
95
+ "@typescript/native-preview": "^7.0.0-dev.20260509.2",
96
+ "chai": "^6.2.2",
97
+ "concurrently": "^9.1.2",
98
+ "esbuild": "^0.28.0",
99
+ "eslint": "^10.3.0",
100
+ "eslint-plugin-jsdoc": "^62.9.0",
101
+ "eslint-plugin-oxlint": "^1.67.0",
102
+ "express": "^5.2.1",
94
103
  "express-ws": "^5.0.2",
95
- "jsdom": "^27.3.0",
96
- "mocha": "^10.1.0",
104
+ "jsdom": "^29.1.1",
105
+ "mocha": "^11.7.5",
97
106
  "mustache": "^4.2.0",
98
- "node-pty": "1.1.0-beta19",
99
- "nyc": "^17.1.0",
100
- "source-map-loader": "^3.0.0",
107
+ "node-pty": "^1.2.0-beta.9",
108
+ "nyc": "^18.0.0",
109
+ "oxlint": "^1.67.0",
110
+ "oxlint-plugin-eslint": "^1.67.0",
111
+ "oxlint-tsgolint": "^0.23.0",
112
+ "source-map-loader": "^5.0.0",
101
113
  "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"
114
+ "ts-loader": "^9.5.7",
115
+ "typescript": "^5.9.3",
116
+ "typescript-eslint": "^8.59.2",
117
+ "webpack": "^5.106.2",
118
+ "webpack-cli": "^7.0.2",
119
+ "ws": "^8.20.0",
120
+ "xterm-benchmark": "^0.3.2"
110
121
  },
111
- "commit": "d4f725c6499ec3efb723c27adce3762746d0d5d6"
122
+ "commit": "f33f502267455f40e64a89a6a554b8d6beae6284"
112
123
  }
@@ -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();