From c569e5ab19ee76da68e3b79aac4963c91476848c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 31 May 2026 00:19:17 +0000 Subject: [PATCH] Full common split: composite tsconfigs and target-* modules - Add composite TypeScript projects for common/primitives and common/runtime - Decouple primitives from runtime (buffer service interfaces, UnicodeProperties, CellTypes, etc.) - Move Types.ts to runtime; re-export primitive types from runtime/Types - Rename src/browser -> src/target-browser, src/headless -> src/target-headless - Update import paths (target-browser/*, target-headless/*) across repo - Fix esbuild outbase so common/* and target-* resolve under out-esbuild/ - Point unicode addons at primitives for UnicodeTypes/UnicodeProperties - Update ARCHITECTURE.md and AGENTS.md Co-authored-by: Daniel Imms --- AGENTS.md | 11 +- addons/addon-attach/test/tsconfig.json | 6 +- addons/addon-clipboard/src/tsconfig.json | 6 +- addons/addon-clipboard/test/tsconfig.json | 6 +- addons/addon-fit/src/FitAddon.ts | 2 +- addons/addon-fit/src/tsconfig.json | 6 +- addons/addon-fit/test/tsconfig.json | 6 +- addons/addon-image/src/Types.ts | 6 +- addons/addon-image/src/tsconfig.json | 4 +- addons/addon-image/test/tsconfig.json | 6 +- addons/addon-image/webpack.config.js | 2 +- addons/addon-progress/src/tsconfig.json | 6 +- addons/addon-progress/test/tsconfig.json | 6 +- addons/addon-progress/webpack.config.js | 2 +- addons/addon-search/src/SearchEngine.test.ts | 2 +- .../addon-search/src/SearchLineCache.test.ts | 2 +- addons/addon-search/src/tsconfig.json | 6 +- addons/addon-search/test/tsconfig.json | 6 +- .../benchmark/SerializeAddon.benchmark.ts | 2 +- .../addon-serialize/benchmark/tsconfig.json | 4 +- .../src/SerializeAddon.test.ts | 6 +- addons/addon-serialize/src/SerializeAddon.ts | 2 +- addons/addon-serialize/src/tsconfig.json | 6 +- addons/addon-serialize/test/tsconfig.json | 6 +- addons/addon-serialize/webpack.config.js | 2 +- .../UnicodeGraphemeAddon.benchmark.ts | 2 +- .../benchmark/tsconfig.json | 4 +- .../src/UnicodeGraphemeProvider.ts | 12 +- .../test/tsconfig.json | 6 +- addons/addon-unicode11/src/UnicodeV11.ts | 8 +- addons/addon-unicode11/test/tsconfig.json | 6 +- addons/addon-web-fonts/test/tsconfig.json | 6 +- addons/addon-web-links/test/tsconfig.json | 6 +- addons/addon-webgl/src/CellColorResolver.ts | 8 +- addons/addon-webgl/src/CharAtlasCache.ts | 2 +- addons/addon-webgl/src/CharAtlasUtils.ts | 2 +- .../src/CursorBlinkStateManager.ts | 4 +- addons/addon-webgl/src/GlyphRenderer.ts | 4 +- addons/addon-webgl/src/RectangleRenderer.ts | 8 +- addons/addon-webgl/src/RenderModel.ts | 4 +- addons/addon-webgl/src/TextureAtlas.ts | 4 +- addons/addon-webgl/src/Types.ts | 4 +- addons/addon-webgl/src/WebglAddon.ts | 4 +- addons/addon-webgl/src/WebglRenderer.ts | 12 +- addons/addon-webgl/src/WebglUtils.ts | 2 +- .../src/customGlyphs/CustomGlyphRasterizer.ts | 2 +- .../src/renderLayer/BaseRenderLayer.ts | 8 +- .../src/renderLayer/LinkRenderLayer.ts | 8 +- addons/addon-webgl/src/renderLayer/Types.ts | 2 +- addons/addon-webgl/src/tsconfig.json | 6 +- addons/addon-webgl/test/tsconfig.json | 6 +- addons/addon-webgl/webpack.config.js | 2 +- bin/esbuild.mjs | 52 ++-- bin/vs_base_find_unused.js | 2 +- src/ARCHITECTURE.md | 85 +++---- src/browser/tsconfig.json | 29 --- src/common/primitives/CircularList.ts | 25 +- src/common/primitives/Color.ts | 2 +- src/common/primitives/ColorTypes.ts | 11 + src/common/primitives/KeyboardTypes.ts | 29 +++ src/common/primitives/SortedList.ts | 4 +- src/common/primitives/TaskQueue.ts | 8 +- src/common/primitives/TerminalOptions.ts | 13 + src/common/primitives/buffer/AttributeData.ts | 2 +- src/common/primitives/buffer/Buffer.ts | 12 +- .../primitives/buffer/BufferLine.test.ts | 4 +- src/common/primitives/buffer/BufferLine.ts | 2 +- src/common/primitives/buffer/BufferLog.ts | 8 + src/common/primitives/buffer/BufferOptions.ts | 15 ++ src/common/primitives/buffer/BufferReflow.ts | 2 +- src/common/primitives/buffer/BufferService.ts | 31 +++ src/common/primitives/buffer/BufferSet.ts | 10 +- src/common/primitives/buffer/CellData.ts | 2 +- src/common/primitives/buffer/CellTypes.ts | 120 +++++++++ src/common/primitives/buffer/Marker.ts | 4 +- src/common/primitives/buffer/Types.ts | 5 +- src/common/primitives/data/Charsets.ts | 4 +- src/common/primitives/input/Keyboard.test.ts | 2 +- src/common/primitives/input/Keyboard.ts | 2 +- .../primitives/input/KittyKeyboard.test.ts | 2 +- src/common/primitives/input/KittyKeyboard.ts | 2 +- .../primitives/input/UnicodeProperties.ts | 22 ++ src/common/primitives/input/UnicodeTypes.ts | 24 ++ src/common/primitives/input/UnicodeV6.ts | 8 +- .../primitives/input/Win32InputMode.test.ts | 2 +- src/common/primitives/input/Win32InputMode.ts | 2 +- src/common/primitives/parser/ApcParser.ts | 2 +- src/common/primitives/parser/DcsParser.ts | 2 +- .../parser/EscapeSequenceParser.test.ts | 2 +- .../primitives/parser/EscapeSequenceParser.ts | 3 +- src/common/primitives/parser/OscParser.ts | 2 +- src/common/primitives/parser/Types.ts | 2 +- src/common/primitives/tsconfig.json | 33 +++ src/common/primitives/tsconfig.spec.json | 26 ++ src/common/{ => runtime}/Types.ts | 231 +----------------- src/common/runtime/services/Services.ts | 60 +---- src/common/runtime/services/UnicodeService.ts | 17 +- src/common/runtime/tsconfig.json | 39 +++ src/common/tsconfig.json | 29 +-- .../AccessibilityManager.ts | 10 +- .../Clipboard.test.ts | 2 +- src/{browser => target-browser}/Clipboard.ts | 2 +- .../ColorContrastCache.test.ts | 2 +- .../ColorContrastCache.ts | 2 +- .../CoreBrowserTerminal.ts | 44 ++-- src/{browser => target-browser}/Dom.ts | 0 .../Linkifier.test.ts | 4 +- src/{browser => target-browser}/Linkifier.ts | 4 +- .../LocalizableStrings.ts | 0 .../OscLinkProvider.test.ts | 4 +- .../OscLinkProvider.ts | 4 +- .../RenderDebouncer.ts | 4 +- .../Terminal.test.ts | 4 +- .../Terminal2.test.ts | 2 +- .../TestUtils.test.ts | 12 +- .../TimeBasedDebouncer.ts | 2 +- src/{browser => target-browser}/Types.ts | 0 src/{browser => target-browser}/Viewport.ts | 12 +- .../decorations/BufferDecorationRenderer.ts | 2 +- .../decorations/ColorZoneStore.test.ts | 2 +- .../decorations/ColorZoneStore.ts | 0 .../decorations/OverviewRulerRenderer.ts | 4 +- .../input/CompositionHelper.test.ts | 4 +- .../input/CompositionHelper.ts | 2 +- .../input/Mouse.test.ts | 2 +- .../input/Mouse.ts | 0 .../input/MoveToCell.test.ts | 0 .../input/MoveToCell.ts | 0 .../public/Terminal.ts | 6 +- .../renderer/dom/DomRenderer.ts | 20 +- .../dom/DomRendererRowFactory.test.ts | 6 +- .../renderer/dom/DomRendererRowFactory.ts | 12 +- .../renderer/dom/WidthCache.test.ts | 2 +- .../renderer/dom/WidthCache.ts | 2 +- .../renderer/shared/Constants.ts | 0 .../renderer/shared/README.md | 0 .../renderer/shared/RendererUtils.test.ts | 2 +- .../renderer/shared/RendererUtils.ts | 2 +- .../renderer/shared/SelectionRenderModel.ts | 4 +- .../shared/TextBlinkStateManager.test.ts | 4 +- .../renderer/shared/TextBlinkStateManager.ts | 2 +- .../renderer/shared/Types.ts | 2 +- .../scrollable/abstractScrollbar.ts | 0 .../scrollable/fastDomNode.ts | 0 .../scrollable/globalPointerMoveMonitor.ts | 0 .../scrollable/horizontalScrollbar.ts | 0 .../scrollable/mouseEvent.ts | 0 .../scrollable/scrollable.ts | 0 .../scrollable/scrollableElement.ts | 0 .../scrollable/scrollableElementOptions.ts | 0 .../scrollable/scrollbarArrow.ts | 0 .../scrollable/scrollbarState.ts | 0 .../scrollbarVisibilityController.ts | 0 .../scrollable/touch.ts | 0 .../scrollable/verticalScrollbar.ts | 0 .../scrollable/widget.ts | 0 .../selection/SelectionModel.test.ts | 0 .../selection/SelectionModel.ts | 0 .../selection/Types.ts | 0 .../services/CharSizeService.ts | 2 +- .../services/CharacterJoinerService.test.ts | 4 +- .../services/CharacterJoinerService.ts | 4 +- .../services/CoreBrowserService.ts | 2 +- .../services/KeyboardService.ts | 2 +- .../services/LinkProviderService.ts | 2 +- .../services/MouseCoordsService.ts | 6 +- .../services/MouseService.test.ts | 4 +- .../services/MouseService.ts | 4 +- .../services/RenderService.ts | 8 +- .../services/SelectionService.test.ts | 6 +- .../services/SelectionService.ts | 12 +- .../services/Services.ts | 6 +- .../services/ThemeService.test.ts | 4 +- .../services/ThemeService.ts | 6 +- .../shared/Constants.ts | 0 src/target-browser/tsconfig.json | 35 +++ src/{headless => target-headless}/Terminal.ts | 0 .../public/Terminal.test.ts | 2 +- .../public/Terminal.ts | 2 +- .../tsconfig.json | 16 +- test/benchmark/Terminal.benchmark.ts | 2 +- test/benchmark/tsconfig.json | 5 +- test/playwright/Terminal.test.ts | 2 +- test/playwright/TestUtils.ts | 4 +- test/playwright/tsconfig.json | 6 +- tsconfig.all.json | 4 +- webpack.config.headless.js | 4 +- webpack.config.js | 4 +- 188 files changed, 879 insertions(+), 729 deletions(-) delete mode 100644 src/browser/tsconfig.json create mode 100644 src/common/primitives/ColorTypes.ts create mode 100644 src/common/primitives/KeyboardTypes.ts create mode 100644 src/common/primitives/TerminalOptions.ts create mode 100644 src/common/primitives/buffer/BufferLog.ts create mode 100644 src/common/primitives/buffer/BufferOptions.ts create mode 100644 src/common/primitives/buffer/BufferService.ts create mode 100644 src/common/primitives/buffer/CellTypes.ts create mode 100644 src/common/primitives/input/UnicodeProperties.ts create mode 100644 src/common/primitives/input/UnicodeTypes.ts create mode 100644 src/common/primitives/tsconfig.json create mode 100644 src/common/primitives/tsconfig.spec.json rename src/common/{ => runtime}/Types.ts (65%) create mode 100644 src/common/runtime/tsconfig.json rename src/{browser => target-browser}/AccessibilityManager.ts (97%) rename src/{browser => target-browser}/Clipboard.test.ts (96%) rename src/{browser => target-browser}/Clipboard.ts (98%) rename src/{browser => target-browser}/ColorContrastCache.test.ts (95%) rename src/{browser => target-browser}/ColorContrastCache.ts (94%) rename src/{browser => target-browser}/CoreBrowserTerminal.ts (96%) rename src/{browser => target-browser}/Dom.ts (100%) rename src/{browser => target-browser}/Linkifier.test.ts (96%) rename src/{browser => target-browser}/Linkifier.ts (99%) rename src/{browser => target-browser}/LocalizableStrings.ts (100%) rename src/{browser => target-browser}/OscLinkProvider.test.ts (96%) rename src/{browser => target-browser}/OscLinkProvider.ts (98%) rename src/{browser => target-browser}/RenderDebouncer.ts (94%) rename src/{browser => target-browser}/Terminal.test.ts (99%) rename src/{browser => target-browser}/Terminal2.test.ts (98%) rename src/{browser => target-browser}/TestUtils.test.ts (98%) rename src/{browser => target-browser}/TimeBasedDebouncer.ts (98%) rename src/{browser => target-browser}/Types.ts (100%) rename src/{browser => target-browser}/Viewport.ts (95%) rename src/{browser => target-browser}/decorations/BufferDecorationRenderer.ts (98%) rename src/{browser => target-browser}/decorations/ColorZoneStore.test.ts (95%) rename src/{browser => target-browser}/decorations/ColorZoneStore.ts (100%) rename src/{browser => target-browser}/decorations/OverviewRulerRenderer.ts (98%) rename src/{browser => target-browser}/input/CompositionHelper.test.ts (98%) rename src/{browser => target-browser}/input/CompositionHelper.ts (99%) rename src/{browser => target-browser}/input/Mouse.test.ts (97%) rename src/{browser => target-browser}/input/Mouse.ts (100%) rename src/{browser => target-browser}/input/MoveToCell.test.ts (100%) rename src/{browser => target-browser}/input/MoveToCell.ts (100%) rename src/{browser => target-browser}/public/Terminal.ts (97%) rename src/{browser => target-browser}/renderer/dom/DomRenderer.ts (97%) rename src/{browser => target-browser}/renderer/dom/DomRendererRowFactory.test.ts (99%) rename src/{browser => target-browser}/renderer/dom/DomRendererRowFactory.ts (97%) rename src/{browser => target-browser}/renderer/dom/WidthCache.test.ts (98%) rename src/{browser => target-browser}/renderer/dom/WidthCache.ts (98%) rename src/{browser => target-browser}/renderer/shared/Constants.ts (100%) rename src/{browser => target-browser}/renderer/shared/README.md (100%) rename src/{browser => target-browser}/renderer/shared/RendererUtils.test.ts (94%) rename src/{browser => target-browser}/renderer/shared/RendererUtils.ts (97%) rename src/{browser => target-browser}/renderer/shared/SelectionRenderModel.ts (96%) rename src/{browser => target-browser}/renderer/shared/TextBlinkStateManager.test.ts (94%) rename src/{browser => target-browser}/renderer/shared/TextBlinkStateManager.ts (97%) rename src/{browser => target-browser}/renderer/shared/Types.ts (98%) rename src/{browser => target-browser}/scrollable/abstractScrollbar.ts (100%) rename src/{browser => target-browser}/scrollable/fastDomNode.ts (100%) rename src/{browser => target-browser}/scrollable/globalPointerMoveMonitor.ts (100%) rename src/{browser => target-browser}/scrollable/horizontalScrollbar.ts (100%) rename src/{browser => target-browser}/scrollable/mouseEvent.ts (100%) rename src/{browser => target-browser}/scrollable/scrollable.ts (100%) rename src/{browser => target-browser}/scrollable/scrollableElement.ts (100%) rename src/{browser => target-browser}/scrollable/scrollableElementOptions.ts (100%) rename src/{browser => target-browser}/scrollable/scrollbarArrow.ts (100%) rename src/{browser => target-browser}/scrollable/scrollbarState.ts (100%) rename src/{browser => target-browser}/scrollable/scrollbarVisibilityController.ts (100%) rename src/{browser => target-browser}/scrollable/touch.ts (100%) rename src/{browser => target-browser}/scrollable/verticalScrollbar.ts (100%) rename src/{browser => target-browser}/scrollable/widget.ts (100%) rename src/{browser => target-browser}/selection/SelectionModel.test.ts (100%) rename src/{browser => target-browser}/selection/SelectionModel.ts (100%) rename src/{browser => target-browser}/selection/Types.ts (100%) rename src/{browser => target-browser}/services/CharSizeService.ts (98%) rename src/{browser => target-browser}/services/CharacterJoinerService.test.ts (98%) rename src/{browser => target-browser}/services/CharacterJoinerService.ts (98%) rename src/{browser => target-browser}/services/CoreBrowserService.ts (98%) rename src/{browser => target-browser}/services/KeyboardService.ts (97%) rename src/{browser => target-browser}/services/LinkProviderService.ts (90%) rename src/{browser => target-browser}/services/MouseCoordsService.ts (90%) rename src/{browser => target-browser}/services/MouseService.test.ts (99%) rename src/{browser => target-browser}/services/MouseService.ts (99%) rename src/{browser => target-browser}/services/RenderService.ts (97%) rename src/{browser => target-browser}/services/SelectionService.test.ts (99%) rename src/{browser => target-browser}/services/SelectionService.ts (98%) rename src/{browser => target-browser}/services/Services.ts (96%) rename src/{browser => target-browser}/services/ThemeService.test.ts (99%) rename src/{browser => target-browser}/services/ThemeService.ts (97%) rename src/{browser => target-browser}/shared/Constants.ts (100%) create mode 100644 src/target-browser/tsconfig.json rename src/{headless => target-headless}/Terminal.ts (100%) rename src/{headless => target-headless}/public/Terminal.test.ts (99%) rename src/{headless => target-headless}/public/Terminal.ts (99%) rename src/{headless => target-headless}/tsconfig.json (51%) diff --git a/AGENTS.md b/AGENTS.md index 5b07ce824..1f0822af9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,10 +2,13 @@ ## Architecture Overview -**Core Structure**: xterm.js is a multi-target terminal emulator with three main distributions: -- `src/browser/`: Full-featured browser terminal with DOM rendering -- `src/headless/`: Server-side terminal for Node.js (no DOM) -- `src/common/`: Shared core logic (parsing, buffer management, terminal state) +**Core Structure**: xterm.js is a multi-target terminal emulator with these main source areas: +- `src/common/primitives/`: Building blocks (buffer, parser, input, data, utilities); TypeScript project `src/common/primitives/tsconfig.json` +- `src/common/runtime/`: Services, `CoreTerminal`, `InputHandler`, public API adapters; TypeScript project `src/common/runtime/tsconfig.json` +- `src/target-browser/`: Browser terminal with DOM rendering +- `src/target-headless/`: Node terminal without DOM + +See `src/ARCHITECTURE.md` for the dependency graph and import-path conventions (`common/*`, `target-browser/*`, `target-headless/*`). **Key Classes**: - `Terminal` (browser/headless): Public API wrapper diff --git a/addons/addon-attach/test/tsconfig.json b/addons/addon-attach/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-attach/test/tsconfig.json +++ b/addons/addon-attach/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-clipboard/src/tsconfig.json b/addons/addon-clipboard/src/tsconfig.json index b61072808..cf8528d9e 100644 --- a/addons/addon-clipboard/src/tsconfig.json +++ b/addons/addon-clipboard/src/tsconfig.json @@ -15,8 +15,8 @@ "../../../node_modules/@types/mocha" ], "paths": { - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "@xterm/addon-clipboard": [ "../typings/addon-clipboard.d.ts" @@ -29,7 +29,7 @@ ], "references": [ { - "path": "../../../src/browser" + "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-clipboard/test/tsconfig.json b/addons/addon-clipboard/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-clipboard/test/tsconfig.json +++ b/addons/addon-clipboard/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-fit/src/FitAddon.ts b/addons/addon-fit/src/FitAddon.ts index 3db988acd..8f659e5a3 100644 --- a/addons/addon-fit/src/FitAddon.ts +++ b/addons/addon-fit/src/FitAddon.ts @@ -5,7 +5,7 @@ import type { Terminal, ITerminalAddon, IRenderDimensions } from '@xterm/xterm'; import type { FitAddon as IFitApi } from '@xterm/addon-fit'; -import { ViewportConstants } from 'browser/shared/Constants'; +import { ViewportConstants } from 'target-browser/shared/Constants'; interface ITerminalDimensions { /** diff --git a/addons/addon-fit/src/tsconfig.json b/addons/addon-fit/src/tsconfig.json index 068b43370..023101904 100644 --- a/addons/addon-fit/src/tsconfig.json +++ b/addons/addon-fit/src/tsconfig.json @@ -15,8 +15,8 @@ "../../../node_modules/@types/mocha" ], "paths": { - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "@xterm/addon-fit": [ "../typings/addon-fit.d.ts" @@ -29,7 +29,7 @@ ], "references": [ { - "path": "../../../src/browser" + "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-fit/test/tsconfig.json b/addons/addon-fit/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-fit/test/tsconfig.json +++ b/addons/addon-fit/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-image/src/Types.ts b/addons/addon-image/src/Types.ts index 19a1acca1..0bd527bd4 100644 --- a/addons/addon-image/src/Types.ts +++ b/addons/addon-image/src/Types.ts @@ -10,9 +10,9 @@ import { Attributes, BgFlags, Content, ExtFlags, UnderlineStyle } from 'common/b import type { AttributeData } from 'common/buffer/AttributeData'; import type { IParams, IDcsHandler, IOscHandler, IApcHandler, IEscapeSequenceParser } from 'common/parser/Types'; import type { IBufferLine, IExtendedAttrs, IInputHandler } from 'common/Types'; -import type { ITerminal, ReadonlyColorSet } from 'browser/Types'; -import type { IRenderDimensions } from 'browser/renderer/shared/Types'; -import type { ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; +import type { ITerminal, ReadonlyColorSet } from 'target-browser/Types'; +import type { IRenderDimensions } from 'target-browser/renderer/shared/Types'; +import type { ICoreBrowserService, IRenderService, IThemeService } from 'target-browser/services/Services'; export const enum Cell { CONTENT = 0, // codepoint and wcwidth information (enum Content) diff --git a/addons/addon-image/src/tsconfig.json b/addons/addon-image/src/tsconfig.json index 2eab54269..a2c37b0d1 100644 --- a/addons/addon-image/src/tsconfig.json +++ b/addons/addon-image/src/tsconfig.json @@ -12,7 +12,7 @@ "../../../node_modules/@types/mocha" ], "paths": { - "browser/*": [ "../../../src/browser/*" ], + "target-browser/*": [ "../../../src/target-browser/*" ], "common/*": [ "../../../src/common/primitives/*", "../../../src/common/runtime/*", @@ -27,7 +27,7 @@ "../../../typings/xterm.d.ts" ], "references": [ - { "path": "../../../src/browser" }, + { "path": "../../../src/target-browser" }, { "path": "../../../src/common" } ] } diff --git a/addons/addon-image/test/tsconfig.json b/addons/addon-image/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-image/test/tsconfig.json +++ b/addons/addon-image/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-image/webpack.config.js b/addons/addon-image/webpack.config.js index 01147d7e7..729c1888b 100644 --- a/addons/addon-image/webpack.config.js +++ b/addons/addon-image/webpack.config.js @@ -26,7 +26,7 @@ const addon = { extensions: [ '.js' ], alias: { common: path.resolve('../../out/common'), - browser: path.resolve('../../out/browser'), + browser: path.resolve('../../out/target-browser'), vs: path.resolve('../../out/vs') } }, diff --git a/addons/addon-progress/src/tsconfig.json b/addons/addon-progress/src/tsconfig.json index a27baee53..f40480334 100644 --- a/addons/addon-progress/src/tsconfig.json +++ b/addons/addon-progress/src/tsconfig.json @@ -20,8 +20,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "@xterm/addon-progress": [ "../typings/addon-progress.d.ts" @@ -34,7 +34,7 @@ ], "references": [ { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../src/common" diff --git a/addons/addon-progress/test/tsconfig.json b/addons/addon-progress/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-progress/test/tsconfig.json +++ b/addons/addon-progress/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-progress/webpack.config.js b/addons/addon-progress/webpack.config.js index 1bf29bfd2..344bbf5d9 100644 --- a/addons/addon-progress/webpack.config.js +++ b/addons/addon-progress/webpack.config.js @@ -26,7 +26,7 @@ module.exports = { extensions: [ '.js' ], alias: { common: path.resolve('../../out/common'), - browser: path.resolve('../../out/browser'), + browser: path.resolve('../../out/target-browser'), vs: path.resolve('../../out/vs') } }, diff --git a/addons/addon-search/src/SearchEngine.test.ts b/addons/addon-search/src/SearchEngine.test.ts index b3cea8f54..b7e727b3b 100644 --- a/addons/addon-search/src/SearchEngine.test.ts +++ b/addons/addon-search/src/SearchEngine.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { SearchEngine } from './SearchEngine'; import { SearchLineCache } from './SearchLineCache'; -import { Terminal } from 'browser/public/Terminal'; +import { Terminal } from 'target-browser/public/Terminal'; import type { ISearchOptions } from '@xterm/addon-search'; import { DisposableStore } from 'common/Lifecycle'; diff --git a/addons/addon-search/src/SearchLineCache.test.ts b/addons/addon-search/src/SearchLineCache.test.ts index 77f64c81e..519877b25 100644 --- a/addons/addon-search/src/SearchLineCache.test.ts +++ b/addons/addon-search/src/SearchLineCache.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; import { SearchLineCache, LineCacheEntry } from './SearchLineCache'; -import { Terminal } from 'browser/public/Terminal'; +import { Terminal } from 'target-browser/public/Terminal'; import { timeout } from 'common/Async'; function writeP(terminal: Terminal, data: string): Promise { diff --git a/addons/addon-search/src/tsconfig.json b/addons/addon-search/src/tsconfig.json index edc7928d1..89ace297c 100644 --- a/addons/addon-search/src/tsconfig.json +++ b/addons/addon-search/src/tsconfig.json @@ -20,8 +20,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "@xterm/addon-search" : [ "../typings/addon-search.d.ts" @@ -37,7 +37,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-search/test/tsconfig.json b/addons/addon-search/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-search/test/tsconfig.json +++ b/addons/addon-search/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts b/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts index b60dba1dd..a368dc56f 100644 --- a/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts +++ b/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts @@ -7,7 +7,7 @@ import { perfContext, before, ThroughputRuntimeCase } from 'xterm-benchmark'; import { spawn } from 'node-pty'; import { Utf8ToUtf32, stringFromCodePoint } from 'common/input/TextDecoder'; -import { Terminal } from 'browser/public/Terminal'; +import { Terminal } from 'target-browser/public/Terminal'; import { SerializeAddon } from 'SerializeAddon'; class TestTerminal extends Terminal { diff --git a/addons/addon-serialize/benchmark/tsconfig.json b/addons/addon-serialize/benchmark/tsconfig.json index 4cb39d4a7..9b37492e2 100644 --- a/addons/addon-serialize/benchmark/tsconfig.json +++ b/addons/addon-serialize/benchmark/tsconfig.json @@ -17,7 +17,7 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": ["../../../src/browser/*"], + "target-browser/*": ["../../../src/target-browser/*"], "SerializeAddon": ["../src/SerializeAddon"], "@xterm/addon-serialize": [ "../typings/addon-serialize.d.ts" @@ -28,6 +28,6 @@ "exclude": ["../../../**/*test.ts", "../../**/*api.ts"], "references": [ { "path": "../../../src/common" }, - { "path": "../../../src/browser" } + { "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-serialize/src/SerializeAddon.test.ts b/addons/addon-serialize/src/SerializeAddon.test.ts index 4f4fd5461..b9e62d670 100644 --- a/addons/addon-serialize/src/SerializeAddon.test.ts +++ b/addons/addon-serialize/src/SerializeAddon.test.ts @@ -6,10 +6,10 @@ import jsdom = require('jsdom'); import { assert } from 'chai'; import { SerializeAddon } from './SerializeAddon'; -import { Terminal } from 'browser/public/Terminal'; -import { SelectionModel } from 'browser/selection/SelectionModel'; +import { Terminal } from 'target-browser/public/Terminal'; +import { SelectionModel } from 'target-browser/selection/SelectionModel'; import { IBufferService } from 'common/services/Services'; -import { ThemeService } from 'browser/services/ThemeService'; +import { ThemeService } from 'target-browser/services/ThemeService'; function sgr(...seq: string[]): string { return `\x1b[${seq.join(';')}m`; diff --git a/addons/addon-serialize/src/SerializeAddon.ts b/addons/addon-serialize/src/SerializeAddon.ts index 4980c8eda..2519a15ed 100644 --- a/addons/addon-serialize/src/SerializeAddon.ts +++ b/addons/addon-serialize/src/SerializeAddon.ts @@ -8,7 +8,7 @@ import type { IBuffer, IBufferCell, IBufferRange, ITerminalAddon, Terminal } from '@xterm/xterm'; import type { IHTMLSerializeOptions, SerializeAddon as ISerializeApi, ISerializeOptions, ISerializeRange } from '@xterm/addon-serialize'; import { IAttributeData, IColor } from 'common/Types'; -import { DEFAULT_ANSI_COLORS } from 'browser/Types'; +import { DEFAULT_ANSI_COLORS } from 'target-browser/Types'; import { UnderlineStyle } from 'common/buffer/Constants'; function constrain(value: number, low: number, high: number): number { diff --git a/addons/addon-serialize/src/tsconfig.json b/addons/addon-serialize/src/tsconfig.json index 43839de36..77a63ea94 100644 --- a/addons/addon-serialize/src/tsconfig.json +++ b/addons/addon-serialize/src/tsconfig.json @@ -16,8 +16,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "@xterm/addon-serialize": [ "../typings/addon-serialize.d.ts" @@ -38,7 +38,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-serialize/test/tsconfig.json b/addons/addon-serialize/test/tsconfig.json index ac43da67d..00fbe13e0 100644 --- a/addons/addon-serialize/test/tsconfig.json +++ b/addons/addon-serialize/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ] }, "strict": true, @@ -33,7 +33,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-serialize/webpack.config.js b/addons/addon-serialize/webpack.config.js index 837a73a38..ac8fb10c9 100644 --- a/addons/addon-serialize/webpack.config.js +++ b/addons/addon-serialize/webpack.config.js @@ -26,7 +26,7 @@ module.exports = { extensions: [ '.js' ], alias: { common: path.resolve('../../out/common'), - browser: path.resolve('../../out/browser') + browser: path.resolve('../../out/target-browser') } }, output: { diff --git a/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts b/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts index 7538b9344..dc235bb68 100644 --- a/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts +++ b/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts @@ -7,7 +7,7 @@ import { perfContext, before, ThroughputRuntimeCase } from 'xterm-benchmark'; import { spawn } from 'node-pty'; import { Utf8ToUtf32, stringFromCodePoint } from 'common/input/TextDecoder'; -import { CoreBrowserTerminal } from 'browser/CoreBrowserTerminal'; +import { CoreBrowserTerminal } from 'target-browser/CoreBrowserTerminal'; import { UnicodeGraphemeProvider } from 'UnicodeGraphemeProvider'; diff --git a/addons/addon-unicode-graphemes/benchmark/tsconfig.json b/addons/addon-unicode-graphemes/benchmark/tsconfig.json index 8483628e0..17f8b98e2 100644 --- a/addons/addon-unicode-graphemes/benchmark/tsconfig.json +++ b/addons/addon-unicode-graphemes/benchmark/tsconfig.json @@ -14,7 +14,7 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": ["../../../src/browser/*"], + "target-browser/*": ["../../../src/target-browser/*"], "UnicodeGraphemeProvider": ["../src/UnicodeGraphemeProvider"], "@xterm/addon-unicode-graphemes": [ "../typings/addon-unicode-graphemes.d.ts" @@ -25,6 +25,6 @@ "exclude": ["../../../**/*test.ts", "../../**/*api.ts"], "references": [ { "path": "../../../src/common" }, - { "path": "../../../src/browser" } + { "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-unicode-graphemes/src/UnicodeGraphemeProvider.ts b/addons/addon-unicode-graphemes/src/UnicodeGraphemeProvider.ts index 3d5717a0f..328ec9b6a 100644 --- a/addons/addon-unicode-graphemes/src/UnicodeGraphemeProvider.ts +++ b/addons/addon-unicode-graphemes/src/UnicodeGraphemeProvider.ts @@ -4,8 +4,8 @@ */ import { IUnicodeVersionProvider } from '@xterm/xterm'; -import { UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; -import { UnicodeService } from 'common/services/UnicodeService'; +import { createPropertyValue, extractCharKind, extractWidth } from 'common/input/UnicodeProperties'; +import { UnicodeCharProperties, UnicodeCharWidth } from 'common/input/UnicodeTypes'; import * as UC from './third-party/UnicodeProperties'; export class UnicodeGraphemeProvider implements IUnicodeVersionProvider { @@ -19,7 +19,7 @@ export class UnicodeGraphemeProvider implements IUnicodeVersionProvider { } private static readonly _plainNarrowProperties: UnicodeCharProperties - = UnicodeService.createPropertyValue(UC.GRAPHEME_BREAK_Other, 1, false); + = createPropertyValue(UC.GRAPHEME_BREAK_Other, 1, false); public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties { // Optimize the simple ASCII case, under the condition that @@ -39,9 +39,9 @@ export class UnicodeGraphemeProvider implements IUnicodeVersionProvider { w = 1; } if (preceding !== 0) { - const oldWidth = UnicodeService.extractWidth(preceding); + const oldWidth = extractWidth(preceding); if (this.handleGraphemes) { - charInfo = UC.shouldJoin(UnicodeService.extractCharKind(preceding), charInfo); + charInfo = UC.shouldJoin(extractCharKind(preceding), charInfo); } else { charInfo = w === 0 ? 1 : 0; } @@ -54,7 +54,7 @@ export class UnicodeGraphemeProvider implements IUnicodeVersionProvider { } } } - return UnicodeService.createPropertyValue(charInfo, w, shouldJoin); + return createPropertyValue(charInfo, w, shouldJoin); } public wcwidth(codepoint: number): UnicodeCharWidth { diff --git a/addons/addon-unicode-graphemes/test/tsconfig.json b/addons/addon-unicode-graphemes/test/tsconfig.json index ac43da67d..00fbe13e0 100644 --- a/addons/addon-unicode-graphemes/test/tsconfig.json +++ b/addons/addon-unicode-graphemes/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ] }, "strict": true, @@ -33,7 +33,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-unicode11/src/UnicodeV11.ts b/addons/addon-unicode11/src/UnicodeV11.ts index 79568960a..023ef0390 100644 --- a/addons/addon-unicode11/src/UnicodeV11.ts +++ b/addons/addon-unicode11/src/UnicodeV11.ts @@ -4,8 +4,8 @@ */ import { IUnicodeVersionProvider } from '@xterm/xterm'; -import { UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; -import { UnicodeService } from 'common/services/UnicodeService'; +import { createPropertyValue, extractWidth } from 'common/input/UnicodeProperties'; +import { UnicodeCharProperties, UnicodeCharWidth } from 'common/input/UnicodeTypes'; const BMP_COMBINING = [ [0x0300, 0x036F], [0x0483, 0x0489], [0x0591, 0x05BD], @@ -223,13 +223,13 @@ export class UnicodeV11 implements IUnicodeVersionProvider { let width = this.wcwidth(codepoint); let shouldJoin = width === 0 && preceding !== 0; if (shouldJoin) { - const oldWidth = UnicodeService.extractWidth(preceding); + const oldWidth = extractWidth(preceding); if (oldWidth === 0) { shouldJoin = false; } else if (oldWidth > width) { width = oldWidth; } } - return UnicodeService.createPropertyValue(0, width, shouldJoin); + return createPropertyValue(0, width, shouldJoin); } } diff --git a/addons/addon-unicode11/test/tsconfig.json b/addons/addon-unicode11/test/tsconfig.json index 7db8df60e..021c7e67e 100644 --- a/addons/addon-unicode11/test/tsconfig.json +++ b/addons/addon-unicode11/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-web-fonts/test/tsconfig.json b/addons/addon-web-fonts/test/tsconfig.json index df662f12b..fe3807221 100644 --- a/addons/addon-web-fonts/test/tsconfig.json +++ b/addons/addon-web-fonts/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-web-links/test/tsconfig.json b/addons/addon-web-links/test/tsconfig.json index df662f12b..fe3807221 100644 --- a/addons/addon-web-links/test/tsconfig.json +++ b/addons/addon-web-links/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -36,7 +36,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-webgl/src/CellColorResolver.ts b/addons/addon-webgl/src/CellColorResolver.ts index 3a4661cc3..caadef9cb 100644 --- a/addons/addon-webgl/src/CellColorResolver.ts +++ b/addons/addon-webgl/src/CellColorResolver.ts @@ -1,12 +1,12 @@ -import { ISelectionRenderModel } from 'browser/renderer/shared/Types'; -import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { ReadonlyColorSet } from 'browser/Types'; +import { ISelectionRenderModel } from 'target-browser/renderer/shared/Types'; +import { ICoreBrowserService, IThemeService } from 'target-browser/services/Services'; +import { ReadonlyColorSet } from 'target-browser/Types'; import { Attributes, BgFlags, ExtFlags, FgFlags, NULL_CELL_CODE, UnderlineStyle } from 'common/buffer/Constants'; import { IDecorationService, IOptionsService } from 'common/services/Services'; import { ICellData } from 'common/Types'; import { Terminal } from '@xterm/xterm'; import { rgba } from 'common/Color'; -import { treatGlyphAsBackgroundColor } from 'browser/renderer/shared/RendererUtils'; +import { treatGlyphAsBackgroundColor } from 'target-browser/renderer/shared/RendererUtils'; import { blockPatternCodepoints } from './customGlyphs/CustomGlyphDefinitions'; // Work variables to avoid garbage collection diff --git a/addons/addon-webgl/src/CharAtlasCache.ts b/addons/addon-webgl/src/CharAtlasCache.ts index 823a74cc6..7fae09124 100644 --- a/addons/addon-webgl/src/CharAtlasCache.ts +++ b/addons/addon-webgl/src/CharAtlasCache.ts @@ -5,7 +5,7 @@ import { TextureAtlas } from './TextureAtlas'; import { ITerminalOptions, Terminal } from '@xterm/xterm'; -import { ITerminal, ReadonlyColorSet } from 'browser/Types'; +import { ITerminal, ReadonlyColorSet } from 'target-browser/Types'; import { ICharAtlasConfig, ITextureAtlas } from './Types'; import { generateConfig, configEquals } from './CharAtlasUtils'; import type { ILogService } from 'common/services/Services'; diff --git a/addons/addon-webgl/src/CharAtlasUtils.ts b/addons/addon-webgl/src/CharAtlasUtils.ts index d9ca69b39..0ed5b1bcc 100644 --- a/addons/addon-webgl/src/CharAtlasUtils.ts +++ b/addons/addon-webgl/src/CharAtlasUtils.ts @@ -6,7 +6,7 @@ import { ICharAtlasConfig } from './Types'; import { Attributes } from 'common/buffer/Constants'; import { ITerminalOptions } from '@xterm/xterm'; -import { IColorSet, ReadonlyColorSet } from 'browser/Types'; +import { IColorSet, ReadonlyColorSet } from 'target-browser/Types'; import { NULL_COLOR } from 'common/Color'; export function generateConfig(deviceCellWidth: number, deviceCellHeight: number, deviceCharWidth: number, deviceCharHeight: number, options: Required, colors: ReadonlyColorSet, devicePixelRatio: number, deviceMaxTextureSize: number, customGlyphs: boolean = true): ICharAtlasConfig { diff --git a/addons/addon-webgl/src/CursorBlinkStateManager.ts b/addons/addon-webgl/src/CursorBlinkStateManager.ts index 688aee7b7..b07d86ed6 100644 --- a/addons/addon-webgl/src/CursorBlinkStateManager.ts +++ b/addons/addon-webgl/src/CursorBlinkStateManager.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { RendererConstants } from 'browser/renderer/shared/Constants'; -import { ICoreBrowserService } from 'browser/services/Services'; +import { RendererConstants } from 'target-browser/renderer/shared/Constants'; +import { ICoreBrowserService } from 'target-browser/services/Services'; const enum Constants { /** diff --git a/addons/addon-webgl/src/GlyphRenderer.ts b/addons/addon-webgl/src/GlyphRenderer.ts index 650fc451a..d7d6179e7 100644 --- a/addons/addon-webgl/src/GlyphRenderer.ts +++ b/addons/addon-webgl/src/GlyphRenderer.ts @@ -3,14 +3,14 @@ * @license MIT */ import { TextureAtlas } from './TextureAtlas'; -import { IRenderDimensions } from 'browser/renderer/shared/Types'; +import { IRenderDimensions } from 'target-browser/renderer/shared/Types'; import { NULL_CELL_CODE } from 'common/buffer/Constants'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { Terminal } from '@xterm/xterm'; import { IRenderModel, IWebGL2RenderingContext, IWebGLVertexArrayObject, type IRasterizedGlyph, type ITextureAtlas } from './Types'; import { createProgram, GLTexture, PROJECTION_MATRIX } from './WebglUtils'; import type { ILogService, IOptionsService } from 'common/services/Services'; -import { allowRescaling, throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { allowRescaling, throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; interface IVertices { attributes: Float32Array; diff --git a/addons/addon-webgl/src/RectangleRenderer.ts b/addons/addon-webgl/src/RectangleRenderer.ts index eebfda3b3..db4e069c7 100644 --- a/addons/addon-webgl/src/RectangleRenderer.ts +++ b/addons/addon-webgl/src/RectangleRenderer.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { IRenderDimensions } from 'browser/renderer/shared/Types'; -import { IThemeService } from 'browser/services/Services'; -import { ReadonlyColorSet } from 'browser/Types'; +import { IRenderDimensions } from 'target-browser/renderer/shared/Types'; +import { IThemeService } from 'target-browser/services/Services'; +import { ReadonlyColorSet } from 'target-browser/Types'; import { Attributes, FgFlags } from 'common/buffer/Constants'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IColor } from 'common/Types'; @@ -13,7 +13,7 @@ import { Terminal } from '@xterm/xterm'; import { RenderModelConstants } from './RenderModel'; import { IRenderModel, IWebGL2RenderingContext, IWebGLVertexArrayObject } from './Types'; import { createProgram, expandFloat32Array, PROJECTION_MATRIX } from './WebglUtils'; -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; import type { ILogService } from 'common/services/Services'; const enum VertexAttribLocations { diff --git a/addons/addon-webgl/src/RenderModel.ts b/addons/addon-webgl/src/RenderModel.ts index 6113a9bdc..2124df8b6 100644 --- a/addons/addon-webgl/src/RenderModel.ts +++ b/addons/addon-webgl/src/RenderModel.ts @@ -4,8 +4,8 @@ */ import { ICursorRenderModel, IRenderModel } from './Types'; -import { ISelectionRenderModel } from 'browser/renderer/shared/Types'; -import { createSelectionRenderModel } from 'browser/renderer/shared/SelectionRenderModel'; +import { ISelectionRenderModel } from 'target-browser/renderer/shared/Types'; +import { createSelectionRenderModel } from 'target-browser/renderer/shared/SelectionRenderModel'; export const enum RenderModelConstants { INDICIES_PER_CELL = 4, diff --git a/addons/addon-webgl/src/TextureAtlas.ts b/addons/addon-webgl/src/TextureAtlas.ts index dab0b1c85..938354dc3 100644 --- a/addons/addon-webgl/src/TextureAtlas.ts +++ b/addons/addon-webgl/src/TextureAtlas.ts @@ -3,10 +3,10 @@ * @license MIT */ -import { IColorContrastCache } from 'browser/Types'; +import { IColorContrastCache } from 'target-browser/Types'; import { DIM_OPACITY, TEXT_BASELINE } from './Constants'; import { tryDrawCustomGlyph } from './customGlyphs/CustomGlyphRasterizer'; -import { computeNextVariantOffset, treatGlyphAsBackgroundColor, isPowerlineGlyph, isRestrictedPowerlineGlyph, throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { computeNextVariantOffset, treatGlyphAsBackgroundColor, isPowerlineGlyph, isRestrictedPowerlineGlyph, throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; import { IBoundingBox, ICharAtlasConfig, IRasterizedGlyph, ITextureAtlas } from './Types'; import { NULL_COLOR, channels, color, rgba } from 'common/Color'; import { FourKeyMap } from 'common/MultiKeyMap'; diff --git a/addons/addon-webgl/src/Types.ts b/addons/addon-webgl/src/Types.ts index 294582e37..60e6ba16f 100644 --- a/addons/addon-webgl/src/Types.ts +++ b/addons/addon-webgl/src/Types.ts @@ -4,8 +4,8 @@ */ import { FontWeight } from '@xterm/xterm'; -import { IColorSet } from 'browser/Types'; -import { ISelectionRenderModel } from 'browser/renderer/shared/Types'; +import { IColorSet } from 'target-browser/Types'; +import { ISelectionRenderModel } from 'target-browser/renderer/shared/Types'; import { CursorInactiveStyle, CursorStyle, type IDisposable } from 'common/Types'; import type { IEvent } from 'common/Event'; diff --git a/addons/addon-webgl/src/WebglAddon.ts b/addons/addon-webgl/src/WebglAddon.ts index 624c9ea38..ed81d77ca 100644 --- a/addons/addon-webgl/src/WebglAddon.ts +++ b/addons/addon-webgl/src/WebglAddon.ts @@ -5,8 +5,8 @@ import type { ITerminalAddon, Terminal } from '@xterm/xterm'; import type { IWebglAddonOptions, WebglAddon as IWebglApi } from '@xterm/addon-webgl'; -import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; -import { ITerminal } from 'browser/Types'; +import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'target-browser/services/Services'; +import { ITerminal } from 'target-browser/Types'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { getSafariVersion, isSafari } from 'common/Platform'; import { ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services'; diff --git a/addons/addon-webgl/src/WebglRenderer.ts b/addons/addon-webgl/src/WebglRenderer.ts index 9c2f459df..69e90e21d 100644 --- a/addons/addon-webgl/src/WebglRenderer.ts +++ b/addons/addon-webgl/src/WebglRenderer.ts @@ -3,18 +3,18 @@ * @license MIT */ -import { ITerminal } from 'browser/Types'; +import { ITerminal } from 'target-browser/Types'; import { CellColorResolver } from './CellColorResolver'; import { acquireTextureAtlas, removeTerminalFromCache } from './CharAtlasCache'; import { CursorBlinkStateManager } from './CursorBlinkStateManager'; import { observeDevicePixelDimensions } from './DevicePixelObserver'; -import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'browser/renderer/shared/Types'; -import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; +import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'target-browser/renderer/shared/Types'; +import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'target-browser/services/Services'; import { CharData, IBufferLine, ICellData } from 'common/Types'; import { AttributeData } from 'common/buffer/AttributeData'; import { CellData } from 'common/buffer/CellData'; import { Attributes, Content, FgFlags, NULL_CELL_CHAR, NULL_CELL_CODE } from 'common/buffer/Constants'; -import { TextBlinkStateManager } from 'browser/renderer/shared/TextBlinkStateManager'; +import { TextBlinkStateManager } from 'target-browser/renderer/shared/TextBlinkStateManager'; import { ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; import { GlyphRenderer } from './GlyphRenderer'; @@ -24,9 +24,9 @@ import { IWebGL2RenderingContext, type ITextureAtlas } from './Types'; import { LinkRenderLayer } from './renderLayer/LinkRenderLayer'; import { IRenderLayer } from './renderLayer/Types'; import { Emitter, EventUtils } from 'common/Event'; -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; import { combinedDisposable, Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; -import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; +import { createRenderDimensions } from 'target-browser/renderer/shared/RendererUtils'; const enum Constants { MERGE_RETRY_LIMIT = 32 diff --git a/addons/addon-webgl/src/WebglUtils.ts b/addons/addon-webgl/src/WebglUtils.ts index 9944c6bd3..42b028f22 100644 --- a/addons/addon-webgl/src/WebglUtils.ts +++ b/addons/addon-webgl/src/WebglUtils.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; import type { ILogService } from 'common/services/Services'; /** diff --git a/addons/addon-webgl/src/customGlyphs/CustomGlyphRasterizer.ts b/addons/addon-webgl/src/customGlyphs/CustomGlyphRasterizer.ts index 357d512d2..f741c7715 100644 --- a/addons/addon-webgl/src/customGlyphs/CustomGlyphRasterizer.ts +++ b/addons/addon-webgl/src/customGlyphs/CustomGlyphRasterizer.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; import type { ILogService } from 'common/services/Services'; import { customGlyphDefinitions } from './CustomGlyphDefinitions'; import { CustomGlyphDefinitionType, CustomGlyphScaleType, CustomGlyphVectorType, type CustomGlyphDefinitionPart, type CustomGlyphPathDrawFunctionDefinition, type CustomGlyphPatternDefinition, type ICustomGlyphSolidOctantBlockVector, type ICustomGlyphVectorShape } from './Types'; diff --git a/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts b/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts index 5b1161532..14d932ab6 100644 --- a/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts +++ b/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts @@ -3,16 +3,16 @@ * @license MIT */ -import { ReadonlyColorSet } from 'browser/Types'; +import { ReadonlyColorSet } from 'target-browser/Types'; import { acquireTextureAtlas } from '../CharAtlasCache'; -import { IRenderDimensions } from 'browser/renderer/shared/Types'; -import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; +import { IRenderDimensions } from 'target-browser/renderer/shared/Types'; +import { ICoreBrowserService, IThemeService } from 'target-browser/services/Services'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { CellData } from 'common/buffer/CellData'; import { IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; import { IRenderLayer } from './Types'; -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; import { TEXT_BASELINE } from '../Constants'; import type { ITextureAtlas } from '../Types'; diff --git a/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts b/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts index faceac44f..a9c3000c8 100644 --- a/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts +++ b/addons/addon-webgl/src/renderLayer/LinkRenderLayer.ts @@ -4,10 +4,10 @@ */ import { is256Color } from '../CharAtlasUtils'; -import { INVERTED_DEFAULT_COLOR } from 'browser/renderer/shared/Constants'; -import { IRenderDimensions } from 'browser/renderer/shared/Types'; -import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { ILinkifier2, ILinkifierEvent } from 'browser/Types'; +import { INVERTED_DEFAULT_COLOR } from 'target-browser/renderer/shared/Constants'; +import { IRenderDimensions } from 'target-browser/renderer/shared/Types'; +import { ICoreBrowserService, IThemeService } from 'target-browser/services/Services'; +import { ILinkifier2, ILinkifierEvent } from 'target-browser/Types'; import { IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; import { BaseRenderLayer } from './BaseRenderLayer'; diff --git a/addons/addon-webgl/src/renderLayer/Types.ts b/addons/addon-webgl/src/renderLayer/Types.ts index feeceb145..18682ba67 100644 --- a/addons/addon-webgl/src/renderLayer/Types.ts +++ b/addons/addon-webgl/src/renderLayer/Types.ts @@ -4,7 +4,7 @@ */ import { IDisposable, Terminal } from '@xterm/xterm'; -import { IRenderDimensions } from 'browser/renderer/shared/Types'; +import { IRenderDimensions } from 'target-browser/renderer/shared/Types'; export interface IRenderLayer extends IDisposable { /** diff --git a/addons/addon-webgl/src/tsconfig.json b/addons/addon-webgl/src/tsconfig.json index 48df9a721..bba6db680 100644 --- a/addons/addon-webgl/src/tsconfig.json +++ b/addons/addon-webgl/src/tsconfig.json @@ -16,8 +16,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "@xterm/addon-webgl": [ "../typings/addon-webgl.d.ts" @@ -41,7 +41,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" } ] } diff --git a/addons/addon-webgl/test/tsconfig.json b/addons/addon-webgl/test/tsconfig.json index 8ca1407c6..1f93c82a0 100644 --- a/addons/addon-webgl/test/tsconfig.json +++ b/addons/addon-webgl/test/tsconfig.json @@ -15,8 +15,8 @@ "../../../src/common/runtime/*", "../../../src/common/*" ], - "browser/*": [ - "../../../src/browser/*" + "target-browser/*": [ + "../../../src/target-browser/*" ], "*": [ "./*" @@ -37,7 +37,7 @@ "path": "../../../src/common" }, { - "path": "../../../src/browser" + "path": "../../../src/target-browser" }, { "path": "../../../test/playwright" diff --git a/addons/addon-webgl/webpack.config.js b/addons/addon-webgl/webpack.config.js index 2eab992e7..387bf4993 100644 --- a/addons/addon-webgl/webpack.config.js +++ b/addons/addon-webgl/webpack.config.js @@ -26,7 +26,7 @@ module.exports = { extensions: [ '.js' ], alias: { common: path.resolve('../../out/common'), - browser: path.resolve('../../out/browser'), + browser: path.resolve('../../out/target-browser'), vs: path.resolve('../../out/vs') } }, diff --git a/bin/esbuild.mjs b/bin/esbuild.mjs index 23ef05094..23d55fee8 100644 --- a/bin/esbuild.mjs +++ b/bin/esbuild.mjs @@ -92,6 +92,9 @@ let outConfig = { } let skipOut = false; +/** @type {esbuild.BuildOptions[] | undefined} */ +let outBuilds; + /** @type {esbuild.BuildOptions} */ let outTestConfig = { format: 'cjs', @@ -171,7 +174,7 @@ if (config.addon) { } else if (config.isHeadless) { bundleConfig = { ...bundleConfig, - entryPoints: [`src/headless/public/Terminal.ts`], + entryPoints: [`src/target-headless/public/Terminal.ts`], outfile: `headless/lib-headless/xterm-headless.mjs` }; outConfig = { @@ -183,20 +186,35 @@ if (config.addon) { } else { bundleConfig = { ...bundleConfig, - entryPoints: [`src/browser/public/Terminal.ts`], + entryPoints: [`src/target-browser/public/Terminal.ts`], outfile: `lib/xterm.mjs` }; - outConfig = { - ...outConfig, - entryPoints: [ - 'src/browser/**/*.ts', - 'src/common/primitives/**/*.ts', - 'src/common/runtime/**/*.ts', - 'src/common/*.ts', - 'src/headless/**/*.ts' - ], - outdir: 'out-esbuild/' - }; + outBuilds = [ + { + ...outConfig, + entryPoints: ['src/common/primitives/**/*.ts'], + outbase: 'src/common/primitives', + outdir: 'out-esbuild/common', + }, + { + ...outConfig, + entryPoints: ['src/common/runtime/**/*.ts'], + outbase: 'src/common/runtime', + outdir: 'out-esbuild/common', + }, + { + ...outConfig, + entryPoints: ['src/target-browser/**/*.ts'], + outbase: 'src', + outdir: 'out-esbuild', + }, + { + ...outConfig, + entryPoints: ['src/target-headless/**/*.ts'], + outbase: 'src', + outdir: 'out-esbuild', + }, + ]; outTestConfig = { ...outConfig, entryPoints: ['test/**/*.ts'], @@ -207,7 +225,9 @@ if (config.addon) { if (config.isWatch) { context(bundleConfig).then(e => e.watch()); if (!skipOut) { - context(outConfig).then(e => e.watch()); + for (const buildConfig of outBuilds ?? [outConfig]) { + context(buildConfig).then(e => e.watch()); + } } if (!skipOutTest) { context(outTestConfig).then(e => e.watch()); @@ -215,7 +235,9 @@ if (config.isWatch) { } else { await build(bundleConfig); if (!skipOut) { - await build(outConfig); + for (const buildConfig of outBuilds ?? [outConfig]) { + await build(buildConfig); + } } if (!skipOutTest) { await build(outTestConfig); diff --git a/bin/vs_base_find_unused.js b/bin/vs_base_find_unused.js index df54aab59..c4d67c942 100644 --- a/bin/vs_base_find_unused.js +++ b/bin/vs_base_find_unused.js @@ -38,4 +38,4 @@ function findUnusedSymbols( } // Example usage -findUnusedSymbols("./src/browser/tsconfig.json"); +findUnusedSymbols("./src/target-browser/tsconfig.json"); diff --git a/src/ARCHITECTURE.md b/src/ARCHITECTURE.md index 8e79f429e..9b5d68ea7 100644 --- a/src/ARCHITECTURE.md +++ b/src/ARCHITECTURE.md @@ -1,79 +1,70 @@ # xterm.js source architecture -This document describes how `src/` is organized, with emphasis on the shared core under `src/common/`. The layout follows the refined proposal in [issue #5963](https://github.com/xtermjs/xterm.js/issues/5963): separate **primitives** (building blocks) from **runtime** (services and integration), while **browser** and **headless** remain target-specific entry points. +This document describes how `src/` is organized. The layout follows [issue #5963](https://github.com/xtermjs/xterm.js/issues/5963): **primitives** and **runtime** as separate TypeScript composite projects, with **target-browser** and **target-headless** as platform entry points. -## Layer overview +## Dependency graph ```mermaid flowchart BT - primitives["common/primitives
building blocks, high test coverage expected"] + primitives["common/primitives
building blocks"] runtime["common/runtime
services, integration"] - browser["browser
DOM terminal target"] - headless["headless
Node terminal target"] + targetBrowser["target-browser
DOM terminal"] + targetHeadless["target-headless
Node terminal"] runtime --> primitives - browser --> runtime - headless --> runtime + targetBrowser --> runtime + targetHeadless --> runtime ``` -| Layer | Path | Role | -| --- | --- | --- | -| Primitives | `src/common/primitives/` | Low-level, mostly stateless building blocks: buffer, parser, escape/input helpers, static data, and shared utilities. These modules should be easy to unit test in isolation. | -| Runtime | `src/common/runtime/` | Stateful services (DI), `CoreTerminal`, `InputHandler`, public API adapters under `public/`, and other code that wires primitives into a working terminal core. | -| Shared types | `src/common/Types.ts` | Cross-cutting interfaces and types used by both layers (kept at the `common/` root until a stricter module API is introduced). | -| Browser target | `src/browser/` | Browser-only rendering, input, and the public `Terminal` wrapper. | -| Headless target | `src/headless/` | Node-oriented terminal without DOM; same public API shape as the browser build where applicable. | +## TypeScript projects + +| Project | `tsconfig` | Output | Role | +| --- | --- | --- | --- | +| Primitives | `src/common/primitives/tsconfig.json` | `out/common/primitives/` | Buffer, parser, input helpers, static data, shared utilities. Must not import from `runtime/`. | +| Runtime | `src/common/runtime/tsconfig.json` | `out/common/runtime/` | Services (DI), `CoreTerminal`, `InputHandler`, public API adapters, `Types.ts`. References primitives. | +| Common (solution) | `src/common/tsconfig.json` | — | Solution root; references primitives + runtime only. | +| Target browser | `src/target-browser/tsconfig.json` | `out/target-browser/` | Browser rendering, input, public `Terminal`. References common. | +| Target headless | `src/target-headless/tsconfig.json` | `out/target-headless/` | Headless terminal. References common. | + +Unit test files (`**/*.test.ts`) are excluded from composite library builds; they are compiled via esbuild for `npm run test-unit`. ## `common/primitives/` | Area | Contents | | --- | --- | -| Root utilities | `Async`, `CircularList`, `Color`, `Event`, `Lifecycle`, `MultiKeyMap`, `Platform`, `SortedList`, `StringBuilder`, `TaskQueue`, `Version` | -| `buffer/` | Screen buffer, cells, lines, markers, reflow | -| `data/` | Static tables (`Charsets`, `EscapeSequences`) | -| `input/` | UTF decoding, keyboard helpers, write buffer, color parsing | -| `parser/` | Escape-sequence parser (CSI, OSC, DCS, APC) | +| Root utilities | `Async`, `CircularList`, `Color`, `ColorTypes`, `Event`, `KeyboardTypes`, `Lifecycle`, `MultiKeyMap`, `Platform`, `SortedList`, `StringBuilder`, `TaskQueue`, `TerminalOptions`, `Version` | +| `buffer/` | Screen buffer, `CellTypes`, `BufferService` / `BufferOptions` / `BufferLog` interfaces (buffer-layer contracts) | +| `data/` | `Charsets`, `EscapeSequences` | +| `input/` | UTF decoding, keyboard helpers, `UnicodeTypes`, `UnicodeProperties` | +| `parser/` | Escape-sequence parser | -**Goals** - -- Prefer comprehensive unit tests here; behavior should be understandable without constructing the full terminal stack. -- Avoid importing from `runtime/` when possible. Some legacy edges still reach into `common/services` (for example buffer logging hooks); tightening that is follow-up work, not a blocker for the folder split. -- Future work may split primitives into finer TypeScript projects (`base`, `encoding`, `buffer`, …) with enforced one-way references. +Primitives depend only on other primitives (and `@xterm/xterm` typings where needed). Buffer code uses `IBufferService` from `common/buffer/BufferService`, not `common/services/Services`. ## `common/runtime/` | Area | Contents | | --- | --- | -| `services/` | Dependency-injection services (`BufferService`, `OptionsService`, `CoreService`, …) | -| `public/` | Public API surface adapters (`AddonManager`, buffer/parser API views) | -| Root integration | `CoreTerminal`, `InputHandler`, `WindowsMode`, test helpers (`TestUtils.test.ts`) | +| `services/` | DI implementations (`BufferService`, `OptionsService`, …) | +| `public/` | Public API adapters (`AddonManager`, buffer/parser views) | +| Root | `CoreTerminal`, `InputHandler`, `WindowsMode`, `Types.ts`, `TestUtils.test.ts` | -**Goals** - -- Own composition: instantiation, service registry, and the large integration classes (`InputHandler`). -- May depend on `primitives/` and on `common/Types.ts`; must not be depended on by primitives in the steady state (existing cycles are technical debt to remove incrementally). -- Integration and addon-facing behavior is validated by unit tests here and by browser/headless/integration tests at the target layer. +`Types.ts` re-exports primitive types and adds integration types (`IInputHandler`, `ICoreTerminal`, mouse/color helpers, etc.). ## Import paths -Source continues to use the existing `common/...` import prefix (for example `common/buffer/Buffer`, `common/services/Services`). TypeScript `paths` in `tsconfig.json` files map that prefix onto `primitives/`, `runtime/`, and the `common/` root so this restructure did not require mass import rewrites. +Source keeps the `common/...` prefix. Each project's `paths` in `tsconfig.json` map that prefix to the correct layer (primitives first, then runtime, for targets). -## Targets vs core +Platform code uses: -```mermaid -flowchart LR - subgraph core["Shared core"] - primitives - runtime - end - browser --> runtime - headless --> runtime -``` +- `target-browser/...` — was `browser/...` +- `target-headless/...` — was `headless/...` -Browser and headless add platform code (renderers, DOM, Node specifics) on top of the same runtime core. Addons and the demo build against the published packages; their tsconfigs use the same `common/*` path mapping. +## Published packages vs source folders + +The npm package directory `headless/` (e.g. `headless/lib-headless/`) is unchanged; only the **source** tree uses `src/target-headless/`. ## Related issues -- [#5963](https://github.com/xtermjs/xterm.js/issues/5963) — module split and TypeScript project structure -- [#5896](https://github.com/xtermjs/xterm.js/issues/5896) — relative imports (possible follow-up) -- [#5897](https://github.com/xtermjs/xterm.js/issues/5897) — `import/no-cycle` lint enforcement +- [#5963](https://github.com/xtermjs/xterm.js/issues/5963) — module split +- [#5896](https://github.com/xtermjs/xterm.js/issues/5896) — relative imports +- [#5897](https://github.com/xtermjs/xterm.js/issues/5897) — `import/no-cycle` lint diff --git a/src/browser/tsconfig.json b/src/browser/tsconfig.json deleted file mode 100644 index 81079d358..000000000 --- a/src/browser/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "../tsconfig-library-base", - "compilerOptions": { - "lib": [ - "dom", - "es2021" - ], - "outDir": "../../out", - "types": [ - "../../node_modules/@types/mocha" - ], - "skipLibCheck": true, - "paths": { - "common/*": [ - "./../common/primitives/*", - "./../common/runtime/*", - "./../common/*" - ], - "*": [ "./../*" ] - } - }, - "include": [ - "./**/*", - "../../typings/xterm.d.ts" - ], - "references": [ - { "path": "../common" } - ] -} diff --git a/src/common/primitives/CircularList.ts b/src/common/primitives/CircularList.ts index 3663bfc17..753756ff2 100644 --- a/src/common/primitives/CircularList.ts +++ b/src/common/primitives/CircularList.ts @@ -3,9 +3,30 @@ * @license MIT */ -import { ICircularList } from 'common/Types'; import { Disposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; +import { Emitter, type IEvent } from 'common/Event'; + +export interface ICircularList { + length: number; + maxLength: number; + isFull: boolean; + + onDeleteEmitter: Emitter; + onDelete: IEvent; + onInsertEmitter: Emitter; + onInsert: IEvent; + onTrimEmitter: Emitter; + onTrim: IEvent; + + get(index: number): T | undefined; + set(index: number, value: T): void; + push(value: T): void; + recycle(): T; + pop(): T | undefined; + splice(start: number, deleteCount: number, ...items: T[]): void; + trimStart(count: number): void; + shiftElements(start: number, count: number, offset: number): void; +} export interface IInsertEvent { index: number; diff --git a/src/common/primitives/Color.ts b/src/common/primitives/Color.ts index b3d13fc99..dc4f36c18 100644 --- a/src/common/primitives/Color.ts +++ b/src/common/primitives/Color.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IColor, IColorRGB } from 'common/Types'; +import { IColor, IColorRGB } from 'common/ColorTypes'; let $r = 0; let $g = 0; diff --git a/src/common/primitives/ColorTypes.ts b/src/common/primitives/ColorTypes.ts new file mode 100644 index 000000000..7a32cfe22 --- /dev/null +++ b/src/common/primitives/ColorTypes.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) 2018 The xterm.js authors. All rights reserved. + * @license MIT + */ + +export interface IColor { + readonly css: string; + readonly rgba: number; // 32-bit int with rgba in each byte +} + +export type IColorRGB = [red: number, green: number, blue: number]; diff --git a/src/common/primitives/KeyboardTypes.ts b/src/common/primitives/KeyboardTypes.ts new file mode 100644 index 000000000..b7d8deaeb --- /dev/null +++ b/src/common/primitives/KeyboardTypes.ts @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2018 The xterm.js authors. All rights reserved. + * @license MIT + */ + +export interface IKeyboardEvent { + altKey: boolean; + ctrlKey: boolean; + shiftKey: boolean; + metaKey: boolean; + /** @deprecated See KeyboardEvent.keyCode */ + keyCode: number; + key: string; + type: string; + code: string; +} + +export const enum KeyboardResultType { + SEND_KEY, + SELECT_ALL, + PAGE_UP, + PAGE_DOWN +} + +export interface IKeyboardResult { + type: KeyboardResultType; + cancel: boolean; + key: string | undefined; +} diff --git a/src/common/primitives/SortedList.ts b/src/common/primitives/SortedList.ts index c6dc62085..f0684c8a0 100644 --- a/src/common/primitives/SortedList.ts +++ b/src/common/primitives/SortedList.ts @@ -4,7 +4,7 @@ */ import { IdleTaskQueue } from 'common/TaskQueue'; -import type { ILogService } from 'common/services/Services'; +import type { IBufferLogService } from 'common/buffer/BufferLog'; // Work variables to avoid garbage collection. let i = 0; @@ -28,7 +28,7 @@ export class SortedList { constructor( private readonly _getKey: (value: T) => number, - logService: ILogService + logService: IBufferLogService ) { this._flushInsertedTask = new IdleTaskQueue(logService); this._flushDeletedTask = new IdleTaskQueue(logService); diff --git a/src/common/primitives/TaskQueue.ts b/src/common/primitives/TaskQueue.ts index 77f9aea55..4a28266a1 100644 --- a/src/common/primitives/TaskQueue.ts +++ b/src/common/primitives/TaskQueue.ts @@ -3,7 +3,7 @@ * @license MIT */ -import type { ILogService } from 'common/services/Services'; +import type { IBufferLogService } from 'common/buffer/BufferLog'; interface ITaskQueue { /** @@ -34,9 +34,9 @@ abstract class TaskQueue implements ITaskQueue { private _tasks: (() => boolean | void)[] = []; private _idleCallback?: number; private _i = 0; - protected readonly _logService: ILogService; + protected readonly _logService: IBufferLogService; - constructor(logService: ILogService) { + constructor(logService: IBufferLogService) { this._logService = logService; } @@ -156,7 +156,7 @@ export const IdleTaskQueue = ('requestIdleCallback' in globalThis) ? IdleTaskQue export class DebouncedIdleTask { private _queue: ITaskQueue; - constructor(logService: ILogService) { + constructor(logService: IBufferLogService) { this._queue = new IdleTaskQueue(logService); } diff --git a/src/common/primitives/TerminalOptions.ts b/src/common/primitives/TerminalOptions.ts new file mode 100644 index 000000000..41570b6c0 --- /dev/null +++ b/src/common/primitives/TerminalOptions.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2018 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import { ITerminalOptions as IPublicTerminalOptions } from '@xterm/xterm'; + +// TODO: The options that are not in the public API should be reviewed +export interface ITerminalOptions extends IPublicTerminalOptions { + [key: string]: any; + convertEol?: boolean; + termName?: string; +} diff --git a/src/common/primitives/buffer/AttributeData.ts b/src/common/primitives/buffer/AttributeData.ts index 6221fb81d..8d94cc052 100644 --- a/src/common/primitives/buffer/AttributeData.ts +++ b/src/common/primitives/buffer/AttributeData.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IAttributeData, IColorRGB, IExtendedAttrs } from 'common/Types'; +import { IAttributeData, IColorRGB, IExtendedAttrs } from 'common/buffer/CellTypes'; import { Attributes, FgFlags, BgFlags, UnderlineStyle, ExtFlags } from 'common/buffer/Constants'; export class AttributeData implements IAttributeData { diff --git a/src/common/primitives/buffer/Buffer.ts b/src/common/primitives/buffer/Buffer.ts index 34ef02f6a..7791913de 100644 --- a/src/common/primitives/buffer/Buffer.ts +++ b/src/common/primitives/buffer/Buffer.ts @@ -6,7 +6,10 @@ import { CircularList, IInsertEvent } from 'common/CircularList'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IdleTaskQueue } from 'common/TaskQueue'; -import { IAttributeData, IBufferLine, ICellData, ICharset } from 'common/Types'; +import { IAttributeData, IBufferLine, ICellData } from 'common/buffer/CellTypes'; +import { IBufferLogService } from 'common/buffer/BufferLog'; +import { IBufferOptionsService } from 'common/buffer/BufferOptions'; +import { IBufferService } from 'common/buffer/BufferService'; import { ExtendedAttrs } from 'common/buffer/AttributeData'; import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; @@ -15,8 +18,7 @@ import { CellData } from 'common/buffer/CellData'; import { NULL_CELL_CHAR, NULL_CELL_CODE, NULL_CELL_WIDTH, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_CODE, WHITESPACE_CELL_WIDTH } from 'common/buffer/Constants'; import { Marker } from 'common/buffer/Marker'; import { IBuffer } from 'common/buffer/Types'; -import { DEFAULT_CHARSET } from 'common/data/Charsets'; -import { IBufferService, ILogService, IOptionsService } from 'common/services/Services'; +import { DEFAULT_CHARSET, ICharset } from 'common/data/Charsets'; export const MAX_BUFFER_SIZE = 4294967295; // 2^32 - 1 @@ -56,9 +58,9 @@ export class Buffer extends Disposable implements IBuffer { constructor( private _hasScrollback: boolean, - private _optionsService: IOptionsService, + private _optionsService: IBufferOptionsService, private _bufferService: IBufferService, - private readonly _logService: ILogService + private readonly _logService: IBufferLogService ) { super(); this._cols = this._bufferService.cols; diff --git a/src/common/primitives/buffer/BufferLine.test.ts b/src/common/primitives/buffer/BufferLine.test.ts index e3d5fb54f..6a497e682 100644 --- a/src/common/primitives/buffer/BufferLine.test.ts +++ b/src/common/primitives/buffer/BufferLine.test.ts @@ -3,10 +3,10 @@ * @license MIT */ import { NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE, DEFAULT_ATTR, Content, UnderlineStyle, BgFlags, Attributes, FgFlags } from 'common/buffer/Constants'; -import { BufferLine } from 'common/buffer//BufferLine'; +import { BufferLine } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { CellData } from 'common/buffer/CellData'; -import { CharData, IBufferLine, ICellData } from 'common/Types'; +import { CharData, IBufferLine, ICellData } from 'common/buffer/CellTypes'; import { assert } from 'chai'; import { AttributeData } from 'common/buffer/AttributeData'; import { createCellData, NULL_CELL_DATA, extendedAttributes } from 'common/TestUtils.test'; diff --git a/src/common/primitives/buffer/BufferLine.ts b/src/common/primitives/buffer/BufferLine.ts index e24a000c9..d9622a6bc 100644 --- a/src/common/primitives/buffer/BufferLine.ts +++ b/src/common/primitives/buffer/BufferLine.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { CharData, IAttributeData, IBufferLine, ICellData, IExtendedAttrs } from 'common/Types'; +import { CharData, IAttributeData, IBufferLine, ICellData, IExtendedAttrs } from 'common/buffer/CellTypes'; import { AttributeData } from 'common/buffer/AttributeData'; import { CellData } from 'common/buffer/CellData'; import { Attributes, BgFlags, CHAR_DATA_ATTR_INDEX, CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, Content, NULL_CELL_CHAR, NULL_CELL_CODE, NULL_CELL_WIDTH, WHITESPACE_CELL_CHAR } from 'common/buffer/Constants'; diff --git a/src/common/primitives/buffer/BufferLog.ts b/src/common/primitives/buffer/BufferLog.ts new file mode 100644 index 000000000..37b985b5d --- /dev/null +++ b/src/common/primitives/buffer/BufferLog.ts @@ -0,0 +1,8 @@ +/** + * Copyright (c) 2022 The xterm.js authors. All rights reserved. + * @license MIT + */ + +export interface IBufferLogService { + warn(message: any, ...optionalParams: any[]): void; +} diff --git a/src/common/primitives/buffer/BufferOptions.ts b/src/common/primitives/buffer/BufferOptions.ts new file mode 100644 index 000000000..faf97e3bb --- /dev/null +++ b/src/common/primitives/buffer/BufferOptions.ts @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import type { IDisposable } from 'common/Lifecycle'; +import type { ITerminalOptions } from 'common/TerminalOptions'; + +/** + * Options surface used by the buffer layer. + */ +export interface IBufferOptionsService { + readonly rawOptions: Required; + onSpecificOptionChange(key: K, callback: (value: ITerminalOptions[K]) => void): IDisposable; +} diff --git a/src/common/primitives/buffer/BufferReflow.ts b/src/common/primitives/buffer/BufferReflow.ts index 45a194711..9deabf81d 100644 --- a/src/common/primitives/buffer/BufferReflow.ts +++ b/src/common/primitives/buffer/BufferReflow.ts @@ -5,7 +5,7 @@ import { BufferLine } from 'common/buffer/BufferLine'; import { CircularList } from 'common/CircularList'; -import { IBufferLine, ICellData } from 'common/Types'; +import { IBufferLine, ICellData } from 'common/buffer/CellTypes'; export interface INewLayoutResult { layout: number[]; diff --git a/src/common/primitives/buffer/BufferService.ts b/src/common/primitives/buffer/BufferService.ts new file mode 100644 index 000000000..ce0b0eb14 --- /dev/null +++ b/src/common/primitives/buffer/BufferService.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import type { IEvent } from 'common/Event'; +import type { IAttributeData } from 'common/buffer/CellTypes'; +import type { IBuffer, IBufferSet } from 'common/buffer/Types'; + +export interface IBufferResizeEvent { + cols: number; + rows: number; + colsChanged: boolean; + rowsChanged: boolean; +} + +export interface IBufferService { + serviceBrand: undefined; + + readonly cols: number; + readonly rows: number; + readonly buffer: IBuffer; + readonly buffers: IBufferSet; + isUserScrolling: boolean; + onResize: IEvent; + onScroll: IEvent; + scroll(eraseAttr: IAttributeData, isWrapped?: boolean): void; + scrollLines(disp: number, suppressScrollEvent?: boolean): void; + resize(cols: number, rows: number): void; + reset(): void; +} diff --git a/src/common/primitives/buffer/BufferSet.ts b/src/common/primitives/buffer/BufferSet.ts index 32a4bf3b4..590237c82 100644 --- a/src/common/primitives/buffer/BufferSet.ts +++ b/src/common/primitives/buffer/BufferSet.ts @@ -4,10 +4,12 @@ */ import { Disposable, MutableDisposable } from 'common/Lifecycle'; -import { IAttributeData } from 'common/Types'; +import { IAttributeData } from 'common/buffer/CellTypes'; import { Buffer } from 'common/buffer/Buffer'; import { IBuffer, IBufferSet } from 'common/buffer/Types'; -import { IBufferService, ILogService, IOptionsService } from 'common/services/Services'; +import { IBufferLogService } from 'common/buffer/BufferLog'; +import { IBufferOptionsService } from 'common/buffer/BufferOptions'; +import { IBufferService } from 'common/buffer/BufferService'; import { Emitter } from 'common/Event'; /** @@ -28,9 +30,9 @@ export class BufferSet extends Disposable implements IBufferSet { * Create a new BufferSet for the given terminal. */ constructor( - private readonly _optionsService: IOptionsService, + private readonly _optionsService: IBufferOptionsService, private readonly _bufferService: IBufferService, - private readonly _logService: ILogService + private readonly _logService: IBufferLogService ) { super(); this.reset(); diff --git a/src/common/primitives/buffer/CellData.ts b/src/common/primitives/buffer/CellData.ts index 43c4c594b..8567687a8 100644 --- a/src/common/primitives/buffer/CellData.ts +++ b/src/common/primitives/buffer/CellData.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { CharData, ICellData, IExtendedAttrs } from 'common/Types'; +import { CharData, ICellData, IExtendedAttrs } from 'common/buffer/CellTypes'; import { stringFromCodePoint } from 'common/input/TextDecoder'; import { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_ATTR_INDEX, Content } from 'common/buffer/Constants'; import { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData'; diff --git a/src/common/primitives/buffer/CellTypes.ts b/src/common/primitives/buffer/CellTypes.ts new file mode 100644 index 000000000..f10a71907 --- /dev/null +++ b/src/common/primitives/buffer/CellTypes.ts @@ -0,0 +1,120 @@ +/** + * Copyright (c) 2018 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import type { UnderlineStyle } from 'common/buffer/Constants'; +import type { IDisposable } from 'common/Lifecycle'; +import type { IEvent } from 'common/Event'; + +export type { IColorRGB } from 'common/ColorTypes'; + +export type CharData = [attr: number, char: string, width: number, code: number]; + +export interface IExtendedAttrs { + ext: number; + underlineStyle: UnderlineStyle; + underlineColor: number; + underlineVariantOffset: number; + urlId: number; + clone(): IExtendedAttrs; + isEmpty(): boolean; +} + +/** + * An object that represents all attributes of a cell. + */ +export interface IAttributeData { + fg: number; + bg: number; + extended: IExtendedAttrs; + + clone(): IAttributeData; + + isInverse(): number; + isBold(): number; + isUnderline(): number; + isBlink(): number; + isInvisible(): number; + isItalic(): number; + isDim(): number; + isStrikethrough(): number; + isProtected(): number; + isOverline(): number; + + getFgColorMode(): number; + getBgColorMode(): number; + isFgRGB(): boolean; + isBgRGB(): boolean; + isFgPalette(): boolean; + isBgPalette(): boolean; + isFgDefault(): boolean; + isBgDefault(): boolean; + isAttributeDefault(): boolean; + + getFgColor(): number; + getBgColor(): number; + + hasExtendedAttrs(): number; + updateExtended(): void; + getUnderlineColor(): number; + getUnderlineColorMode(): number; + isUnderlineColorRGB(): boolean; + isUnderlineColorPalette(): boolean; + isUnderlineColorDefault(): boolean; + getUnderlineStyle(): number; + getUnderlineVariantOffset(): number; +} + +/** Cell data */ +export interface ICellData extends IAttributeData { + content: number; + combinedData: string; + isCombined(): number; + getWidth(): number; + getChars(): string; + getCode(): number; + setFromCharData(value: CharData): void; + getAsCharData(): CharData; +} + +/** + * Interface for a line in the terminal buffer. + */ +export interface IBufferLine { + length: number; + isWrapped: boolean; + get(index: number): CharData; + set(index: number, value: CharData): void; + loadCell(index: number, cell: ICellData): ICellData; + setCell(index: number, cell: ICellData): void; + setCellFromCodepoint(index: number, codePoint: number, width: number, attrs: IAttributeData): void; + addCodepointToCell(index: number, codePoint: number, width: number): void; + insertCells(pos: number, n: number, ch: ICellData): void; + deleteCells(pos: number, n: number, fill: ICellData): void; + replaceCells(start: number, end: number, fill: ICellData, respectProtect?: boolean): void; + resize(cols: number, fill: ICellData): boolean; + cleanupMemory(): number; + fill(fillCellData: ICellData, respectProtect?: boolean): void; + copyFrom(line: IBufferLine): void; + clone(): IBufferLine; + getTrimmedLength(): number; + getNoBgTrimmedLength(): number; + translateToString(trimRight?: boolean, startCol?: number, endCol?: number, outColumns?: number[]): string; + + getWidth(index: number): number; + hasWidth(index: number): number; + getFg(index: number): number; + getBg(index: number): number; + hasContent(index: number): number; + getCodePoint(index: number): number; + isCombined(index: number): number; + getString(index: number): string; +} + +export interface IMarker extends IDisposable { + readonly id: number; + readonly isDisposed: boolean; + readonly line: number; + onDispose: IEvent; +} diff --git a/src/common/primitives/buffer/Marker.ts b/src/common/primitives/buffer/Marker.ts index 59ad049b0..ba210c511 100644 --- a/src/common/primitives/buffer/Marker.ts +++ b/src/common/primitives/buffer/Marker.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { IDisposable, IMarker } from 'common/Types'; +import { dispose, type IDisposable } from 'common/Lifecycle'; +import { IMarker } from 'common/buffer/CellTypes'; import { Emitter } from 'common/Event'; -import { dispose } from 'common/Lifecycle'; export class Marker implements IMarker { private static _nextId = 1; diff --git a/src/common/primitives/buffer/Types.ts b/src/common/primitives/buffer/Types.ts index 85dd68eec..1c3aa7f6d 100644 --- a/src/common/primitives/buffer/Types.ts +++ b/src/common/primitives/buffer/Types.ts @@ -3,7 +3,10 @@ * @license MIT */ -import { IAttributeData, ICircularList, IBufferLine, ICellData, IMarker, ICharset, IDisposable } from 'common/Types'; +import { IAttributeData, IBufferLine, ICellData, IMarker } from 'common/buffer/CellTypes'; +import { ICircularList } from 'common/CircularList'; +import { ICharset } from 'common/data/Charsets'; +import type { IDisposable } from 'common/Lifecycle'; import type { IEvent } from 'common/Event'; // BufferIndex denotes a position in the buffer: [rowIndex, colIndex] diff --git a/src/common/primitives/data/Charsets.ts b/src/common/primitives/data/Charsets.ts index 06c1f4b84..5b10eb078 100644 --- a/src/common/primitives/data/Charsets.ts +++ b/src/common/primitives/data/Charsets.ts @@ -3,7 +3,9 @@ * @license MIT */ -import { ICharset } from 'common/Types'; +export interface ICharset { + [key: string]: string | undefined; +} /** * The character sets supported by the terminal. These enable several languages diff --git a/src/common/primitives/input/Keyboard.test.ts b/src/common/primitives/input/Keyboard.test.ts index 47f516f0f..d99105b42 100644 --- a/src/common/primitives/input/Keyboard.test.ts +++ b/src/common/primitives/input/Keyboard.test.ts @@ -1,7 +1,7 @@ import { assert } from 'chai'; import { evaluateKeyboardEvent } from 'common/input/Keyboard'; -import { IKeyboardResult, IKeyboardEvent } from 'common/Types'; +import { IKeyboardResult, IKeyboardEvent } from 'common/KeyboardTypes'; /** * A helper function for testing which allows passing in a partial event and defaults will be filled diff --git a/src/common/primitives/input/Keyboard.ts b/src/common/primitives/input/Keyboard.ts index 545b436c8..f19feb3bc 100644 --- a/src/common/primitives/input/Keyboard.ts +++ b/src/common/primitives/input/Keyboard.ts @@ -4,7 +4,7 @@ * @license MIT */ -import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/Types'; +import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/KeyboardTypes'; import { C0 } from 'common/data/EscapeSequences'; // reg + shift key mappings for digits and special chars diff --git a/src/common/primitives/input/KittyKeyboard.test.ts b/src/common/primitives/input/KittyKeyboard.test.ts index 2a832d75f..8e14b0dda 100644 --- a/src/common/primitives/input/KittyKeyboard.test.ts +++ b/src/common/primitives/input/KittyKeyboard.test.ts @@ -1,7 +1,7 @@ import { assert } from 'chai'; import { KittyKeyboard, KittyKeyboardEventType, KittyKeyboardFlags } from 'common/input/KittyKeyboard'; -import { IKeyboardEvent } from 'common/Types'; +import { IKeyboardEvent } from 'common/KeyboardTypes'; function createEvent(partialEvent: Partial = {}): IKeyboardEvent { return { diff --git a/src/common/primitives/input/KittyKeyboard.ts b/src/common/primitives/input/KittyKeyboard.ts index ff57b4f89..351457c8a 100644 --- a/src/common/primitives/input/KittyKeyboard.ts +++ b/src/common/primitives/input/KittyKeyboard.ts @@ -6,7 +6,7 @@ * @see https://sw.kovidgoyal.net/kitty/keyboard-protocol/ */ -import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/Types'; +import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/KeyboardTypes'; import { C0 } from 'common/data/EscapeSequences'; /** diff --git a/src/common/primitives/input/UnicodeProperties.ts b/src/common/primitives/input/UnicodeProperties.ts new file mode 100644 index 000000000..69d981c0c --- /dev/null +++ b/src/common/primitives/input/UnicodeProperties.ts @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import type { UnicodeCharProperties, UnicodeCharWidth } from 'common/input/UnicodeTypes'; + +export function extractShouldJoin(value: UnicodeCharProperties): boolean { + return (value & 1) !== 0; +} + +export function extractWidth(value: UnicodeCharProperties): UnicodeCharWidth { + return ((value >> 1) & 0x3) as UnicodeCharWidth; +} + +export function extractCharKind(value: UnicodeCharProperties): number { + return value >> 3; +} + +export function createPropertyValue(state: number, width: number, shouldJoin: boolean = false): UnicodeCharProperties { + return ((state & 0xffffff) << 3) | ((width & 3) << 1) | (shouldJoin ? 1 : 0); +} diff --git a/src/common/primitives/input/UnicodeTypes.ts b/src/common/primitives/input/UnicodeTypes.ts new file mode 100644 index 000000000..d1c739c2b --- /dev/null +++ b/src/common/primitives/input/UnicodeTypes.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * @license MIT + */ + +/* + * Width and Grapheme_Cluster_Break properties of a character as a bit mask. + * + * bit 0: shouldJoin - should combine with preceding character. + * bit 1..2: wcwidth - see UnicodeCharWidth. + * bit 3..31: class of character (currently only 4 bits are used). + */ +export type UnicodeCharProperties = number; + +/** + * Width in columns of a character. + */ +export type UnicodeCharWidth = 0 | 1 | 2; + +export interface IUnicodeVersionProvider { + readonly version: string; + wcwidth(ucs: number): UnicodeCharWidth; + charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; +} diff --git a/src/common/primitives/input/UnicodeV6.ts b/src/common/primitives/input/UnicodeV6.ts index 83265f705..c8b72fcca 100644 --- a/src/common/primitives/input/UnicodeV6.ts +++ b/src/common/primitives/input/UnicodeV6.ts @@ -2,8 +2,8 @@ * Copyright (c) 2019 The xterm.js authors. All rights reserved. * @license MIT */ -import { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; -import { UnicodeService } from 'common/services/UnicodeService'; +import { createPropertyValue, extractWidth } from 'common/input/UnicodeProperties'; +import { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/input/UnicodeTypes'; const BMP_COMBINING = [ [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489], @@ -133,13 +133,13 @@ export class UnicodeV6 implements IUnicodeVersionProvider { let width = this.wcwidth(codepoint); let shouldJoin = width === 0 && preceding !== 0; if (shouldJoin) { - const oldWidth = UnicodeService.extractWidth(preceding); + const oldWidth = extractWidth(preceding); if (oldWidth === 0) { shouldJoin = false; } else if (oldWidth > width) { width = oldWidth; } } - return UnicodeService.createPropertyValue(0, width, shouldJoin); + return createPropertyValue(0, width, shouldJoin); } } diff --git a/src/common/primitives/input/Win32InputMode.test.ts b/src/common/primitives/input/Win32InputMode.test.ts index d0f333591..ed6f86c40 100644 --- a/src/common/primitives/input/Win32InputMode.test.ts +++ b/src/common/primitives/input/Win32InputMode.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { Win32InputMode, Win32ControlKeyState } from 'common/input/Win32InputMode'; -import { IKeyboardEvent, KeyboardResultType } from 'common/Types'; +import { IKeyboardEvent, KeyboardResultType } from 'common/KeyboardTypes'; type EventOpts = Partial; const ev = (opts: EventOpts): IKeyboardEvent => ({ diff --git a/src/common/primitives/input/Win32InputMode.ts b/src/common/primitives/input/Win32InputMode.ts index 72907836d..6e5fb5855 100644 --- a/src/common/primitives/input/Win32InputMode.ts +++ b/src/common/primitives/input/Win32InputMode.ts @@ -14,7 +14,7 @@ * Rc: Repeat count (usually 1) */ -import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/Types'; +import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/KeyboardTypes'; import { C0 } from 'common/data/EscapeSequences'; /** diff --git a/src/common/primitives/parser/ApcParser.ts b/src/common/primitives/parser/ApcParser.ts index 4e647d037..cd88337f7 100644 --- a/src/common/primitives/parser/ApcParser.ts +++ b/src/common/primitives/parser/ApcParser.ts @@ -6,7 +6,7 @@ import { IApcHandler, IHandlerCollection, ApcFallbackHandlerType, IApcParser, ISubParserStackState } from 'common/parser/Types'; import { ParserConstants } from 'common/parser/Constants'; import { utf32ToString } from 'common/input/TextDecoder'; -import { IDisposable } from 'common/Types'; +import type { IDisposable } from 'common/Lifecycle'; import { LimitedStringBuilder } from 'common/StringBuilder'; const EMPTY_HANDLERS: IApcHandler[] = []; diff --git a/src/common/primitives/parser/DcsParser.ts b/src/common/primitives/parser/DcsParser.ts index 25c22b8dd..8106e4d8f 100644 --- a/src/common/primitives/parser/DcsParser.ts +++ b/src/common/primitives/parser/DcsParser.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IDisposable } from 'common/Types'; +import type { IDisposable } from 'common/Lifecycle'; import { IDcsHandler, IParams, IHandlerCollection, IDcsParser, DcsFallbackHandlerType, ISubParserStackState } from 'common/parser/Types'; import { utf32ToString } from 'common/input/TextDecoder'; import { Params } from 'common/parser/Params'; diff --git a/src/common/primitives/parser/EscapeSequenceParser.test.ts b/src/common/primitives/parser/EscapeSequenceParser.test.ts index 2d5a04df7..36c425ce5 100644 --- a/src/common/primitives/parser/EscapeSequenceParser.test.ts +++ b/src/common/primitives/parser/EscapeSequenceParser.test.ts @@ -10,7 +10,7 @@ import { StringToUtf32, stringFromCodePoint, utf32ToString } from 'common/input/ import { ParserState } from 'common/parser/Constants'; import { Params } from 'common/parser/Params'; import { OscHandler } from 'common/parser/OscParser'; -import { IDisposable } from 'common/Types'; +import type { IDisposable } from 'common/Lifecycle'; import { DcsHandler } from 'common/parser/DcsParser'; import { ApcHandler } from 'common/parser/ApcParser'; diff --git a/src/common/primitives/parser/EscapeSequenceParser.ts b/src/common/primitives/parser/EscapeSequenceParser.ts index 2780d8916..1f65d23b4 100644 --- a/src/common/primitives/parser/EscapeSequenceParser.ts +++ b/src/common/primitives/parser/EscapeSequenceParser.ts @@ -5,8 +5,7 @@ import { IParsingState, IDcsHandler, IEscapeSequenceParser, IParams, IOscHandler, IHandlerCollection, CsiHandlerType, OscFallbackHandlerType, IOscParser, EscHandlerType, IDcsParser, DcsFallbackHandlerType, IFunctionIdentifier, ExecuteFallbackHandlerType, CsiFallbackHandlerType, EscFallbackHandlerType, PrintHandlerType, PrintFallbackHandlerType, ExecuteHandlerType, IParserStackState, ParserStackType, ResumableHandlersType, IApcHandler, IApcParser, ApcFallbackHandlerType } from 'common/parser/Types'; import { ParserState, ParserAction } from 'common/parser/Constants'; -import { Disposable, toDisposable } from 'common/Lifecycle'; -import { IDisposable } from 'common/Types'; +import { Disposable, toDisposable, type IDisposable } from 'common/Lifecycle'; import { Params } from 'common/parser/Params'; import { OscParser } from 'common/parser/OscParser'; import { DcsParser } from 'common/parser/DcsParser'; diff --git a/src/common/primitives/parser/OscParser.ts b/src/common/primitives/parser/OscParser.ts index 3e05f2298..bafbc8f8d 100644 --- a/src/common/primitives/parser/OscParser.ts +++ b/src/common/primitives/parser/OscParser.ts @@ -6,7 +6,7 @@ import { IOscHandler, IHandlerCollection, OscFallbackHandlerType, IOscParser, ISubParserStackState } from 'common/parser/Types'; import { OscState, ParserConstants } from 'common/parser/Constants'; import { utf32ToString } from 'common/input/TextDecoder'; -import { IDisposable } from 'common/Types'; +import type { IDisposable } from 'common/Lifecycle'; import { LimitedStringBuilder } from 'common/StringBuilder'; const EMPTY_HANDLERS: IOscHandler[] = []; diff --git a/src/common/primitives/parser/Types.ts b/src/common/primitives/parser/Types.ts index c04788f7e..635c3e688 100644 --- a/src/common/primitives/parser/Types.ts +++ b/src/common/primitives/parser/Types.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IDisposable } from 'common/Types'; +import type { IDisposable } from 'common/Lifecycle'; import { ParserState } from 'common/parser/Constants'; diff --git a/src/common/primitives/tsconfig.json b/src/common/primitives/tsconfig.json new file mode 100644 index 000000000..6d63d8481 --- /dev/null +++ b/src/common/primitives/tsconfig.json @@ -0,0 +1,33 @@ +{ + "extends": "../../tsconfig-library-base", + "compilerOptions": { + "lib": [ + "es2015", + "es2016.Array.Include", + "es2019.string", + "es2021.weakref" + ], + "composite": true, + "rootDir": ".", + "outDir": "../../../out/common/primitives", + "types": [ + "../../../node_modules/@types/mocha" + ], + "paths": { + "@xterm/xterm": ["../../../typings/xterm.d.ts"], + "common/buffer/*": ["./buffer/*"], + "common/data/*": ["./data/*"], + "common/input/*": ["./input/*"], + "common/parser/*": ["./parser/*"], + "common/*": ["./*"], + "*": ["../../*"] + } + }, + "include": [ + "./**/*", + "../../../typings/xterm.d.ts" + ], + "exclude": [ + "**/*.test.ts" + ] +} diff --git a/src/common/primitives/tsconfig.spec.json b/src/common/primitives/tsconfig.spec.json new file mode 100644 index 000000000..c75f49ca1 --- /dev/null +++ b/src/common/primitives/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "composite": false, + "noEmit": true, + "paths": { + "@xterm/xterm": ["../../../typings/xterm.d.ts"], + "common/buffer/*": ["./buffer/*"], + "common/data/*": ["./data/*"], + "common/input/*": ["./input/*"], + "common/parser/*": ["./parser/*"], + "common/services/*": ["../runtime/services/*"], + "common/TestUtils.test": ["../runtime/TestUtils.test"], + "common/Types": ["../runtime/Types"], + "common/*": ["./*", "../runtime/*"], + "*": ["../../*"] + } + }, + "include": [ + "./**/*.test.ts" + ], + "references": [ + { "path": "./tsconfig.json" }, + { "path": "../runtime" } + ] +} diff --git a/src/common/Types.ts b/src/common/runtime/Types.ts similarity index 65% rename from src/common/Types.ts rename to src/common/runtime/Types.ts index 07aebbe8f..c286d3608 100644 --- a/src/common/Types.ts +++ b/src/common/runtime/Types.ts @@ -3,13 +3,22 @@ * @license MIT */ -import { IDeleteEvent, IInsertEvent } from 'common/CircularList'; -import { UnderlineStyle } from 'common/buffer/Constants'; import { IBufferSet } from 'common/buffer/Types'; import { IParams } from 'common/parser/Types'; import { IMouseStateService, ICoreService, IOptionsService, IUnicodeService } from 'common/services/Services'; -import { IFunctionIdentifier, ITerminalOptions as IPublicTerminalOptions } from '@xterm/xterm'; -import type { Emitter, IEvent } from 'common/Event'; +import { IFunctionIdentifier } from '@xterm/xterm'; +import type { IEvent } from 'common/Event'; +import type { IDisposable } from 'common/Lifecycle'; +import type { ITerminalOptions } from 'common/TerminalOptions'; +import type { IColorRGB } from 'common/ColorTypes'; + +export type { IDeleteEvent, IInsertEvent, ICircularList } from 'common/CircularList'; +export type { IDisposable } from 'common/Lifecycle'; +export type { ITerminalOptions } from 'common/TerminalOptions'; +export * from 'common/KeyboardTypes'; +export * from 'common/buffer/CellTypes'; +export * from 'common/ColorTypes'; +export { ICharset } from 'common/data/Charsets'; export interface ICoreTerminal { mouseStateService: IMouseStateService; @@ -25,100 +34,16 @@ export interface ICoreTerminal { registerApcHandler(id: IFunctionIdentifier, callback: (data: string) => boolean | Promise): IDisposable; } -export interface IDisposable { - dispose(): void; -} - -// TODO: The options that are not in the public API should be reviewed -export interface ITerminalOptions extends IPublicTerminalOptions { - [key: string]: any; - convertEol?: boolean; - termName?: string; -} - export type CursorStyle = 'block' | 'underline' | 'bar'; export type CursorInactiveStyle = 'outline' | 'block' | 'bar' | 'underline' | 'none'; export type XtermListener = (...args: any[]) => void; -/** - * A keyboard event interface which does not depend on the DOM, KeyboardEvent implicitly extends - * this event. - */ -export interface IKeyboardEvent { - altKey: boolean; - ctrlKey: boolean; - shiftKey: boolean; - metaKey: boolean; - /** @deprecated See KeyboardEvent.keyCode */ - keyCode: number; - key: string; - type: string; - code: string; -} - export interface IScrollEvent { position: number; } -export interface ICircularList { - length: number; - maxLength: number; - isFull: boolean; - - onDeleteEmitter: Emitter; - onDelete: IEvent; - onInsertEmitter: Emitter; - onInsert: IEvent; - onTrimEmitter: Emitter; - onTrim: IEvent; - - get(index: number): T | undefined; - set(index: number, value: T): void; - push(value: T): void; - recycle(): T; - pop(): T | undefined; - splice(start: number, deleteCount: number, ...items: T[]): void; - trimStart(count: number): void; - shiftElements(start: number, count: number, offset: number): void; -} - -export const enum KeyboardResultType { - SEND_KEY, - SELECT_ALL, - PAGE_UP, - PAGE_DOWN -} - -export interface IKeyboardResult { - type: KeyboardResultType; - cancel: boolean; - key: string | undefined; -} - -export interface ICharset { - [key: string]: string | undefined; -} - -export type CharData = [attr: number, char: string, width: number, code: number]; - -export interface IColor { - readonly css: string; - readonly rgba: number; // 32-bit int with rgba in each byte -} -export type IColorRGB = [red: number, green: number, blue: number]; - -export interface IExtendedAttrs { - ext: number; - underlineStyle: UnderlineStyle; - underlineColor: number; - underlineVariantOffset: number; - urlId: number; - clone(): IExtendedAttrs; - isEmpty(): boolean; -} - /** * Tracks the current hyperlink. Since these are treated as extended attirbutes, these get passed on * to the linkifier when anything is printed. Doing it this way ensures that even when the cursor @@ -130,136 +55,6 @@ export interface IOscLinkData { uri: string; } -/** - * An object that represents all attributes of a cell. - */ -export interface IAttributeData { - /** - * "fg" is a 32-bit unsigned integer that stores the foreground color of the cell in the 24 least - * significant bits and additional flags in the remaining 8 bits. - */ - fg: number; - /** - * "bg" is a 32-bit unsigned integer that stores the background color of the cell in the 24 least - * significant bits and additional flags in the remaining 8 bits. - */ - bg: number; - /** - * "extended", aka "ext", stores extended attributes beyond those available in fg and bg. This - * data is optional on a cell and encodes less common data. - */ - extended: IExtendedAttrs; - - clone(): IAttributeData; - - // flags - isInverse(): number; - isBold(): number; - isUnderline(): number; - isBlink(): number; - isInvisible(): number; - isItalic(): number; - isDim(): number; - isStrikethrough(): number; - isProtected(): number; - isOverline(): number; - - /** - * The color mode of the foreground color which determines how to decode {@link getFgColor}, - * possible values include {@link Attributes.CM_DEFAULT}, {@link Attributes.CM_P16}, - * {@link Attributes.CM_P256} and {@link Attributes.CM_RGB}. - */ - getFgColorMode(): number; - /** - * The color mode of the background color which determines how to decode {@link getBgColor}, - * possible values include {@link Attributes.CM_DEFAULT}, {@link Attributes.CM_P16}, - * {@link Attributes.CM_P256} and {@link Attributes.CM_RGB}. - */ - getBgColorMode(): number; - isFgRGB(): boolean; - isBgRGB(): boolean; - isFgPalette(): boolean; - isBgPalette(): boolean; - isFgDefault(): boolean; - isBgDefault(): boolean; - isAttributeDefault(): boolean; - - /** - * Gets an integer representation of the foreground color, how to decode the color depends on the - * color mode {@link getFgColorMode}. - */ - getFgColor(): number; - /** - * Gets an integer representation of the background color, how to decode the color depends on the - * color mode {@link getBgColorMode}. - */ - getBgColor(): number; - - // extended attrs - hasExtendedAttrs(): number; - updateExtended(): void; - getUnderlineColor(): number; - getUnderlineColorMode(): number; - isUnderlineColorRGB(): boolean; - isUnderlineColorPalette(): boolean; - isUnderlineColorDefault(): boolean; - getUnderlineStyle(): number; - getUnderlineVariantOffset(): number; -} - -/** Cell data */ -export interface ICellData extends IAttributeData { - content: number; - combinedData: string; - isCombined(): number; - getWidth(): number; - getChars(): string; - getCode(): number; - setFromCharData(value: CharData): void; - getAsCharData(): CharData; -} - -/** - * Interface for a line in the terminal buffer. - */ -export interface IBufferLine { - length: number; - isWrapped: boolean; - get(index: number): CharData; - set(index: number, value: CharData): void; - loadCell(index: number, cell: ICellData): ICellData; - setCell(index: number, cell: ICellData): void; - setCellFromCodepoint(index: number, codePoint: number, width: number, attrs: IAttributeData): void; - addCodepointToCell(index: number, codePoint: number, width: number): void; - insertCells(pos: number, n: number, ch: ICellData): void; - deleteCells(pos: number, n: number, fill: ICellData): void; - replaceCells(start: number, end: number, fill: ICellData, respectProtect?: boolean): void; - resize(cols: number, fill: ICellData): boolean; - cleanupMemory(): number; - fill(fillCellData: ICellData, respectProtect?: boolean): void; - copyFrom(line: IBufferLine): void; - clone(): IBufferLine; - getTrimmedLength(): number; - getNoBgTrimmedLength(): number; - translateToString(trimRight?: boolean, startCol?: number, endCol?: number, outColumns?: number[]): string; - - /* direct access to cell attrs */ - getWidth(index: number): number; - hasWidth(index: number): number; - getFg(index: number): number; - getBg(index: number): number; - hasContent(index: number): number; - getCodePoint(index: number): number; - isCombined(index: number): number; - getString(index: number): string; -} - -export interface IMarker extends IDisposable { - readonly id: number; - readonly isDisposed: boolean; - readonly line: number; - onDispose: IEvent; -} export interface IModes { insertMode: boolean; } diff --git a/src/common/runtime/services/Services.ts b/src/common/runtime/services/Services.ts index fa1c4412f..6af5a1e2b 100644 --- a/src/common/runtime/services/Services.ts +++ b/src/common/runtime/services/Services.ts @@ -4,34 +4,15 @@ */ import type { IDecoration, IDecorationOptions, ILinkHandler, ILogger, IWindowsPty, IOverviewRulerOptions } from '@xterm/xterm'; -import { CoreMouseEncoding, CoreMouseEventType, CursorInactiveStyle, CursorStyle, IAttributeData, ICharset, IColor, ICoreMouseEvent, ICoreMouseProtocol, IDecPrivateModes, IDisposable, IKittyKeyboardState, IModes, IOscLinkData, IWindowOptions } from 'common/Types'; -import { IBuffer, IBufferSet } from 'common/buffer/Types'; +import { CoreMouseEncoding, CoreMouseEventType, CursorInactiveStyle, CursorStyle, ICharset, IColor, ICoreMouseEvent, ICoreMouseProtocol, IDecPrivateModes, IDisposable, IKittyKeyboardState, IModes, IOscLinkData, IWindowOptions } from 'common/Types'; +import type { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/input/UnicodeTypes'; import { createDecorator } from 'common/services/ServiceRegistry'; import type { Emitter, IEvent } from 'common/Event'; -export const IBufferService = createDecorator('BufferService'); -export interface IBufferService { - serviceBrand: undefined; - - readonly cols: number; - readonly rows: number; - readonly buffer: IBuffer; - readonly buffers: IBufferSet; - isUserScrolling: boolean; - onResize: IEvent; - onScroll: IEvent; - scroll(eraseAttr: IAttributeData, isWrapped?: boolean): void; - scrollLines(disp: number, suppressScrollEvent?: boolean): void; - resize(cols: number, rows: number): void; - reset(): void; -} - -export interface IBufferResizeEvent { - cols: number; - rows: number; - colsChanged: boolean; - rowsChanged: boolean; -} +import type { IBufferService as IBufferServiceModel, IBufferResizeEvent as IBufferResizeEventModel } from 'common/buffer/BufferService'; +export type IBufferService = IBufferServiceModel; +export type IBufferResizeEvent = IBufferResizeEventModel; +export const IBufferService = createDecorator('BufferService'); export const IMouseStateService = createDecorator('MouseStateService'); export interface IMouseStateService { @@ -324,28 +305,7 @@ export interface IOscLinkService { getLinkData(linkId: number): IOscLinkData | undefined; } -/* - * Width and Grapheme_Cluster_Break properties of a character as a bit mask. - * - * bit 0: shouldJoin - should combine with preceding character. - * bit 1..2: wcwidth - see UnicodeCharWidth. - * bit 3..31: class of character (currently only 4 bits are used). - * This is used to determined grapheme clustering - i.e. which codepoints - * are to be combined into a single compound character. - * - * Use the UnicodeService static function createPropertyValue to create a - * UnicodeCharProperties; use extractShouldJoin, extractWidth, and - * extractCharKind to extract the components. - */ -export type UnicodeCharProperties = number; - -/** - * Width in columns of a character. - * In a CJK context, "half-width" characters (such as Latin) are width 1, - * while "full-width" characters (such as Kanji) are 2 columns wide. - * Combining characters (such as accents) are width 0. - */ -export type UnicodeCharWidth = 0 | 1 | 2; +export type { UnicodeCharProperties, UnicodeCharWidth, IUnicodeVersionProvider } from 'common/input/UnicodeTypes'; export const IUnicodeService = createDecorator('UnicodeService'); export interface IUnicodeService { @@ -372,12 +332,6 @@ export interface IUnicodeService { charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; } -export interface IUnicodeVersionProvider { - readonly version: string; - wcwidth(ucs: number): UnicodeCharWidth; - charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; -} - export const IDecorationService = createDecorator('DecorationService'); export interface IDecorationService extends IDisposable { serviceBrand: undefined; diff --git a/src/common/runtime/services/UnicodeService.ts b/src/common/runtime/services/UnicodeService.ts index d0dd8584d..69533b3e5 100644 --- a/src/common/runtime/services/UnicodeService.ts +++ b/src/common/runtime/services/UnicodeService.ts @@ -4,6 +4,7 @@ */ import { UnicodeV6 } from 'common/input/UnicodeV6'; +import { createPropertyValue, extractCharKind, extractShouldJoin, extractWidth } from 'common/input/UnicodeProperties'; import { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; import { Emitter } from 'common/Event'; @@ -17,18 +18,10 @@ export class UnicodeService implements IUnicodeService { private readonly _onChange = new Emitter(); public readonly onChange = this._onChange.event; - public static extractShouldJoin(value: UnicodeCharProperties): boolean { - return (value & 1) !== 0; - } - public static extractWidth(value: UnicodeCharProperties): UnicodeCharWidth { - return ((value >> 1) & 0x3) as UnicodeCharWidth; - } - public static extractCharKind(value: UnicodeCharProperties): number { - return value >> 3; - } - public static createPropertyValue(state: number, width: number, shouldJoin: boolean = false): UnicodeCharProperties { - return ((state & 0xffffff) << 3) | ((width & 3) << 1) | (shouldJoin?1:0); - } + public static extractShouldJoin = extractShouldJoin; + public static extractWidth = extractWidth; + public static extractCharKind = extractCharKind; + public static createPropertyValue = createPropertyValue; constructor() { const defaultProvider = new UnicodeV6(); diff --git a/src/common/runtime/tsconfig.json b/src/common/runtime/tsconfig.json new file mode 100644 index 000000000..a9886139b --- /dev/null +++ b/src/common/runtime/tsconfig.json @@ -0,0 +1,39 @@ +{ + "extends": "../../tsconfig-library-base", + "compilerOptions": { + "lib": [ + "es2015", + "es2016.Array.Include", + "es2019.string", + "es2021.weakref" + ], + "composite": true, + "rootDir": ".", + "outDir": "../../../out/common/runtime", + "types": [ + "../../../node_modules/@types/mocha" + ], + "paths": { + "@xterm/xterm": ["../../../typings/xterm.d.ts"], + "common/buffer/*": ["../primitives/buffer/*"], + "common/data/*": ["../primitives/data/*"], + "common/input/*": ["../primitives/input/*"], + "common/parser/*": ["../primitives/parser/*"], + "common/services/*": ["./services/*"], + "common/public/*": ["./public/*"], + "common/Types": ["./Types"], + "common/*": ["../primitives/*", "./*"], + "*": ["../../*"] + } + }, + "include": [ + "./**/*", + "../../../typings/xterm.d.ts" + ], + "exclude": [ + "**/*.test.ts" + ], + "references": [ + { "path": "../primitives" } + ] +} diff --git a/src/common/tsconfig.json b/src/common/tsconfig.json index 6e7a526b7..0915b26bb 100644 --- a/src/common/tsconfig.json +++ b/src/common/tsconfig.json @@ -1,29 +1,8 @@ { "extends": "../tsconfig-library-base", - "compilerOptions": { - "lib": [ - "es2015", - "es2016.Array.Include", - "es2019.string", - "es2021.weakref" - ], - "outDir": "../../out", - "types": [ - "../../node_modules/@types/mocha" - ], - "paths": { - "common/*": [ - "./primitives/*", - "./runtime/*", - "./*" - ], - "*": [ "./../*" ] - } - }, - "include": [ - "./primitives/**/*", - "./runtime/**/*", - "./*.ts", - "../../typings/xterm.d.ts" + "files": [], + "references": [ + { "path": "./primitives" }, + { "path": "./runtime" } ] } diff --git a/src/browser/AccessibilityManager.ts b/src/target-browser/AccessibilityManager.ts similarity index 97% rename from src/browser/AccessibilityManager.ts rename to src/target-browser/AccessibilityManager.ts index 6fc421337..edca7344c 100644 --- a/src/browser/AccessibilityManager.ts +++ b/src/target-browser/AccessibilityManager.ts @@ -3,14 +3,14 @@ * @license MIT */ -import * as Strings from 'browser/LocalizableStrings'; -import { ITerminal, IRenderDebouncer } from 'browser/Types'; -import { TimeBasedDebouncer } from 'browser/TimeBasedDebouncer'; +import * as Strings from 'target-browser/LocalizableStrings'; +import { ITerminal, IRenderDebouncer } from 'target-browser/Types'; +import { TimeBasedDebouncer } from 'target-browser/TimeBasedDebouncer'; import { Disposable, toDisposable } from 'common/Lifecycle'; -import { ICoreBrowserService, IRenderService } from 'browser/services/Services'; +import { ICoreBrowserService, IRenderService } from 'target-browser/services/Services'; import { IBuffer } from 'common/buffer/Types'; import { IInstantiationService } from 'common/services/Services'; -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; const enum Constants { MAX_ROWS_TO_READ = 20 diff --git a/src/browser/Clipboard.test.ts b/src/target-browser/Clipboard.test.ts similarity index 96% rename from src/browser/Clipboard.test.ts rename to src/target-browser/Clipboard.test.ts index 2028504ec..8c2851aa8 100644 --- a/src/browser/Clipboard.test.ts +++ b/src/target-browser/Clipboard.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import * as Clipboard from 'browser/Clipboard'; +import * as Clipboard from 'target-browser/Clipboard'; describe('evaluatePastedTextProcessing', () => { it('should replace carriage return and/or line feed with carriage return', () => { diff --git a/src/browser/Clipboard.ts b/src/target-browser/Clipboard.ts similarity index 98% rename from src/browser/Clipboard.ts rename to src/target-browser/Clipboard.ts index aaf8a48e4..07f5460a6 100644 --- a/src/browser/Clipboard.ts +++ b/src/target-browser/Clipboard.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { ISelectionService } from 'browser/services/Services'; +import { ISelectionService } from 'target-browser/services/Services'; import { ICoreService, IOptionsService } from 'common/services/Services'; /** diff --git a/src/browser/ColorContrastCache.test.ts b/src/target-browser/ColorContrastCache.test.ts similarity index 95% rename from src/browser/ColorContrastCache.test.ts rename to src/target-browser/ColorContrastCache.test.ts index 17e5df383..28b44fea5 100644 --- a/src/browser/ColorContrastCache.test.ts +++ b/src/target-browser/ColorContrastCache.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { ColorContrastCache } from 'browser/ColorContrastCache'; +import { ColorContrastCache } from 'target-browser/ColorContrastCache'; describe('ColorContrastCache', () => { let cache: ColorContrastCache; diff --git a/src/browser/ColorContrastCache.ts b/src/target-browser/ColorContrastCache.ts similarity index 94% rename from src/browser/ColorContrastCache.ts rename to src/target-browser/ColorContrastCache.ts index 0c60e8db4..4a6e28bb8 100644 --- a/src/browser/ColorContrastCache.ts +++ b/src/target-browser/ColorContrastCache.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IColorContrastCache } from 'browser/Types'; +import { IColorContrastCache } from 'target-browser/Types'; import { IColor } from 'common/Types'; import { TwoKeyMap } from 'common/MultiKeyMap'; diff --git a/src/browser/CoreBrowserTerminal.ts b/src/target-browser/CoreBrowserTerminal.ts similarity index 96% rename from src/browser/CoreBrowserTerminal.ts rename to src/target-browser/CoreBrowserTerminal.ts index 8f1d31223..d0649716a 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/target-browser/CoreBrowserTerminal.ts @@ -22,27 +22,27 @@ */ import { IDecoration, IDecorationOptions, IDisposable, ILinkProvider, IMarker, IRenderDimensions as IRenderDimensionsApi } from '@xterm/xterm'; -import { copyHandler, handlePasteEvent, moveTextAreaUnderMouseCursor, paste, rightClickHandler } from 'browser/Clipboard'; -import * as Strings from 'browser/LocalizableStrings'; -import { OscLinkProvider } from 'browser/OscLinkProvider'; -import { CharacterJoinerHandler, CustomKeyEventHandler, CustomWheelEventHandler, IBrowser, IBufferRange, ICompositionHelper, ILinkifier2, ITerminal } from 'browser/Types'; -import { Viewport } from 'browser/Viewport'; -import { BufferDecorationRenderer } from 'browser/decorations/BufferDecorationRenderer'; -import { OverviewRulerRenderer } from 'browser/decorations/OverviewRulerRenderer'; -import { CompositionHelper } from 'browser/input/CompositionHelper'; -import { DomRenderer } from 'browser/renderer/dom/DomRenderer'; -import { IRenderer } from 'browser/renderer/shared/Types'; -import { CharSizeService } from 'browser/services/CharSizeService'; -import { CharacterJoinerService } from 'browser/services/CharacterJoinerService'; -import { CoreBrowserService } from 'browser/services/CoreBrowserService'; -import { LinkProviderService } from 'browser/services/LinkProviderService'; -import { MouseCoordsService } from 'browser/services/MouseCoordsService'; -import { MouseEventCssClasses, MouseService } from 'browser/services/MouseService'; -import { RenderService } from 'browser/services/RenderService'; -import { SelectionService } from 'browser/services/SelectionService'; -import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IKeyboardService, ILinkProviderService, IMouseCoordsService, IMouseService, IRenderService, ISelectionService, IThemeService } from 'browser/services/Services'; -import { ThemeService } from 'browser/services/ThemeService'; -import { KeyboardService } from 'browser/services/KeyboardService'; +import { copyHandler, handlePasteEvent, moveTextAreaUnderMouseCursor, paste, rightClickHandler } from 'target-browser/Clipboard'; +import * as Strings from 'target-browser/LocalizableStrings'; +import { OscLinkProvider } from 'target-browser/OscLinkProvider'; +import { CharacterJoinerHandler, CustomKeyEventHandler, CustomWheelEventHandler, IBrowser, IBufferRange, ICompositionHelper, ILinkifier2, ITerminal } from 'target-browser/Types'; +import { Viewport } from 'target-browser/Viewport'; +import { BufferDecorationRenderer } from 'target-browser/decorations/BufferDecorationRenderer'; +import { OverviewRulerRenderer } from 'target-browser/decorations/OverviewRulerRenderer'; +import { CompositionHelper } from 'target-browser/input/CompositionHelper'; +import { DomRenderer } from 'target-browser/renderer/dom/DomRenderer'; +import { IRenderer } from 'target-browser/renderer/shared/Types'; +import { CharSizeService } from 'target-browser/services/CharSizeService'; +import { CharacterJoinerService } from 'target-browser/services/CharacterJoinerService'; +import { CoreBrowserService } from 'target-browser/services/CoreBrowserService'; +import { LinkProviderService } from 'target-browser/services/LinkProviderService'; +import { MouseCoordsService } from 'target-browser/services/MouseCoordsService'; +import { MouseEventCssClasses, MouseService } from 'target-browser/services/MouseService'; +import { RenderService } from 'target-browser/services/RenderService'; +import { SelectionService } from 'target-browser/services/SelectionService'; +import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IKeyboardService, ILinkProviderService, IMouseCoordsService, IMouseService, IRenderService, ISelectionService, IThemeService } from 'target-browser/services/Services'; +import { ThemeService } from 'target-browser/services/ThemeService'; +import { KeyboardService } from 'target-browser/services/KeyboardService'; import { channels, color, rgb } from 'common/Color'; import { CoreTerminal } from 'common/CoreTerminal'; import * as Browser from 'common/Platform'; @@ -57,7 +57,7 @@ import { WindowsOptionsReportType } from 'common/InputHandler'; import { AccessibilityManager } from './AccessibilityManager'; import { Linkifier } from './Linkifier'; import { Emitter, EventUtils, type IEvent } from 'common/Event'; -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; import { MutableDisposable, toDisposable } from 'common/Lifecycle'; export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { diff --git a/src/browser/Dom.ts b/src/target-browser/Dom.ts similarity index 100% rename from src/browser/Dom.ts rename to src/target-browser/Dom.ts diff --git a/src/browser/Linkifier.test.ts b/src/target-browser/Linkifier.test.ts similarity index 96% rename from src/browser/Linkifier.test.ts rename to src/target-browser/Linkifier.test.ts index 685c404f4..1ac18ff67 100644 --- a/src/browser/Linkifier.test.ts +++ b/src/target-browser/Linkifier.test.ts @@ -7,8 +7,8 @@ import { assert } from 'chai'; import { IBufferService } from 'common/services/Services'; import { Linkifier } from './Linkifier'; import { MockBufferService } from 'common/TestUtils.test'; -import { ILink } from 'browser/Types'; -import { LinkProviderService } from 'browser/services/LinkProviderService'; +import { ILink } from 'target-browser/Types'; +import { LinkProviderService } from 'target-browser/services/LinkProviderService'; import jsdom = require('jsdom'); class TestLinkifier2 extends Linkifier { diff --git a/src/browser/Linkifier.ts b/src/target-browser/Linkifier.ts similarity index 99% rename from src/browser/Linkifier.ts rename to src/target-browser/Linkifier.ts index 31c91daee..76f6968d9 100644 --- a/src/browser/Linkifier.ts +++ b/src/target-browser/Linkifier.ts @@ -3,13 +3,13 @@ * @license MIT */ -import { IBufferCellPosition, ILink, ILinkDecorations, ILinkWithState, ILinkifier2, ILinkifierEvent } from 'browser/Types'; +import { IBufferCellPosition, ILink, ILinkDecorations, ILinkWithState, ILinkifier2, ILinkifierEvent } from 'target-browser/Types'; import { Disposable, dispose, toDisposable } from 'common/Lifecycle'; import { IDisposable } from 'common/Types'; import { IBufferService } from 'common/services/Services'; import { ILinkProviderService, IMouseCoordsService, IRenderService } from './services/Services'; import { Emitter } from 'common/Event'; -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; export class Linkifier extends Disposable implements ILinkifier2 { public get currentLink(): ILinkWithState | undefined { return this._currentLink; } diff --git a/src/browser/LocalizableStrings.ts b/src/target-browser/LocalizableStrings.ts similarity index 100% rename from src/browser/LocalizableStrings.ts rename to src/target-browser/LocalizableStrings.ts diff --git a/src/browser/OscLinkProvider.test.ts b/src/target-browser/OscLinkProvider.test.ts similarity index 96% rename from src/browser/OscLinkProvider.test.ts rename to src/target-browser/OscLinkProvider.test.ts index 9e844cd16..41e45fe1d 100644 --- a/src/browser/OscLinkProvider.test.ts +++ b/src/target-browser/OscLinkProvider.test.ts @@ -4,8 +4,8 @@ */ import { assert } from 'chai'; -import { OscLinkProvider } from 'browser/OscLinkProvider'; -import { ILink } from 'browser/Types'; +import { OscLinkProvider } from 'target-browser/OscLinkProvider'; +import { ILink } from 'target-browser/Types'; import { createCellData, MockBufferService, MockOptionsService } from 'common/TestUtils.test'; import { IBufferService, IOscLinkService } from 'common/services/Services'; import { IBufferLine, IOscLinkData } from 'common/Types'; diff --git a/src/browser/OscLinkProvider.ts b/src/target-browser/OscLinkProvider.ts similarity index 98% rename from src/browser/OscLinkProvider.ts rename to src/target-browser/OscLinkProvider.ts index d01a20b35..5a7000474 100644 --- a/src/browser/OscLinkProvider.ts +++ b/src/target-browser/OscLinkProvider.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { IBufferRange, ILink } from 'browser/Types'; -import { ILinkProvider } from 'browser/services/Services'; +import { IBufferRange, ILink } from 'target-browser/Types'; +import { ILinkProvider } from 'target-browser/services/Services'; import { CellData } from 'common/buffer/CellData'; import { IBufferLine } from 'common/Types'; import { IBufferService, IOptionsService, IOscLinkService } from 'common/services/Services'; diff --git a/src/browser/RenderDebouncer.ts b/src/target-browser/RenderDebouncer.ts similarity index 94% rename from src/browser/RenderDebouncer.ts rename to src/target-browser/RenderDebouncer.ts index c7ddb6cec..093bb5fca 100644 --- a/src/browser/RenderDebouncer.ts +++ b/src/target-browser/RenderDebouncer.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { IRenderDebouncerWithCallback } from 'browser/Types'; -import { ICoreBrowserService } from 'browser/services/Services'; +import { IRenderDebouncerWithCallback } from 'target-browser/Types'; +import { ICoreBrowserService } from 'target-browser/services/Services'; /** * Debounces calls to render terminal rows using animation frames. diff --git a/src/browser/Terminal.test.ts b/src/target-browser/Terminal.test.ts similarity index 99% rename from src/browser/Terminal.test.ts rename to src/target-browser/Terminal.test.ts index d359fa28c..bc69a987a 100644 --- a/src/browser/Terminal.test.ts +++ b/src/target-browser/Terminal.test.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { MockCompositionHelper, MockRenderer, MockViewport, TestTerminal } from 'browser/TestUtils.test'; -import type { IBrowser } from 'browser/Types'; +import { MockCompositionHelper, MockRenderer, MockViewport, TestTerminal } from 'target-browser/TestUtils.test'; +import type { IBrowser } from 'target-browser/Types'; import { assert } from 'chai'; import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { CellData } from 'common/buffer/CellData'; diff --git a/src/browser/Terminal2.test.ts b/src/target-browser/Terminal2.test.ts similarity index 98% rename from src/browser/Terminal2.test.ts rename to src/target-browser/Terminal2.test.ts index 270b2e871..d2d308fd1 100644 --- a/src/browser/Terminal2.test.ts +++ b/src/target-browser/Terminal2.test.ts @@ -7,7 +7,7 @@ import * as path from 'path'; import * as os from 'os'; import * as fs from 'fs'; import * as pty from 'node-pty'; -import { CoreBrowserTerminal } from 'browser/CoreBrowserTerminal'; +import { CoreBrowserTerminal } from 'target-browser/CoreBrowserTerminal'; import { IDisposable } from '@xterm/xterm'; // all test files expect terminal in 80x25 diff --git a/src/browser/TestUtils.test.ts b/src/target-browser/TestUtils.test.ts similarity index 98% rename from src/browser/TestUtils.test.ts rename to src/target-browser/TestUtils.test.ts index 65a18da72..b79c6289b 100644 --- a/src/browser/TestUtils.test.ts +++ b/src/target-browser/TestUtils.test.ts @@ -4,20 +4,20 @@ */ import { IDisposable, IMarker, ILinkProvider, IDecorationOptions, IDecoration, IRenderDimensions as IRenderDimensionsApi } from '@xterm/xterm'; -import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IMouseService, IRenderService, ISelectionService, IThemeService } from 'browser/services/Services'; -import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'browser/renderer/shared/Types'; -import { IColorSet, ITerminal, ILinkifier2, IBrowser, IViewport, ICompositionHelper, CharacterJoinerHandler, IBufferRange, ReadonlyColorSet, IBufferElementProvider } from 'browser/Types'; +import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IMouseService, IRenderService, ISelectionService, IThemeService } from 'target-browser/services/Services'; +import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'target-browser/renderer/shared/Types'; +import { IColorSet, ITerminal, ILinkifier2, IBrowser, IViewport, ICompositionHelper, CharacterJoinerHandler, IBufferRange, ReadonlyColorSet, IBufferElementProvider } from 'target-browser/Types'; import { IBuffer, IBufferSet } from 'common/buffer/Types'; import { IBufferLine, ICellData, IAttributeData, ICircularList, XtermListener, ICharset, ITerminalOptions, ColorIndex } from 'common/Types'; import { Buffer } from 'common/buffer/Buffer'; import * as Browser from 'common/Platform'; -import { CoreBrowserTerminal } from 'browser/CoreBrowserTerminal'; +import { CoreBrowserTerminal } from 'target-browser/CoreBrowserTerminal'; import { IUnicodeService, IOptionsService, ICoreService, IMouseStateService } from 'common/services/Services'; import { IFunctionIdentifier, IParams } from 'common/parser/Types'; import { AttributeData } from 'common/buffer/AttributeData'; -import { ISelectionRedrawRequestEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types'; +import { ISelectionRedrawRequestEvent, ISelectionRequestScrollLinesEvent } from 'target-browser/selection/Types'; import { css } from 'common/Color'; -import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; +import { createRenderDimensions } from 'target-browser/renderer/shared/RendererUtils'; import { Emitter, type IEvent } from 'common/Event'; export class TestTerminal extends CoreBrowserTerminal { diff --git a/src/browser/TimeBasedDebouncer.ts b/src/target-browser/TimeBasedDebouncer.ts similarity index 98% rename from src/browser/TimeBasedDebouncer.ts rename to src/target-browser/TimeBasedDebouncer.ts index 997312901..2e36045d8 100644 --- a/src/browser/TimeBasedDebouncer.ts +++ b/src/target-browser/TimeBasedDebouncer.ts @@ -5,7 +5,7 @@ const RENDER_DEBOUNCE_THRESHOLD_MS = 1000; // 1 Second -import { IRenderDebouncer } from 'browser/Types'; +import { IRenderDebouncer } from 'target-browser/Types'; /** * Debounces calls to update screen readers to update at most once configurable interval of time. diff --git a/src/browser/Types.ts b/src/target-browser/Types.ts similarity index 100% rename from src/browser/Types.ts rename to src/target-browser/Types.ts diff --git a/src/browser/Viewport.ts b/src/target-browser/Viewport.ts similarity index 95% rename from src/browser/Viewport.ts rename to src/target-browser/Viewport.ts index 3b6ae8301..728311385 100644 --- a/src/browser/Viewport.ts +++ b/src/target-browser/Viewport.ts @@ -3,16 +3,16 @@ * @license MIT */ -import { ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; -import { ViewportConstants } from 'browser/shared/Constants'; +import { ICoreBrowserService, IRenderService, IThemeService } from 'target-browser/services/Services'; +import { ViewportConstants } from 'target-browser/shared/Constants'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IBufferService, ICoreService, IMouseStateService, IOptionsService } from 'common/services/Services'; import { CoreMouseEventType } from 'common/Types'; -import { scheduleAtNextAnimationFrame } from 'browser/Dom'; -import { SmoothScrollableElement } from 'browser/scrollable/scrollableElement'; -import type { IScrollableElementChangeOptions } from 'browser/scrollable/scrollableElementOptions'; +import { scheduleAtNextAnimationFrame } from 'target-browser/Dom'; +import { SmoothScrollableElement } from 'target-browser/scrollable/scrollableElement'; +import type { IScrollableElementChangeOptions } from 'target-browser/scrollable/scrollableElementOptions'; import { Emitter, EventUtils } from 'common/Event'; -import { Scrollable, ScrollbarVisibility, type IScrollEvent } from 'browser/scrollable/scrollable'; +import { Scrollable, ScrollbarVisibility, type IScrollEvent } from 'target-browser/scrollable/scrollable'; export class Viewport extends Disposable { diff --git a/src/browser/decorations/BufferDecorationRenderer.ts b/src/target-browser/decorations/BufferDecorationRenderer.ts similarity index 98% rename from src/browser/decorations/BufferDecorationRenderer.ts rename to src/target-browser/decorations/BufferDecorationRenderer.ts index e374af260..77eda4c55 100644 --- a/src/browser/decorations/BufferDecorationRenderer.ts +++ b/src/target-browser/decorations/BufferDecorationRenderer.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ICoreBrowserService, IRenderService } from 'browser/services/Services'; +import { ICoreBrowserService, IRenderService } from 'target-browser/services/Services'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IBufferService, IDecorationService, IInternalDecoration } from 'common/services/Services'; diff --git a/src/browser/decorations/ColorZoneStore.test.ts b/src/target-browser/decorations/ColorZoneStore.test.ts similarity index 95% rename from src/browser/decorations/ColorZoneStore.test.ts rename to src/target-browser/decorations/ColorZoneStore.test.ts index 4759e3c8b..76239e656 100644 --- a/src/browser/decorations/ColorZoneStore.test.ts +++ b/src/target-browser/decorations/ColorZoneStore.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { ColorZoneStore } from 'browser/decorations/ColorZoneStore'; +import { ColorZoneStore } from 'target-browser/decorations/ColorZoneStore'; const optionsRedFull = { overviewRulerOptions: { diff --git a/src/browser/decorations/ColorZoneStore.ts b/src/target-browser/decorations/ColorZoneStore.ts similarity index 100% rename from src/browser/decorations/ColorZoneStore.ts rename to src/target-browser/decorations/ColorZoneStore.ts diff --git a/src/browser/decorations/OverviewRulerRenderer.ts b/src/target-browser/decorations/OverviewRulerRenderer.ts similarity index 98% rename from src/browser/decorations/OverviewRulerRenderer.ts rename to src/target-browser/decorations/OverviewRulerRenderer.ts index b28b25965..1ea1bfea0 100644 --- a/src/browser/decorations/OverviewRulerRenderer.ts +++ b/src/target-browser/decorations/OverviewRulerRenderer.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ColorZoneStore, IColorZone, IColorZoneStore } from 'browser/decorations/ColorZoneStore'; -import { ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; +import { ColorZoneStore, IColorZone, IColorZoneStore } from 'target-browser/decorations/ColorZoneStore'; +import { ICoreBrowserService, IRenderService, IThemeService } from 'target-browser/services/Services'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services'; diff --git a/src/browser/input/CompositionHelper.test.ts b/src/target-browser/input/CompositionHelper.test.ts similarity index 98% rename from src/browser/input/CompositionHelper.test.ts rename to src/target-browser/input/CompositionHelper.test.ts index 94b5841af..2a3adf19e 100644 --- a/src/browser/input/CompositionHelper.test.ts +++ b/src/target-browser/input/CompositionHelper.test.ts @@ -4,8 +4,8 @@ */ import { assert } from 'chai'; -import { CompositionHelper } from 'browser/input/CompositionHelper'; -import { MockRenderService } from 'browser/TestUtils.test'; +import { CompositionHelper } from 'target-browser/input/CompositionHelper'; +import { MockRenderService } from 'target-browser/TestUtils.test'; import { MockCoreService, MockBufferService, MockOptionsService } from 'common/TestUtils.test'; describe('CompositionHelper', () => { diff --git a/src/browser/input/CompositionHelper.ts b/src/target-browser/input/CompositionHelper.ts similarity index 99% rename from src/browser/input/CompositionHelper.ts rename to src/target-browser/input/CompositionHelper.ts index 283874139..fafa9ce95 100644 --- a/src/browser/input/CompositionHelper.ts +++ b/src/target-browser/input/CompositionHelper.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IRenderService } from 'browser/services/Services'; +import { IRenderService } from 'target-browser/services/Services'; import { IBufferService, ICoreService, IOptionsService } from 'common/services/Services'; import { C0 } from 'common/data/EscapeSequences'; diff --git a/src/browser/input/Mouse.test.ts b/src/target-browser/input/Mouse.test.ts similarity index 97% rename from src/browser/input/Mouse.test.ts rename to src/target-browser/input/Mouse.test.ts index 002603612..1291072ea 100644 --- a/src/browser/input/Mouse.test.ts +++ b/src/target-browser/input/Mouse.test.ts @@ -5,7 +5,7 @@ import jsdom = require('jsdom'); import { assert } from 'chai'; -import { getCoords } from 'browser/input/Mouse'; +import { getCoords } from 'target-browser/input/Mouse'; const CHAR_WIDTH = 10; const CHAR_HEIGHT = 20; diff --git a/src/browser/input/Mouse.ts b/src/target-browser/input/Mouse.ts similarity index 100% rename from src/browser/input/Mouse.ts rename to src/target-browser/input/Mouse.ts diff --git a/src/browser/input/MoveToCell.test.ts b/src/target-browser/input/MoveToCell.test.ts similarity index 100% rename from src/browser/input/MoveToCell.test.ts rename to src/target-browser/input/MoveToCell.test.ts diff --git a/src/browser/input/MoveToCell.ts b/src/target-browser/input/MoveToCell.ts similarity index 100% rename from src/browser/input/MoveToCell.ts rename to src/target-browser/input/MoveToCell.ts diff --git a/src/browser/public/Terminal.ts b/src/target-browser/public/Terminal.ts similarity index 97% rename from src/browser/public/Terminal.ts rename to src/target-browser/public/Terminal.ts index 75aada048..6bfc539d8 100644 --- a/src/browser/public/Terminal.ts +++ b/src/target-browser/public/Terminal.ts @@ -3,9 +3,9 @@ * @license MIT */ -import * as Strings from 'browser/LocalizableStrings'; -import { CoreBrowserTerminal as TerminalCore } from 'browser/CoreBrowserTerminal'; -import { IBufferRange, ITerminal } from 'browser/Types'; +import * as Strings from 'target-browser/LocalizableStrings'; +import { CoreBrowserTerminal as TerminalCore } from 'target-browser/CoreBrowserTerminal'; +import { IBufferRange, ITerminal } from 'target-browser/Types'; import { Disposable } from 'common/Lifecycle'; import { ITerminalOptions } from 'common/Types'; import { AddonManager } from 'common/public/AddonManager'; diff --git a/src/browser/renderer/dom/DomRenderer.ts b/src/target-browser/renderer/dom/DomRenderer.ts similarity index 97% rename from src/browser/renderer/dom/DomRenderer.ts rename to src/target-browser/renderer/dom/DomRenderer.ts index 6f873af7b..c48572e06 100644 --- a/src/browser/renderer/dom/DomRenderer.ts +++ b/src/target-browser/renderer/dom/DomRenderer.ts @@ -3,20 +3,20 @@ * @license MIT */ -import { DomRendererRowFactory, RowCss } from 'browser/renderer/dom/DomRendererRowFactory'; -import { WidthCache } from 'browser/renderer/dom/WidthCache'; -import { INVERTED_DEFAULT_COLOR, RendererConstants } from 'browser/renderer/shared/Constants'; -import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; -import { createSelectionRenderModel } from 'browser/renderer/shared/SelectionRenderModel'; -import { TextBlinkStateManager } from 'browser/renderer/shared/TextBlinkStateManager'; -import { IRenderDimensions, IRenderer, IRequestRedrawEvent, ISelectionRenderModel } from 'browser/renderer/shared/Types'; -import { ICharSizeService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { ILinkifier2, ILinkifierEvent, ITerminal, ReadonlyColorSet } from 'browser/Types'; +import { DomRendererRowFactory, RowCss } from 'target-browser/renderer/dom/DomRendererRowFactory'; +import { WidthCache } from 'target-browser/renderer/dom/WidthCache'; +import { INVERTED_DEFAULT_COLOR, RendererConstants } from 'target-browser/renderer/shared/Constants'; +import { createRenderDimensions } from 'target-browser/renderer/shared/RendererUtils'; +import { createSelectionRenderModel } from 'target-browser/renderer/shared/SelectionRenderModel'; +import { TextBlinkStateManager } from 'target-browser/renderer/shared/TextBlinkStateManager'; +import { IRenderDimensions, IRenderer, IRequestRedrawEvent, ISelectionRenderModel } from 'target-browser/renderer/shared/Types'; +import { ICharSizeService, ICoreBrowserService, IThemeService } from 'target-browser/services/Services'; +import { ILinkifier2, ILinkifierEvent, ITerminal, ReadonlyColorSet } from 'target-browser/Types'; import { color } from 'common/Color'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IBufferService, ICoreService, IInstantiationService, IOptionsService } from 'common/services/Services'; import { Emitter } from 'common/Event'; -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; const enum Constants { diff --git a/src/browser/renderer/dom/DomRendererRowFactory.test.ts b/src/target-browser/renderer/dom/DomRendererRowFactory.test.ts similarity index 99% rename from src/browser/renderer/dom/DomRendererRowFactory.test.ts rename to src/target-browser/renderer/dom/DomRendererRowFactory.test.ts index 6ca84569a..d2853e83e 100644 --- a/src/browser/renderer/dom/DomRendererRowFactory.test.ts +++ b/src/target-browser/renderer/dom/DomRendererRowFactory.test.ts @@ -5,15 +5,15 @@ import jsdom = require('jsdom'); import { assert } from 'chai'; -import { DomRendererRowFactory } from 'browser/renderer/dom/DomRendererRowFactory'; +import { DomRendererRowFactory } from 'target-browser/renderer/dom/DomRendererRowFactory'; import { NULL_CELL_CODE, NULL_CELL_WIDTH, NULL_CELL_CHAR, DEFAULT_ATTR, FgFlags, BgFlags, Attributes, UnderlineStyle } from 'common/buffer/Constants'; import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { IBufferLine } from 'common/Types'; import { CellData } from 'common/buffer/CellData'; import { MockCoreService, MockDecorationService, MockOptionsService, createCellData, NULL_CELL_DATA } from 'common/TestUtils.test'; -import { MockCharacterJoinerService, MockCoreBrowserService, MockThemeService } from 'browser/TestUtils.test'; -import { TestWidthCache } from 'browser/renderer/dom/WidthCache.test'; +import { MockCharacterJoinerService, MockCoreBrowserService, MockThemeService } from 'target-browser/TestUtils.test'; +import { TestWidthCache } from 'target-browser/renderer/dom/WidthCache.test'; const TEST_STRING_CACHE = new BufferLineStringCache(); diff --git a/src/browser/renderer/dom/DomRendererRowFactory.ts b/src/target-browser/renderer/dom/DomRendererRowFactory.ts similarity index 97% rename from src/browser/renderer/dom/DomRendererRowFactory.ts rename to src/target-browser/renderer/dom/DomRendererRowFactory.ts index e5bf31139..2706cf2ba 100644 --- a/src/browser/renderer/dom/DomRendererRowFactory.ts +++ b/src/target-browser/renderer/dom/DomRendererRowFactory.ts @@ -4,17 +4,17 @@ */ import { IBufferLine, ICellData, IColor } from 'common/Types'; -import { INVERTED_DEFAULT_COLOR } from 'browser/renderer/shared/Constants'; +import { INVERTED_DEFAULT_COLOR } from 'target-browser/renderer/shared/Constants'; import { WHITESPACE_CELL_CHAR, Attributes } from 'common/buffer/Constants'; import { CellData } from 'common/buffer/CellData'; import { ICoreService, IDecorationService, IOptionsService } from 'common/services/Services'; import { channels, color } from 'common/Color'; -import { ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { JoinedCellData } from 'browser/services/CharacterJoinerService'; -import { treatGlyphAsBackgroundColor } from 'browser/renderer/shared/RendererUtils'; +import { ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'target-browser/services/Services'; +import { JoinedCellData } from 'target-browser/services/CharacterJoinerService'; +import { treatGlyphAsBackgroundColor } from 'target-browser/renderer/shared/RendererUtils'; import { AttributeData } from 'common/buffer/AttributeData'; -import { WidthCache } from 'browser/renderer/dom/WidthCache'; -import { IColorContrastCache } from 'browser/Types'; +import { WidthCache } from 'target-browser/renderer/dom/WidthCache'; +import { IColorContrastCache } from 'target-browser/Types'; export const enum RowCss { diff --git a/src/browser/renderer/dom/WidthCache.test.ts b/src/target-browser/renderer/dom/WidthCache.test.ts similarity index 98% rename from src/browser/renderer/dom/WidthCache.test.ts rename to src/target-browser/renderer/dom/WidthCache.test.ts index c1e511c94..0431333d4 100644 --- a/src/browser/renderer/dom/WidthCache.test.ts +++ b/src/target-browser/renderer/dom/WidthCache.test.ts @@ -4,7 +4,7 @@ */ import * as assert from 'assert'; -import { IWidthCacheFontVariantCanvas, WidthCache, WidthCacheSettings } from 'browser/renderer/dom/WidthCache'; +import { IWidthCacheFontVariantCanvas, WidthCache, WidthCacheSettings } from 'target-browser/renderer/dom/WidthCache'; class MockWidthCacheFontVariantCanvas implements IWidthCacheFontVariantCanvas { diff --git a/src/browser/renderer/dom/WidthCache.ts b/src/target-browser/renderer/dom/WidthCache.ts similarity index 98% rename from src/browser/renderer/dom/WidthCache.ts rename to src/target-browser/renderer/dom/WidthCache.ts index ddacfd6a6..028de08d1 100644 --- a/src/browser/renderer/dom/WidthCache.ts +++ b/src/target-browser/renderer/dom/WidthCache.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; +import { throwIfFalsy } from 'target-browser/renderer/shared/RendererUtils'; import { IDisposable } from 'common/Types'; import { FontWeight } from 'common/services/Services'; diff --git a/src/browser/renderer/shared/Constants.ts b/src/target-browser/renderer/shared/Constants.ts similarity index 100% rename from src/browser/renderer/shared/Constants.ts rename to src/target-browser/renderer/shared/Constants.ts diff --git a/src/browser/renderer/shared/README.md b/src/target-browser/renderer/shared/README.md similarity index 100% rename from src/browser/renderer/shared/README.md rename to src/target-browser/renderer/shared/README.md diff --git a/src/browser/renderer/shared/RendererUtils.test.ts b/src/target-browser/renderer/shared/RendererUtils.test.ts similarity index 94% rename from src/browser/renderer/shared/RendererUtils.test.ts rename to src/target-browser/renderer/shared/RendererUtils.test.ts index 4512cb6d9..91b13a87e 100644 --- a/src/browser/renderer/shared/RendererUtils.test.ts +++ b/src/target-browser/renderer/shared/RendererUtils.test.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { computeNextVariantOffset } from 'browser/renderer/shared/RendererUtils'; +import { computeNextVariantOffset } from 'target-browser/renderer/shared/RendererUtils'; import { assert } from 'chai'; describe('RendererUtils', () => { diff --git a/src/browser/renderer/shared/RendererUtils.ts b/src/target-browser/renderer/shared/RendererUtils.ts similarity index 97% rename from src/browser/renderer/shared/RendererUtils.ts rename to src/target-browser/renderer/shared/RendererUtils.ts index 010643648..451eda0ce 100644 --- a/src/browser/renderer/shared/RendererUtils.ts +++ b/src/target-browser/renderer/shared/RendererUtils.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IDimensions, IRenderDimensions } from 'browser/renderer/shared/Types'; +import { IDimensions, IRenderDimensions } from 'target-browser/renderer/shared/Types'; export function throwIfFalsy(value: T | undefined | null): T { if (!value) { diff --git a/src/browser/renderer/shared/SelectionRenderModel.ts b/src/target-browser/renderer/shared/SelectionRenderModel.ts similarity index 96% rename from src/browser/renderer/shared/SelectionRenderModel.ts rename to src/target-browser/renderer/shared/SelectionRenderModel.ts index d3b7a99c4..c9381de93 100644 --- a/src/browser/renderer/shared/SelectionRenderModel.ts +++ b/src/target-browser/renderer/shared/SelectionRenderModel.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { ITerminal } from 'browser/Types'; -import { ISelectionRenderModel } from 'browser/renderer/shared/Types'; +import { ITerminal } from 'target-browser/Types'; +import { ISelectionRenderModel } from 'target-browser/renderer/shared/Types'; import { Terminal } from '@xterm/xterm'; class SelectionRenderModel implements ISelectionRenderModel { diff --git a/src/browser/renderer/shared/TextBlinkStateManager.test.ts b/src/target-browser/renderer/shared/TextBlinkStateManager.test.ts similarity index 94% rename from src/browser/renderer/shared/TextBlinkStateManager.test.ts rename to src/target-browser/renderer/shared/TextBlinkStateManager.test.ts index 5c8ce448a..f73ecc75f 100644 --- a/src/browser/renderer/shared/TextBlinkStateManager.test.ts +++ b/src/target-browser/renderer/shared/TextBlinkStateManager.test.ts @@ -4,9 +4,9 @@ */ import { assert } from 'chai'; -import { TextBlinkStateManager } from 'browser/renderer/shared/TextBlinkStateManager'; +import { TextBlinkStateManager } from 'target-browser/renderer/shared/TextBlinkStateManager'; import { MockOptionsService } from 'common/TestUtils.test'; -import type { ICoreBrowserService } from 'browser/services/Services'; +import type { ICoreBrowserService } from 'target-browser/services/Services'; import { Emitter } from 'common/Event'; class FakeWindow { diff --git a/src/browser/renderer/shared/TextBlinkStateManager.ts b/src/target-browser/renderer/shared/TextBlinkStateManager.ts similarity index 97% rename from src/browser/renderer/shared/TextBlinkStateManager.ts rename to src/target-browser/renderer/shared/TextBlinkStateManager.ts index 028cde898..c52578f1a 100644 --- a/src/browser/renderer/shared/TextBlinkStateManager.ts +++ b/src/target-browser/renderer/shared/TextBlinkStateManager.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { ICoreBrowserService } from 'browser/services/Services'; +import { ICoreBrowserService } from 'target-browser/services/Services'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IOptionsService } from 'common/services/Services'; diff --git a/src/browser/renderer/shared/Types.ts b/src/target-browser/renderer/shared/Types.ts similarity index 98% rename from src/browser/renderer/shared/Types.ts rename to src/target-browser/renderer/shared/Types.ts index c78e7794f..1850ee345 100644 --- a/src/browser/renderer/shared/Types.ts +++ b/src/target-browser/renderer/shared/Types.ts @@ -4,7 +4,7 @@ */ import { Terminal } from '@xterm/xterm'; -import { ITerminal } from 'browser/Types'; +import { ITerminal } from 'target-browser/Types'; import { IDisposable } from 'common/Types'; import type { IEvent } from 'common/Event'; diff --git a/src/browser/scrollable/abstractScrollbar.ts b/src/target-browser/scrollable/abstractScrollbar.ts similarity index 100% rename from src/browser/scrollable/abstractScrollbar.ts rename to src/target-browser/scrollable/abstractScrollbar.ts diff --git a/src/browser/scrollable/fastDomNode.ts b/src/target-browser/scrollable/fastDomNode.ts similarity index 100% rename from src/browser/scrollable/fastDomNode.ts rename to src/target-browser/scrollable/fastDomNode.ts diff --git a/src/browser/scrollable/globalPointerMoveMonitor.ts b/src/target-browser/scrollable/globalPointerMoveMonitor.ts similarity index 100% rename from src/browser/scrollable/globalPointerMoveMonitor.ts rename to src/target-browser/scrollable/globalPointerMoveMonitor.ts diff --git a/src/browser/scrollable/horizontalScrollbar.ts b/src/target-browser/scrollable/horizontalScrollbar.ts similarity index 100% rename from src/browser/scrollable/horizontalScrollbar.ts rename to src/target-browser/scrollable/horizontalScrollbar.ts diff --git a/src/browser/scrollable/mouseEvent.ts b/src/target-browser/scrollable/mouseEvent.ts similarity index 100% rename from src/browser/scrollable/mouseEvent.ts rename to src/target-browser/scrollable/mouseEvent.ts diff --git a/src/browser/scrollable/scrollable.ts b/src/target-browser/scrollable/scrollable.ts similarity index 100% rename from src/browser/scrollable/scrollable.ts rename to src/target-browser/scrollable/scrollable.ts diff --git a/src/browser/scrollable/scrollableElement.ts b/src/target-browser/scrollable/scrollableElement.ts similarity index 100% rename from src/browser/scrollable/scrollableElement.ts rename to src/target-browser/scrollable/scrollableElement.ts diff --git a/src/browser/scrollable/scrollableElementOptions.ts b/src/target-browser/scrollable/scrollableElementOptions.ts similarity index 100% rename from src/browser/scrollable/scrollableElementOptions.ts rename to src/target-browser/scrollable/scrollableElementOptions.ts diff --git a/src/browser/scrollable/scrollbarArrow.ts b/src/target-browser/scrollable/scrollbarArrow.ts similarity index 100% rename from src/browser/scrollable/scrollbarArrow.ts rename to src/target-browser/scrollable/scrollbarArrow.ts diff --git a/src/browser/scrollable/scrollbarState.ts b/src/target-browser/scrollable/scrollbarState.ts similarity index 100% rename from src/browser/scrollable/scrollbarState.ts rename to src/target-browser/scrollable/scrollbarState.ts diff --git a/src/browser/scrollable/scrollbarVisibilityController.ts b/src/target-browser/scrollable/scrollbarVisibilityController.ts similarity index 100% rename from src/browser/scrollable/scrollbarVisibilityController.ts rename to src/target-browser/scrollable/scrollbarVisibilityController.ts diff --git a/src/browser/scrollable/touch.ts b/src/target-browser/scrollable/touch.ts similarity index 100% rename from src/browser/scrollable/touch.ts rename to src/target-browser/scrollable/touch.ts diff --git a/src/browser/scrollable/verticalScrollbar.ts b/src/target-browser/scrollable/verticalScrollbar.ts similarity index 100% rename from src/browser/scrollable/verticalScrollbar.ts rename to src/target-browser/scrollable/verticalScrollbar.ts diff --git a/src/browser/scrollable/widget.ts b/src/target-browser/scrollable/widget.ts similarity index 100% rename from src/browser/scrollable/widget.ts rename to src/target-browser/scrollable/widget.ts diff --git a/src/browser/selection/SelectionModel.test.ts b/src/target-browser/selection/SelectionModel.test.ts similarity index 100% rename from src/browser/selection/SelectionModel.test.ts rename to src/target-browser/selection/SelectionModel.test.ts diff --git a/src/browser/selection/SelectionModel.ts b/src/target-browser/selection/SelectionModel.ts similarity index 100% rename from src/browser/selection/SelectionModel.ts rename to src/target-browser/selection/SelectionModel.ts diff --git a/src/browser/selection/Types.ts b/src/target-browser/selection/Types.ts similarity index 100% rename from src/browser/selection/Types.ts rename to src/target-browser/selection/Types.ts diff --git a/src/browser/services/CharSizeService.ts b/src/target-browser/services/CharSizeService.ts similarity index 98% rename from src/browser/services/CharSizeService.ts rename to src/target-browser/services/CharSizeService.ts index 6baf9b50a..3595144a0 100644 --- a/src/browser/services/CharSizeService.ts +++ b/src/target-browser/services/CharSizeService.ts @@ -4,7 +4,7 @@ */ import { IOptionsService } from 'common/services/Services'; -import { ICharSizeService } from 'browser/services/Services'; +import { ICharSizeService } from 'target-browser/services/Services'; import { Disposable } from 'common/Lifecycle'; import { Emitter } from 'common/Event'; diff --git a/src/browser/services/CharacterJoinerService.test.ts b/src/target-browser/services/CharacterJoinerService.test.ts similarity index 98% rename from src/browser/services/CharacterJoinerService.test.ts rename to src/target-browser/services/CharacterJoinerService.test.ts index 42301015c..ec8be64d5 100644 --- a/src/browser/services/CharacterJoinerService.test.ts +++ b/src/target-browser/services/CharacterJoinerService.test.ts @@ -4,8 +4,8 @@ */ import { assert } from 'chai'; -import { ICharacterJoinerService } from 'browser/services/Services'; -import { CharacterJoinerService } from 'browser/services/CharacterJoinerService'; +import { ICharacterJoinerService } from 'target-browser/services/Services'; +import { CharacterJoinerService } from 'target-browser/services/CharacterJoinerService'; import { BufferLine } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { IBufferLine } from 'common/Types'; diff --git a/src/browser/services/CharacterJoinerService.ts b/src/target-browser/services/CharacterJoinerService.ts similarity index 98% rename from src/browser/services/CharacterJoinerService.ts rename to src/target-browser/services/CharacterJoinerService.ts index ca4f1984e..f8421c802 100644 --- a/src/browser/services/CharacterJoinerService.ts +++ b/src/target-browser/services/CharacterJoinerService.ts @@ -4,12 +4,12 @@ */ import { IBufferLine, ICellData, CharData } from 'common/Types'; -import { ICharacterJoiner } from 'browser/Types'; +import { ICharacterJoiner } from 'target-browser/Types'; import { AttributeData } from 'common/buffer/AttributeData'; import { WHITESPACE_CELL_CHAR, Content } from 'common/buffer/Constants'; import { CellData } from 'common/buffer/CellData'; import { IBufferService } from 'common/services/Services'; -import { ICharacterJoinerService } from 'browser/services/Services'; +import { ICharacterJoinerService } from 'target-browser/services/Services'; export class JoinedCellData extends AttributeData implements ICellData { private _width: number; diff --git a/src/browser/services/CoreBrowserService.ts b/src/target-browser/services/CoreBrowserService.ts similarity index 98% rename from src/browser/services/CoreBrowserService.ts rename to src/target-browser/services/CoreBrowserService.ts index 658caaeb1..3f8f4e1b1 100644 --- a/src/browser/services/CoreBrowserService.ts +++ b/src/target-browser/services/CoreBrowserService.ts @@ -5,7 +5,7 @@ import { ICoreBrowserService } from './Services'; import { Emitter, EventUtils } from 'common/Event'; -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; export class CoreBrowserService extends Disposable implements ICoreBrowserService { diff --git a/src/browser/services/KeyboardService.ts b/src/target-browser/services/KeyboardService.ts similarity index 97% rename from src/browser/services/KeyboardService.ts rename to src/target-browser/services/KeyboardService.ts index 493f30653..e5bbdcdb3 100644 --- a/src/browser/services/KeyboardService.ts +++ b/src/target-browser/services/KeyboardService.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IKeyboardService } from 'browser/services/Services'; +import { IKeyboardService } from 'target-browser/services/Services'; import { evaluateKeyboardEvent } from 'common/input/Keyboard'; import { KittyKeyboard, KittyKeyboardEventType, KittyKeyboardFlags } from 'common/input/KittyKeyboard'; import { Win32InputMode } from 'common/input/Win32InputMode'; diff --git a/src/browser/services/LinkProviderService.ts b/src/target-browser/services/LinkProviderService.ts similarity index 90% rename from src/browser/services/LinkProviderService.ts rename to src/target-browser/services/LinkProviderService.ts index 7a7b530d0..8063d3bf0 100644 --- a/src/browser/services/LinkProviderService.ts +++ b/src/target-browser/services/LinkProviderService.ts @@ -1,4 +1,4 @@ -import { ILinkProvider, ILinkProviderService } from 'browser/services/Services'; +import { ILinkProvider, ILinkProviderService } from 'target-browser/services/Services'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { IDisposable } from 'common/Types'; diff --git a/src/browser/services/MouseCoordsService.ts b/src/target-browser/services/MouseCoordsService.ts similarity index 90% rename from src/browser/services/MouseCoordsService.ts rename to src/target-browser/services/MouseCoordsService.ts index 60f0a6ab9..d2b04a131 100644 --- a/src/browser/services/MouseCoordsService.ts +++ b/src/target-browser/services/MouseCoordsService.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { getWindow } from 'browser/Dom'; -import { getCoords, getCoordsRelativeToElement } from 'browser/input/Mouse'; -import { ICharSizeService, IMouseCoordsService, IRenderService } from 'browser/services/Services'; +import { getWindow } from 'target-browser/Dom'; +import { getCoords, getCoordsRelativeToElement } from 'target-browser/input/Mouse'; +import { ICharSizeService, IMouseCoordsService, IRenderService } from 'target-browser/services/Services'; export class MouseCoordsService implements IMouseCoordsService { public serviceBrand: undefined; diff --git a/src/browser/services/MouseService.test.ts b/src/target-browser/services/MouseService.test.ts similarity index 99% rename from src/browser/services/MouseService.test.ts rename to src/target-browser/services/MouseService.test.ts index d7aa7308f..56c37965d 100644 --- a/src/browser/services/MouseService.test.ts +++ b/src/target-browser/services/MouseService.test.ts @@ -3,12 +3,12 @@ * @license MIT */ import { assert } from 'chai'; -import { AltMouseCursorController, MouseEventCssClasses, MouseService } from 'browser/services/MouseService'; +import { AltMouseCursorController, MouseEventCssClasses, MouseService } from 'target-browser/services/MouseService'; import { MouseStateService } from 'common/services/MouseStateService'; import { CoreMouseAction, CoreMouseButton } from 'common/Types'; import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services'; import { OptionsService } from 'common/services/OptionsService'; -import { MockCoreBrowserService, MockRenderService, MockSelectionService } from 'browser/TestUtils.test'; +import { MockCoreBrowserService, MockRenderService, MockSelectionService } from 'target-browser/TestUtils.test'; function toBytes(s: string | undefined): number[] { if (!s) { diff --git a/src/browser/services/MouseService.ts b/src/target-browser/services/MouseService.ts similarity index 99% rename from src/browser/services/MouseService.ts rename to src/target-browser/services/MouseService.ts index f9d68f42e..d642034df 100644 --- a/src/browser/services/MouseService.ts +++ b/src/target-browser/services/MouseService.ts @@ -3,13 +3,13 @@ * @license MIT */ -import { addDisposableListener } from 'browser/Dom'; +import { addDisposableListener } from 'target-browser/Dom'; import { IBufferService, IMouseStateService, ICoreService, ILogService, IOptionsService } from 'common/services/Services'; import { CoreMouseAction, CoreMouseButton, CoreMouseEventType, ICoreMouseEvent, IDisposable } from 'common/Types'; import { C0 } from 'common/data/EscapeSequences'; import { DisposableStore, MutableDisposable, toDisposable } from 'common/Lifecycle'; import { ICoreBrowserService, IMouseCoordsService, IMouseService, IMouseServiceTarget, IRenderService, ISelectionService } from './Services'; -import { Gesture, EventType as GestureEventType, IGestureEvent } from 'browser/scrollable/touch'; +import { Gesture, EventType as GestureEventType, IGestureEvent } from 'target-browser/scrollable/touch'; type RequestedMouseEvents = Record<'mouseup' | 'wheel' | 'mousedrag' | 'mousemove', EventListener | null>; diff --git a/src/browser/services/RenderService.ts b/src/target-browser/services/RenderService.ts similarity index 97% rename from src/browser/services/RenderService.ts rename to src/target-browser/services/RenderService.ts index e999b7eac..03fe00cbf 100644 --- a/src/browser/services/RenderService.ts +++ b/src/target-browser/services/RenderService.ts @@ -3,10 +3,10 @@ * @license MIT */ -import { RenderDebouncer } from 'browser/RenderDebouncer'; -import { IRenderDebouncerWithCallback } from 'browser/Types'; -import { IRenderDimensions, IRenderer } from 'browser/renderer/shared/Types'; -import { ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; +import { RenderDebouncer } from 'target-browser/RenderDebouncer'; +import { IRenderDebouncerWithCallback } from 'target-browser/Types'; +import { IRenderDimensions, IRenderer } from 'target-browser/renderer/shared/Types'; +import { ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'target-browser/services/Services'; import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; import { DebouncedIdleTask } from 'common/TaskQueue'; import { IBufferService, ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services'; diff --git a/src/browser/services/SelectionService.test.ts b/src/target-browser/services/SelectionService.test.ts similarity index 99% rename from src/browser/services/SelectionService.test.ts rename to src/target-browser/services/SelectionService.test.ts index 04d691d40..347ea6f4b 100644 --- a/src/browser/services/SelectionService.test.ts +++ b/src/target-browser/services/SelectionService.test.ts @@ -5,16 +5,16 @@ import { assert } from 'chai'; import { SelectionService, SelectionMode } from './SelectionService'; -import { SelectionModel } from 'browser/selection/SelectionModel'; +import { SelectionModel } from 'target-browser/selection/SelectionModel'; import { IBufferLine } from 'common/Types'; import { MockBufferService, MockOptionsService, MockCoreService, MockMouseStateService, createCellData } from 'common/TestUtils.test'; import { BufferLine } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { IBufferService, IOptionsService } from 'common/services/Services'; -import { MockCoreBrowserService, MockMouseService, MockRenderService } from 'browser/TestUtils.test'; +import { MockCoreBrowserService, MockMouseService, MockRenderService } from 'target-browser/TestUtils.test'; import { CellData } from 'common/buffer/CellData'; import { IBuffer } from 'common/buffer/Types'; -import { IRenderService } from 'browser/services/Services'; +import { IRenderService } from 'target-browser/services/Services'; const TEST_STRING_CACHE = new BufferLineStringCache(); diff --git a/src/browser/services/SelectionService.ts b/src/target-browser/services/SelectionService.ts similarity index 98% rename from src/browser/services/SelectionService.ts rename to src/target-browser/services/SelectionService.ts index 6516e5154..db8789824 100644 --- a/src/browser/services/SelectionService.ts +++ b/src/target-browser/services/SelectionService.ts @@ -3,12 +3,12 @@ * @license MIT */ -import { IBufferRange, ILinkifier2 } from 'browser/Types'; -import { getCoordsRelativeToElement } from 'browser/input/Mouse'; -import { moveToCellSequence } from 'browser/input/MoveToCell'; -import { SelectionModel } from 'browser/selection/SelectionModel'; -import { ISelectionRedrawRequestEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types'; -import { ICoreBrowserService, IMouseCoordsService, IRenderService, ISelectionService } from 'browser/services/Services'; +import { IBufferRange, ILinkifier2 } from 'target-browser/Types'; +import { getCoordsRelativeToElement } from 'target-browser/input/Mouse'; +import { moveToCellSequence } from 'target-browser/input/MoveToCell'; +import { SelectionModel } from 'target-browser/selection/SelectionModel'; +import { ISelectionRedrawRequestEvent, ISelectionRequestScrollLinesEvent } from 'target-browser/selection/Types'; +import { ICoreBrowserService, IMouseCoordsService, IRenderService, ISelectionService } from 'target-browser/services/Services'; import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; import * as Browser from 'common/Platform'; import { IBufferLine, ICellData, IDisposable } from 'common/Types'; diff --git a/src/browser/services/Services.ts b/src/target-browser/services/Services.ts similarity index 96% rename from src/browser/services/Services.ts rename to src/target-browser/services/Services.ts index 72659cafe..058828460 100644 --- a/src/browser/services/Services.ts +++ b/src/target-browser/services/Services.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { IRenderDimensions, IRenderer } from 'browser/renderer/shared/Types'; -import { IColorSet, ILink, ReadonlyColorSet } from 'browser/Types'; -import { ISelectionRedrawRequestEvent as ISelectionRequestRedrawEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types'; +import { IRenderDimensions, IRenderer } from 'target-browser/renderer/shared/Types'; +import { IColorSet, ILink, ReadonlyColorSet } from 'target-browser/Types'; +import { ISelectionRedrawRequestEvent as ISelectionRequestRedrawEvent, ISelectionRequestScrollLinesEvent } from 'target-browser/selection/Types'; import { createDecorator } from 'common/services/ServiceRegistry'; import { AllColorIndex, IDisposable, IKeyboardResult } from 'common/Types'; import type { IEvent } from 'common/Event'; diff --git a/src/browser/services/ThemeService.test.ts b/src/target-browser/services/ThemeService.test.ts similarity index 99% rename from src/browser/services/ThemeService.test.ts rename to src/target-browser/services/ThemeService.test.ts index a36dea31c..1c3684079 100644 --- a/src/browser/services/ThemeService.test.ts +++ b/src/target-browser/services/ThemeService.test.ts @@ -5,9 +5,9 @@ import jsdom = require('jsdom'); import { assert } from 'chai'; -import { ThemeService } from 'browser/services/ThemeService'; +import { ThemeService } from 'target-browser/services/ThemeService'; import { OptionsService } from 'common/services/OptionsService'; -import { DEFAULT_ANSI_COLORS } from 'browser/Types'; +import { DEFAULT_ANSI_COLORS } from 'target-browser/Types'; describe('ThemeService', () => { let themeService: ThemeService; diff --git a/src/browser/services/ThemeService.ts b/src/target-browser/services/ThemeService.ts similarity index 97% rename from src/browser/services/ThemeService.ts rename to src/target-browser/services/ThemeService.ts index f2b23f3ce..31d67202a 100644 --- a/src/browser/services/ThemeService.ts +++ b/src/target-browser/services/ThemeService.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { ColorContrastCache } from 'browser/ColorContrastCache'; -import { IThemeService } from 'browser/services/Services'; -import { DEFAULT_ANSI_COLORS, IColorContrastCache, IColorSet, ReadonlyColorSet } from 'browser/Types'; +import { ColorContrastCache } from 'target-browser/ColorContrastCache'; +import { IThemeService } from 'target-browser/services/Services'; +import { DEFAULT_ANSI_COLORS, IColorContrastCache, IColorSet, ReadonlyColorSet } from 'target-browser/Types'; import { color, css, NULL_COLOR } from 'common/Color'; import { Disposable } from 'common/Lifecycle'; import { IOptionsService, ITheme } from 'common/services/Services'; diff --git a/src/browser/shared/Constants.ts b/src/target-browser/shared/Constants.ts similarity index 100% rename from src/browser/shared/Constants.ts rename to src/target-browser/shared/Constants.ts diff --git a/src/target-browser/tsconfig.json b/src/target-browser/tsconfig.json new file mode 100644 index 000000000..bee93e1b0 --- /dev/null +++ b/src/target-browser/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../tsconfig-library-base", + "compilerOptions": { + "lib": [ + "dom", + "es2021" + ], + "outDir": "../../out", + "types": [ + "../../node_modules/@types/mocha" + ], + "skipLibCheck": true, + "paths": { + "common/buffer/*": ["../common/primitives/buffer/*"], + "common/data/*": ["../common/primitives/data/*"], + "common/input/*": ["../common/primitives/input/*"], + "common/parser/*": ["../common/primitives/parser/*"], + "common/services/*": ["../common/runtime/services/*"], + "common/public/*": ["../common/runtime/public/*"], + "common/Types": ["../common/runtime/Types"], + "common/*": ["../common/primitives/*", "../common/runtime/*"], + "*": [ "./../*" ] + } + }, + "include": [ + "./**/*", + "../../typings/xterm.d.ts" + ], + "exclude": [ + "**/*.test.ts" + ], + "references": [ + { "path": "../common" } + ] +} diff --git a/src/headless/Terminal.ts b/src/target-headless/Terminal.ts similarity index 100% rename from src/headless/Terminal.ts rename to src/target-headless/Terminal.ts diff --git a/src/headless/public/Terminal.test.ts b/src/target-headless/public/Terminal.test.ts similarity index 99% rename from src/headless/public/Terminal.test.ts rename to src/target-headless/public/Terminal.test.ts index 73e2f4865..c64c55aa4 100644 --- a/src/headless/public/Terminal.test.ts +++ b/src/target-headless/public/Terminal.test.ts @@ -4,7 +4,7 @@ */ import { deepStrictEqual, strictEqual, throws } from 'assert'; -import { Terminal } from 'headless/public/Terminal'; +import { Terminal } from 'target-headless/public/Terminal'; import { ITerminalOptions } from '@xterm/headless'; let term: Terminal; diff --git a/src/headless/public/Terminal.ts b/src/target-headless/public/Terminal.ts similarity index 99% rename from src/headless/public/Terminal.ts rename to src/target-headless/public/Terminal.ts index d593dea15..b8382c080 100644 --- a/src/headless/public/Terminal.ts +++ b/src/target-headless/public/Terminal.ts @@ -7,7 +7,7 @@ import { BufferNamespaceApi } from 'common/public/BufferNamespaceApi'; import { ParserApi } from 'common/public/ParserApi'; import { UnicodeApi } from 'common/public/UnicodeApi'; import { IBufferNamespace as IBufferNamespaceApi, IMarker, IModes, IParser, ITerminalAddon, ITerminalInitOnlyOptions, IUnicodeHandling, Terminal as ITerminalApi } from '@xterm/headless'; -import { Terminal as TerminalCore } from 'headless/Terminal'; +import { Terminal as TerminalCore } from 'target-headless/Terminal'; import { AddonManager } from 'common/public/AddonManager'; import { ITerminalOptions } from 'common/Types'; import { Disposable } from 'common/Lifecycle'; diff --git a/src/headless/tsconfig.json b/src/target-headless/tsconfig.json similarity index 51% rename from src/headless/tsconfig.json rename to src/target-headless/tsconfig.json index 6c6df0526..4170687d2 100644 --- a/src/headless/tsconfig.json +++ b/src/target-headless/tsconfig.json @@ -12,11 +12,14 @@ "../../node_modules/@types/node" ], "paths": { - "common/*": [ - "./../common/primitives/*", - "./../common/runtime/*", - "./../common/*" - ], + "common/buffer/*": ["../common/primitives/buffer/*"], + "common/data/*": ["../common/primitives/data/*"], + "common/input/*": ["../common/primitives/input/*"], + "common/parser/*": ["../common/primitives/parser/*"], + "common/services/*": ["../common/runtime/services/*"], + "common/public/*": ["../common/runtime/public/*"], + "common/Types": ["../common/runtime/Types"], + "common/*": ["../common/primitives/*", "../common/runtime/*"], "*": [ "./../*" ] } }, @@ -25,6 +28,9 @@ "../../typings/xterm.d.ts", // common/Types.d.ts imports from '@xterm/xterm' "../../typings/xterm-headless.d.ts" ], + "exclude": [ + "**/*.test.ts" + ], "references": [ { "path": "../common" } ] diff --git a/test/benchmark/Terminal.benchmark.ts b/test/benchmark/Terminal.benchmark.ts index fb06b429e..4739a6eed 100644 --- a/test/benchmark/Terminal.benchmark.ts +++ b/test/benchmark/Terminal.benchmark.ts @@ -7,7 +7,7 @@ import { perfContext, before, ThroughputRuntimeCase } from 'xterm-benchmark'; import { spawn } from 'node-pty'; import { Utf8ToUtf32, stringFromCodePoint } from 'common/input/TextDecoder'; -import { CoreBrowserTerminal } from 'browser/CoreBrowserTerminal'; +import { CoreBrowserTerminal } from 'target-browser/CoreBrowserTerminal'; perfContext('Terminal: ls -lR /usr/lib', () => { let content = ''; diff --git a/test/benchmark/tsconfig.json b/test/benchmark/tsconfig.json index 74e6cb551..f7847d35d 100644 --- a/test/benchmark/tsconfig.json +++ b/test/benchmark/tsconfig.json @@ -5,6 +5,7 @@ "es2021", ], "outDir": "../../out-test/benchmark", + "rootDir": "../..", "types": [ "../../node_modules/@types/node" ], @@ -18,7 +19,7 @@ "../../src/common/runtime/*", "../../src/common/*" ], - "browser/*": [ "../../src/browser/*" ], + "target-browser/*": [ "../../src/target-browser/*" ], "Terminal": ["../../src/Terminal"] }, }, @@ -31,6 +32,6 @@ ], "references": [ { "path": "../../src/common" }, - { "path": "../../src/browser" }, + { "path": "../../src/target-browser" }, ] } diff --git a/test/playwright/Terminal.test.ts b/test/playwright/Terminal.test.ts index 2d1133cce..bcd552d0d 100644 --- a/test/playwright/Terminal.test.ts +++ b/test/playwright/Terminal.test.ts @@ -5,7 +5,7 @@ import { test } from '@playwright/test'; import { deepStrictEqual, notStrictEqual, strictEqual } from 'assert'; import { ITestContext, createTestContext, openTerminal, pollFor, timeout } from './TestUtils'; -import { IRenderDimensions } from 'browser/renderer/shared/Types'; +import { IRenderDimensions } from 'target-browser/renderer/shared/Types'; let ctx: ITestContext; test.beforeAll(async ({ browser }) => { diff --git a/test/playwright/TestUtils.ts b/test/playwright/TestUtils.ts index 8a76c8820..4fb240892 100644 --- a/test/playwright/TestUtils.ts +++ b/test/playwright/TestUtils.ts @@ -5,8 +5,8 @@ import { Browser, JSHandle, Page } from '@playwright/test'; import { deepStrictEqual, strictEqual } from 'assert'; -import type { IRenderDimensions as IRenderDimensionsInternal } from 'browser/renderer/shared/Types'; -import type { IRenderService } from 'browser/services/Services'; +import type { IRenderDimensions as IRenderDimensionsInternal } from 'target-browser/renderer/shared/Types'; +import type { IRenderService } from 'target-browser/services/Services'; import type { ICoreTerminal, IDisposable, IMarker } from 'common/Types'; import * as playwright from '@playwright/test'; import { IBuffer, IBufferCell, IBufferLine, IBufferNamespace, IBufferRange, IDecoration, IDecorationOptions, IModes, IRenderDimensions, ITerminalInitOnlyOptions, ITerminalOptions, Terminal } from '@xterm/xterm'; diff --git a/test/playwright/tsconfig.json b/test/playwright/tsconfig.json index 22b250659..ad25338ea 100644 --- a/test/playwright/tsconfig.json +++ b/test/playwright/tsconfig.json @@ -18,8 +18,8 @@ "declaration": true, "moduleResolution": "nodenext", "paths": { - "browser/*": [ - "../../src/browser/*" + "target-browser/*": [ + "../../src/target-browser/*" ], "common/*": [ "../../src/common/primitives/*", @@ -37,7 +37,7 @@ ], "references": [ { - "path": "../../src/browser" + "path": "../../src/target-browser" }, { "path": "../../src/common" diff --git a/tsconfig.all.json b/tsconfig.all.json index b0ed02799..45c53192c 100644 --- a/tsconfig.all.json +++ b/tsconfig.all.json @@ -3,8 +3,8 @@ "include": [], "references": [ { "path": "./demo" }, - { "path": "./src/browser" }, - { "path": "./src/headless" }, + { "path": "./src/target-browser" }, + { "path": "./src/target-headless" }, { "path": "./test/benchmark" }, { "path": "./test/playwright" }, { "path": "./addons/addon-attach" }, diff --git a/webpack.config.headless.js b/webpack.config.headless.js index ed2856bd0..197be4cdb 100644 --- a/webpack.config.headless.js +++ b/webpack.config.headless.js @@ -14,7 +14,7 @@ const path = require('path'); * @type {import('webpack').Configuration} */ const config = { - entry: './out/headless/public/Terminal.js', + entry: './out/target-headless/public/Terminal.js', devtool: 'source-map', module: { rules: [ @@ -31,7 +31,7 @@ const config = { extensions: [ '.js' ], alias: { common: path.resolve('./out/common'), - headless: path.resolve('./out/headless'), + headless: path.resolve('./out/target-headless'), vs: path.resolve('./out/vs') } }, diff --git a/webpack.config.js b/webpack.config.js index 74acb30f8..991ac6fe2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -16,7 +16,7 @@ const path = require('path'); * @type {import('webpack').Configuration} */ const config = { - entry: './out/browser/public/Terminal.js', + entry: './out/target-browser/public/Terminal.js', devtool: 'source-map', module: { rules: [ @@ -33,7 +33,7 @@ const config = { extensions: [ '.js' ], alias: { common: path.resolve('./out/common'), - browser: path.resolve('./out/browser'), + browser: path.resolve('./out/target-browser'), vs: path.resolve('./out/vs'), } },