diff --git a/addons/addon-attach/test/tsconfig.json b/addons/addon-attach/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-attach/test/tsconfig.json +++ b/addons/addon-attach/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-clipboard/test/tsconfig.json b/addons/addon-clipboard/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-clipboard/test/tsconfig.json +++ b/addons/addon-clipboard/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-fit/test/tsconfig.json b/addons/addon-fit/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-fit/test/tsconfig.json +++ b/addons/addon-fit/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-image/src/tsconfig.json b/addons/addon-image/src/tsconfig.json index 9a5d24c1f..2eab54269 100644 --- a/addons/addon-image/src/tsconfig.json +++ b/addons/addon-image/src/tsconfig.json @@ -13,7 +13,11 @@ ], "paths": { "browser/*": [ "../../../src/browser/*" ], - "common/*": [ "../../../src/common/*" ], + "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", + "../../../src/common/*" + ], "@xterm/addon-image": [ "../typings/addon-image.d.ts" ], "*": [ "./*" ] } diff --git a/addons/addon-image/test/tsconfig.json b/addons/addon-image/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-image/test/tsconfig.json +++ b/addons/addon-image/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-progress/src/tsconfig.json b/addons/addon-progress/src/tsconfig.json index bd437f5b6..a27baee53 100644 --- a/addons/addon-progress/src/tsconfig.json +++ b/addons/addon-progress/src/tsconfig.json @@ -16,6 +16,8 @@ ], "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-progress/test/tsconfig.json b/addons/addon-progress/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-progress/test/tsconfig.json +++ b/addons/addon-progress/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-search/src/tsconfig.json b/addons/addon-search/src/tsconfig.json index 9817710fa..edc7928d1 100644 --- a/addons/addon-search/src/tsconfig.json +++ b/addons/addon-search/src/tsconfig.json @@ -16,6 +16,8 @@ ], "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-search/test/tsconfig.json b/addons/addon-search/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-search/test/tsconfig.json +++ b/addons/addon-search/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-serialize/benchmark/tsconfig.json b/addons/addon-serialize/benchmark/tsconfig.json index ad7ee6d04..4cb39d4a7 100644 --- a/addons/addon-serialize/benchmark/tsconfig.json +++ b/addons/addon-serialize/benchmark/tsconfig.json @@ -12,7 +12,11 @@ "target": "es2021", "module": "nodenext", "paths": { - "common/*": ["../../../src/common/*"], + "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", + "../../../src/common/*" + ], "browser/*": ["../../../src/browser/*"], "SerializeAddon": ["../src/SerializeAddon"], "@xterm/addon-serialize": [ diff --git a/addons/addon-serialize/src/tsconfig.json b/addons/addon-serialize/src/tsconfig.json index 725647366..43839de36 100644 --- a/addons/addon-serialize/src/tsconfig.json +++ b/addons/addon-serialize/src/tsconfig.json @@ -12,6 +12,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-serialize/test/tsconfig.json b/addons/addon-serialize/test/tsconfig.json index 769909b19..ac43da67d 100644 --- a/addons/addon-serialize/test/tsconfig.json +++ b/addons/addon-serialize/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-unicode-graphemes/benchmark/tsconfig.json b/addons/addon-unicode-graphemes/benchmark/tsconfig.json index 1781ca318..8483628e0 100644 --- a/addons/addon-unicode-graphemes/benchmark/tsconfig.json +++ b/addons/addon-unicode-graphemes/benchmark/tsconfig.json @@ -9,7 +9,11 @@ "target": "es2015", "module": "nodenext", "paths": { - "common/*": ["../../../src/common/*"], + "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", + "../../../src/common/*" + ], "browser/*": ["../../../src/browser/*"], "UnicodeGraphemeProvider": ["../src/UnicodeGraphemeProvider"], "@xterm/addon-unicode-graphemes": [ diff --git a/addons/addon-unicode-graphemes/src/tsconfig.json b/addons/addon-unicode-graphemes/src/tsconfig.json index 824909dbd..cb33432d8 100644 --- a/addons/addon-unicode-graphemes/src/tsconfig.json +++ b/addons/addon-unicode-graphemes/src/tsconfig.json @@ -13,6 +13,8 @@ "strict": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "@xterm/addon-unicode-graphemes": [ diff --git a/addons/addon-unicode-graphemes/test/tsconfig.json b/addons/addon-unicode-graphemes/test/tsconfig.json index 769909b19..ac43da67d 100644 --- a/addons/addon-unicode-graphemes/test/tsconfig.json +++ b/addons/addon-unicode-graphemes/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-unicode11/src/tsconfig.json b/addons/addon-unicode11/src/tsconfig.json index 31286fb0f..1b105d364 100644 --- a/addons/addon-unicode11/src/tsconfig.json +++ b/addons/addon-unicode11/src/tsconfig.json @@ -13,6 +13,8 @@ "strict": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "@xterm/addon-unicode11": [ diff --git a/addons/addon-unicode11/test/tsconfig.json b/addons/addon-unicode11/test/tsconfig.json index 900a727ed..7db8df60e 100644 --- a/addons/addon-unicode11/test/tsconfig.json +++ b/addons/addon-unicode11/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-web-fonts/test/tsconfig.json b/addons/addon-web-fonts/test/tsconfig.json index 59664e32b..df662f12b 100644 --- a/addons/addon-web-fonts/test/tsconfig.json +++ b/addons/addon-web-fonts/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-web-links/test/tsconfig.json b/addons/addon-web-links/test/tsconfig.json index 59664e32b..df662f12b 100644 --- a/addons/addon-web-links/test/tsconfig.json +++ b/addons/addon-web-links/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-webgl/src/tsconfig.json b/addons/addon-webgl/src/tsconfig.json index 7035daa86..48df9a721 100644 --- a/addons/addon-webgl/src/tsconfig.json +++ b/addons/addon-webgl/src/tsconfig.json @@ -12,6 +12,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/addons/addon-webgl/test/tsconfig.json b/addons/addon-webgl/test/tsconfig.json index 73439ddc1..8ca1407c6 100644 --- a/addons/addon-webgl/test/tsconfig.json +++ b/addons/addon-webgl/test/tsconfig.json @@ -11,6 +11,8 @@ "removeComments": true, "paths": { "common/*": [ + "../../../src/common/primitives/*", + "../../../src/common/runtime/*", "../../../src/common/*" ], "browser/*": [ diff --git a/bin/esbuild.mjs b/bin/esbuild.mjs index 9e5f2d232..23ef05094 100644 --- a/bin/esbuild.mjs +++ b/bin/esbuild.mjs @@ -190,7 +190,9 @@ if (config.addon) { ...outConfig, entryPoints: [ 'src/browser/**/*.ts', - 'src/common/**/*.ts', + 'src/common/primitives/**/*.ts', + 'src/common/runtime/**/*.ts', + 'src/common/*.ts', 'src/headless/**/*.ts' ], outdir: 'out-esbuild/' diff --git a/bin/publish.js b/bin/publish.js index 0fa2faddc..8e6d5fc18 100644 --- a/bin/publish.js +++ b/bin/publish.js @@ -81,7 +81,7 @@ function checkAndPublishPackage(packageDir, repoCommit, peerDependencies, update // Update Version.ts with the new version if (updateVersionTs) { - const versionTsPath = path.join(packageDir, 'src/common/Version.ts'); + const versionTsPath = path.join(packageDir, 'src/common/primitives/Version.ts'); const versionTsContent = fs.readFileSync(versionTsPath, 'utf8'); const updatedVersionTs = versionTsContent.replace( /export const XTERM_VERSION = '[^']+';/, diff --git a/src/ARCHITECTURE.md b/src/ARCHITECTURE.md new file mode 100644 index 000000000..8e79f429e --- /dev/null +++ b/src/ARCHITECTURE.md @@ -0,0 +1,79 @@ +# 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. + +## Layer overview + +```mermaid +flowchart BT + primitives["common/primitives
building blocks, high test coverage expected"] + runtime["common/runtime
services, integration"] + browser["browser
DOM terminal target"] + headless["headless
Node terminal target"] + + runtime --> primitives + browser --> runtime + headless --> 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. | + +## `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) | + +**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. + +## `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`) | + +**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. + +## 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. + +## Targets vs core + +```mermaid +flowchart LR + subgraph core["Shared core"] + primitives + runtime + end + browser --> runtime + headless --> runtime +``` + +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. + +## 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 diff --git a/src/browser/CoreBrowserTerminal.ts b/src/browser/CoreBrowserTerminal.ts index a9461581e..8f1d31223 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/browser/CoreBrowserTerminal.ts @@ -53,7 +53,7 @@ import { C0, C1ESCAPED } from 'common/data/EscapeSequences'; import { toRgbString } from 'common/input/XParseColor'; import { DecorationService } from 'common/services/DecorationService'; import { IDecorationService } from 'common/services/Services'; -import { WindowsOptionsReportType } from '../common/InputHandler'; +import { WindowsOptionsReportType } from 'common/InputHandler'; import { AccessibilityManager } from './AccessibilityManager'; import { Linkifier } from './Linkifier'; import { Emitter, EventUtils, type IEvent } from 'common/Event'; diff --git a/src/browser/tsconfig.json b/src/browser/tsconfig.json index ff5bf6ad7..81079d358 100644 --- a/src/browser/tsconfig.json +++ b/src/browser/tsconfig.json @@ -11,7 +11,11 @@ ], "skipLibCheck": true, "paths": { - "common/*": [ "./../common/*" ], + "common/*": [ + "./../common/primitives/*", + "./../common/runtime/*", + "./../common/*" + ], "*": [ "./../*" ] } }, diff --git a/src/common/Async.ts b/src/common/primitives/Async.ts similarity index 100% rename from src/common/Async.ts rename to src/common/primitives/Async.ts diff --git a/src/common/CircularList.test.ts b/src/common/primitives/CircularList.test.ts similarity index 100% rename from src/common/CircularList.test.ts rename to src/common/primitives/CircularList.test.ts diff --git a/src/common/CircularList.ts b/src/common/primitives/CircularList.ts similarity index 100% rename from src/common/CircularList.ts rename to src/common/primitives/CircularList.ts diff --git a/src/common/Color.test.ts b/src/common/primitives/Color.test.ts similarity index 100% rename from src/common/Color.test.ts rename to src/common/primitives/Color.test.ts diff --git a/src/common/Color.ts b/src/common/primitives/Color.ts similarity index 100% rename from src/common/Color.ts rename to src/common/primitives/Color.ts diff --git a/src/common/Event.test.ts b/src/common/primitives/Event.test.ts similarity index 100% rename from src/common/Event.test.ts rename to src/common/primitives/Event.test.ts diff --git a/src/common/Event.ts b/src/common/primitives/Event.ts similarity index 100% rename from src/common/Event.ts rename to src/common/primitives/Event.ts diff --git a/src/common/Lifecycle.ts b/src/common/primitives/Lifecycle.ts similarity index 100% rename from src/common/Lifecycle.ts rename to src/common/primitives/Lifecycle.ts diff --git a/src/common/MultiKeyMap.test.ts b/src/common/primitives/MultiKeyMap.test.ts similarity index 100% rename from src/common/MultiKeyMap.test.ts rename to src/common/primitives/MultiKeyMap.test.ts diff --git a/src/common/MultiKeyMap.ts b/src/common/primitives/MultiKeyMap.ts similarity index 100% rename from src/common/MultiKeyMap.ts rename to src/common/primitives/MultiKeyMap.ts diff --git a/src/common/Platform.ts b/src/common/primitives/Platform.ts similarity index 100% rename from src/common/Platform.ts rename to src/common/primitives/Platform.ts diff --git a/src/common/SortedList.test.ts b/src/common/primitives/SortedList.test.ts similarity index 100% rename from src/common/SortedList.test.ts rename to src/common/primitives/SortedList.test.ts diff --git a/src/common/SortedList.ts b/src/common/primitives/SortedList.ts similarity index 100% rename from src/common/SortedList.ts rename to src/common/primitives/SortedList.ts diff --git a/src/common/StringBuilder.test.ts b/src/common/primitives/StringBuilder.test.ts similarity index 100% rename from src/common/StringBuilder.test.ts rename to src/common/primitives/StringBuilder.test.ts diff --git a/src/common/StringBuilder.ts b/src/common/primitives/StringBuilder.ts similarity index 100% rename from src/common/StringBuilder.ts rename to src/common/primitives/StringBuilder.ts diff --git a/src/common/TaskQueue.ts b/src/common/primitives/TaskQueue.ts similarity index 100% rename from src/common/TaskQueue.ts rename to src/common/primitives/TaskQueue.ts diff --git a/src/common/Version.ts b/src/common/primitives/Version.ts similarity index 100% rename from src/common/Version.ts rename to src/common/primitives/Version.ts diff --git a/src/common/buffer/AttributeData.ts b/src/common/primitives/buffer/AttributeData.ts similarity index 100% rename from src/common/buffer/AttributeData.ts rename to src/common/primitives/buffer/AttributeData.ts diff --git a/src/common/buffer/Buffer.test.ts b/src/common/primitives/buffer/Buffer.test.ts similarity index 100% rename from src/common/buffer/Buffer.test.ts rename to src/common/primitives/buffer/Buffer.test.ts diff --git a/src/common/buffer/Buffer.ts b/src/common/primitives/buffer/Buffer.ts similarity index 100% rename from src/common/buffer/Buffer.ts rename to src/common/primitives/buffer/Buffer.ts diff --git a/src/common/buffer/BufferLine.test.ts b/src/common/primitives/buffer/BufferLine.test.ts similarity index 99% rename from src/common/buffer/BufferLine.test.ts rename to src/common/primitives/buffer/BufferLine.test.ts index 3aec28872..e3d5fb54f 100644 --- a/src/common/buffer/BufferLine.test.ts +++ b/src/common/primitives/buffer/BufferLine.test.ts @@ -6,7 +6,7 @@ import { NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE, DEFAULT_ATTR, Content, import { BufferLine } from 'common/buffer//BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { CellData } from 'common/buffer/CellData'; -import { CharData, IBufferLine, ICellData } from '../Types'; +import { CharData, IBufferLine, ICellData } from 'common/Types'; 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/buffer/BufferLine.ts b/src/common/primitives/buffer/BufferLine.ts similarity index 100% rename from src/common/buffer/BufferLine.ts rename to src/common/primitives/buffer/BufferLine.ts diff --git a/src/common/buffer/BufferLineStringCache.ts b/src/common/primitives/buffer/BufferLineStringCache.ts similarity index 100% rename from src/common/buffer/BufferLineStringCache.ts rename to src/common/primitives/buffer/BufferLineStringCache.ts diff --git a/src/common/buffer/BufferRange.test.ts b/src/common/primitives/buffer/BufferRange.test.ts similarity index 100% rename from src/common/buffer/BufferRange.test.ts rename to src/common/primitives/buffer/BufferRange.test.ts diff --git a/src/common/buffer/BufferRange.ts b/src/common/primitives/buffer/BufferRange.ts similarity index 100% rename from src/common/buffer/BufferRange.ts rename to src/common/primitives/buffer/BufferRange.ts diff --git a/src/common/buffer/BufferReflow.test.ts b/src/common/primitives/buffer/BufferReflow.test.ts similarity index 100% rename from src/common/buffer/BufferReflow.test.ts rename to src/common/primitives/buffer/BufferReflow.test.ts diff --git a/src/common/buffer/BufferReflow.ts b/src/common/primitives/buffer/BufferReflow.ts similarity index 100% rename from src/common/buffer/BufferReflow.ts rename to src/common/primitives/buffer/BufferReflow.ts diff --git a/src/common/buffer/BufferSet.test.ts b/src/common/primitives/buffer/BufferSet.test.ts similarity index 100% rename from src/common/buffer/BufferSet.test.ts rename to src/common/primitives/buffer/BufferSet.test.ts diff --git a/src/common/buffer/BufferSet.ts b/src/common/primitives/buffer/BufferSet.ts similarity index 100% rename from src/common/buffer/BufferSet.ts rename to src/common/primitives/buffer/BufferSet.ts diff --git a/src/common/buffer/CellData.test.ts b/src/common/primitives/buffer/CellData.test.ts similarity index 100% rename from src/common/buffer/CellData.test.ts rename to src/common/primitives/buffer/CellData.test.ts diff --git a/src/common/buffer/CellData.ts b/src/common/primitives/buffer/CellData.ts similarity index 100% rename from src/common/buffer/CellData.ts rename to src/common/primitives/buffer/CellData.ts diff --git a/src/common/buffer/Constants.ts b/src/common/primitives/buffer/Constants.ts similarity index 100% rename from src/common/buffer/Constants.ts rename to src/common/primitives/buffer/Constants.ts diff --git a/src/common/buffer/Marker.ts b/src/common/primitives/buffer/Marker.ts similarity index 100% rename from src/common/buffer/Marker.ts rename to src/common/primitives/buffer/Marker.ts diff --git a/src/common/buffer/Types.ts b/src/common/primitives/buffer/Types.ts similarity index 100% rename from src/common/buffer/Types.ts rename to src/common/primitives/buffer/Types.ts diff --git a/src/common/data/Charsets.ts b/src/common/primitives/data/Charsets.ts similarity index 100% rename from src/common/data/Charsets.ts rename to src/common/primitives/data/Charsets.ts diff --git a/src/common/data/EscapeSequences.ts b/src/common/primitives/data/EscapeSequences.ts similarity index 100% rename from src/common/data/EscapeSequences.ts rename to src/common/primitives/data/EscapeSequences.ts diff --git a/src/common/input/Keyboard.test.ts b/src/common/primitives/input/Keyboard.test.ts similarity index 100% rename from src/common/input/Keyboard.test.ts rename to src/common/primitives/input/Keyboard.test.ts diff --git a/src/common/input/Keyboard.ts b/src/common/primitives/input/Keyboard.ts similarity index 100% rename from src/common/input/Keyboard.ts rename to src/common/primitives/input/Keyboard.ts diff --git a/src/common/input/KittyKeyboard.test.ts b/src/common/primitives/input/KittyKeyboard.test.ts similarity index 100% rename from src/common/input/KittyKeyboard.test.ts rename to src/common/primitives/input/KittyKeyboard.test.ts diff --git a/src/common/input/KittyKeyboard.ts b/src/common/primitives/input/KittyKeyboard.ts similarity index 100% rename from src/common/input/KittyKeyboard.ts rename to src/common/primitives/input/KittyKeyboard.ts diff --git a/src/common/input/TextDecoder.test.ts b/src/common/primitives/input/TextDecoder.test.ts similarity index 100% rename from src/common/input/TextDecoder.test.ts rename to src/common/primitives/input/TextDecoder.test.ts diff --git a/src/common/input/TextDecoder.ts b/src/common/primitives/input/TextDecoder.ts similarity index 100% rename from src/common/input/TextDecoder.ts rename to src/common/primitives/input/TextDecoder.ts diff --git a/src/common/input/UnicodeV6.test.ts b/src/common/primitives/input/UnicodeV6.test.ts similarity index 100% rename from src/common/input/UnicodeV6.test.ts rename to src/common/primitives/input/UnicodeV6.test.ts diff --git a/src/common/input/UnicodeV6.ts b/src/common/primitives/input/UnicodeV6.ts similarity index 100% rename from src/common/input/UnicodeV6.ts rename to src/common/primitives/input/UnicodeV6.ts diff --git a/src/common/input/Win32InputMode.test.ts b/src/common/primitives/input/Win32InputMode.test.ts similarity index 100% rename from src/common/input/Win32InputMode.test.ts rename to src/common/primitives/input/Win32InputMode.test.ts diff --git a/src/common/input/Win32InputMode.ts b/src/common/primitives/input/Win32InputMode.ts similarity index 100% rename from src/common/input/Win32InputMode.ts rename to src/common/primitives/input/Win32InputMode.ts diff --git a/src/common/input/WriteBuffer.test.ts b/src/common/primitives/input/WriteBuffer.test.ts similarity index 100% rename from src/common/input/WriteBuffer.test.ts rename to src/common/primitives/input/WriteBuffer.test.ts diff --git a/src/common/input/WriteBuffer.ts b/src/common/primitives/input/WriteBuffer.ts similarity index 100% rename from src/common/input/WriteBuffer.ts rename to src/common/primitives/input/WriteBuffer.ts diff --git a/src/common/input/XParseColor.test.ts b/src/common/primitives/input/XParseColor.test.ts similarity index 100% rename from src/common/input/XParseColor.test.ts rename to src/common/primitives/input/XParseColor.test.ts diff --git a/src/common/input/XParseColor.ts b/src/common/primitives/input/XParseColor.ts similarity index 100% rename from src/common/input/XParseColor.ts rename to src/common/primitives/input/XParseColor.ts diff --git a/src/common/parser/ApcParser.test.ts b/src/common/primitives/parser/ApcParser.test.ts similarity index 100% rename from src/common/parser/ApcParser.test.ts rename to src/common/primitives/parser/ApcParser.test.ts diff --git a/src/common/parser/ApcParser.ts b/src/common/primitives/parser/ApcParser.ts similarity index 100% rename from src/common/parser/ApcParser.ts rename to src/common/primitives/parser/ApcParser.ts diff --git a/src/common/parser/Constants.ts b/src/common/primitives/parser/Constants.ts similarity index 100% rename from src/common/parser/Constants.ts rename to src/common/primitives/parser/Constants.ts diff --git a/src/common/parser/DcsParser.test.ts b/src/common/primitives/parser/DcsParser.test.ts similarity index 100% rename from src/common/parser/DcsParser.test.ts rename to src/common/primitives/parser/DcsParser.test.ts diff --git a/src/common/parser/DcsParser.ts b/src/common/primitives/parser/DcsParser.ts similarity index 100% rename from src/common/parser/DcsParser.ts rename to src/common/primitives/parser/DcsParser.ts diff --git a/src/common/parser/EscapeSequenceParser.test.ts b/src/common/primitives/parser/EscapeSequenceParser.test.ts similarity index 100% rename from src/common/parser/EscapeSequenceParser.test.ts rename to src/common/primitives/parser/EscapeSequenceParser.test.ts diff --git a/src/common/parser/EscapeSequenceParser.ts b/src/common/primitives/parser/EscapeSequenceParser.ts similarity index 100% rename from src/common/parser/EscapeSequenceParser.ts rename to src/common/primitives/parser/EscapeSequenceParser.ts diff --git a/src/common/parser/OscParser.test.ts b/src/common/primitives/parser/OscParser.test.ts similarity index 100% rename from src/common/parser/OscParser.test.ts rename to src/common/primitives/parser/OscParser.test.ts diff --git a/src/common/parser/OscParser.ts b/src/common/primitives/parser/OscParser.ts similarity index 100% rename from src/common/parser/OscParser.ts rename to src/common/primitives/parser/OscParser.ts diff --git a/src/common/parser/Params.test.ts b/src/common/primitives/parser/Params.test.ts similarity index 100% rename from src/common/parser/Params.test.ts rename to src/common/primitives/parser/Params.test.ts diff --git a/src/common/parser/Params.ts b/src/common/primitives/parser/Params.ts similarity index 100% rename from src/common/parser/Params.ts rename to src/common/primitives/parser/Params.ts diff --git a/src/common/parser/Types.ts b/src/common/primitives/parser/Types.ts similarity index 100% rename from src/common/parser/Types.ts rename to src/common/primitives/parser/Types.ts diff --git a/src/common/CoreTerminal.ts b/src/common/runtime/CoreTerminal.ts similarity index 100% rename from src/common/CoreTerminal.ts rename to src/common/runtime/CoreTerminal.ts diff --git a/src/common/InputHandler.test.ts b/src/common/runtime/InputHandler.test.ts similarity index 100% rename from src/common/InputHandler.test.ts rename to src/common/runtime/InputHandler.test.ts diff --git a/src/common/InputHandler.ts b/src/common/runtime/InputHandler.ts similarity index 100% rename from src/common/InputHandler.ts rename to src/common/runtime/InputHandler.ts diff --git a/src/common/TestUtils.test.ts b/src/common/runtime/TestUtils.test.ts similarity index 100% rename from src/common/TestUtils.test.ts rename to src/common/runtime/TestUtils.test.ts diff --git a/src/common/WindowsMode.ts b/src/common/runtime/WindowsMode.ts similarity index 100% rename from src/common/WindowsMode.ts rename to src/common/runtime/WindowsMode.ts diff --git a/src/common/public/AddonManager.test.ts b/src/common/runtime/public/AddonManager.test.ts similarity index 100% rename from src/common/public/AddonManager.test.ts rename to src/common/runtime/public/AddonManager.test.ts diff --git a/src/common/public/AddonManager.ts b/src/common/runtime/public/AddonManager.ts similarity index 100% rename from src/common/public/AddonManager.ts rename to src/common/runtime/public/AddonManager.ts diff --git a/src/common/public/BufferApiView.ts b/src/common/runtime/public/BufferApiView.ts similarity index 100% rename from src/common/public/BufferApiView.ts rename to src/common/runtime/public/BufferApiView.ts diff --git a/src/common/public/BufferLineApiView.ts b/src/common/runtime/public/BufferLineApiView.ts similarity index 100% rename from src/common/public/BufferLineApiView.ts rename to src/common/runtime/public/BufferLineApiView.ts diff --git a/src/common/public/BufferNamespaceApi.ts b/src/common/runtime/public/BufferNamespaceApi.ts similarity index 100% rename from src/common/public/BufferNamespaceApi.ts rename to src/common/runtime/public/BufferNamespaceApi.ts diff --git a/src/common/public/ParserApi.ts b/src/common/runtime/public/ParserApi.ts similarity index 100% rename from src/common/public/ParserApi.ts rename to src/common/runtime/public/ParserApi.ts diff --git a/src/common/public/UnicodeApi.ts b/src/common/runtime/public/UnicodeApi.ts similarity index 100% rename from src/common/public/UnicodeApi.ts rename to src/common/runtime/public/UnicodeApi.ts diff --git a/src/common/services/BufferService.ts b/src/common/runtime/services/BufferService.ts similarity index 100% rename from src/common/services/BufferService.ts rename to src/common/runtime/services/BufferService.ts diff --git a/src/common/services/CharsetService.ts b/src/common/runtime/services/CharsetService.ts similarity index 100% rename from src/common/services/CharsetService.ts rename to src/common/runtime/services/CharsetService.ts diff --git a/src/common/services/CoreService.test.ts b/src/common/runtime/services/CoreService.test.ts similarity index 100% rename from src/common/services/CoreService.test.ts rename to src/common/runtime/services/CoreService.test.ts diff --git a/src/common/services/CoreService.ts b/src/common/runtime/services/CoreService.ts similarity index 100% rename from src/common/services/CoreService.ts rename to src/common/runtime/services/CoreService.ts diff --git a/src/common/services/DecorationService.test.ts b/src/common/runtime/services/DecorationService.test.ts similarity index 100% rename from src/common/services/DecorationService.test.ts rename to src/common/runtime/services/DecorationService.test.ts diff --git a/src/common/services/DecorationService.ts b/src/common/runtime/services/DecorationService.ts similarity index 100% rename from src/common/services/DecorationService.ts rename to src/common/runtime/services/DecorationService.ts diff --git a/src/common/services/InstantiationService.ts b/src/common/runtime/services/InstantiationService.ts similarity index 100% rename from src/common/services/InstantiationService.ts rename to src/common/runtime/services/InstantiationService.ts diff --git a/src/common/services/LogService.ts b/src/common/runtime/services/LogService.ts similarity index 100% rename from src/common/services/LogService.ts rename to src/common/runtime/services/LogService.ts diff --git a/src/common/services/MouseStateService.test.ts b/src/common/runtime/services/MouseStateService.test.ts similarity index 100% rename from src/common/services/MouseStateService.test.ts rename to src/common/runtime/services/MouseStateService.test.ts diff --git a/src/common/services/MouseStateService.ts b/src/common/runtime/services/MouseStateService.ts similarity index 100% rename from src/common/services/MouseStateService.ts rename to src/common/runtime/services/MouseStateService.ts diff --git a/src/common/services/OptionsService.test.ts b/src/common/runtime/services/OptionsService.test.ts similarity index 100% rename from src/common/services/OptionsService.test.ts rename to src/common/runtime/services/OptionsService.test.ts diff --git a/src/common/services/OptionsService.ts b/src/common/runtime/services/OptionsService.ts similarity index 100% rename from src/common/services/OptionsService.ts rename to src/common/runtime/services/OptionsService.ts diff --git a/src/common/services/OscLinkService.test.ts b/src/common/runtime/services/OscLinkService.test.ts similarity index 100% rename from src/common/services/OscLinkService.test.ts rename to src/common/runtime/services/OscLinkService.test.ts diff --git a/src/common/services/OscLinkService.ts b/src/common/runtime/services/OscLinkService.ts similarity index 100% rename from src/common/services/OscLinkService.ts rename to src/common/runtime/services/OscLinkService.ts diff --git a/src/common/services/ServiceRegistry.ts b/src/common/runtime/services/ServiceRegistry.ts similarity index 100% rename from src/common/services/ServiceRegistry.ts rename to src/common/runtime/services/ServiceRegistry.ts diff --git a/src/common/services/Services.ts b/src/common/runtime/services/Services.ts similarity index 100% rename from src/common/services/Services.ts rename to src/common/runtime/services/Services.ts diff --git a/src/common/services/UnicodeService.test.ts b/src/common/runtime/services/UnicodeService.test.ts similarity index 100% rename from src/common/services/UnicodeService.test.ts rename to src/common/runtime/services/UnicodeService.test.ts diff --git a/src/common/services/UnicodeService.ts b/src/common/runtime/services/UnicodeService.ts similarity index 100% rename from src/common/services/UnicodeService.ts rename to src/common/runtime/services/UnicodeService.ts diff --git a/src/common/tsconfig.json b/src/common/tsconfig.json index 31a893756..6e7a526b7 100644 --- a/src/common/tsconfig.json +++ b/src/common/tsconfig.json @@ -12,12 +12,18 @@ "../../node_modules/@types/mocha" ], "paths": { - "common/*": [ "./../common/*" ], + "common/*": [ + "./primitives/*", + "./runtime/*", + "./*" + ], "*": [ "./../*" ] } }, "include": [ - "./**/*", + "./primitives/**/*", + "./runtime/**/*", + "./*.ts", "../../typings/xterm.d.ts" ] } diff --git a/src/headless/tsconfig.json b/src/headless/tsconfig.json index 0c445bcfc..6c6df0526 100644 --- a/src/headless/tsconfig.json +++ b/src/headless/tsconfig.json @@ -12,7 +12,11 @@ "../../node_modules/@types/node" ], "paths": { - "common/*": [ "./../common/*" ], + "common/*": [ + "./../common/primitives/*", + "./../common/runtime/*", + "./../common/*" + ], "*": [ "./../*" ] } }, diff --git a/test/benchmark/tsconfig.json b/test/benchmark/tsconfig.json index 2ddb57e32..74e6cb551 100644 --- a/test/benchmark/tsconfig.json +++ b/test/benchmark/tsconfig.json @@ -13,7 +13,11 @@ "target": "es2021", "module": "nodenext", "paths": { - "common/*": [ "../../src/common/*" ], + "common/*": [ + "../../src/common/primitives/*", + "../../src/common/runtime/*", + "../../src/common/*" + ], "browser/*": [ "../../src/browser/*" ], "Terminal": ["../../src/Terminal"] }, diff --git a/test/playwright/tsconfig.json b/test/playwright/tsconfig.json index 7fea8d812..22b250659 100644 --- a/test/playwright/tsconfig.json +++ b/test/playwright/tsconfig.json @@ -22,6 +22,8 @@ "../../src/browser/*" ], "common/*": [ + "../../src/common/primitives/*", + "../../src/common/runtime/*", "../../src/common/*" ] },