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/*"
]
},