Remove TypeScript path mappings in favor of relative imports

Fixes https://github.com/xtermjs/xterm.js/issues/5896

TypeScript path mappings for common/*, browser/*, and headless/*
were not rewritten in emitted JavaScript, which forced webpack resolve
aliases and NODE_PATH workarounds so runtime could resolve modules.
That added build complexity and broke tooling such as ESLint import/no-cycle.

Changes:
- Convert ~750 imports across src/, addons/, and test/ to relative paths
- Remove common/browser/headless paths and src catch-all mappings from tsconfigs
  (keep @xterm/addon-* demo and addon typings paths)
- Remove webpack resolve.alias for common, browser, headless, and vs
- Drop NODE_PATH from unit tests, benchmarks, and VS Code launch config
- Fix addon-image IIPImageStorage to import ./Types after removing catch-all *

Verified: npm run build, esbuild, package, package-headless
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Daniel Imms
2026-05-31 09:16:10 -07:00
co-authored by Cursor
parent 43e8365f0e
commit 17ad33dc3d
234 changed files with 867 additions and 1005 deletions
+1 -1
View File
@@ -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 '../../src/browser/renderer/shared/Types';
let ctx: ITestContext;
test.beforeAll(async ({ browser }) => {
+3 -3
View File
@@ -5,9 +5,9 @@
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 { ICoreTerminal, IDisposable, IMarker } from 'common/Types';
import type { IRenderDimensions as IRenderDimensionsInternal } from '../../src/browser/renderer/shared/Types';
import type { IRenderService } from '../../src/browser/services/Services';
import type { ICoreTerminal, IDisposable, IMarker } from '../../src/common/Types';
import * as playwright from '@playwright/test';
import { IBuffer, IBufferCell, IBufferLine, IBufferNamespace, IBufferRange, IDecoration, IDecorationOptions, IModes, IRenderDimensions, ITerminalInitOnlyOptions, ITerminalOptions, Terminal } from '@xterm/xterm';
-8
View File
@@ -17,14 +17,6 @@
"noImplicitAny": false,
"declaration": true,
"moduleResolution": "nodenext",
"paths": {
"browser/*": [
"../../src/browser/*"
],
"common/*": [
"../../src/common/*"
]
},
"target": "ESNext",
"module": "nodenext",
"composite": true