diff --git a/addons/addon-image/src/ImageAddon.ts b/addons/addon-image/src/ImageAddon.ts index 8fd395431..1ce2584f1 100644 --- a/addons/addon-image/src/ImageAddon.ts +++ b/addons/addon-image/src/ImageAddon.ts @@ -5,7 +5,7 @@ import type { ITerminalAddon, IDisposable } from '@xterm/xterm'; import type { ImageAddon as IImageApi } from '@xterm/addon-image'; -import { Emitter, type IEvent } from 'common/Event'; +import { Emitter, type IEvent } from 'common/base/Event'; import { IIPHandler } from './IIPHandler'; import { ImageRenderer } from './ImageRenderer'; import { ImageStorage, CELL_SIZE_DEFAULT } from './ImageStorage'; diff --git a/addons/addon-image/src/ImageRenderer.ts b/addons/addon-image/src/ImageRenderer.ts index 5854efaec..1ac674ade 100644 --- a/addons/addon-image/src/ImageRenderer.ts +++ b/addons/addon-image/src/ImageRenderer.ts @@ -6,7 +6,7 @@ import { toRGBA8888 } from 'sixel/lib/Colors'; import { IDisposable } from '@xterm/xterm'; import { ICellSize, ImageLayer, ITerminalExt, IImageSpec, IRenderDimensions, IRenderService } from './Types'; -import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; const enum Constants { PLACEHOLDER_LENGTH = 4096, diff --git a/addons/addon-image/src/Types.ts b/addons/addon-image/src/Types.ts index 19a1acca1..8c0e94783 100644 --- a/addons/addon-image/src/Types.ts +++ b/addons/addon-image/src/Types.ts @@ -9,7 +9,7 @@ import { IDisposable, IMarker, Terminal } from '@xterm/xterm'; import { Attributes, BgFlags, Content, ExtFlags, UnderlineStyle } from 'common/buffer/Constants'; 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 { IBufferLine, IExtendedAttrs, IInputHandler } from 'common/services/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'; diff --git a/addons/addon-progress/src/ProgressAddon.ts b/addons/addon-progress/src/ProgressAddon.ts index 9d71179e1..a46583c80 100644 --- a/addons/addon-progress/src/ProgressAddon.ts +++ b/addons/addon-progress/src/ProgressAddon.ts @@ -5,7 +5,7 @@ import type { Terminal, ITerminalAddon, IDisposable } from '@xterm/xterm'; import type { ProgressAddon as IProgressApi, IProgressState } from '@xterm/addon-progress'; -import type { Emitter, IEvent } from 'common/Event'; +import type { Emitter, IEvent } from 'common/base/Event'; const enum ProgressType { diff --git a/addons/addon-search/src/DecorationManager.ts b/addons/addon-search/src/DecorationManager.ts index a8ec12017..101892069 100644 --- a/addons/addon-search/src/DecorationManager.ts +++ b/addons/addon-search/src/DecorationManager.ts @@ -5,7 +5,7 @@ import type { Terminal, IDisposable, IDecoration } from '@xterm/xterm'; import type { ISearchDecorationOptions } from '@xterm/addon-search'; -import { dispose, Disposable, toDisposable } from 'common/Lifecycle'; +import { dispose, Disposable, toDisposable } from 'common/base/Lifecycle'; import type { ISearchResult } from './SearchEngine'; /** diff --git a/addons/addon-search/src/SearchAddon.ts b/addons/addon-search/src/SearchAddon.ts index cb4094743..787771a84 100644 --- a/addons/addon-search/src/SearchAddon.ts +++ b/addons/addon-search/src/SearchAddon.ts @@ -5,9 +5,9 @@ import type { Terminal, IDisposable, ITerminalAddon } from '@xterm/xterm'; import type { SearchAddon as ISearchApi, ISearchOptions, ISearchAddonOptions, ISearchResultChangeEvent, ISearchDecorationOptions } from '@xterm/addon-search'; -import { Emitter, type IEvent } from 'common/Event'; -import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; -import { disposableTimeout } from 'common/Async'; +import { Emitter, type IEvent } from 'common/base/Event'; +import { Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; +import { disposableTimeout } from 'common/base/Async'; import { SearchLineCache } from './SearchLineCache'; import { SearchState } from './SearchState'; import { SearchEngine, type ISearchResult } from './SearchEngine'; diff --git a/addons/addon-search/src/SearchEngine.test.ts b/addons/addon-search/src/SearchEngine.test.ts index b3cea8f54..c3328e9de 100644 --- a/addons/addon-search/src/SearchEngine.test.ts +++ b/addons/addon-search/src/SearchEngine.test.ts @@ -7,7 +7,7 @@ import { SearchEngine } from './SearchEngine'; import { SearchLineCache } from './SearchLineCache'; import { Terminal } from 'browser/public/Terminal'; import type { ISearchOptions } from '@xterm/addon-search'; -import { DisposableStore } from 'common/Lifecycle'; +import { DisposableStore } from 'common/base/Lifecycle'; function writeP(terminal: Terminal, data: string): Promise { return new Promise(r => terminal.write(data, r)); diff --git a/addons/addon-search/src/SearchLineCache.test.ts b/addons/addon-search/src/SearchLineCache.test.ts index 77f64c81e..b85d17107 100644 --- a/addons/addon-search/src/SearchLineCache.test.ts +++ b/addons/addon-search/src/SearchLineCache.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { SearchLineCache, LineCacheEntry } from './SearchLineCache'; import { Terminal } from 'browser/public/Terminal'; -import { timeout } from 'common/Async'; +import { timeout } from 'common/base/Async'; function writeP(terminal: Terminal, data: string): Promise { return new Promise(r => terminal.write(data, r)); diff --git a/addons/addon-search/src/SearchLineCache.ts b/addons/addon-search/src/SearchLineCache.ts index 526f4bfcc..e0ea6b38f 100644 --- a/addons/addon-search/src/SearchLineCache.ts +++ b/addons/addon-search/src/SearchLineCache.ts @@ -4,8 +4,8 @@ */ import type { Terminal } from '@xterm/xterm'; -import { combinedDisposable, Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; -import { disposableTimeout } from 'common/Async'; +import { combinedDisposable, Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; +import { disposableTimeout } from 'common/base/Async'; export type LineCacheEntry = [ /** diff --git a/addons/addon-search/src/SearchResultTracker.ts b/addons/addon-search/src/SearchResultTracker.ts index 285345b7a..15aa62b5a 100644 --- a/addons/addon-search/src/SearchResultTracker.ts +++ b/addons/addon-search/src/SearchResultTracker.ts @@ -5,8 +5,8 @@ import type { ISearchResultChangeEvent } from '@xterm/addon-search'; import type { IDisposable } from '@xterm/xterm'; -import { Emitter, type IEvent } from 'common/Event'; -import { Disposable } from 'common/Lifecycle'; +import { Emitter, type IEvent } from 'common/base/Event'; +import { Disposable } from 'common/base/Lifecycle'; import type { ISearchResult } from './SearchEngine'; /** diff --git a/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts b/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts index b60dba1dd..57b3ffd76 100644 --- a/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts +++ b/addons/addon-serialize/benchmark/SerializeAddon.benchmark.ts @@ -6,7 +6,7 @@ import { perfContext, before, ThroughputRuntimeCase } from 'xterm-benchmark'; import { spawn } from 'node-pty'; -import { Utf8ToUtf32, stringFromCodePoint } from 'common/input/TextDecoder'; +import { Utf8ToUtf32, stringFromCodePoint } from 'common/encoding/TextDecoder'; import { Terminal } from 'browser/public/Terminal'; import { SerializeAddon } from 'SerializeAddon'; diff --git a/addons/addon-serialize/src/SerializeAddon.ts b/addons/addon-serialize/src/SerializeAddon.ts index 4980c8eda..64ce9d0a8 100644 --- a/addons/addon-serialize/src/SerializeAddon.ts +++ b/addons/addon-serialize/src/SerializeAddon.ts @@ -7,7 +7,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 { IAttributeData, IColor } from 'common/services/Types'; import { DEFAULT_ANSI_COLORS } from 'browser/Types'; import { UnderlineStyle } from 'common/buffer/Constants'; diff --git a/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts b/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts index 7538b9344..91e6bf1d9 100644 --- a/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts +++ b/addons/addon-unicode-graphemes/benchmark/UnicodeGraphemeAddon.benchmark.ts @@ -6,7 +6,7 @@ import { perfContext, before, ThroughputRuntimeCase } from 'xterm-benchmark'; import { spawn } from 'node-pty'; -import { Utf8ToUtf32, stringFromCodePoint } from 'common/input/TextDecoder'; +import { Utf8ToUtf32, stringFromCodePoint } from 'common/encoding/TextDecoder'; import { CoreBrowserTerminal } from 'browser/CoreBrowserTerminal'; import { UnicodeGraphemeProvider } from 'UnicodeGraphemeProvider'; diff --git a/addons/addon-webgl/src/CellColorResolver.ts b/addons/addon-webgl/src/CellColorResolver.ts index 3a4661cc3..dea062c10 100644 --- a/addons/addon-webgl/src/CellColorResolver.ts +++ b/addons/addon-webgl/src/CellColorResolver.ts @@ -3,9 +3,9 @@ import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; import { ReadonlyColorSet } from '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 { ICellData } from 'common/services/Types'; import { Terminal } from '@xterm/xterm'; -import { rgba } from 'common/Color'; +import { rgba } from 'common/services/Color'; import { treatGlyphAsBackgroundColor } from 'browser/renderer/shared/RendererUtils'; import { blockPatternCodepoints } from './customGlyphs/CustomGlyphDefinitions'; diff --git a/addons/addon-webgl/src/CharAtlasUtils.test.ts b/addons/addon-webgl/src/CharAtlasUtils.test.ts index 0a135746e..b223b9b6f 100644 --- a/addons/addon-webgl/src/CharAtlasUtils.test.ts +++ b/addons/addon-webgl/src/CharAtlasUtils.test.ts @@ -6,8 +6,8 @@ import { assert } from 'chai'; import { configEquals } from './CharAtlasUtils'; import { ICharAtlasConfig } from './Types'; -import { NULL_COLOR } from 'common/Color'; -import { IColor } from 'common/Types'; +import { NULL_COLOR } from 'common/services/Color'; +import { IColor } from 'common/services/Types'; function createTestConfig(overrides: Partial = {}): ICharAtlasConfig { const color: IColor = { css: '#ffffff', rgba: 0xffffffff }; diff --git a/addons/addon-webgl/src/CharAtlasUtils.ts b/addons/addon-webgl/src/CharAtlasUtils.ts index d9ca69b39..b0a6e5430 100644 --- a/addons/addon-webgl/src/CharAtlasUtils.ts +++ b/addons/addon-webgl/src/CharAtlasUtils.ts @@ -7,7 +7,7 @@ import { ICharAtlasConfig } from './Types'; import { Attributes } from 'common/buffer/Constants'; import { ITerminalOptions } from '@xterm/xterm'; import { IColorSet, ReadonlyColorSet } from 'browser/Types'; -import { NULL_COLOR } from 'common/Color'; +import { NULL_COLOR } from 'common/services/Color'; export function generateConfig(deviceCellWidth: number, deviceCellHeight: number, deviceCharWidth: number, deviceCharHeight: number, options: Required, colors: ReadonlyColorSet, devicePixelRatio: number, deviceMaxTextureSize: number, customGlyphs: boolean = true): ICharAtlasConfig { // null out some fields that don't matter diff --git a/addons/addon-webgl/src/Constants.ts b/addons/addon-webgl/src/Constants.ts index a00434d61..113b90de7 100644 --- a/addons/addon-webgl/src/Constants.ts +++ b/addons/addon-webgl/src/Constants.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { isFirefox, isLegacyEdge } from 'common/Platform'; +import { isFirefox, isLegacyEdge } from 'common/base/Platform'; export const DIM_OPACITY = 0.5; // The text baseline is set conditionally by browser. Using 'ideographic' for Firefox or Legacy Edge diff --git a/addons/addon-webgl/src/DevicePixelObserver.ts b/addons/addon-webgl/src/DevicePixelObserver.ts index dcd8de0a6..3561ed69d 100644 --- a/addons/addon-webgl/src/DevicePixelObserver.ts +++ b/addons/addon-webgl/src/DevicePixelObserver.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { toDisposable, IDisposable } from 'common/Lifecycle'; +import { toDisposable, IDisposable } from 'common/base/Lifecycle'; export function observeDevicePixelDimensions(element: HTMLElement, parentWindow: Window & typeof globalThis, callback: (deviceWidth: number, deviceHeight: number) => void): IDisposable { // Observe any resizes to the element and extract the actual pixel size of the element if the diff --git a/addons/addon-webgl/src/GlyphRenderer.ts b/addons/addon-webgl/src/GlyphRenderer.ts index 650fc451a..efaa65362 100644 --- a/addons/addon-webgl/src/GlyphRenderer.ts +++ b/addons/addon-webgl/src/GlyphRenderer.ts @@ -5,7 +5,7 @@ import { TextureAtlas } from './TextureAtlas'; import { IRenderDimensions } from 'browser/renderer/shared/Types'; import { NULL_CELL_CODE } from 'common/buffer/Constants'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { Terminal } from '@xterm/xterm'; import { IRenderModel, IWebGL2RenderingContext, IWebGLVertexArrayObject, type IRasterizedGlyph, type ITextureAtlas } from './Types'; import { createProgram, GLTexture, PROJECTION_MATRIX } from './WebglUtils'; diff --git a/addons/addon-webgl/src/RectangleRenderer.ts b/addons/addon-webgl/src/RectangleRenderer.ts index eebfda3b3..64927e279 100644 --- a/addons/addon-webgl/src/RectangleRenderer.ts +++ b/addons/addon-webgl/src/RectangleRenderer.ts @@ -7,8 +7,8 @@ import { IRenderDimensions } from 'browser/renderer/shared/Types'; import { IThemeService } from 'browser/services/Services'; import { ReadonlyColorSet } from 'browser/Types'; import { Attributes, FgFlags } from 'common/buffer/Constants'; -import { Disposable, toDisposable } from 'common/Lifecycle'; -import { IColor } from 'common/Types'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; +import { IColor } from 'common/services/Types'; import { Terminal } from '@xterm/xterm'; import { RenderModelConstants } from './RenderModel'; import { IRenderModel, IWebGL2RenderingContext, IWebGLVertexArrayObject } from './Types'; diff --git a/addons/addon-webgl/src/TextureAtlas.ts b/addons/addon-webgl/src/TextureAtlas.ts index dab0b1c85..21ac8d838 100644 --- a/addons/addon-webgl/src/TextureAtlas.ts +++ b/addons/addon-webgl/src/TextureAtlas.ts @@ -8,14 +8,14 @@ import { DIM_OPACITY, TEXT_BASELINE } from './Constants'; import { tryDrawCustomGlyph } from './customGlyphs/CustomGlyphRasterizer'; import { computeNextVariantOffset, treatGlyphAsBackgroundColor, isPowerlineGlyph, isRestrictedPowerlineGlyph, throwIfFalsy } from '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'; -import { IdleTaskQueue } from 'common/TaskQueue'; -import { IColor } from 'common/Types'; +import { NULL_COLOR, channels, color, rgba } from 'common/services/Color'; +import { FourKeyMap } from 'common/base/MultiKeyMap'; +import { IdleTaskQueue } from 'common/services/TaskQueue'; +import { IColor } from 'common/services/Types'; import { AttributeData } from 'common/buffer/AttributeData'; import { Attributes, DEFAULT_COLOR, DEFAULT_EXT, UnderlineStyle } from 'common/buffer/Constants'; import { ILogService, IUnicodeService } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; /** * A shared object which is used to draw nothing for a particular cell. diff --git a/addons/addon-webgl/src/Types.ts b/addons/addon-webgl/src/Types.ts index 294582e37..946088644 100644 --- a/addons/addon-webgl/src/Types.ts +++ b/addons/addon-webgl/src/Types.ts @@ -6,8 +6,8 @@ import { FontWeight } from '@xterm/xterm'; import { IColorSet } from 'browser/Types'; import { ISelectionRenderModel } from 'browser/renderer/shared/Types'; -import { CursorInactiveStyle, CursorStyle, type IDisposable } from 'common/Types'; -import type { IEvent } from 'common/Event'; +import { CursorInactiveStyle, CursorStyle, type IDisposable } from 'common/services/Types'; +import type { IEvent } from 'common/base/Event'; export interface IRenderModel { cells: Uint32Array; diff --git a/addons/addon-webgl/src/WebglAddon.ts b/addons/addon-webgl/src/WebglAddon.ts index 624c9ea38..2e17c3863 100644 --- a/addons/addon-webgl/src/WebglAddon.ts +++ b/addons/addon-webgl/src/WebglAddon.ts @@ -7,12 +7,12 @@ 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 { Disposable, toDisposable } from 'common/Lifecycle'; -import { getSafariVersion, isSafari } from 'common/Platform'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; +import { getSafariVersion, isSafari } from 'common/base/Platform'; import { ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services'; import { IWebGL2RenderingContext } from './Types'; import { WebglRenderer } from './WebglRenderer'; -import { Emitter, EventUtils } from 'common/Event'; +import { Emitter, EventUtils } from 'common/base/Event'; export class WebglAddon extends Disposable implements ITerminalAddon, IWebglApi { private _terminal?: Terminal; diff --git a/addons/addon-webgl/src/WebglRenderer.ts b/addons/addon-webgl/src/WebglRenderer.ts index 9c2f459df..3ffcd2fb0 100644 --- a/addons/addon-webgl/src/WebglRenderer.ts +++ b/addons/addon-webgl/src/WebglRenderer.ts @@ -10,7 +10,7 @@ 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 { CharData, IBufferLine, ICellData } from 'common/Types'; +import { CharData, IBufferLine, ICellData } from 'common/services/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'; @@ -23,9 +23,9 @@ import { COMBINED_CHAR_BIT_MASK, RenderModel, RenderModelConstants } from './Ren import { IWebGL2RenderingContext, type ITextureAtlas } from './Types'; import { LinkRenderLayer } from './renderLayer/LinkRenderLayer'; import { IRenderLayer } from './renderLayer/Types'; -import { Emitter, EventUtils } from 'common/Event'; +import { Emitter, EventUtils } from 'common/base/Event'; import { addDisposableListener } from 'browser/Dom'; -import { combinedDisposable, Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; +import { combinedDisposable, Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; const enum Constants { diff --git a/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts b/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts index 5b1161532..f09ee9add 100644 --- a/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts +++ b/addons/addon-webgl/src/renderLayer/BaseRenderLayer.ts @@ -7,7 +7,7 @@ import { ReadonlyColorSet } from 'browser/Types'; import { acquireTextureAtlas } from '../CharAtlasCache'; import { IRenderDimensions } from 'browser/renderer/shared/Types'; import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { CellData } from 'common/buffer/CellData'; import { IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; diff --git a/bin/publish.js b/bin/publish.js index 0fa2faddc..e3a55aaca 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/base/Version.ts'); const versionTsContent = fs.readFileSync(versionTsPath, 'utf8'); const updatedVersionTs = versionTsContent.replace( /export const XTERM_VERSION = '[^']+';/, diff --git a/src/browser/AccessibilityManager.ts b/src/browser/AccessibilityManager.ts index 6fc421337..055882d6e 100644 --- a/src/browser/AccessibilityManager.ts +++ b/src/browser/AccessibilityManager.ts @@ -6,7 +6,7 @@ import * as Strings from 'browser/LocalizableStrings'; import { ITerminal, IRenderDebouncer } from 'browser/Types'; import { TimeBasedDebouncer } from 'browser/TimeBasedDebouncer'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { ICoreBrowserService, IRenderService } from 'browser/services/Services'; import { IBuffer } from 'common/buffer/Types'; import { IInstantiationService } from 'common/services/Services'; diff --git a/src/browser/ColorContrastCache.ts b/src/browser/ColorContrastCache.ts index 0c60e8db4..478577e58 100644 --- a/src/browser/ColorContrastCache.ts +++ b/src/browser/ColorContrastCache.ts @@ -4,8 +4,8 @@ */ import { IColorContrastCache } from 'browser/Types'; -import { IColor } from 'common/Types'; -import { TwoKeyMap } from 'common/MultiKeyMap'; +import { IColor } from 'common/services/Types'; +import { TwoKeyMap } from 'common/base/MultiKeyMap'; export class ColorContrastCache implements IColorContrastCache { private _color: TwoKeyMap = new TwoKeyMap(); diff --git a/src/browser/CoreBrowserTerminal.ts b/src/browser/CoreBrowserTerminal.ts index a9461581e..5520dc69d 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/browser/CoreBrowserTerminal.ts @@ -43,22 +43,22 @@ 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 { channels, color, rgb } from 'common/Color'; -import { CoreTerminal } from 'common/CoreTerminal'; -import * as Browser from 'common/Platform'; -import { ColorRequestType, IColorEvent, ITerminalOptions, KeyboardResultType, SpecialColorIndex } from 'common/Types'; +import { channels, color, rgb } from 'common/services/Color'; +import { CoreTerminal } from 'common/terminal/CoreTerminal'; +import * as Browser from 'common/base/Platform'; +import { ColorRequestType, IColorEvent, ITerminalOptions, KeyboardResultType, SpecialColorIndex } from 'common/services/Types'; import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { IBuffer } from 'common/buffer/Types'; 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/terminal/InputHandler'; import { AccessibilityManager } from './AccessibilityManager'; import { Linkifier } from './Linkifier'; -import { Emitter, EventUtils, type IEvent } from 'common/Event'; +import { Emitter, EventUtils, type IEvent } from 'common/base/Event'; import { addDisposableListener } from 'browser/Dom'; -import { MutableDisposable, toDisposable } from 'common/Lifecycle'; +import { MutableDisposable, toDisposable } from 'common/base/Lifecycle'; export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { public textarea: HTMLTextAreaElement | undefined; diff --git a/src/browser/Dom.ts b/src/browser/Dom.ts index 56e7c0417..602c20ade 100644 --- a/src/browser/Dom.ts +++ b/src/browser/Dom.ts @@ -5,8 +5,8 @@ * Minimal DOM helpers for xterm.js browser code. */ -import { IntervalTimer } from 'common/Async'; -import { IDisposable } from 'common/Lifecycle'; +import { IntervalTimer } from 'common/base/Async'; +import { IDisposable } from 'common/base/Lifecycle'; export function getWindow(e: Node | UIEvent | undefined | null): Window { const candidateNode = e as Node | undefined | null; diff --git a/src/browser/Linkifier.test.ts b/src/browser/Linkifier.test.ts index 685c404f4..a028e1f53 100644 --- a/src/browser/Linkifier.test.ts +++ b/src/browser/Linkifier.test.ts @@ -6,7 +6,7 @@ import { assert } from 'chai'; import { IBufferService } from 'common/services/Services'; import { Linkifier } from './Linkifier'; -import { MockBufferService } from 'common/TestUtils.test'; +import { MockBufferService } from 'common/terminal/TestUtils.test'; import { ILink } from 'browser/Types'; import { LinkProviderService } from 'browser/services/LinkProviderService'; import jsdom = require('jsdom'); diff --git a/src/browser/Linkifier.ts b/src/browser/Linkifier.ts index 31c91daee..94bd3d644 100644 --- a/src/browser/Linkifier.ts +++ b/src/browser/Linkifier.ts @@ -4,11 +4,11 @@ */ import { IBufferCellPosition, ILink, ILinkDecorations, ILinkWithState, ILinkifier2, ILinkifierEvent } from 'browser/Types'; -import { Disposable, dispose, toDisposable } from 'common/Lifecycle'; -import { IDisposable } from 'common/Types'; +import { Disposable, dispose, toDisposable } from 'common/base/Lifecycle'; +import { IDisposable } from 'common/services/Types'; import { IBufferService } from 'common/services/Services'; import { ILinkProviderService, IMouseCoordsService, IRenderService } from './services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; import { addDisposableListener } from 'browser/Dom'; export class Linkifier extends Disposable implements ILinkifier2 { diff --git a/src/browser/OscLinkProvider.test.ts b/src/browser/OscLinkProvider.test.ts index 9e844cd16..d4deeddef 100644 --- a/src/browser/OscLinkProvider.test.ts +++ b/src/browser/OscLinkProvider.test.ts @@ -6,9 +6,9 @@ import { assert } from 'chai'; import { OscLinkProvider } from 'browser/OscLinkProvider'; import { ILink } from 'browser/Types'; -import { createCellData, MockBufferService, MockOptionsService } from 'common/TestUtils.test'; +import { createCellData, MockBufferService, MockOptionsService } from 'common/terminal/TestUtils.test'; import { IBufferService, IOscLinkService } from 'common/services/Services'; -import { IBufferLine, IOscLinkData } from 'common/Types'; +import { IBufferLine, IOscLinkData } from 'common/services/Types'; class TestOscLinkService implements IOscLinkService { public serviceBrand: any; diff --git a/src/browser/OscLinkProvider.ts b/src/browser/OscLinkProvider.ts index d01a20b35..8e2ef3de4 100644 --- a/src/browser/OscLinkProvider.ts +++ b/src/browser/OscLinkProvider.ts @@ -6,7 +6,7 @@ import { IBufferRange, ILink } from 'browser/Types'; import { ILinkProvider } from 'browser/services/Services'; import { CellData } from 'common/buffer/CellData'; -import { IBufferLine } from 'common/Types'; +import { IBufferLine } from 'common/services/Types'; import { IBufferService, IOptionsService, IOscLinkService } from 'common/services/Services'; export class OscLinkProvider implements ILinkProvider { diff --git a/src/browser/Terminal.test.ts b/src/browser/Terminal.test.ts index d359fa28c..2a129a88a 100644 --- a/src/browser/Terminal.test.ts +++ b/src/browser/Terminal.test.ts @@ -8,8 +8,8 @@ import type { IBrowser } from 'browser/Types'; import { assert } from 'chai'; import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { CellData } from 'common/buffer/CellData'; -import { MockUnicodeService, createCellData } from 'common/TestUtils.test'; -import { IMarker } from 'common/Types'; +import { MockUnicodeService, createCellData } from 'common/terminal/TestUtils.test'; +import { IMarker } from 'common/services/Types'; const INIT_COLS = 80; const INIT_ROWS = 24; @@ -1146,7 +1146,7 @@ describe('Terminal', () => { assert.equal(termConverting.buffer.lines.get(1)!.translateToString(true), 'World'); }); - // FIXME: move to common/CoreTerminal.test once the trimming is moved over + // FIXME: move to common/terminal/CoreTerminal.test once the trimming is moved over describe('marker lifecycle', () => { // create a 10x5 terminal with markers on every line // to test marker lifecycle under various terminal actions diff --git a/src/browser/TestUtils.test.ts b/src/browser/TestUtils.test.ts index 65a18da72..1d7b81ca7 100644 --- a/src/browser/TestUtils.test.ts +++ b/src/browser/TestUtils.test.ts @@ -8,17 +8,17 @@ import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IMouseS import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'browser/renderer/shared/Types'; import { IColorSet, ITerminal, ILinkifier2, IBrowser, IViewport, ICompositionHelper, CharacterJoinerHandler, IBufferRange, ReadonlyColorSet, IBufferElementProvider } from 'browser/Types'; import { IBuffer, IBufferSet } from 'common/buffer/Types'; -import { IBufferLine, ICellData, IAttributeData, ICircularList, XtermListener, ICharset, ITerminalOptions, ColorIndex } from 'common/Types'; +import { IBufferLine, ICellData, IAttributeData, ICircularList, XtermListener, ICharset, ITerminalOptions, ColorIndex } from 'common/services/Types'; import { Buffer } from 'common/buffer/Buffer'; -import * as Browser from 'common/Platform'; +import * as Browser from 'common/base/Platform'; import { CoreBrowserTerminal } from '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 { css } from 'common/Color'; +import { css } from 'common/services/Color'; import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; -import { Emitter, type IEvent } from 'common/Event'; +import { Emitter, type IEvent } from 'common/base/Event'; export class TestTerminal extends CoreBrowserTerminal { public get curAttrData(): IAttributeData { return (this as any)._inputHandler._curAttrData; } diff --git a/src/browser/Types.ts b/src/browser/Types.ts index fa08de2e3..734699831 100644 --- a/src/browser/Types.ts +++ b/src/browser/Types.ts @@ -3,11 +3,11 @@ * @license MIT */ -import { CharData, IColor, ICoreTerminal, ITerminalOptions } from 'common/Types'; +import { CharData, IColor, ICoreTerminal, ITerminalOptions } from 'common/services/Types'; import { IBuffer } from 'common/buffer/Types'; import { IDisposable, IRenderDimensions as IRenderDimensionsApi, Terminal as ITerminalApi } from '@xterm/xterm'; -import { channels, css } from 'common/Color'; -import type { IEvent } from 'common/Event'; +import { channels, css } from 'common/services/Color'; +import type { IEvent } from 'common/base/Event'; /** * A portion of the public API that are implemented identially internally and simply passed through. diff --git a/src/browser/Viewport.ts b/src/browser/Viewport.ts index 3b6ae8301..7364b689b 100644 --- a/src/browser/Viewport.ts +++ b/src/browser/Viewport.ts @@ -5,13 +5,13 @@ import { ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; import { ViewportConstants } from 'browser/shared/Constants'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { IBufferService, ICoreService, IMouseStateService, IOptionsService } from 'common/services/Services'; -import { CoreMouseEventType } from 'common/Types'; +import { CoreMouseEventType } from 'common/services/Types'; import { scheduleAtNextAnimationFrame } from 'browser/Dom'; import { SmoothScrollableElement } from 'browser/scrollable/scrollableElement'; import type { IScrollableElementChangeOptions } from 'browser/scrollable/scrollableElementOptions'; -import { Emitter, EventUtils } from 'common/Event'; +import { Emitter, EventUtils } from 'common/base/Event'; import { Scrollable, ScrollbarVisibility, type IScrollEvent } from 'browser/scrollable/scrollable'; export class Viewport extends Disposable { diff --git a/src/browser/decorations/BufferDecorationRenderer.ts b/src/browser/decorations/BufferDecorationRenderer.ts index e374af260..213f988cf 100644 --- a/src/browser/decorations/BufferDecorationRenderer.ts +++ b/src/browser/decorations/BufferDecorationRenderer.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { ICoreBrowserService, IRenderService } from 'browser/services/Services'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { IBufferService, IDecorationService, IInternalDecoration } from 'common/services/Services'; export class BufferDecorationRenderer extends Disposable { diff --git a/src/browser/decorations/OverviewRulerRenderer.ts b/src/browser/decorations/OverviewRulerRenderer.ts index b28b25965..d50dd58f8 100644 --- a/src/browser/decorations/OverviewRulerRenderer.ts +++ b/src/browser/decorations/OverviewRulerRenderer.ts @@ -5,7 +5,7 @@ import { ColorZoneStore, IColorZone, IColorZoneStore } from 'browser/decorations/ColorZoneStore'; import { ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services'; const enum Constants { diff --git a/src/browser/input/CompositionHelper.test.ts b/src/browser/input/CompositionHelper.test.ts index 94b5841af..4718e1989 100644 --- a/src/browser/input/CompositionHelper.test.ts +++ b/src/browser/input/CompositionHelper.test.ts @@ -6,7 +6,7 @@ import { assert } from 'chai'; import { CompositionHelper } from 'browser/input/CompositionHelper'; import { MockRenderService } from 'browser/TestUtils.test'; -import { MockCoreService, MockBufferService, MockOptionsService } from 'common/TestUtils.test'; +import { MockCoreService, MockBufferService, MockOptionsService } from 'common/terminal/TestUtils.test'; describe('CompositionHelper', () => { let compositionHelper: CompositionHelper; diff --git a/src/browser/input/MoveToCell.test.ts b/src/browser/input/MoveToCell.test.ts index 61e5f90b9..b02f641e8 100644 --- a/src/browser/input/MoveToCell.test.ts +++ b/src/browser/input/MoveToCell.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { IBufferService } from 'common/services/Services'; -import { MockBufferService } from 'common/TestUtils.test'; +import { MockBufferService } from 'common/terminal/TestUtils.test'; import { moveToCellSequence } from './MoveToCell'; describe('MoveToCell', () => { diff --git a/src/browser/public/Terminal.ts b/src/browser/public/Terminal.ts index 75aada048..4aa67b765 100644 --- a/src/browser/public/Terminal.ts +++ b/src/browser/public/Terminal.ts @@ -6,14 +6,14 @@ import * as Strings from 'browser/LocalizableStrings'; import { CoreBrowserTerminal as TerminalCore } from 'browser/CoreBrowserTerminal'; import { IBufferRange, ITerminal } from 'browser/Types'; -import { Disposable } from 'common/Lifecycle'; -import { ITerminalOptions } from 'common/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { ITerminalOptions } from 'common/services/Types'; import { AddonManager } from 'common/public/AddonManager'; import { BufferNamespaceApi } from 'common/public/BufferNamespaceApi'; import { ParserApi } from 'common/public/ParserApi'; import { UnicodeApi } from 'common/public/UnicodeApi'; import { IBufferNamespace as IBufferNamespaceApi, IDecoration, IDecorationOptions, IDisposable, ILinkProvider, ILocalizableStrings, IMarker, IModes, IParser, IRenderDimensions, ITerminalAddon, Terminal as ITerminalApi, ITerminalInitOnlyOptions, IUnicodeHandling } from '@xterm/xterm'; -import type { IEvent } from 'common/Event'; +import type { IEvent } from 'common/base/Event'; /** * The set of options that only have an effect when set in the Terminal constructor. diff --git a/src/browser/renderer/dom/DomRenderer.ts b/src/browser/renderer/dom/DomRenderer.ts index 6f873af7b..dee7a8547 100644 --- a/src/browser/renderer/dom/DomRenderer.ts +++ b/src/browser/renderer/dom/DomRenderer.ts @@ -12,10 +12,10 @@ import { TextBlinkStateManager } from 'browser/renderer/shared/TextBlinkStateMan 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 { color } from 'common/Color'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { color } from 'common/services/Color'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { IBufferService, ICoreService, IInstantiationService, IOptionsService } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; import { addDisposableListener } from 'browser/Dom'; diff --git a/src/browser/renderer/dom/DomRendererRowFactory.test.ts b/src/browser/renderer/dom/DomRendererRowFactory.test.ts index 6ca84569a..50628e10d 100644 --- a/src/browser/renderer/dom/DomRendererRowFactory.test.ts +++ b/src/browser/renderer/dom/DomRendererRowFactory.test.ts @@ -9,9 +9,9 @@ import { DomRendererRowFactory } from 'browser/renderer/dom/DomRendererRowFactor 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 { IBufferLine } from 'common/services/Types'; import { CellData } from 'common/buffer/CellData'; -import { MockCoreService, MockDecorationService, MockOptionsService, createCellData, NULL_CELL_DATA } from 'common/TestUtils.test'; +import { MockCoreService, MockDecorationService, MockOptionsService, createCellData, NULL_CELL_DATA } from 'common/terminal/TestUtils.test'; import { MockCharacterJoinerService, MockCoreBrowserService, MockThemeService } from 'browser/TestUtils.test'; import { TestWidthCache } from 'browser/renderer/dom/WidthCache.test'; diff --git a/src/browser/renderer/dom/DomRendererRowFactory.ts b/src/browser/renderer/dom/DomRendererRowFactory.ts index e5bf31139..b35d80f7f 100644 --- a/src/browser/renderer/dom/DomRendererRowFactory.ts +++ b/src/browser/renderer/dom/DomRendererRowFactory.ts @@ -3,12 +3,12 @@ * @license MIT */ -import { IBufferLine, ICellData, IColor } from 'common/Types'; +import { IBufferLine, ICellData, IColor } from 'common/services/Types'; import { INVERTED_DEFAULT_COLOR } from '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 { channels, color } from 'common/services/Color'; import { ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; import { JoinedCellData } from 'browser/services/CharacterJoinerService'; import { treatGlyphAsBackgroundColor } from 'browser/renderer/shared/RendererUtils'; diff --git a/src/browser/renderer/dom/WidthCache.ts b/src/browser/renderer/dom/WidthCache.ts index ddacfd6a6..52557976c 100644 --- a/src/browser/renderer/dom/WidthCache.ts +++ b/src/browser/renderer/dom/WidthCache.ts @@ -4,7 +4,7 @@ */ import { throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; -import { IDisposable } from 'common/Types'; +import { IDisposable } from 'common/services/Types'; import { FontWeight } from 'common/services/Services'; diff --git a/src/browser/renderer/shared/TextBlinkStateManager.test.ts b/src/browser/renderer/shared/TextBlinkStateManager.test.ts index 5c8ce448a..a462caaca 100644 --- a/src/browser/renderer/shared/TextBlinkStateManager.test.ts +++ b/src/browser/renderer/shared/TextBlinkStateManager.test.ts @@ -5,9 +5,9 @@ import { assert } from 'chai'; import { TextBlinkStateManager } from 'browser/renderer/shared/TextBlinkStateManager'; -import { MockOptionsService } from 'common/TestUtils.test'; +import { MockOptionsService } from 'common/terminal/TestUtils.test'; import type { ICoreBrowserService } from 'browser/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; class FakeWindow { public nextId = 1; diff --git a/src/browser/renderer/shared/TextBlinkStateManager.ts b/src/browser/renderer/shared/TextBlinkStateManager.ts index 028cde898..9663a927f 100644 --- a/src/browser/renderer/shared/TextBlinkStateManager.ts +++ b/src/browser/renderer/shared/TextBlinkStateManager.ts @@ -4,7 +4,7 @@ */ import { ICoreBrowserService } from 'browser/services/Services'; -import { Disposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; import { IOptionsService } from 'common/services/Services'; export class TextBlinkStateManager extends Disposable { diff --git a/src/browser/renderer/shared/Types.ts b/src/browser/renderer/shared/Types.ts index c78e7794f..ed4f908bd 100644 --- a/src/browser/renderer/shared/Types.ts +++ b/src/browser/renderer/shared/Types.ts @@ -5,8 +5,8 @@ import { Terminal } from '@xterm/xterm'; import { ITerminal } from 'browser/Types'; -import { IDisposable } from 'common/Types'; -import type { IEvent } from 'common/Event'; +import { IDisposable } from 'common/services/Types'; +import type { IEvent } from 'common/base/Event'; export interface IDimensions { width: number; diff --git a/src/browser/scrollable/abstractScrollbar.ts b/src/browser/scrollable/abstractScrollbar.ts index 64c25d9d8..f9a714f12 100644 --- a/src/browser/scrollable/abstractScrollbar.ts +++ b/src/browser/scrollable/abstractScrollbar.ts @@ -11,7 +11,7 @@ import { ScrollbarArrow, IScrollbarArrowOptions } from './scrollbarArrow'; import { ScrollbarState } from './scrollbarState'; import { ScrollbarVisibilityController } from './scrollbarVisibilityController'; import { Widget } from './widget'; -import * as platform from 'common/Platform'; +import * as platform from 'common/base/Platform'; import { INewScrollPosition, Scrollable, ScrollbarVisibility } from './scrollable'; /** diff --git a/src/browser/scrollable/globalPointerMoveMonitor.ts b/src/browser/scrollable/globalPointerMoveMonitor.ts index a80e0507f..cefefd45c 100644 --- a/src/browser/scrollable/globalPointerMoveMonitor.ts +++ b/src/browser/scrollable/globalPointerMoveMonitor.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as dom from '../Dom'; -import { DisposableStore, IDisposable, toDisposable } from 'common/Lifecycle'; +import { DisposableStore, IDisposable, toDisposable } from 'common/base/Lifecycle'; type PointerMoveCallback = (event: PointerEvent) => void; type OnStopCallback = () => void; diff --git a/src/browser/scrollable/mouseEvent.ts b/src/browser/scrollable/mouseEvent.ts index a12b63d52..bd561efef 100644 --- a/src/browser/scrollable/mouseEvent.ts +++ b/src/browser/scrollable/mouseEvent.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as platform from 'common/Platform'; +import * as platform from 'common/base/Platform'; interface IWindowChainElement { readonly window: WeakRef; diff --git a/src/browser/scrollable/scrollable.ts b/src/browser/scrollable/scrollable.ts index 18275ffe5..b1f8996f6 100644 --- a/src/browser/scrollable/scrollable.ts +++ b/src/browser/scrollable/scrollable.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Emitter, IEvent } from 'common/Event'; -import { Disposable, IDisposable } from 'common/Lifecycle'; +import { Emitter, IEvent } from 'common/base/Event'; +import { Disposable, IDisposable } from 'common/base/Lifecycle'; export const enum ScrollbarVisibility { AUTO = 1, diff --git a/src/browser/scrollable/scrollableElement.ts b/src/browser/scrollable/scrollableElement.ts index 4039d0c4e..3104a0b4b 100644 --- a/src/browser/scrollable/scrollableElement.ts +++ b/src/browser/scrollable/scrollableElement.ts @@ -11,10 +11,10 @@ import { HorizontalScrollbar } from './horizontalScrollbar'; import { IScrollableElementChangeOptions, IScrollableElementCreationOptions, IScrollableElementResolvedOptions } from './scrollableElementOptions'; import { VerticalScrollbar } from './verticalScrollbar'; import { Widget } from './widget'; -import { TimeoutTimer } from 'common/Async'; -import { Emitter, IEvent } from 'common/Event'; -import { IDisposable, dispose } from 'common/Lifecycle'; -import * as platform from 'common/Platform'; +import { TimeoutTimer } from 'common/base/Async'; +import { Emitter, IEvent } from 'common/base/Event'; +import { IDisposable, dispose } from 'common/base/Lifecycle'; +import * as platform from 'common/base/Platform'; import { INewScrollDimensions, INewScrollPosition, IScrollDimensions, IScrollPosition, IScrollEvent, Scrollable, ScrollbarVisibility } from './scrollable'; // import 'vs/css!./media/scrollbars'; diff --git a/src/browser/scrollable/scrollbarArrow.ts b/src/browser/scrollable/scrollbarArrow.ts index d543669c1..707699836 100644 --- a/src/browser/scrollable/scrollbarArrow.ts +++ b/src/browser/scrollable/scrollbarArrow.ts @@ -5,7 +5,7 @@ import { GlobalPointerMoveMonitor } from './globalPointerMoveMonitor'; import { Widget } from './widget'; -import { TimeoutTimer } from 'common/Async'; +import { TimeoutTimer } from 'common/base/Async'; import * as dom from '../Dom'; export interface IScrollbarArrowOptions { diff --git a/src/browser/scrollable/scrollbarVisibilityController.ts b/src/browser/scrollable/scrollbarVisibilityController.ts index 59d172bce..e843f5a73 100644 --- a/src/browser/scrollable/scrollbarVisibilityController.ts +++ b/src/browser/scrollable/scrollbarVisibilityController.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { FastDomNode } from './fastDomNode'; -import { TimeoutTimer } from 'common/Async'; -import { Disposable } from 'common/Lifecycle'; +import { TimeoutTimer } from 'common/base/Async'; +import { Disposable } from 'common/base/Lifecycle'; import { ScrollbarVisibility } from './scrollable'; export class ScrollbarVisibilityController extends Disposable { diff --git a/src/browser/scrollable/touch.ts b/src/browser/scrollable/touch.ts index 475784cf6..714c122b4 100644 --- a/src/browser/scrollable/touch.ts +++ b/src/browser/scrollable/touch.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as DomUtils from '../Dom'; -import { Disposable, IDisposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, IDisposable, toDisposable } from 'common/base/Lifecycle'; const mainWindow = (typeof window === 'object' ? window : globalThis) as Window & typeof globalThis; diff --git a/src/browser/scrollable/widget.ts b/src/browser/scrollable/widget.ts index 80220c9b1..12c5be49c 100644 --- a/src/browser/scrollable/widget.ts +++ b/src/browser/scrollable/widget.ts @@ -5,7 +5,7 @@ import * as dom from '../Dom'; import { IMouseEvent, StandardMouseEvent } from './mouseEvent'; -import { Disposable } from 'common/Lifecycle'; +import { Disposable } from 'common/base/Lifecycle'; export abstract class Widget extends Disposable { diff --git a/src/browser/selection/SelectionModel.test.ts b/src/browser/selection/SelectionModel.test.ts index 79ff372b3..560571f76 100644 --- a/src/browser/selection/SelectionModel.test.ts +++ b/src/browser/selection/SelectionModel.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { SelectionModel } from './SelectionModel'; -import { MockBufferService } from 'common/TestUtils.test'; +import { MockBufferService } from 'common/terminal/TestUtils.test'; describe('SelectionModel', () => { let model: SelectionModel; diff --git a/src/browser/services/CharSizeService.ts b/src/browser/services/CharSizeService.ts index 6baf9b50a..e449fd6d9 100644 --- a/src/browser/services/CharSizeService.ts +++ b/src/browser/services/CharSizeService.ts @@ -5,8 +5,8 @@ import { IOptionsService } from 'common/services/Services'; import { ICharSizeService } from 'browser/services/Services'; -import { Disposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; +import { Disposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; export class CharSizeService extends Disposable implements ICharSizeService { public serviceBrand: undefined; diff --git a/src/browser/services/CharacterJoinerService.test.ts b/src/browser/services/CharacterJoinerService.test.ts index 42301015c..46e3f7b25 100644 --- a/src/browser/services/CharacterJoinerService.test.ts +++ b/src/browser/services/CharacterJoinerService.test.ts @@ -8,9 +8,9 @@ import { ICharacterJoinerService } from 'browser/services/Services'; import { CharacterJoinerService } from 'browser/services/CharacterJoinerService'; import { BufferLine } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; -import { IBufferLine } from 'common/Types'; +import { IBufferLine } from 'common/services/Types'; import { CellData } from 'common/buffer/CellData'; -import { MockBufferService, createCellData } from 'common/TestUtils.test'; +import { MockBufferService, createCellData } from 'common/terminal/TestUtils.test'; const TEST_STRING_CACHE = new BufferLineStringCache(); diff --git a/src/browser/services/CharacterJoinerService.ts b/src/browser/services/CharacterJoinerService.ts index ca4f1984e..69b74526d 100644 --- a/src/browser/services/CharacterJoinerService.ts +++ b/src/browser/services/CharacterJoinerService.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IBufferLine, ICellData, CharData } from 'common/Types'; +import { IBufferLine, ICellData, CharData } from 'common/services/Types'; import { ICharacterJoiner } from 'browser/Types'; import { AttributeData } from 'common/buffer/AttributeData'; import { WHITESPACE_CELL_CHAR, Content } from 'common/buffer/Constants'; diff --git a/src/browser/services/CoreBrowserService.ts b/src/browser/services/CoreBrowserService.ts index 658caaeb1..f793d4bd3 100644 --- a/src/browser/services/CoreBrowserService.ts +++ b/src/browser/services/CoreBrowserService.ts @@ -4,9 +4,9 @@ */ import { ICoreBrowserService } from './Services'; -import { Emitter, EventUtils } from 'common/Event'; +import { Emitter, EventUtils } from 'common/base/Event'; import { addDisposableListener } from 'browser/Dom'; -import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; +import { Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; export class CoreBrowserService extends Disposable implements ICoreBrowserService { public serviceBrand: undefined; diff --git a/src/browser/services/KeyboardService.ts b/src/browser/services/KeyboardService.ts index 493f30653..1782288ce 100644 --- a/src/browser/services/KeyboardService.ts +++ b/src/browser/services/KeyboardService.ts @@ -7,9 +7,9 @@ import { IKeyboardService } from 'browser/services/Services'; import { evaluateKeyboardEvent } from 'common/input/Keyboard'; import { KittyKeyboard, KittyKeyboardEventType, KittyKeyboardFlags } from 'common/input/KittyKeyboard'; import { Win32InputMode } from 'common/input/Win32InputMode'; -import { isMac } from 'common/Platform'; +import { isMac } from 'common/base/Platform'; import { ICoreService, IOptionsService } from 'common/services/Services'; -import { IKeyboardResult } from 'common/Types'; +import { IKeyboardResult } from 'common/services/Types'; export class KeyboardService implements IKeyboardService { public serviceBrand: undefined; diff --git a/src/browser/services/LinkProviderService.ts b/src/browser/services/LinkProviderService.ts index 7a7b530d0..867a1747c 100644 --- a/src/browser/services/LinkProviderService.ts +++ b/src/browser/services/LinkProviderService.ts @@ -1,6 +1,6 @@ import { ILinkProvider, ILinkProviderService } from 'browser/services/Services'; -import { Disposable, toDisposable } from 'common/Lifecycle'; -import { IDisposable } from 'common/Types'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; +import { IDisposable } from 'common/services/Types'; export class LinkProviderService extends Disposable implements ILinkProviderService { declare public serviceBrand: undefined; diff --git a/src/browser/services/MouseService.test.ts b/src/browser/services/MouseService.test.ts index d7aa7308f..7aef876b8 100644 --- a/src/browser/services/MouseService.test.ts +++ b/src/browser/services/MouseService.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { AltMouseCursorController, MouseEventCssClasses, MouseService } from 'browser/services/MouseService'; import { MouseStateService } from 'common/services/MouseStateService'; -import { CoreMouseAction, CoreMouseButton } from 'common/Types'; +import { CoreMouseAction, CoreMouseButton } from 'common/services/Types'; import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services'; import { OptionsService } from 'common/services/OptionsService'; import { MockCoreBrowserService, MockRenderService, MockSelectionService } from 'browser/TestUtils.test'; diff --git a/src/browser/services/MouseService.ts b/src/browser/services/MouseService.ts index f9d68f42e..b2600197c 100644 --- a/src/browser/services/MouseService.ts +++ b/src/browser/services/MouseService.ts @@ -5,9 +5,9 @@ import { addDisposableListener } from 'browser/Dom'; import { IBufferService, IMouseStateService, ICoreService, ILogService, IOptionsService } from 'common/services/Services'; -import { CoreMouseAction, CoreMouseButton, CoreMouseEventType, ICoreMouseEvent, IDisposable } from 'common/Types'; +import { CoreMouseAction, CoreMouseButton, CoreMouseEventType, ICoreMouseEvent, IDisposable } from 'common/services/Types'; import { C0 } from 'common/data/EscapeSequences'; -import { DisposableStore, MutableDisposable, toDisposable } from 'common/Lifecycle'; +import { DisposableStore, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; import { ICoreBrowserService, IMouseCoordsService, IMouseService, IMouseServiceTarget, IRenderService, ISelectionService } from './Services'; import { Gesture, EventType as GestureEventType, IGestureEvent } from 'browser/scrollable/touch'; diff --git a/src/browser/services/RenderService.ts b/src/browser/services/RenderService.ts index e999b7eac..e460c3d76 100644 --- a/src/browser/services/RenderService.ts +++ b/src/browser/services/RenderService.ts @@ -7,10 +7,10 @@ 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 { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; -import { DebouncedIdleTask } from 'common/TaskQueue'; +import { Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; +import { DebouncedIdleTask } from 'common/services/TaskQueue'; import { IBufferService, ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; interface ISelectionState { start: [number, number] | undefined; diff --git a/src/browser/services/SelectionService.test.ts b/src/browser/services/SelectionService.test.ts index 04d691d40..2d8e2ef29 100644 --- a/src/browser/services/SelectionService.test.ts +++ b/src/browser/services/SelectionService.test.ts @@ -6,8 +6,8 @@ import { assert } from 'chai'; import { SelectionService, SelectionMode } from './SelectionService'; import { SelectionModel } from 'browser/selection/SelectionModel'; -import { IBufferLine } from 'common/Types'; -import { MockBufferService, MockOptionsService, MockCoreService, MockMouseStateService, createCellData } from 'common/TestUtils.test'; +import { IBufferLine } from 'common/services/Types'; +import { MockBufferService, MockOptionsService, MockCoreService, MockMouseStateService, createCellData } from 'common/terminal/TestUtils.test'; import { BufferLine } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { IBufferService, IOptionsService } from 'common/services/Services'; diff --git a/src/browser/services/SelectionService.ts b/src/browser/services/SelectionService.ts index 6516e5154..ac92bc779 100644 --- a/src/browser/services/SelectionService.ts +++ b/src/browser/services/SelectionService.ts @@ -9,14 +9,14 @@ 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 { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; -import * as Browser from 'common/Platform'; -import { IBufferLine, ICellData, IDisposable } from 'common/Types'; +import { Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; +import * as Browser from 'common/base/Platform'; +import { IBufferLine, ICellData, IDisposable } from 'common/services/Types'; import { getRangeLength } from 'common/buffer/BufferRange'; import { CellData } from 'common/buffer/CellData'; import { IBuffer } from 'common/buffer/Types'; import { IBufferService, ICoreService, IMouseStateService, IOptionsService } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; const enum Constants { /** diff --git a/src/browser/services/Services.ts b/src/browser/services/Services.ts index 72659cafe..748a408f2 100644 --- a/src/browser/services/Services.ts +++ b/src/browser/services/Services.ts @@ -7,8 +7,8 @@ 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 { createDecorator } from 'common/services/ServiceRegistry'; -import { AllColorIndex, IDisposable, IKeyboardResult } from 'common/Types'; -import type { IEvent } from 'common/Event'; +import { AllColorIndex, IDisposable, IKeyboardResult } from 'common/services/Types'; +import type { IEvent } from 'common/base/Event'; export const ICharSizeService = createDecorator('CharSizeService'); export interface ICharSizeService { diff --git a/src/browser/services/ThemeService.ts b/src/browser/services/ThemeService.ts index f2b23f3ce..acf17754e 100644 --- a/src/browser/services/ThemeService.ts +++ b/src/browser/services/ThemeService.ts @@ -6,11 +6,11 @@ import { ColorContrastCache } from 'browser/ColorContrastCache'; import { IThemeService } from 'browser/services/Services'; import { DEFAULT_ANSI_COLORS, IColorContrastCache, IColorSet, ReadonlyColorSet } from 'browser/Types'; -import { color, css, NULL_COLOR } from 'common/Color'; -import { Disposable } from 'common/Lifecycle'; +import { color, css, NULL_COLOR } from 'common/services/Color'; +import { Disposable } from 'common/base/Lifecycle'; import { IOptionsService, ITheme } from 'common/services/Services'; -import { AllColorIndex, IColor, SpecialColorIndex } from 'common/Types'; -import { Emitter } from 'common/Event'; +import { AllColorIndex, IColor, SpecialColorIndex } from 'common/services/Types'; +import { Emitter } from 'common/base/Event'; interface IRestoreColorSet { foreground: IColor; diff --git a/src/common/REARCHITECTURE.md b/src/common/REARCHITECTURE.md new file mode 100644 index 000000000..0802955a2 --- /dev/null +++ b/src/common/REARCHITECTURE.md @@ -0,0 +1,60 @@ +# Common folder rearchitecture + +Layered layout for `src/common/` as proposed in [issue #5963](https://github.com/xtermjs/xterm.js/issues/5963). + +## Dependency graph (target) + +```mermaid +flowchart BT + subgraph platform["Platform layer"] + direction LR + base["common/base"] + encoding["common/encoding"] + data["common/data"] + buffer["common/buffer"] + parser["common/parser"] + input["common/input"] + + encoding --> base + data --> base + buffer --> encoding + buffer --> data + parser --> buffer + input --> parser + end + + subgraph integration["Integration layer"] + direction LR + services["common/services"] + terminal["common/terminal"] + terminal --> services + end + + subgraph api_layer["API layer"] + public["common/public"] + end + + integration --> platform + api_layer --> integration +``` + +## Package contents + +| Project | Role | Notable sources | +| --- | --- | --- | +| `common/base` | Core utilities (lifecycle, events, platform) | `Async`, `Event`, `Lifecycle`, `Platform`, `StringBuilder`, `Version` | +| `common/encoding` | UTF conversion | `TextDecoder` (moved from `input/`) | +| `common/data` | Static terminal data | `Charsets`, `EscapeSequences` | +| `common/buffer` | Screen buffer | `Buffer`, `BufferLine`, … | +| `common/parser` | Escape sequence parser | `EscapeSequenceParser`, … | +| `common/input` | Keyboard / write path helpers | `Keyboard`, `WriteBuffer`, … | +| `common/services` | DI services and shared types | `Services`, `Types`, `CircularList`, … | +| `common/terminal` | Core terminal + input handler | `CoreTerminal`, `InputHandler`, `WindowsMode` | +| `common/public` | Public API adapters | `AddonManager`, buffer API views | + +## TypeScript projects + +- **`common/tsconfig.json`** — composite build for all layers (resolves existing `buffer` ↔ `services` imports). +- **`common//tsconfig.json`** — per-layer config extending the root (`noEmit`) for tooling and future split into referenced composite projects. + +Enforcing one-way project references at compile time (separate `out` per layer) is follow-up work once `Types` and buffer service interfaces are decoupled. diff --git a/src/common/Async.ts b/src/common/base/Async.ts similarity index 99% rename from src/common/Async.ts rename to src/common/base/Async.ts index 276532fb8..3d8527387 100644 --- a/src/common/Async.ts +++ b/src/common/base/Async.ts @@ -5,7 +5,7 @@ * Minimal async helpers for xterm.js core. */ -import { DisposableStore, IDisposable, toDisposable } from 'common/Lifecycle'; +import { DisposableStore, IDisposable, toDisposable } from 'common/base/Lifecycle'; export function timeout(millis: number): Promise { return new Promise(resolve => setTimeout(resolve, millis)); diff --git a/src/common/Event.test.ts b/src/common/base/Event.test.ts similarity index 97% rename from src/common/Event.test.ts rename to src/common/base/Event.test.ts index 8d1cfadd5..73f25bec1 100644 --- a/src/common/Event.test.ts +++ b/src/common/base/Event.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; describe('Emitter', () => { it('should fire with 0 listeners without error', () => { diff --git a/src/common/Event.ts b/src/common/base/Event.ts similarity index 99% rename from src/common/Event.ts rename to src/common/base/Event.ts index f92ab2ac1..9cfe94b5e 100644 --- a/src/common/Event.ts +++ b/src/common/base/Event.ts @@ -6,7 +6,7 @@ * Simplified from VS Code's event.ts - no leak detection/profiling. */ -import { IDisposable, DisposableStore, toDisposable } from 'common/Lifecycle'; +import { IDisposable, DisposableStore, toDisposable } from 'common/base/Lifecycle'; export interface IEvent { (listener: (e: T) => any, thisArgs?: any, disposables?: IDisposable[] | DisposableStore): IDisposable; diff --git a/src/common/Lifecycle.ts b/src/common/base/Lifecycle.ts similarity index 100% rename from src/common/Lifecycle.ts rename to src/common/base/Lifecycle.ts diff --git a/src/common/MultiKeyMap.test.ts b/src/common/base/MultiKeyMap.test.ts similarity index 96% rename from src/common/MultiKeyMap.test.ts rename to src/common/base/MultiKeyMap.test.ts index b908321c3..aaff8dbe8 100644 --- a/src/common/MultiKeyMap.test.ts +++ b/src/common/base/MultiKeyMap.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { FourKeyMap, TwoKeyMap } from 'common/MultiKeyMap'; +import { FourKeyMap, TwoKeyMap } from 'common/base/MultiKeyMap'; const strictEqual = assert.strictEqual; diff --git a/src/common/MultiKeyMap.ts b/src/common/base/MultiKeyMap.ts similarity index 100% rename from src/common/MultiKeyMap.ts rename to src/common/base/MultiKeyMap.ts diff --git a/src/common/Platform.ts b/src/common/base/Platform.ts similarity index 100% rename from src/common/Platform.ts rename to src/common/base/Platform.ts diff --git a/src/common/StringBuilder.test.ts b/src/common/base/StringBuilder.test.ts similarity index 98% rename from src/common/StringBuilder.test.ts rename to src/common/base/StringBuilder.test.ts index 1794de0f7..b305052c9 100644 --- a/src/common/StringBuilder.test.ts +++ b/src/common/base/StringBuilder.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { LimitedStringBuilder, StringBuilder } from 'common/StringBuilder'; +import { LimitedStringBuilder, StringBuilder } from 'common/base/StringBuilder'; describe('StringBuilder', () => { it('should start empty', () => { diff --git a/src/common/StringBuilder.ts b/src/common/base/StringBuilder.ts similarity index 100% rename from src/common/StringBuilder.ts rename to src/common/base/StringBuilder.ts diff --git a/src/common/Version.ts b/src/common/base/Version.ts similarity index 100% rename from src/common/Version.ts rename to src/common/base/Version.ts diff --git a/src/common/base/tsconfig.json b/src/common/base/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/base/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/buffer/AttributeData.ts b/src/common/buffer/AttributeData.ts index 6221fb81d..598854387 100644 --- a/src/common/buffer/AttributeData.ts +++ b/src/common/buffer/AttributeData.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IAttributeData, IColorRGB, IExtendedAttrs } from 'common/Types'; +import { IAttributeData, IColorRGB, IExtendedAttrs } from 'common/services/Types'; import { Attributes, FgFlags, BgFlags, UnderlineStyle, ExtFlags } from 'common/buffer/Constants'; export class AttributeData implements IAttributeData { diff --git a/src/common/buffer/Buffer.test.ts b/src/common/buffer/Buffer.test.ts index abfea7b06..43316089c 100644 --- a/src/common/buffer/Buffer.test.ts +++ b/src/common/buffer/Buffer.test.ts @@ -5,8 +5,8 @@ import { assert } from 'chai'; import { Buffer } from 'common/buffer/Buffer'; -import { CircularList } from 'common/CircularList'; -import { MockOptionsService, MockBufferService, MockLogService, createCellData } from 'common/TestUtils.test'; +import { CircularList } from 'common/services/CircularList'; +import { MockOptionsService, MockBufferService, MockLogService, createCellData } from 'common/terminal/TestUtils.test'; import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; import { CellData } from 'common/buffer/CellData'; diff --git a/src/common/buffer/Buffer.ts b/src/common/buffer/Buffer.ts index 34ef02f6a..8b13ae304 100644 --- a/src/common/buffer/Buffer.ts +++ b/src/common/buffer/Buffer.ts @@ -3,10 +3,10 @@ * @license MIT */ -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 { CircularList, IInsertEvent } from 'common/services/CircularList'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; +import { IdleTaskQueue } from 'common/services/TaskQueue'; +import { IAttributeData, IBufferLine, ICellData, ICharset } from 'common/services/Types'; import { ExtendedAttrs } from 'common/buffer/AttributeData'; import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { BufferLineStringCache } from 'common/buffer/BufferLineStringCache'; diff --git a/src/common/buffer/BufferLine.test.ts b/src/common/buffer/BufferLine.test.ts index 3aec28872..656865733 100644 --- a/src/common/buffer/BufferLine.test.ts +++ b/src/common/buffer/BufferLine.test.ts @@ -3,13 +3,13 @@ * @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 '../Types'; +import { CharData, IBufferLine, ICellData } from 'common/services/Types'; import { assert } from 'chai'; import { AttributeData } from 'common/buffer/AttributeData'; -import { createCellData, NULL_CELL_DATA, extendedAttributes } from 'common/TestUtils.test'; +import { createCellData, NULL_CELL_DATA, extendedAttributes } from 'common/terminal/TestUtils.test'; const TEST_STRING_CACHE = new BufferLineStringCache(); diff --git a/src/common/buffer/BufferLine.ts b/src/common/buffer/BufferLine.ts index e24a000c9..8b08b7f36 100644 --- a/src/common/buffer/BufferLine.ts +++ b/src/common/buffer/BufferLine.ts @@ -3,12 +3,12 @@ * @license MIT */ -import { CharData, IAttributeData, IBufferLine, ICellData, IExtendedAttrs } from 'common/Types'; +import { CharData, IAttributeData, IBufferLine, ICellData, IExtendedAttrs } from 'common/services/Types'; 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'; -import { stringFromCodePoint } from 'common/input/TextDecoder'; -import { StringBuilder } from 'common/StringBuilder'; +import { stringFromCodePoint } from 'common/encoding/TextDecoder'; +import { StringBuilder } from 'common/base/StringBuilder'; // Buffer memory layout: // diff --git a/src/common/buffer/BufferLineStringCache.ts b/src/common/buffer/BufferLineStringCache.ts index b365eef70..c9239f25d 100644 --- a/src/common/buffer/BufferLineStringCache.ts +++ b/src/common/buffer/BufferLineStringCache.ts @@ -4,8 +4,8 @@ */ import type { IBufferLineStringCache, IBufferLineStringCacheEntry } from 'common/buffer/BufferLine'; -import { disposableTimeout } from 'common/Async'; -import { Disposable, MutableDisposable, toDisposable, type IDisposable } from 'common/Lifecycle'; +import { disposableTimeout } from 'common/base/Async'; +import { Disposable, MutableDisposable, toDisposable, type IDisposable } from 'common/base/Lifecycle'; const enum Constants { CACHE_TTL_MS = 15000 diff --git a/src/common/buffer/BufferReflow.ts b/src/common/buffer/BufferReflow.ts index 45a194711..8eab5fbb0 100644 --- a/src/common/buffer/BufferReflow.ts +++ b/src/common/buffer/BufferReflow.ts @@ -4,8 +4,8 @@ */ import { BufferLine } from 'common/buffer/BufferLine'; -import { CircularList } from 'common/CircularList'; -import { IBufferLine, ICellData } from 'common/Types'; +import { CircularList } from 'common/services/CircularList'; +import { IBufferLine, ICellData } from 'common/services/Types'; export interface INewLayoutResult { layout: number[]; diff --git a/src/common/buffer/BufferSet.test.ts b/src/common/buffer/BufferSet.test.ts index 8809a3cb6..59a316038 100644 --- a/src/common/buffer/BufferSet.test.ts +++ b/src/common/buffer/BufferSet.test.ts @@ -6,7 +6,7 @@ import { assert } from 'chai'; import { BufferSet } from 'common/buffer/BufferSet'; import { Buffer } from 'common/buffer/Buffer'; -import { MockOptionsService, MockBufferService, MockLogService, createCellData } from 'common/TestUtils.test'; +import { MockOptionsService, MockBufferService, MockLogService, createCellData } from 'common/terminal/TestUtils.test'; describe('BufferSet', () => { let bufferSet: BufferSet; diff --git a/src/common/buffer/BufferSet.ts b/src/common/buffer/BufferSet.ts index 32a4bf3b4..599d00766 100644 --- a/src/common/buffer/BufferSet.ts +++ b/src/common/buffer/BufferSet.ts @@ -3,12 +3,12 @@ * @license MIT */ -import { Disposable, MutableDisposable } from 'common/Lifecycle'; -import { IAttributeData } from 'common/Types'; +import { Disposable, MutableDisposable } from 'common/base/Lifecycle'; +import { IAttributeData } from 'common/services/Types'; import { Buffer } from 'common/buffer/Buffer'; import { IBuffer, IBufferSet } from 'common/buffer/Types'; import { IBufferService, ILogService, IOptionsService } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; /** * The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and diff --git a/src/common/buffer/CellData.ts b/src/common/buffer/CellData.ts index 43c4c594b..6c5383a0d 100644 --- a/src/common/buffer/CellData.ts +++ b/src/common/buffer/CellData.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { CharData, ICellData, IExtendedAttrs } from 'common/Types'; -import { stringFromCodePoint } from 'common/input/TextDecoder'; +import { CharData, ICellData, IExtendedAttrs } from 'common/services/Types'; +import { stringFromCodePoint } from 'common/encoding/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'; import type { IBufferCell as IBufferCellApi } from '@xterm/xterm'; diff --git a/src/common/buffer/Marker.ts b/src/common/buffer/Marker.ts index 59ad049b0..992f90ede 100644 --- a/src/common/buffer/Marker.ts +++ b/src/common/buffer/Marker.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { IDisposable, IMarker } from 'common/Types'; -import { Emitter } from 'common/Event'; -import { dispose } from 'common/Lifecycle'; +import { IDisposable, IMarker } from 'common/services/Types'; +import { Emitter } from 'common/base/Event'; +import { dispose } from 'common/base/Lifecycle'; export class Marker implements IMarker { private static _nextId = 1; diff --git a/src/common/buffer/Types.ts b/src/common/buffer/Types.ts index 85dd68eec..5879505a9 100644 --- a/src/common/buffer/Types.ts +++ b/src/common/buffer/Types.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { IAttributeData, ICircularList, IBufferLine, ICellData, IMarker, ICharset, IDisposable } from 'common/Types'; -import type { IEvent } from 'common/Event'; +import { IAttributeData, ICircularList, IBufferLine, ICellData, IMarker, ICharset, IDisposable } from 'common/services/Types'; +import type { IEvent } from 'common/base/Event'; // BufferIndex denotes a position in the buffer: [rowIndex, colIndex] export type BufferIndex = [number, number]; diff --git a/src/common/buffer/tsconfig.json b/src/common/buffer/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/buffer/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/data/Charsets.ts b/src/common/data/Charsets.ts index 06c1f4b84..5b10eb078 100644 --- a/src/common/data/Charsets.ts +++ b/src/common/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/data/tsconfig.json b/src/common/data/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/data/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/input/TextDecoder.test.ts b/src/common/encoding/TextDecoder.test.ts similarity index 99% rename from src/common/input/TextDecoder.test.ts rename to src/common/encoding/TextDecoder.test.ts index 1959e1591..bb8af52e7 100644 --- a/src/common/input/TextDecoder.test.ts +++ b/src/common/encoding/TextDecoder.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32, utf32ToString } from 'common/input/TextDecoder'; +import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32, utf32ToString } from 'common/encoding/TextDecoder'; // convert UTF32 codepoints to string diff --git a/src/common/input/TextDecoder.ts b/src/common/encoding/TextDecoder.ts similarity index 100% rename from src/common/input/TextDecoder.ts rename to src/common/encoding/TextDecoder.ts diff --git a/src/common/encoding/tsconfig.json b/src/common/encoding/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/encoding/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/input/Keyboard.test.ts b/src/common/input/Keyboard.test.ts index 47f516f0f..a01be5511 100644 --- a/src/common/input/Keyboard.test.ts +++ b/src/common/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/services/Types'; /** * A helper function for testing which allows passing in a partial event and defaults will be filled diff --git a/src/common/input/Keyboard.ts b/src/common/input/Keyboard.ts index 545b436c8..e62145105 100644 --- a/src/common/input/Keyboard.ts +++ b/src/common/input/Keyboard.ts @@ -4,7 +4,7 @@ * @license MIT */ -import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/Types'; +import { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/services/Types'; import { C0 } from 'common/data/EscapeSequences'; // reg + shift key mappings for digits and special chars diff --git a/src/common/input/KittyKeyboard.test.ts b/src/common/input/KittyKeyboard.test.ts index 2a832d75f..9acaf136d 100644 --- a/src/common/input/KittyKeyboard.test.ts +++ b/src/common/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/services/Types'; function createEvent(partialEvent: Partial = {}): IKeyboardEvent { return { diff --git a/src/common/input/KittyKeyboard.ts b/src/common/input/KittyKeyboard.ts index ff57b4f89..bbd196d92 100644 --- a/src/common/input/KittyKeyboard.ts +++ b/src/common/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/services/Types'; import { C0 } from 'common/data/EscapeSequences'; /** diff --git a/src/common/input/UnicodeV6.d.ts b/src/common/input/UnicodeV6.d.ts new file mode 100644 index 000000000..3eefe8405 --- /dev/null +++ b/src/common/input/UnicodeV6.d.ts @@ -0,0 +1,8 @@ +import { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; +export declare class UnicodeV6 implements IUnicodeVersionProvider { + readonly version = "6"; + constructor(); + wcwidth(num: number): UnicodeCharWidth; + charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; +} +//# sourceMappingURL=UnicodeV6.d.ts.map \ No newline at end of file diff --git a/src/common/input/UnicodeV6.d.ts.map b/src/common/input/UnicodeV6.d.ts.map new file mode 100644 index 000000000..cd348ff79 --- /dev/null +++ b/src/common/input/UnicodeV6.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UnicodeV6.d.ts","sourceRoot":"","sources":["UnicodeV6.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AA+E5G,qBAAa,SAAU,YAAW,uBAAuB;IACvD,SAAgB,OAAO,OAAO;IAE9B,cAkCC;IAEM,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAO5C;IAEM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,GAAG,qBAAqB,CAYhG;CACF"} \ No newline at end of file diff --git a/src/common/input/UnicodeV6.js b/src/common/input/UnicodeV6.js new file mode 100644 index 000000000..65716ea7d --- /dev/null +++ b/src/common/input/UnicodeV6.js @@ -0,0 +1,133 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnicodeV6 = void 0; +const UnicodeService_1 = require("common/services/UnicodeService"); +const BMP_COMBINING = [ + [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489], + [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], + [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603], + [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], + [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], + [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A], + [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], + [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], + [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], + [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], + [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], + [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], + [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], + [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], + [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], + [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], + [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], + [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], + [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], + [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], + [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], + [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], + [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], + [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], + [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], + [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], + [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], + [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], + [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], + [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F], + [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], + [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD], + [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], + [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], + [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], + [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], + [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], + [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], + [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], + [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F], + [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], + [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], + [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB] +]; +const HIGH_COMBINING = [ + [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F], + [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169], + [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD], + [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F], + [0xE0100, 0xE01EF] +]; +let table; +function bisearch(ucs, data) { + let min = 0; + let max = data.length - 1; + let mid; + if (ucs < data[0][0] || ucs > data[max][1]) { + return false; + } + while (max >= min) { + mid = (min + max) >> 1; + if (ucs > data[mid][1]) { + min = mid + 1; + } + else if (ucs < data[mid][0]) { + max = mid - 1; + } + else { + return true; + } + } + return false; +} +class UnicodeV6 { + constructor() { + this.version = '6'; + if (!table) { + table = new Uint8Array(65536); + table.fill(1); + table[0] = 0; + table.fill(0, 1, 32); + table.fill(0, 0x7f, 0xa0); + table.fill(2, 0x1100, 0x1160); + table[0x2329] = 2; + table[0x232a] = 2; + table.fill(2, 0x2e80, 0xa4d0); + table[0x303f] = 1; + table.fill(2, 0xac00, 0xd7a4); + table.fill(2, 0xf900, 0xfb00); + table.fill(2, 0xfe10, 0xfe1a); + table.fill(2, 0xfe30, 0xfe70); + table.fill(2, 0xff00, 0xff61); + table.fill(2, 0xffe0, 0xffe7); + for (let r = 0; r < BMP_COMBINING.length; ++r) { + table.fill(0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1); + } + } + } + wcwidth(num) { + if (num < 32) + return 0; + if (num < 127) + return 1; + if (num < 65536) + return table[num]; + if (bisearch(num, HIGH_COMBINING)) + return 0; + if ((num >= 0x20000 && num <= 0x2fffd) || (num >= 0x30000 && num <= 0x3fffd)) + return 2; + return 1; + } + charProperties(codepoint, preceding) { + let width = this.wcwidth(codepoint); + let shouldJoin = width === 0 && preceding !== 0; + if (shouldJoin) { + const oldWidth = UnicodeService_1.UnicodeService.extractWidth(preceding); + if (oldWidth === 0) { + shouldJoin = false; + } + else if (oldWidth > width) { + width = oldWidth; + } + } + return UnicodeService_1.UnicodeService.createPropertyValue(0, width, shouldJoin); + } +} +exports.UnicodeV6 = UnicodeV6; +//# sourceMappingURL=UnicodeV6.js.map \ No newline at end of file diff --git a/src/common/input/UnicodeV6.js.map b/src/common/input/UnicodeV6.js.map new file mode 100644 index 000000000..7570502ce --- /dev/null +++ b/src/common/input/UnicodeV6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"UnicodeV6.js","sourceRoot":"","sources":["UnicodeV6.ts"],"names":[],"mappings":";;;AAKA,mEAAgE;AAEhE,MAAM,aAAa,GAAG;IACpB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,CAAC,MAAM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"} \ No newline at end of file diff --git a/src/common/input/Win32InputMode.test.ts b/src/common/input/Win32InputMode.test.ts index d0f333591..7c7dc2b09 100644 --- a/src/common/input/Win32InputMode.test.ts +++ b/src/common/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/services/Types'; type EventOpts = Partial; const ev = (opts: EventOpts): IKeyboardEvent => ({ diff --git a/src/common/input/Win32InputMode.ts b/src/common/input/Win32InputMode.ts index 72907836d..a7c9babd7 100644 --- a/src/common/input/Win32InputMode.ts +++ b/src/common/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/services/Types'; import { C0 } from 'common/data/EscapeSequences'; /** diff --git a/src/common/input/WriteBuffer.ts b/src/common/input/WriteBuffer.ts index 7ecab58ad..d5f60ef9c 100644 --- a/src/common/input/WriteBuffer.ts +++ b/src/common/input/WriteBuffer.ts @@ -4,9 +4,9 @@ * @license MIT */ -import { TimeoutTimer } from 'common/Async'; -import { Disposable, toDisposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; +import { TimeoutTimer } from 'common/base/Async'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; const enum Constants { /** diff --git a/src/common/input/tsconfig.json b/src/common/input/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/input/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/parser/ApcParser.test.ts b/src/common/parser/ApcParser.test.ts index c2200d918..8482d1e9c 100644 --- a/src/common/parser/ApcParser.test.ts +++ b/src/common/parser/ApcParser.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; import { ApcParser, ApcHandler } from 'common/parser/ApcParser'; -import { StringToUtf32, utf32ToString } from 'common/input/TextDecoder'; +import { StringToUtf32, utf32ToString } from 'common/encoding/TextDecoder'; import { IApcHandler, IFunctionIdentifier } from 'common/parser/Types'; function toUtf32(s: string): Uint32Array { diff --git a/src/common/parser/ApcParser.ts b/src/common/parser/ApcParser.ts index 4e647d037..3ceb47cec 100644 --- a/src/common/parser/ApcParser.ts +++ b/src/common/parser/ApcParser.ts @@ -5,9 +5,9 @@ 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 { LimitedStringBuilder } from 'common/StringBuilder'; +import { utf32ToString } from 'common/encoding/TextDecoder'; +import { IDisposable } from 'common/services/Types'; +import { LimitedStringBuilder } from 'common/base/StringBuilder'; const EMPTY_HANDLERS: IApcHandler[] = []; diff --git a/src/common/parser/Constants.d.ts b/src/common/parser/Constants.d.ts new file mode 100644 index 000000000..9dfbdc101 --- /dev/null +++ b/src/common/parser/Constants.d.ts @@ -0,0 +1,50 @@ +export declare const enum ParserState { + GROUND = 0, + ESCAPE = 1, + ESCAPE_INTERMEDIATE = 2, + CSI_ENTRY = 3, + CSI_PARAM = 4, + CSI_INTERMEDIATE = 5, + CSI_IGNORE = 6, + SOS_PM_STRING = 7, + OSC_STRING = 8, + DCS_ENTRY = 9, + DCS_PARAM = 10, + DCS_IGNORE = 11, + DCS_INTERMEDIATE = 12, + DCS_PASSTHROUGH = 13, + APC_ENTRY = 14, + APC_INTERMEDIATE = 15, + APC_PASSTHROUGH = 16, + STATE_LENGTH = 17 +} +export declare const enum ParserAction { + IGNORE = 0, + ERROR = 1, + PRINT = 2, + EXECUTE = 3, + OSC_START = 4, + OSC_PUT = 5, + OSC_END = 6, + CSI_DISPATCH = 7, + PARAM = 8, + COLLECT = 9, + ESC_DISPATCH = 10, + CLEAR = 11, + DCS_HOOK = 12, + DCS_PUT = 13, + DCS_UNHOOK = 14, + APC_START = 15, + APC_PUT = 16, + APC_END = 17 +} +export declare const enum OscState { + START = 0, + ID = 1, + PAYLOAD = 2, + ABORT = 3 +} +export declare const enum ParserConstants { + PAYLOAD_LIMIT = 10000000 +} +//# sourceMappingURL=Constants.d.ts.map \ No newline at end of file diff --git a/src/common/parser/Constants.d.ts.map b/src/common/parser/Constants.d.ts.map new file mode 100644 index 000000000..8240fc2af --- /dev/null +++ b/src/common/parser/Constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["Constants.ts"],"names":[],"mappings":"AAQA,0BAAkB,WAAW;IAC3B,MAAM,IAAI;IACV,MAAM,IAAI;IACV,mBAAmB,IAAI;IACvB,SAAS,IAAI;IACb,SAAS,IAAI;IACb,gBAAgB,IAAI;IACpB,UAAU,IAAI;IACd,aAAa,IAAI;IACjB,UAAU,IAAI;IACd,SAAS,IAAI;IACb,SAAS,KAAK;IACd,UAAU,KAAK;IACf,gBAAgB,KAAK;IACrB,eAAe,KAAK;IACpB,SAAS,KAAK;IACd,gBAAgB,KAAK;IACrB,eAAe,KAAK;IAEpB,YAAY,KAAK;CAClB;AAKD,0BAAkB,YAAY;IAC5B,MAAM,IAAI;IACV,KAAK,IAAI;IACT,KAAK,IAAI;IACT,OAAO,IAAI;IACX,SAAS,IAAI;IACb,OAAO,IAAI;IACX,OAAO,IAAI;IACX,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,OAAO,IAAI;IACX,YAAY,KAAK;IACjB,KAAK,KAAK;IACV,QAAQ,KAAK;IACb,OAAO,KAAK;IACZ,UAAU,KAAK;IACf,SAAS,KAAK;IACd,OAAO,KAAK;IACZ,OAAO,KAAK;CACb;AAKD,0BAAkB,QAAQ;IACxB,KAAK,IAAI;IACT,EAAE,IAAI;IACN,OAAO,IAAI;IACX,KAAK,IAAI;CACV;AAGD,0BAAkB,eAAe;IAC/B,aAAa,WAAW;CACzB"} \ No newline at end of file diff --git a/src/common/parser/Constants.js b/src/common/parser/Constants.js new file mode 100644 index 000000000..8055bdd5d --- /dev/null +++ b/src/common/parser/Constants.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Constants.js.map \ No newline at end of file diff --git a/src/common/parser/Constants.js.map b/src/common/parser/Constants.js.map new file mode 100644 index 000000000..88f2bead8 --- /dev/null +++ b/src/common/parser/Constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Constants.js","sourceRoot":"","sources":["Constants.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/src/common/parser/DcsParser.test.ts b/src/common/parser/DcsParser.test.ts index 0296fa88e..3bcdea109 100644 --- a/src/common/parser/DcsParser.test.ts +++ b/src/common/parser/DcsParser.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { DcsParser, DcsHandler } from 'common/parser/DcsParser'; import { IDcsHandler, IParams, IFunctionIdentifier } from 'common/parser/Types'; -import { utf32ToString, StringToUtf32 } from 'common/input/TextDecoder'; +import { utf32ToString, StringToUtf32 } from 'common/encoding/TextDecoder'; import { Params } from 'common/parser/Params'; function toUtf32(s: string): Uint32Array { diff --git a/src/common/parser/DcsParser.ts b/src/common/parser/DcsParser.ts index 25c22b8dd..4611f6253 100644 --- a/src/common/parser/DcsParser.ts +++ b/src/common/parser/DcsParser.ts @@ -3,12 +3,12 @@ * @license MIT */ -import { IDisposable } from 'common/Types'; +import { IDisposable } from 'common/services/Types'; import { IDcsHandler, IParams, IHandlerCollection, IDcsParser, DcsFallbackHandlerType, ISubParserStackState } from 'common/parser/Types'; -import { utf32ToString } from 'common/input/TextDecoder'; +import { utf32ToString } from 'common/encoding/TextDecoder'; import { Params } from 'common/parser/Params'; import { ParserConstants } from 'common/parser/Constants'; -import { LimitedStringBuilder } from 'common/StringBuilder'; +import { LimitedStringBuilder } from 'common/base/StringBuilder'; const EMPTY_HANDLERS: IDcsHandler[] = []; diff --git a/src/common/parser/EscapeSequenceParser.test.ts b/src/common/parser/EscapeSequenceParser.test.ts index 2d5a04df7..909467406 100644 --- a/src/common/parser/EscapeSequenceParser.test.ts +++ b/src/common/parser/EscapeSequenceParser.test.ts @@ -6,11 +6,11 @@ import { IParsingState, IParams, ParamsArray, IOscParser, IOscHandler, OscFallbackHandlerType, IFunctionIdentifier, IParserStackState, ParserStackType } from 'common/parser/Types'; import { EscapeSequenceParser, TransitionTable, VT500_TRANSITION_TABLE } from 'common/parser/EscapeSequenceParser'; import { assert } from 'chai'; -import { StringToUtf32, stringFromCodePoint, utf32ToString } from 'common/input/TextDecoder'; +import { StringToUtf32, stringFromCodePoint, utf32ToString } from 'common/encoding/TextDecoder'; import { ParserState } from 'common/parser/Constants'; import { Params } from 'common/parser/Params'; import { OscHandler } from 'common/parser/OscParser'; -import { IDisposable } from 'common/Types'; +import { IDisposable } from 'common/services/Types'; import { DcsHandler } from 'common/parser/DcsParser'; import { ApcHandler } from 'common/parser/ApcParser'; diff --git a/src/common/parser/EscapeSequenceParser.ts b/src/common/parser/EscapeSequenceParser.ts index 2780d8916..e100b74c4 100644 --- a/src/common/parser/EscapeSequenceParser.ts +++ b/src/common/parser/EscapeSequenceParser.ts @@ -5,8 +5,8 @@ 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 } from 'common/base/Lifecycle'; +import { IDisposable } from 'common/services/Types'; import { Params } from 'common/parser/Params'; import { OscParser } from 'common/parser/OscParser'; import { DcsParser } from 'common/parser/DcsParser'; diff --git a/src/common/parser/OscParser.test.ts b/src/common/parser/OscParser.test.ts index b6b96cbad..cf3de6c5a 100644 --- a/src/common/parser/OscParser.test.ts +++ b/src/common/parser/OscParser.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; import { OscParser, OscHandler } from 'common/parser/OscParser'; -import { StringToUtf32, utf32ToString } from 'common/input/TextDecoder'; +import { StringToUtf32, utf32ToString } from 'common/encoding/TextDecoder'; import { IOscHandler } from 'common/parser/Types'; function toUtf32(s: string): Uint32Array { diff --git a/src/common/parser/OscParser.ts b/src/common/parser/OscParser.ts index 3e05f2298..3be2082d2 100644 --- a/src/common/parser/OscParser.ts +++ b/src/common/parser/OscParser.ts @@ -5,9 +5,9 @@ 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 { LimitedStringBuilder } from 'common/StringBuilder'; +import { utf32ToString } from 'common/encoding/TextDecoder'; +import { IDisposable } from 'common/services/Types'; +import { LimitedStringBuilder } from 'common/base/StringBuilder'; const EMPTY_HANDLERS: IOscHandler[] = []; diff --git a/src/common/parser/Types.d.ts b/src/common/parser/Types.d.ts new file mode 100644 index 000000000..0e48c2997 --- /dev/null +++ b/src/common/parser/Types.d.ts @@ -0,0 +1,137 @@ +import { IDisposable } from 'common/services/Types'; +import { ParserState } from 'common/parser/Constants'; +export type ParamsArray = (number | number[])[]; +export interface IParamsConstructor { + new (maxLength: number, maxSubParamsLength: number): IParams; + fromArray(values: ParamsArray): IParams; +} +export interface IParams { + maxLength: number; + maxSubParamsLength: number; + params: Int32Array; + length: number; + clone(): IParams; + toArray(): ParamsArray; + reset(): void; + resetZdm(): void; + addParam(value: number): void; + addSubParam(value: number): void; + hasSubParams(idx: number): boolean; + getSubParams(idx: number): Int32Array | null; + getSubParamsAll(): { + [idx: number]: Int32Array; + }; +} +export interface IParsingState { + position: number; + code: number; + currentState: ParserState; + collect: number; + params: IParams; + abort: boolean; +} +export type CsiHandlerType = (params: IParams) => boolean | Promise; +export type CsiFallbackHandlerType = (ident: number, params: IParams) => void; +export interface IDcsHandler { + hook(params: IParams): void; + put(data: Uint32Array, start: number, end: number): void; + unhook(success: boolean): boolean | Promise; +} +export type DcsFallbackHandlerType = (ident: number, action: 'HOOK' | 'PUT' | 'UNHOOK', payload?: any) => void; +export type EscHandlerType = () => boolean | Promise; +export type EscFallbackHandlerType = (identifier: number) => void; +export type ExecuteHandlerType = (ident?: number) => boolean; +export type ExecuteFallbackHandlerType = (ident: number) => void; +export interface IOscHandler { + start(): void; + put(data: Uint32Array, start: number, end: number): void; + end(success: boolean): boolean | Promise; +} +export type OscFallbackHandlerType = (ident: number, action: 'START' | 'PUT' | 'END', payload?: any) => void; +export interface IApcHandler { + start(): void; + put(data: Uint32Array, start: number, end: number): void; + end(success: boolean): boolean | Promise; +} +export type ApcFallbackHandlerType = (ident: number, action: 'START' | 'PUT' | 'END', payload?: any) => void; +export type PrintHandlerType = (data: Uint32Array, start: number, end: number) => void; +export type PrintFallbackHandlerType = PrintHandlerType; +export interface IEscapeSequenceParser extends IDisposable { + precedingJoinState: number; + reset(): void; + parse(data: Uint32Array, length: number, promiseResult?: boolean): void | Promise; + identToString(ident: number): string; + setPrintHandler(handler: PrintHandlerType): void; + clearPrintHandler(): void; + registerEscHandler(id: IFunctionIdentifier, handler: EscHandlerType): IDisposable; + clearEscHandler(id: IFunctionIdentifier): void; + setEscHandlerFallback(handler: EscFallbackHandlerType): void; + setExecuteHandler(flag: string, handler: ExecuteHandlerType): void; + clearExecuteHandler(flag: string): void; + setExecuteHandlerFallback(handler: ExecuteFallbackHandlerType): void; + registerCsiHandler(id: IFunctionIdentifier, handler: CsiHandlerType): IDisposable; + clearCsiHandler(id: IFunctionIdentifier): void; + setCsiHandlerFallback(callback: CsiFallbackHandlerType): void; + registerDcsHandler(id: IFunctionIdentifier, handler: IDcsHandler): IDisposable; + clearDcsHandler(id: IFunctionIdentifier): void; + setDcsHandlerFallback(handler: DcsFallbackHandlerType): void; + registerOscHandler(ident: number, handler: IOscHandler): IDisposable; + clearOscHandler(ident: number): void; + setOscHandlerFallback(handler: OscFallbackHandlerType): void; + registerApcHandler(id: IFunctionIdentifier, handler: IApcHandler): IDisposable; + clearApcHandler(id: IFunctionIdentifier): void; + setApcHandlerFallback(handler: ApcFallbackHandlerType): void; + setErrorHandler(handler: (state: IParsingState) => IParsingState): void; + clearErrorHandler(): void; +} +export interface ISubParser extends IDisposable { + reset(): void; + registerHandler(ident: number, handler: T): IDisposable; + clearHandler(ident: number): void; + setHandlerFallback(handler: U): void; + put(data: Uint32Array, start: number, end: number): void; +} +export interface IOscParser extends ISubParser { + start(): void; + end(success: boolean, promiseResult?: boolean): void | Promise; +} +export interface IDcsParser extends ISubParser { + hook(ident: number, params: IParams): void; + unhook(success: boolean, promiseResult?: boolean): void | Promise; +} +export interface IApcParser extends ISubParser { + start(ident: number): void; + end(success: boolean, promiseResult?: boolean): void | Promise; +} +export interface IFunctionIdentifier { + prefix?: string; + intermediates?: string; + final: string; +} +export interface IHandlerCollection { + [key: string]: T[]; +} +export declare const enum ParserStackType { + NONE = 0, + FAIL = 1, + RESET = 2, + CSI = 3, + ESC = 4, + OSC = 5, + DCS = 6, + APC = 7 +} +export type ResumableHandlersType = CsiHandlerType[] | EscHandlerType[]; +export interface IParserStackState { + state: ParserStackType; + handlers: ResumableHandlersType; + handlerPos: number; + transition: number; + chunkPos: number; +} +export interface ISubParserStackState { + paused: boolean; + loopPosition: number; + fallThrough: boolean; +} +//# sourceMappingURL=Types.d.ts.map \ No newline at end of file diff --git a/src/common/parser/Types.d.ts.map b/src/common/parser/Types.d.ts.map new file mode 100644 index 000000000..3f7ac746f --- /dev/null +++ b/src/common/parser/Types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["Types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/parser/Types.js b/src/common/parser/Types.js new file mode 100644 index 000000000..7e73fc567 --- /dev/null +++ b/src/common/parser/Types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Types.js.map \ No newline at end of file diff --git a/src/common/parser/Types.js.map b/src/common/parser/Types.js.map new file mode 100644 index 000000000..7d148f5ff --- /dev/null +++ b/src/common/parser/Types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Types.js","sourceRoot":"","sources":["Types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/src/common/parser/Types.ts b/src/common/parser/Types.ts index c04788f7e..13f8955a0 100644 --- a/src/common/parser/Types.ts +++ b/src/common/parser/Types.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IDisposable } from 'common/Types'; +import { IDisposable } from 'common/services/Types'; import { ParserState } from 'common/parser/Constants'; diff --git a/src/common/parser/tsconfig.json b/src/common/parser/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/parser/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/public/BufferLineApiView.ts b/src/common/public/BufferLineApiView.ts index 0a747fa41..ecd5c3cf9 100644 --- a/src/common/public/BufferLineApiView.ts +++ b/src/common/public/BufferLineApiView.ts @@ -4,7 +4,7 @@ */ import { CellData } from 'common/buffer/CellData'; -import { IBufferLine, ICellData } from 'common/Types'; +import { IBufferLine, ICellData } from 'common/services/Types'; import { IBufferCell as IBufferCellApi, IBufferLine as IBufferLineApi } from '@xterm/xterm'; export class BufferLineApiView implements IBufferLineApi { diff --git a/src/common/public/BufferNamespaceApi.ts b/src/common/public/BufferNamespaceApi.ts index b9744f943..4bac17b08 100644 --- a/src/common/public/BufferNamespaceApi.ts +++ b/src/common/public/BufferNamespaceApi.ts @@ -5,9 +5,9 @@ import { IBuffer as IBufferApi, IBufferNamespace as IBufferNamespaceApi } from '@xterm/xterm'; import { BufferApiView } from 'common/public/BufferApiView'; -import { ICoreTerminal } from 'common/Types'; -import { Disposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; +import { ICoreTerminal } from 'common/services/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; export class BufferNamespaceApi extends Disposable implements IBufferNamespaceApi { private _normal: BufferApiView; diff --git a/src/common/public/ParserApi.ts b/src/common/public/ParserApi.ts index 4c482d7ca..8ad665c78 100644 --- a/src/common/public/ParserApi.ts +++ b/src/common/public/ParserApi.ts @@ -5,7 +5,7 @@ import { IParams } from 'common/parser/Types'; import { IDisposable, IFunctionIdentifier, IParser } from '@xterm/xterm'; -import { ICoreTerminal } from 'common/Types'; +import { ICoreTerminal } from 'common/services/Types'; export class ParserApi implements IParser { constructor(private _core: ICoreTerminal) { } diff --git a/src/common/public/UnicodeApi.ts b/src/common/public/UnicodeApi.ts index ec9bd1f77..e2c6e523d 100644 --- a/src/common/public/UnicodeApi.ts +++ b/src/common/public/UnicodeApi.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { ICoreTerminal } from 'common/Types'; +import { ICoreTerminal } from 'common/services/Types'; import { IUnicodeHandling, IUnicodeVersionProvider } from '@xterm/xterm'; export class UnicodeApi implements IUnicodeHandling { diff --git a/src/common/public/tsconfig.json b/src/common/public/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/public/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/services/BufferService.ts b/src/common/services/BufferService.ts index 06ac6b10a..862459002 100644 --- a/src/common/services/BufferService.ts +++ b/src/common/services/BufferService.ts @@ -3,12 +3,12 @@ * @license MIT */ -import { Disposable } from 'common/Lifecycle'; -import { IAttributeData, IBufferLine } from 'common/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { IAttributeData, IBufferLine } from 'common/services/Types'; import { BufferSet } from 'common/buffer/BufferSet'; import { IBuffer, IBufferSet } from 'common/buffer/Types'; import { IBufferService, ILogService, IOptionsService, type IBufferResizeEvent } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; export const enum BufferServiceConstants { MINIMUM_COLS = 2, // Less than 2 can mess with wide chars diff --git a/src/common/services/CharsetService.ts b/src/common/services/CharsetService.ts index bcd027a64..5e987409e 100644 --- a/src/common/services/CharsetService.ts +++ b/src/common/services/CharsetService.ts @@ -4,7 +4,7 @@ */ import { ICharsetService } from 'common/services/Services'; -import { ICharset } from 'common/Types'; +import { ICharset } from 'common/services/Types'; export class CharsetService implements ICharsetService { public serviceBrand: any; diff --git a/src/common/services/CircularList.d.ts b/src/common/services/CircularList.d.ts new file mode 100644 index 000000000..111c21b4c --- /dev/null +++ b/src/common/services/CircularList.d.ts @@ -0,0 +1,39 @@ +import { ICircularList } from 'common/services/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; +export interface IInsertEvent { + index: number; + amount: number; +} +export interface IDeleteEvent { + index: number; + amount: number; +} +export declare class CircularList extends Disposable implements ICircularList { + private _maxLength; + protected _array: (T | undefined)[]; + private _startIndex; + private _length; + readonly onDeleteEmitter: Emitter; + readonly onDelete: import("common/base/Event").IEvent; + readonly onInsertEmitter: Emitter; + readonly onInsert: import("common/base/Event").IEvent; + readonly onTrimEmitter: Emitter; + readonly onTrim: import("common/base/Event").IEvent; + constructor(_maxLength: number); + get maxLength(): number; + set maxLength(newMaxLength: number); + get length(): number; + set length(newLength: number); + get(index: number): T | undefined; + set(index: number, value: T | undefined): void; + push(value: T): void; + recycle(): T; + get isFull(): boolean; + pop(): T | undefined; + splice(start: number, deleteCount: number, ...items: T[]): void; + trimStart(count: number): void; + shiftElements(start: number, count: number, offset: number): void; + private _getCyclicIndex; +} +//# sourceMappingURL=CircularList.d.ts.map \ No newline at end of file diff --git a/src/common/services/CircularList.d.ts.map b/src/common/services/CircularList.d.ts.map new file mode 100644 index 000000000..604c7b8cd --- /dev/null +++ b/src/common/services/CircularList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CircularList.d.ts","sourceRoot":"","sources":["CircularList.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,qBAAa,YAAY,CAAC,CAAC,CAAE,SAAQ,UAAW,YAAW,aAAa,CAAC,CAAC,CAAC;IAavE,OAAO,CAAC,UAAU;IAZpB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IAExB,SAAgB,eAAe,wBAA+C;IAC9E,SAAgB,QAAQ,mDAA8B;IACtD,SAAgB,eAAe,wBAA+C;IAC9E,SAAgB,QAAQ,mDAA8B;IACtD,SAAgB,aAAa,kBAAyC;IACtE,SAAgB,MAAM,6CAA4B;IAElD,YACU,UAAU,EAAE,MAAM,EAM3B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,YAAY,EAAE,MAAM,EAexC;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,SAAS,EAAE,MAAM,EAOlC;IAUM,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAEvC;IAUM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAEpD;IAOM,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAQ1B;IAOM,OAAO,IAAI,CAAC,CAOlB;IAKD,IAAW,MAAM,IAAI,OAAO,CAE3B;IAMM,GAAG,IAAI,CAAC,GAAG,SAAS,CAE1B;IAWM,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CA8BrE;IAMM,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAOpC;IAEM,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA6BvE;IAQD,OAAO,CAAC,eAAe;CAGxB"} \ No newline at end of file diff --git a/src/common/services/CircularList.js b/src/common/services/CircularList.js new file mode 100644 index 000000000..3b8f267fb --- /dev/null +++ b/src/common/services/CircularList.js @@ -0,0 +1,146 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CircularList = void 0; +const Lifecycle_1 = require("common/base/Lifecycle"); +const Event_1 = require("common/base/Event"); +class CircularList extends Lifecycle_1.Disposable { + constructor(_maxLength) { + super(); + this._maxLength = _maxLength; + this.onDeleteEmitter = this._register(new Event_1.Emitter()); + this.onDelete = this.onDeleteEmitter.event; + this.onInsertEmitter = this._register(new Event_1.Emitter()); + this.onInsert = this.onInsertEmitter.event; + this.onTrimEmitter = this._register(new Event_1.Emitter()); + this.onTrim = this.onTrimEmitter.event; + this._array = new Array(this._maxLength); + this._startIndex = 0; + this._length = 0; + } + get maxLength() { + return this._maxLength; + } + set maxLength(newMaxLength) { + if (this._maxLength === newMaxLength) { + return; + } + const newArray = new Array(newMaxLength); + for (let i = 0; i < Math.min(newMaxLength, this.length); i++) { + newArray[i] = this._array[this._getCyclicIndex(i)]; + } + this._array = newArray; + this._maxLength = newMaxLength; + this._startIndex = 0; + } + get length() { + return this._length; + } + set length(newLength) { + if (newLength > this._length) { + for (let i = this._length; i < newLength; i++) { + this._array[i] = undefined; + } + } + this._length = newLength; + } + get(index) { + return this._array[this._getCyclicIndex(index)]; + } + set(index, value) { + this._array[this._getCyclicIndex(index)] = value; + } + push(value) { + this._array[this._getCyclicIndex(this._length)] = value; + if (this._length === this._maxLength) { + this._startIndex = ++this._startIndex % this._maxLength; + this.onTrimEmitter.fire(1); + } + else { + this._length++; + } + } + recycle() { + if (this._length !== this._maxLength) { + throw new Error('Can only recycle when the buffer is full'); + } + this._startIndex = ++this._startIndex % this._maxLength; + this.onTrimEmitter.fire(1); + return this._array[this._getCyclicIndex(this._length - 1)]; + } + get isFull() { + return this._length === this._maxLength; + } + pop() { + return this._array[this._getCyclicIndex(this._length-- - 1)]; + } + splice(start, deleteCount, ...items) { + if (deleteCount) { + for (let i = start; i < this._length - deleteCount; i++) { + this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + deleteCount)]; + } + this._length -= deleteCount; + this.onDeleteEmitter.fire({ index: start, amount: deleteCount }); + } + for (let i = this._length - 1; i >= start; i--) { + this._array[this._getCyclicIndex(i + items.length)] = this._array[this._getCyclicIndex(i)]; + } + for (let i = 0; i < items.length; i++) { + this._array[this._getCyclicIndex(start + i)] = items[i]; + } + if (items.length) { + this.onInsertEmitter.fire({ index: start, amount: items.length }); + } + if (this._length + items.length > this._maxLength) { + const countToTrim = (this._length + items.length) - this._maxLength; + this._startIndex += countToTrim; + this._length = this._maxLength; + this.onTrimEmitter.fire(countToTrim); + } + else { + this._length += items.length; + } + } + trimStart(count) { + if (count > this._length) { + count = this._length; + } + this._startIndex += count; + this._length -= count; + this.onTrimEmitter.fire(count); + } + shiftElements(start, count, offset) { + if (count <= 0) { + return; + } + if (start < 0 || start >= this._length) { + throw new Error('start argument out of range'); + } + if (start + offset < 0) { + throw new Error('Cannot shift elements in list beyond index 0'); + } + if (offset > 0) { + for (let i = count - 1; i >= 0; i--) { + this.set(start + i + offset, this.get(start + i)); + } + const expandListBy = (start + count + offset) - this._length; + if (expandListBy > 0) { + this._length += expandListBy; + while (this._length > this._maxLength) { + this._length--; + this._startIndex++; + this.onTrimEmitter.fire(1); + } + } + } + else { + for (let i = 0; i < count; i++) { + this.set(start + i + offset, this.get(start + i)); + } + } + } + _getCyclicIndex(index) { + return (this._startIndex + index) % this._maxLength; + } +} +exports.CircularList = CircularList; +//# sourceMappingURL=CircularList.js.map \ No newline at end of file diff --git a/src/common/services/CircularList.js.map b/src/common/services/CircularList.js.map new file mode 100644 index 000000000..1b6deb5d9 --- /dev/null +++ b/src/common/services/CircularList.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CircularList.js","sourceRoot":"","sources":["CircularList.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/CircularList.test.ts b/src/common/services/CircularList.test.ts similarity index 99% rename from src/common/CircularList.test.ts rename to src/common/services/CircularList.test.ts index 7a578a8cc..907577833 100644 --- a/src/common/CircularList.test.ts +++ b/src/common/services/CircularList.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { CircularList } from 'common/CircularList'; +import { CircularList } from 'common/services/CircularList'; describe('CircularList', () => { describe('push', () => { diff --git a/src/common/CircularList.ts b/src/common/services/CircularList.ts similarity index 97% rename from src/common/CircularList.ts rename to src/common/services/CircularList.ts index 3663bfc17..52626161f 100644 --- a/src/common/CircularList.ts +++ b/src/common/services/CircularList.ts @@ -3,9 +3,9 @@ * @license MIT */ -import { ICircularList } from 'common/Types'; -import { Disposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; +import { ICircularList } from 'common/services/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; export interface IInsertEvent { index: number; diff --git a/src/common/Color.test.ts b/src/common/services/Color.test.ts similarity index 99% rename from src/common/Color.test.ts rename to src/common/services/Color.test.ts index dbe759b4f..fc285ff45 100644 --- a/src/common/Color.test.ts +++ b/src/common/services/Color.test.ts @@ -4,7 +4,7 @@ */ import { assert } from 'chai'; -import { channels, color, css, rgb, rgba, toPaddedHex, contrastRatio } from 'common/Color'; +import { channels, color, css, rgb, rgba, toPaddedHex, contrastRatio } from 'common/services/Color'; describe('Color', () => { diff --git a/src/common/Color.ts b/src/common/services/Color.ts similarity index 99% rename from src/common/Color.ts rename to src/common/services/Color.ts index b3d13fc99..5158da752 100644 --- a/src/common/Color.ts +++ b/src/common/services/Color.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IColor, IColorRGB } from 'common/Types'; +import { IColor, IColorRGB } from 'common/services/Types'; let $r = 0; let $g = 0; diff --git a/src/common/services/CoreService.test.ts b/src/common/services/CoreService.test.ts index 7ae8bf185..4a7582144 100644 --- a/src/common/services/CoreService.test.ts +++ b/src/common/services/CoreService.test.ts @@ -5,7 +5,7 @@ import { ICoreService } from 'common/services/Services'; import { CoreService } from 'common/services/CoreService'; -import { MockBufferService, MockLogService, MockOptionsService } from 'common/TestUtils.test'; +import { MockBufferService, MockLogService, MockOptionsService } from 'common/terminal/TestUtils.test'; import { assert } from 'chai'; describe('CoreService', () => { diff --git a/src/common/services/CoreService.ts b/src/common/services/CoreService.ts index f5094f5a9..971ae337f 100644 --- a/src/common/services/CoreService.ts +++ b/src/common/services/CoreService.ts @@ -3,10 +3,10 @@ * @license MIT */ -import { Disposable } from 'common/Lifecycle'; -import { IDecPrivateModes, IKittyKeyboardState, IModes } from 'common/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { IDecPrivateModes, IKittyKeyboardState, IModes } from 'common/services/Types'; import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; const DEFAULT_MODES: IModes = Object.freeze({ insertMode: false diff --git a/src/common/services/DecorationService.test.ts b/src/common/services/DecorationService.test.ts index e3a6c2f04..3ad0debca 100644 --- a/src/common/services/DecorationService.test.ts +++ b/src/common/services/DecorationService.test.ts @@ -5,10 +5,10 @@ import { assert } from 'chai'; import { DecorationLineCache, DecorationService } from './DecorationService'; -import { IMarker } from 'common/Types'; -import { Disposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; -import { MockLogService, MockBufferService, MockOptionsService } from 'common/TestUtils.test'; +import { IMarker } from 'common/services/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; +import { MockLogService, MockBufferService, MockOptionsService } from 'common/terminal/TestUtils.test'; import { Buffer } from 'common/buffer/Buffer'; import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; diff --git a/src/common/services/DecorationService.ts b/src/common/services/DecorationService.ts index 6db9bcf78..9d3729871 100644 --- a/src/common/services/DecorationService.ts +++ b/src/common/services/DecorationService.ts @@ -3,15 +3,15 @@ * @license MIT */ -import type { IDeleteEvent, IInsertEvent } from 'common/CircularList'; -import { MicrotaskTimer } from 'common/Async'; -import { css } from 'common/Color'; -import { Disposable, DisposableStore, MutableDisposable, toDisposable } from 'common/Lifecycle'; +import type { IDeleteEvent, IInsertEvent } from 'common/services/CircularList'; +import { MicrotaskTimer } from 'common/base/Async'; +import { css } from 'common/services/Color'; +import { Disposable, DisposableStore, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; import { IBufferService, IDecorationService, IInternalDecoration, ILogService } from 'common/services/Services'; -import { SortedList } from 'common/SortedList'; -import { IColor, ICircularList } from 'common/Types'; +import { SortedList } from 'common/services/SortedList'; +import { IColor, ICircularList } from 'common/services/Types'; import { IDecoration, IDecorationOptions, IMarker } from '@xterm/xterm'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; // Work variables to avoid garbage collection let $xmin = 0; diff --git a/src/common/services/LogService.ts b/src/common/services/LogService.ts index 8bc1e0aaa..66bca2131 100644 --- a/src/common/services/LogService.ts +++ b/src/common/services/LogService.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { Disposable } from 'common/Lifecycle'; +import { Disposable } from 'common/base/Lifecycle'; import { ILogService, IOptionsService, LogLevelEnum } from 'common/services/Services'; type LogType = (message?: any, ...optionalParams: any[]) => void; diff --git a/src/common/services/MouseStateService.test.ts b/src/common/services/MouseStateService.test.ts index 0f2cd489a..882df9bb3 100644 --- a/src/common/services/MouseStateService.test.ts +++ b/src/common/services/MouseStateService.test.ts @@ -4,7 +4,7 @@ */ import { MouseStateService } from 'common/services/MouseStateService'; import { assert } from 'chai'; -import { ICoreMouseEvent, CoreMouseEventType } from 'common/Types'; +import { ICoreMouseEvent, CoreMouseEventType } from 'common/services/Types'; function toBytes(s: string | undefined): number[] { if (!s) { diff --git a/src/common/services/MouseStateService.ts b/src/common/services/MouseStateService.ts index 21420460a..9fa655984 100644 --- a/src/common/services/MouseStateService.ts +++ b/src/common/services/MouseStateService.ts @@ -3,9 +3,9 @@ * @license MIT */ import { IMouseStateService } from 'common/services/Services'; -import { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types'; -import { Disposable } from 'common/Lifecycle'; -import { Emitter } from 'common/Event'; +import { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/services/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import { Emitter } from 'common/base/Event'; /** * Supported default protocols. diff --git a/src/common/services/OptionsService.d.ts b/src/common/services/OptionsService.d.ts new file mode 100644 index 000000000..e05e8a038 --- /dev/null +++ b/src/common/services/OptionsService.d.ts @@ -0,0 +1,17 @@ +import { Disposable } from 'common/base/Lifecycle'; +import { IDisposable } from 'common/services/Types'; +import { IOptionsService, ITerminalOptions } from 'common/services/Services'; +export declare const DEFAULT_OPTIONS: Readonly>; +export declare class OptionsService extends Disposable implements IOptionsService { + serviceBrand: any; + readonly rawOptions: Required; + options: Required; + private readonly _onOptionChange; + readonly onOptionChange: import("common/base/Event").IEvent; + constructor(options: Partial); + onSpecificOptionChange(key: T, listener: (value: ITerminalOptions[T]) => any): IDisposable; + onMultipleOptionChange(keys: (keyof ITerminalOptions)[], listener: () => any): IDisposable; + private _setupOptions; + private _sanitizeAndValidateOption; +} +//# sourceMappingURL=OptionsService.d.ts.map \ No newline at end of file diff --git a/src/common/services/OptionsService.d.ts.map b/src/common/services/OptionsService.d.ts.map new file mode 100644 index 000000000..c311afd9d --- /dev/null +++ b/src/common/services/OptionsService.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OptionsService.d.ts","sourceRoot":"","sources":["OptionsService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAe,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGzF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAiDhE,CAAC;AAIF,qBAAa,cAAe,SAAQ,UAAW,YAAW,eAAe;IAChE,YAAY,EAAE,GAAG,CAAC;IAEzB,SAAgB,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAChD,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyD;IACzF,SAAgB,cAAc,6DAA8B;IAE5D,YAAY,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,EA0B7C;IAGM,sBAAsB,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,WAAW,CAMlI;IAGM,sBAAsB,CAAC,IAAI,EAAE,CAAC,MAAM,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,WAAW,CAMhG;IAED,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,0BAA0B;CAiEnC"} \ No newline at end of file diff --git a/src/common/services/OptionsService.js b/src/common/services/OptionsService.js new file mode 100644 index 000000000..3d5e047de --- /dev/null +++ b/src/common/services/OptionsService.js @@ -0,0 +1,190 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OptionsService = exports.DEFAULT_OPTIONS = void 0; +const Lifecycle_1 = require("common/base/Lifecycle"); +const Platform_1 = require("common/base/Platform"); +const Event_1 = require("common/base/Event"); +exports.DEFAULT_OPTIONS = { + cols: 80, + rows: 24, + showCursorImmediately: false, + cursorBlink: false, + blinkIntervalDuration: 0, + cursorStyle: 'block', + cursorWidth: 1, + cursorInactiveStyle: 'outline', + drawBoldTextInBrightColors: true, + documentOverride: null, + fastScrollSensitivity: 5, + fontFamily: 'monospace', + fontSize: 15, + fontWeight: 'normal', + fontWeightBold: 'bold', + ignoreBracketedPasteMode: false, + lineHeight: 1.0, + letterSpacing: 0, + linkHandler: null, + logLevel: 'info', + logger: null, + scrollback: 1000, + scrollbar: { showScrollbar: true }, + scrollOnEraseInDisplay: false, + scrollOnUserInput: true, + scrollSensitivity: 1, + screenReaderMode: false, + smoothScrollDuration: 0, + macOptionIsMeta: false, + macOptionClickForcesSelection: false, + minimumContrastRatio: 1, + mouseEventsRequireAlt: false, + disableStdin: false, + allowProposedApi: false, + allowTransparency: false, + tabStopWidth: 8, + theme: {}, + reflowCursorLine: false, + rescaleOverlappingGlyphs: false, + rightClickSelectsWord: Platform_1.isMac, + windowOptions: {}, + windowsPty: {}, + wordSeparator: ' ()[]{}\',"`', + altClickMovesCursor: true, + convertEol: false, + termName: 'xterm', + quirks: {}, + vtExtensions: {} +}; +const FONT_WEIGHT_OPTIONS = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900']; +class OptionsService extends Lifecycle_1.Disposable { + constructor(options) { + super(); + this._onOptionChange = this._register(new Event_1.Emitter()); + this.onOptionChange = this._onOptionChange.event; + const defaultOptions = { ...exports.DEFAULT_OPTIONS }; + for (const key in options) { + if (key in defaultOptions) { + try { + const newValue = options[key]; + defaultOptions[key] = this._sanitizeAndValidateOption(key, newValue); + } + catch (e) { + console.error(e); + } + } + } + this.rawOptions = defaultOptions; + this.options = { ...defaultOptions }; + this._setupOptions(); + this._register((0, Lifecycle_1.toDisposable)(() => { + this.rawOptions.linkHandler = null; + this.rawOptions.documentOverride = null; + })); + } + onSpecificOptionChange(key, listener) { + return this.onOptionChange(eventKey => { + if (eventKey === key) { + listener(this.rawOptions[key]); + } + }); + } + onMultipleOptionChange(keys, listener) { + return this.onOptionChange(eventKey => { + if (keys.indexOf(eventKey) !== -1) { + listener(); + } + }); + } + _setupOptions() { + const getter = (propName) => { + if (!(propName in exports.DEFAULT_OPTIONS)) { + throw new Error(`No option with key "${propName}"`); + } + return this.rawOptions[propName]; + }; + const setter = (propName, value) => { + if (!(propName in exports.DEFAULT_OPTIONS)) { + throw new Error(`No option with key "${propName}"`); + } + value = this._sanitizeAndValidateOption(propName, value); + if (this.rawOptions[propName] !== value) { + this.rawOptions[propName] = value; + this._onOptionChange.fire(propName); + } + }; + for (const propName in this.rawOptions) { + const desc = { + get: getter.bind(this, propName), + set: setter.bind(this, propName) + }; + Object.defineProperty(this.options, propName, desc); + } + } + _sanitizeAndValidateOption(key, value) { + switch (key) { + case 'cursorStyle': + if (!value) { + value = exports.DEFAULT_OPTIONS[key]; + } + if (!isCursorStyle(value)) { + throw new Error(`"${value}" is not a valid value for ${key}`); + } + break; + case 'wordSeparator': + if (!value) { + value = exports.DEFAULT_OPTIONS[key]; + } + break; + case 'fontWeight': + case 'fontWeightBold': + if (typeof value === 'number' && 1 <= value && value <= 1000) { + break; + } + value = FONT_WEIGHT_OPTIONS.includes(value) ? value : exports.DEFAULT_OPTIONS[key]; + break; + case 'blinkIntervalDuration': + value = Math.floor(value); + if (value < 0) { + throw new Error(`${key} cannot be less than 0, value: ${value}`); + } + break; + case 'cursorWidth': + value = Math.floor(value); + case 'lineHeight': + case 'tabStopWidth': + if (value < 1) { + throw new Error(`${key} cannot be less than 1, value: ${value}`); + } + break; + case 'minimumContrastRatio': + value = Math.max(1, Math.min(21, Math.round(value * 10) / 10)); + break; + case 'scrollback': + value = Math.min(value, 4294967295); + if (value < 0) { + throw new Error(`${key} cannot be less than 0, value: ${value}`); + } + break; + case 'fastScrollSensitivity': + case 'scrollSensitivity': + if (value <= 0) { + throw new Error(`${key} cannot be less than or equal to 0, value: ${value}`); + } + break; + case 'rows': + case 'cols': + if (!value && value !== 0) { + throw new Error(`${key} must be numeric, value: ${value}`); + } + break; + case 'windowsPty': + value = value ?? {}; + break; + } + return value; + } +} +exports.OptionsService = OptionsService; +function isCursorStyle(value) { + return value === 'block' || value === 'underline' || value === 'bar'; +} +//# sourceMappingURL=OptionsService.js.map \ No newline at end of file diff --git a/src/common/services/OptionsService.js.map b/src/common/services/OptionsService.js.map new file mode 100644 index 000000000..a893edb77 --- /dev/null +++ b/src/common/services/OptionsService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OptionsService.js","sourceRoot":"","sources":["OptionsService.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/services/OptionsService.test.ts b/src/common/services/OptionsService.test.ts index 004f73168..6f5e7b4b0 100644 --- a/src/common/services/OptionsService.test.ts +++ b/src/common/services/OptionsService.test.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { OptionsService, DEFAULT_OPTIONS } from 'common/services/OptionsService'; -import { IDisposable } from 'common/Types'; +import { IDisposable } from 'common/services/Types'; describe('OptionsService', () => { describe('constructor', () => { diff --git a/src/common/services/OptionsService.ts b/src/common/services/OptionsService.ts index 8527d2ea0..c2dc22978 100644 --- a/src/common/services/OptionsService.ts +++ b/src/common/services/OptionsService.ts @@ -3,11 +3,11 @@ * @license MIT */ -import { Disposable, toDisposable } from 'common/Lifecycle'; -import { isMac } from 'common/Platform'; -import { CursorStyle, IDisposable } from 'common/Types'; +import { Disposable, toDisposable } from 'common/base/Lifecycle'; +import { isMac } from 'common/base/Platform'; +import { CursorStyle, IDisposable } from 'common/services/Types'; import { FontWeight, IOptionsService, ITerminalOptions } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; export const DEFAULT_OPTIONS: Readonly> = { cols: 80, diff --git a/src/common/services/OscLinkService.test.ts b/src/common/services/OscLinkService.test.ts index cc6c2228a..bcb34471a 100644 --- a/src/common/services/OscLinkService.test.ts +++ b/src/common/services/OscLinkService.test.ts @@ -9,7 +9,7 @@ import { BufferService } from 'common/services/BufferService'; import { OptionsService } from 'common/services/OptionsService'; import { OscLinkService } from 'common/services/OscLinkService'; import { IBufferService, IOptionsService, IOscLinkService } from 'common/services/Services'; -import { MockLogService } from 'common/TestUtils.test'; +import { MockLogService } from 'common/terminal/TestUtils.test'; describe('OscLinkService', () => { describe('constructor', () => { diff --git a/src/common/services/OscLinkService.ts b/src/common/services/OscLinkService.ts index 13bd8aa4b..11f8ec351 100644 --- a/src/common/services/OscLinkService.ts +++ b/src/common/services/OscLinkService.ts @@ -3,7 +3,7 @@ * @license MIT */ import { IBufferService, IOscLinkService } from 'common/services/Services'; -import { IMarker, IOscLinkData } from 'common/Types'; +import { IMarker, IOscLinkData } from 'common/services/Types'; export class OscLinkService implements IOscLinkService { public serviceBrand: any; diff --git a/src/common/services/ServiceRegistry.d.ts b/src/common/services/ServiceRegistry.d.ts new file mode 100644 index 000000000..4484fb5ad --- /dev/null +++ b/src/common/services/ServiceRegistry.d.ts @@ -0,0 +1,9 @@ +import { IServiceIdentifier } from 'common/services/Services'; +export declare const serviceRegistry: Map>; +export declare function getServiceDependencies(ctor: any): { + id: IServiceIdentifier; + index: number; + optional: boolean; +}[]; +export declare function createDecorator(id: string): IServiceIdentifier; +//# sourceMappingURL=ServiceRegistry.d.ts.map \ No newline at end of file diff --git a/src/common/services/ServiceRegistry.d.ts.map b/src/common/services/ServiceRegistry.d.ts.map new file mode 100644 index 000000000..2ab1b18f4 --- /dev/null +++ b/src/common/services/ServiceRegistry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceRegistry.d.ts","sourceRoot":"","sources":["ServiceRegistry.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAO9D,eAAO,MAAM,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAa,CAAC;AAE/E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG;IAAE,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,CAErH;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAiBpE"} \ No newline at end of file diff --git a/src/common/services/ServiceRegistry.js b/src/common/services/ServiceRegistry.js new file mode 100644 index 000000000..8c2b6fae6 --- /dev/null +++ b/src/common/services/ServiceRegistry.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serviceRegistry = void 0; +exports.getServiceDependencies = getServiceDependencies; +exports.createDecorator = createDecorator; +exports.serviceRegistry = new Map(); +function getServiceDependencies(ctor) { + return ctor["di$dependencies"] || []; +} +function createDecorator(id) { + if (exports.serviceRegistry.has(id)) { + return exports.serviceRegistry.get(id); + } + const decorator = function (target, key, index) { + if (arguments.length !== 3) { + throw new Error('@IServiceName-decorator can only be used to decorate a parameter'); + } + storeServiceDependency(decorator, target, index); + }; + decorator._id = id; + exports.serviceRegistry.set(id, decorator); + return decorator; +} +function storeServiceDependency(id, target, index) { + if (target["di$target"] === target) { + target["di$dependencies"].push({ id, index }); + } + else { + target["di$dependencies"] = [{ id, index }]; + target["di$target"] = target; + } +} +//# sourceMappingURL=ServiceRegistry.js.map \ No newline at end of file diff --git a/src/common/services/ServiceRegistry.js.map b/src/common/services/ServiceRegistry.js.map new file mode 100644 index 000000000..03038f8e1 --- /dev/null +++ b/src/common/services/ServiceRegistry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ServiceRegistry.js","sourceRoot":"","sources":["ServiceRegistry.ts"],"names":[],"mappings":";;;;;AAkBa,QAAA,eAAe,GAAyC,IAAI,GAAG,EAAE,CAAC;AAE/E,gCAAuC,IAAS;IAC9C,OAAO,IAAI,mBAA2B,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,yBAAmC,EAAU;IAC3C,IAAI,QAAA,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAA,eAAe,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IAClC,CAAC;IAED,MAAM,SAAS,GAAQ,UAAU,MAAgB,EAAE,GAAW,EAAE,KAAa;QAC3E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QAED,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC;IAEnB,QAAA,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAY,EAAE,MAAgB,EAAE,KAAa;IAC3E,IAAK,MAAc,aAAqB,KAAK,MAAM,EAAE,CAAC;QACnD,MAAc,mBAA2B,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACL,MAAc,mBAA2B,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAc,aAAqB,GAAG,MAAM,CAAC;IAChD,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/src/common/services/Services.d.ts b/src/common/services/Services.d.ts new file mode 100644 index 000000000..e57932aca --- /dev/null +++ b/src/common/services/Services.d.ts @@ -0,0 +1,253 @@ +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/services/Types'; +import { IBuffer, IBufferSet } from 'common/buffer/Types'; +import type { Emitter, IEvent } from 'common/base/Event'; +export declare const IBufferService: IServiceIdentifier; +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; +} +export declare const IMouseStateService: IServiceIdentifier; +export interface IMouseStateService { + serviceBrand: undefined; + activeProtocol: string; + activeEncoding: string; + areMouseEventsActive: boolean; + addProtocol(name: string, protocol: ICoreMouseProtocol): void; + addEncoding(name: string, encoding: CoreMouseEncoding): void; + reset(): void; + setCustomWheelEventHandler(customWheelEventHandler: ((event: WheelEvent) => boolean) | undefined): void; + allowCustomWheelEvent(ev: WheelEvent): boolean; + onProtocolChange: IEvent; + restrictMouseEvent(event: ICoreMouseEvent): boolean; + encodeMouseEvent(event: ICoreMouseEvent): string; + readonly isDefaultEncoding: boolean; + readonly isPixelEncoding: boolean; +} +export declare const ICoreService: IServiceIdentifier; +export interface ICoreService { + serviceBrand: undefined; + isCursorInitialized: boolean; + isCursorHidden: boolean; + readonly modes: IModes; + readonly decPrivateModes: IDecPrivateModes; + readonly kittyKeyboard: IKittyKeyboardState; + readonly onData: IEvent; + readonly onUserInput: IEvent; + readonly onBinary: IEvent; + readonly onRequestScrollToBottom: IEvent; + reset(): void; + triggerDataEvent(data: string, wasUserInput?: boolean): void; + triggerBinaryEvent(data: string): void; +} +export declare const ICharsetService: IServiceIdentifier; +export interface ICharsetService { + serviceBrand: undefined; + charset: ICharset | undefined; + readonly glevel: number; + readonly charsets: (ICharset | undefined)[]; + reset(): void; + setgLevel(g: number): void; + setgCharset(g: number, charset: ICharset | undefined): void; +} +export interface IServiceIdentifier { + (...args: any[]): void; + type: T; + _id: string; +} +export interface IBrandedService { + serviceBrand: undefined; +} +type GetLeadingNonServiceArgs = TArgs extends [] ? [] : TArgs extends [...infer TFirst, infer TLast] ? TLast extends IBrandedService ? GetLeadingNonServiceArgs : TArgs : never; +export declare const IInstantiationService: IServiceIdentifier; +export interface IInstantiationService { + serviceBrand: undefined; + setService(id: IServiceIdentifier, instance: T): void; + getService(id: IServiceIdentifier): T | undefined; + createInstance any, R extends InstanceType>(t: Ctor, ...args: GetLeadingNonServiceArgs>): R; +} +export declare enum LogLevelEnum { + TRACE = 0, + DEBUG = 1, + INFO = 2, + WARN = 3, + ERROR = 4, + OFF = 5 +} +export declare const ILogService: IServiceIdentifier; +export interface ILogService { + serviceBrand: undefined; + readonly logLevel: LogLevelEnum; + trace(message: any, ...optionalParams: any[]): void; + debug(message: any, ...optionalParams: any[]): void; + info(message: any, ...optionalParams: any[]): void; + warn(message: any, ...optionalParams: any[]): void; + error(message: any, ...optionalParams: any[]): void; +} +export declare const IOptionsService: IServiceIdentifier; +export interface IOptionsService { + serviceBrand: undefined; + readonly rawOptions: Required; + readonly options: Required; + readonly onOptionChange: IEvent; + onSpecificOptionChange(key: T, listener: (arg1: Required[T]) => any): IDisposable; + onMultipleOptionChange(keys: (keyof ITerminalOptions)[], listener: () => any): IDisposable; +} +export type FontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | number; +export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'off'; +export interface ITerminalOptions { + allowProposedApi?: boolean; + allowTransparency?: boolean; + altClickMovesCursor?: boolean; + cols?: number; + convertEol?: boolean; + cursorBlink?: boolean; + blinkIntervalDuration?: number; + cursorStyle?: CursorStyle; + cursorWidth?: number; + cursorInactiveStyle?: CursorInactiveStyle; + disableStdin?: boolean; + documentOverride?: any | null; + drawBoldTextInBrightColors?: boolean; + fastScrollSensitivity?: number; + fontSize?: number; + fontFamily?: string; + fontWeight?: FontWeight; + fontWeightBold?: FontWeight; + ignoreBracketedPasteMode?: boolean; + letterSpacing?: number; + lineHeight?: number; + linkHandler?: ILinkHandler | null; + logLevel?: LogLevel; + logger?: ILogger | null; + macOptionIsMeta?: boolean; + macOptionClickForcesSelection?: boolean; + minimumContrastRatio?: number; + mouseEventsRequireAlt?: boolean; + reflowCursorLine?: boolean; + rescaleOverlappingGlyphs?: boolean; + rightClickSelectsWord?: boolean; + rows?: number; + showCursorImmediately?: boolean; + screenReaderMode?: boolean; + scrollback?: number; + scrollOnUserInput?: boolean; + scrollSensitivity?: number; + smoothScrollDuration?: number; + tabStopWidth?: number; + theme?: ITheme; + windowsPty?: IWindowsPty; + windowOptions?: IWindowOptions; + wordSeparator?: string; + quirks?: ITerminalQuirks; + scrollbar?: IScrollbarOptions; + scrollOnEraseInDisplay?: boolean; + vtExtensions?: IVtExtensions; + [key: string]: any; + termName: string; +} +export interface ITheme { + foreground?: string; + background?: string; + cursor?: string; + cursorAccent?: string; + selectionForeground?: string; + selectionBackground?: string; + selectionInactiveBackground?: string; + scrollbarSliderBackground?: string; + scrollbarSliderHoverBackground?: string; + scrollbarSliderActiveBackground?: string; + overviewRulerBorder?: string; + black?: string; + red?: string; + green?: string; + yellow?: string; + blue?: string; + magenta?: string; + cyan?: string; + white?: string; + brightBlack?: string; + brightRed?: string; + brightGreen?: string; + brightYellow?: string; + brightBlue?: string; + brightMagenta?: string; + brightCyan?: string; + brightWhite?: string; + extendedAnsi?: string[]; +} +export interface ITerminalQuirks { + allowSetCursorBlink?: boolean; +} +export interface IScrollbarOptions { + showScrollbar?: boolean; + showArrows?: boolean; + width?: number; + overviewRuler?: IOverviewRulerOptions; +} +export interface IVtExtensions { + kittyKeyboard?: boolean; + kittySgrBoldFaintControl?: boolean; + win32InputMode?: boolean; + colorSchemeQuery?: boolean; +} +export declare const IOscLinkService: IServiceIdentifier; +export interface IOscLinkService { + serviceBrand: undefined; + registerLink(linkData: IOscLinkData): number; + addLineToLink(linkId: number, y: number): void; + getLinkData(linkId: number): IOscLinkData | undefined; +} +export type UnicodeCharProperties = number; +export type UnicodeCharWidth = 0 | 1 | 2; +export declare const IUnicodeService: IServiceIdentifier; +export interface IUnicodeService { + serviceBrand: undefined; + register(provider: IUnicodeVersionProvider): void; + readonly versions: string[]; + activeVersion: string; + readonly onChange: IEvent; + wcwidth(codepoint: number): UnicodeCharWidth; + getStringCellWidth(s: string): number; + charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; +} +export interface IUnicodeVersionProvider { + readonly version: string; + wcwidth(ucs: number): UnicodeCharWidth; + charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; +} +export declare const IDecorationService: IServiceIdentifier; +export interface IDecorationService extends IDisposable { + serviceBrand: undefined; + readonly decorations: IterableIterator; + readonly onDecorationRegistered: IEvent; + readonly onDecorationRemoved: IEvent; + registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined; + reset(): void; + forEachDecorationAtCell(x: number, line: number, layer: 'bottom' | 'top' | undefined, callback: (decoration: IInternalDecoration) => void): void; +} +export interface IInternalDecoration extends IDecoration { + readonly options: IDecorationOptions; + readonly backgroundColorRGB: IColor | undefined; + readonly foregroundColorRGB: IColor | undefined; + readonly onRenderEmitter: Emitter; + _indexedStartLine: number; +} +export {}; +//# sourceMappingURL=Services.d.ts.map \ No newline at end of file diff --git a/src/common/services/Services.d.ts.map b/src/common/services/Services.d.ts.map new file mode 100644 index 000000000..bbd695bbf --- /dev/null +++ b/src/common/services/Services.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Services.d.ts","sourceRoot":"","sources":["Services.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/services/Services.js b/src/common/services/Services.js new file mode 100644 index 000000000..e848f2de1 --- /dev/null +++ b/src/common/services/Services.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IDecorationService = exports.IUnicodeService = exports.IOscLinkService = exports.IOptionsService = exports.ILogService = exports.LogLevelEnum = exports.IInstantiationService = exports.ICharsetService = exports.ICoreService = exports.IMouseStateService = exports.IBufferService = void 0; +const ServiceRegistry_1 = require("common/services/ServiceRegistry"); +exports.IBufferService = (0, ServiceRegistry_1.createDecorator)('BufferService'); +exports.IMouseStateService = (0, ServiceRegistry_1.createDecorator)('MouseStateService'); +exports.ICoreService = (0, ServiceRegistry_1.createDecorator)('CoreService'); +exports.ICharsetService = (0, ServiceRegistry_1.createDecorator)('CharsetService'); +exports.IInstantiationService = (0, ServiceRegistry_1.createDecorator)('InstantiationService'); +var LogLevelEnum; +(function (LogLevelEnum) { + LogLevelEnum[LogLevelEnum["TRACE"] = 0] = "TRACE"; + LogLevelEnum[LogLevelEnum["DEBUG"] = 1] = "DEBUG"; + LogLevelEnum[LogLevelEnum["INFO"] = 2] = "INFO"; + LogLevelEnum[LogLevelEnum["WARN"] = 3] = "WARN"; + LogLevelEnum[LogLevelEnum["ERROR"] = 4] = "ERROR"; + LogLevelEnum[LogLevelEnum["OFF"] = 5] = "OFF"; +})(LogLevelEnum || (exports.LogLevelEnum = LogLevelEnum = {})); +exports.ILogService = (0, ServiceRegistry_1.createDecorator)('LogService'); +exports.IOptionsService = (0, ServiceRegistry_1.createDecorator)('OptionsService'); +exports.IOscLinkService = (0, ServiceRegistry_1.createDecorator)('OscLinkService'); +exports.IUnicodeService = (0, ServiceRegistry_1.createDecorator)('UnicodeService'); +exports.IDecorationService = (0, ServiceRegistry_1.createDecorator)('DecorationService'); +//# sourceMappingURL=Services.js.map \ No newline at end of file diff --git a/src/common/services/Services.js.map b/src/common/services/Services.js.map new file mode 100644 index 000000000..977bfe579 --- /dev/null +++ b/src/common/services/Services.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Services.js","sourceRoot":"","sources":["Services.ts"],"names":[],"mappings":";;;AAQA,qEAAkE;AAGrD,QAAA,cAAc,GAAG,IAAA,iCAAe,EAAiB,eAAe,CAAC,CAAC;AAwBlE,QAAA,kBAAkB,GAAG,IAAA,iCAAe,EAAqB,mBAAmB,CAAC,CAAC;AAuB9E,QAAA,YAAY,GAAG,IAAA,iCAAe,EAAe,aAAa,CAAC,CAAC;AAuC5D,QAAA,eAAe,GAAG,IAAA,iCAAe,EAAkB,gBAAgB,CAAC,CAAC;AAsCrE,QAAA,qBAAqB,GAAG,IAAA,iCAAe,EAAwB,sBAAsB,CAAC,CAAC;AASpG,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,iDAAS,CAAA;IACT,iDAAS,CAAA;IACT,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,iDAAS,CAAA;IACT,6CAAO,CAAA;AACT,CAAC,EAPW,YAAY,aAAZ,YAAY,GAAZ,YAAY,QAOvB;AAEY,QAAA,WAAW,GAAG,IAAA,iCAAe,EAAc,YAAY,CAAC,CAAC;AAazD,QAAA,eAAe,GAAG,IAAA,iCAAe,EAAkB,gBAAgB,CAAC,CAAC;AAgJrE,QAAA,eAAe,GAAG,IAAA,iCAAe,EAAkB,gBAAgB,CAAC,CAAC;AAuCrE,QAAA,eAAe,GAAG,IAAA,iCAAe,EAAkB,gBAAgB,CAAC,CAAC;AA+BrE,QAAA,kBAAkB,GAAG,IAAA,iCAAe,EAAqB,mBAAmB,CAAC,CAAC"} \ No newline at end of file diff --git a/src/common/services/Services.ts b/src/common/services/Services.ts index fa1c4412f..64f2529fc 100644 --- a/src/common/services/Services.ts +++ b/src/common/services/Services.ts @@ -4,10 +4,10 @@ */ 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 { CoreMouseEncoding, CoreMouseEventType, CursorInactiveStyle, CursorStyle, IAttributeData, ICharset, IColor, ICoreMouseEvent, ICoreMouseProtocol, IDecPrivateModes, IDisposable, IKittyKeyboardState, IModes, IOscLinkData, IWindowOptions } from 'common/services/Types'; import { IBuffer, IBufferSet } from 'common/buffer/Types'; import { createDecorator } from 'common/services/ServiceRegistry'; -import type { Emitter, IEvent } from 'common/Event'; +import type { Emitter, IEvent } from 'common/base/Event'; export const IBufferService = createDecorator('BufferService'); export interface IBufferService { diff --git a/src/common/SortedList.test.ts b/src/common/services/SortedList.test.ts similarity index 96% rename from src/common/SortedList.test.ts rename to src/common/services/SortedList.test.ts index 4718cf971..e736f06db 100644 --- a/src/common/SortedList.test.ts +++ b/src/common/services/SortedList.test.ts @@ -4,8 +4,8 @@ */ import { assert } from 'chai'; -import { SortedList } from 'common/SortedList'; -import { MockLogService } from 'common/TestUtils.test'; +import { SortedList } from 'common/services/SortedList'; +import { MockLogService } from 'common/terminal/TestUtils.test'; const deepStrictEqual = assert.deepStrictEqual; diff --git a/src/common/SortedList.ts b/src/common/services/SortedList.ts similarity index 99% rename from src/common/SortedList.ts rename to src/common/services/SortedList.ts index c6dc62085..06185732b 100644 --- a/src/common/SortedList.ts +++ b/src/common/services/SortedList.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { IdleTaskQueue } from 'common/TaskQueue'; +import { IdleTaskQueue } from 'common/services/TaskQueue'; import type { ILogService } from 'common/services/Services'; // Work variables to avoid garbage collection. diff --git a/src/common/services/TaskQueue.d.ts b/src/common/services/TaskQueue.d.ts new file mode 100644 index 000000000..adc2a9f8b --- /dev/null +++ b/src/common/services/TaskQueue.d.ts @@ -0,0 +1,43 @@ +import type { ILogService } from 'common/services/Services'; +interface ITaskQueue { + enqueue(task: () => boolean | void): void; + flush(): void; + clear(): void; +} +interface ITaskDeadline { + timeRemaining(): number; +} +type CallbackWithDeadline = (deadline: ITaskDeadline) => void; +declare abstract class TaskQueue implements ITaskQueue { + private _tasks; + private _idleCallback?; + private _i; + protected readonly _logService: ILogService; + constructor(logService: ILogService); + protected abstract _requestCallback(callback: CallbackWithDeadline): number; + protected abstract _cancelCallback(identifier: number): void; + enqueue(task: () => boolean | void): void; + flush(): void; + clear(): void; + private _start; + private _process; +} +export declare class PriorityTaskQueue extends TaskQueue { + protected _requestCallback(callback: CallbackWithDeadline): number; + protected _cancelCallback(identifier: number): void; + private _createDeadline; +} +declare class IdleTaskQueueInternal extends TaskQueue { + protected _requestCallback(callback: IdleRequestCallback): number; + protected _cancelCallback(identifier: number): void; +} +export declare const IdleTaskQueue: typeof PriorityTaskQueue | typeof IdleTaskQueueInternal; +export declare class DebouncedIdleTask { + private _queue; + constructor(logService: ILogService); + set(task: () => boolean | void): void; + flush(): void; + dispose(): void; +} +export {}; +//# sourceMappingURL=TaskQueue.d.ts.map \ No newline at end of file diff --git a/src/common/services/TaskQueue.d.ts.map b/src/common/services/TaskQueue.d.ts.map new file mode 100644 index 000000000..c0fa4b24e --- /dev/null +++ b/src/common/services/TaskQueue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TaskQueue.d.ts","sourceRoot":"","sources":["TaskQueue.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,UAAU,UAAU;IAOlB,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;IAK1C,KAAK,IAAI,IAAI,CAAC;IAKd,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,aAAa;IACrB,aAAa,IAAI,MAAM,CAAC;CACzB;AACD,KAAK,oBAAoB,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,uBAAe,SAAU,YAAW,UAAU;IAC5C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,EAAE,CAAK;IACf,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,YAAY,UAAU,EAAE,WAAW,EAElC;IAED,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAAC;IAC5E,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtD,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAG/C;IAEM,KAAK,IAAI,IAAI,CAOnB;IAEM,KAAK,IAAI,IAAI,CAOnB;IAED,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,QAAQ;CAgCjB;AAOD,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAEjE;IAED,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAElD;IAED,OAAO,CAAC,eAAe;CAMxB;AAED,cAAM,qBAAsB,SAAQ,SAAS;IAC3C,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAEhE;IAED,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAElD;CACF;AAWD,eAAO,MAAM,aAAa,yDAAoF,CAAC;AAM/G,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAa;IAE3B,YAAY,UAAU,EAAE,WAAW,EAElC;IAEM,GAAG,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAG3C;IAEM,KAAK,IAAI,IAAI,CAEnB;IAEM,OAAO,IAAI,IAAI,CAErB;CACF"} \ No newline at end of file diff --git a/src/common/services/TaskQueue.js b/src/common/services/TaskQueue.js new file mode 100644 index 000000000..87c64a5ae --- /dev/null +++ b/src/common/services/TaskQueue.js @@ -0,0 +1,101 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DebouncedIdleTask = exports.IdleTaskQueue = exports.PriorityTaskQueue = void 0; +class TaskQueue { + constructor(logService) { + this._tasks = []; + this._i = 0; + this._logService = logService; + } + enqueue(task) { + this._tasks.push(task); + this._start(); + } + flush() { + while (this._i < this._tasks.length) { + if (!this._tasks[this._i]()) { + this._i++; + } + } + this.clear(); + } + clear() { + if (this._idleCallback) { + this._cancelCallback(this._idleCallback); + this._idleCallback = undefined; + } + this._i = 0; + this._tasks.length = 0; + } + _start() { + if (!this._idleCallback) { + this._idleCallback = this._requestCallback(this._process.bind(this)); + } + } + _process(deadline) { + this._idleCallback = undefined; + let taskDuration; + let longestTask = 0; + let lastDeadlineRemaining = deadline.timeRemaining(); + let deadlineRemaining; + while (this._i < this._tasks.length) { + taskDuration = performance.now(); + if (!this._tasks[this._i]()) { + this._i++; + } + taskDuration = Math.max(1, performance.now() - taskDuration); + longestTask = Math.max(taskDuration, longestTask); + deadlineRemaining = deadline.timeRemaining(); + if (longestTask * 1.5 > deadlineRemaining) { + if (lastDeadlineRemaining - taskDuration < -20) { + this._logService.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(lastDeadlineRemaining - taskDuration))}ms`); + } + this._start(); + return; + } + lastDeadlineRemaining = deadlineRemaining; + } + this.clear(); + } +} +class PriorityTaskQueue extends TaskQueue { + _requestCallback(callback) { + return setTimeout(() => callback(this._createDeadline(16))); + } + _cancelCallback(identifier) { + clearTimeout(identifier); + } + _createDeadline(duration) { + const end = performance.now() + duration; + return { + timeRemaining: () => Math.max(0, end - performance.now()) + }; + } +} +exports.PriorityTaskQueue = PriorityTaskQueue; +class IdleTaskQueueInternal extends TaskQueue { + _requestCallback(callback) { + return requestIdleCallback(callback); + } + _cancelCallback(identifier) { + cancelIdleCallback(identifier); + } +} +exports.IdleTaskQueue = ('requestIdleCallback' in globalThis) ? IdleTaskQueueInternal : PriorityTaskQueue; +class DebouncedIdleTask { + constructor(logService) { + this._queue = new exports.IdleTaskQueue(logService); + } + set(task) { + this._queue.clear(); + this._queue.enqueue(task); + } + flush() { + this._queue.flush(); + } + dispose() { + this._queue.clear(); + } +} +exports.DebouncedIdleTask = DebouncedIdleTask; +//# sourceMappingURL=TaskQueue.js.map \ No newline at end of file diff --git a/src/common/services/TaskQueue.js.map b/src/common/services/TaskQueue.js.map new file mode 100644 index 000000000..ab09b5efb --- /dev/null +++ b/src/common/services/TaskQueue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TaskQueue.js","sourceRoot":"","sources":["TaskQueue.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/TaskQueue.ts b/src/common/services/TaskQueue.ts similarity index 100% rename from src/common/TaskQueue.ts rename to src/common/services/TaskQueue.ts diff --git a/src/common/services/Types.d.ts b/src/common/services/Types.d.ts new file mode 100644 index 000000000..ac009cbfb --- /dev/null +++ b/src/common/services/Types.d.ts @@ -0,0 +1,387 @@ +import type { IDeleteEvent, IInsertEvent } from 'common/services/CircularList'; +import type { UnderlineStyle } from 'common/buffer/Constants'; +import type { IBufferSet } from 'common/buffer/Types'; +import type { IParams } from 'common/parser/Types'; +import type { IMouseStateService, ICoreService, IOptionsService, IUnicodeService } from 'common/services/Services'; +import { IFunctionIdentifier, ITerminalOptions as IPublicTerminalOptions } from '@xterm/xterm'; +import type { Emitter, IEvent } from 'common/base/Event'; +export type { ICharset } from 'common/data/Charsets'; +export interface ICoreTerminal { + mouseStateService: IMouseStateService; + coreService: ICoreService; + optionsService: IOptionsService; + unicodeService: IUnicodeService; + buffers: IBufferSet; + options: Required; + registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable; + registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable; + registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable; + registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable; + registerApcHandler(id: IFunctionIdentifier, callback: (data: string) => boolean | Promise): IDisposable; +} +export interface IDisposable { + dispose(): void; +} +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; +export interface IKeyboardEvent { + altKey: boolean; + ctrlKey: boolean; + shiftKey: boolean; + metaKey: boolean; + 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 declare const enum KeyboardResultType { + SEND_KEY = 0, + SELECT_ALL = 1, + PAGE_UP = 2, + PAGE_DOWN = 3 +} +export interface IKeyboardResult { + type: KeyboardResultType; + cancel: boolean; + key: string | undefined; +} +export type CharData = [attr: number, char: string, width: number, code: number]; +export interface IColor { + readonly css: string; + readonly rgba: number; +} +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; +} +export interface IOscLinkData { + id?: string; + uri: string; +} +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; +} +export interface ICellData extends IAttributeData { + content: number; + combinedData: string; + isCombined(): number; + getWidth(): number; + getChars(): string; + getCode(): number; + setFromCharData(value: CharData): void; + getAsCharData(): CharData; +} +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; +} +export interface IModes { + insertMode: boolean; +} +export interface IDecPrivateModes { + applicationCursorKeys: boolean; + applicationKeypad: boolean; + bracketedPasteMode: boolean; + colorSchemeUpdates: boolean; + cursorBlink: boolean | undefined; + cursorStyle: CursorStyle | undefined; + origin: boolean; + reverseWraparound: boolean; + sendFocus: boolean; + synchronizedOutput: boolean; + win32InputMode: boolean; + wraparound: boolean; +} +export interface IKittyKeyboardState { + flags: number; + mainFlags: number; + altFlags: number; + mainStack: number[]; + altStack: number[]; +} +export interface IRowRange { + start: number; + end: number; +} +export declare const enum CoreMouseButton { + LEFT = 0, + MIDDLE = 1, + RIGHT = 2, + NONE = 3, + WHEEL = 4, + AUX1 = 8, + AUX2 = 9, + AUX3 = 10, + AUX4 = 11, + AUX5 = 12, + AUX6 = 13, + AUX7 = 14, + AUX8 = 15 +} +export declare const enum CoreMouseAction { + UP = 0, + DOWN = 1, + LEFT = 2, + RIGHT = 3, + MOVE = 32 +} +export interface ICoreMouseEvent { + col: number; + row: number; + x: number; + y: number; + button: CoreMouseButton; + action: CoreMouseAction; + ctrl?: boolean; + alt?: boolean; + shift?: boolean; +} +export declare const enum CoreMouseEventType { + NONE = 0, + DOWN = 1, + UP = 2, + DRAG = 4, + MOVE = 8, + WHEEL = 16 +} +export interface ICoreMouseProtocol { + events: CoreMouseEventType; + restrict: (e: ICoreMouseEvent) => boolean; +} +export type CoreMouseEncoding = (event: ICoreMouseEvent) => string; +export interface IWindowOptions { + restoreWin?: boolean; + minimizeWin?: boolean; + setWinPosition?: boolean; + setWinSizePixels?: boolean; + raiseWin?: boolean; + lowerWin?: boolean; + refreshWin?: boolean; + setWinSizeChars?: boolean; + maximizeWin?: boolean; + fullscreenWin?: boolean; + getWinState?: boolean; + getWinPosition?: boolean; + getWinSizePixels?: boolean; + getScreenSizePixels?: boolean; + getCellSizePixels?: boolean; + getWinSizeChars?: boolean; + getScreenSizeChars?: boolean; + getIconTitle?: boolean; + getWinTitle?: boolean; + pushTitle?: boolean; + popTitle?: boolean; + setWinLines?: boolean; +} +export declare const enum ColorRequestType { + REPORT = 0, + SET = 1, + RESTORE = 2 +} +type Enumerate = Acc['length'] extends N ? Acc[number] : Enumerate; +type IntRange = Exclude, Enumerate>; +export type ColorIndex = IntRange<0, 256>; +export type AllColorIndex = ColorIndex | SpecialColorIndex; +export declare const enum SpecialColorIndex { + FOREGROUND = 256, + BACKGROUND = 257, + CURSOR = 258 +} +export interface IColorReportRequest { + type: ColorRequestType.REPORT; + index: AllColorIndex; +} +export interface IColorSetRequest { + type: ColorRequestType.SET; + index: AllColorIndex; + color: IColorRGB; +} +export interface IColorRestoreRequest { + type: ColorRequestType.RESTORE; + index?: AllColorIndex; +} +export type IColorEvent = (IColorReportRequest | IColorSetRequest | IColorRestoreRequest)[]; +export interface IInputHandler { + onTitleChange: IEvent; + parse(data: string | Uint8Array, promiseResult?: boolean): void | Promise; + print(data: Uint32Array, start: number, end: number): void; + registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable; + registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable; + registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable; + registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable; + registerApcHandler(id: IFunctionIdentifier, callback: (data: string) => boolean | Promise): IDisposable; + bell(): boolean; + lineFeed(): boolean; + carriageReturn(): boolean; + backspace(): boolean; + tab(): boolean; + shiftOut(): boolean; + shiftIn(): boolean; + insertChars(params: IParams): boolean; + scrollLeft(params: IParams): boolean; + cursorUp(params: IParams): boolean; + scrollRight(params: IParams): boolean; + cursorDown(params: IParams): boolean; + cursorForward(params: IParams): boolean; + cursorBackward(params: IParams): boolean; + cursorNextLine(params: IParams): boolean; + cursorPrecedingLine(params: IParams): boolean; + cursorCharAbsolute(params: IParams): boolean; + cursorPosition(params: IParams): boolean; + cursorForwardTab(params: IParams): boolean; + eraseInDisplay(params: IParams): boolean; + eraseInLine(params: IParams): boolean; + insertLines(params: IParams): boolean; + deleteLines(params: IParams): boolean; + deleteChars(params: IParams): boolean; + scrollUp(params: IParams): boolean; + scrollDown(params: IParams, collect?: string): boolean; + eraseChars(params: IParams): boolean; + cursorBackwardTab(params: IParams): boolean; + charPosAbsolute(params: IParams): boolean; + hPositionRelative(params: IParams): boolean; + repeatPrecedingCharacter(params: IParams): boolean; + sendDeviceAttributesPrimary(params: IParams): boolean; + sendDeviceAttributesSecondary(params: IParams): boolean; + linePosAbsolute(params: IParams): boolean; + vPositionRelative(params: IParams): boolean; + hVPosition(params: IParams): boolean; + tabClear(params: IParams): boolean; + setMode(params: IParams, collect?: string): boolean; + resetMode(params: IParams, collect?: string): boolean; + charAttributes(params: IParams): boolean; + deviceStatus(params: IParams, collect?: string): boolean; + softReset(params: IParams, collect?: string): boolean; + setCursorStyle(params: IParams, collect?: string): boolean; + setScrollRegion(params: IParams, collect?: string): boolean; + saveCursor(params: IParams): boolean; + restoreCursor(params: IParams): boolean; + insertColumns(params: IParams): boolean; + deleteColumns(params: IParams): boolean; + setTitle(data: string): boolean; + setOrReportIndexedColor(data: string): boolean; + setOrReportFgColor(data: string): boolean; + setOrReportBgColor(data: string): boolean; + setOrReportCursorColor(data: string): boolean; + restoreIndexedColor(data: string): boolean; + restoreFgColor(data: string): boolean; + restoreBgColor(data: string): boolean; + restoreCursorColor(data: string): boolean; + nextLine(): boolean; + keypadApplicationMode(): boolean; + keypadNumericMode(): boolean; + selectDefaultCharset(): boolean; + selectCharset(collectAndFlag: string): boolean; + index(): boolean; + tabSet(): boolean; + reverseIndex(): boolean; + fullReset(): boolean; + setgLevel(level: number): boolean; + screenAlignmentPattern(): boolean; +} +export interface IParseStack { + paused: boolean; + cursorStartX: number; + cursorStartY: number; + decodedLength: number; + position: number; +} +//# sourceMappingURL=Types.d.ts.map \ No newline at end of file diff --git a/src/common/services/Types.d.ts.map b/src/common/services/Types.d.ts.map new file mode 100644 index 000000000..beb39c5bd --- /dev/null +++ b/src/common/services/Types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["Types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/services/Types.js b/src/common/services/Types.js new file mode 100644 index 000000000..7e73fc567 --- /dev/null +++ b/src/common/services/Types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Types.js.map \ No newline at end of file diff --git a/src/common/services/Types.js.map b/src/common/services/Types.js.map new file mode 100644 index 000000000..7d148f5ff --- /dev/null +++ b/src/common/services/Types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Types.js","sourceRoot":"","sources":["Types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/src/common/Types.ts b/src/common/services/Types.ts similarity index 97% rename from src/common/Types.ts rename to src/common/services/Types.ts index 07aebbe8f..44946c9ef 100644 --- a/src/common/Types.ts +++ b/src/common/services/Types.ts @@ -3,13 +3,15 @@ * @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 type { IDeleteEvent, IInsertEvent } from 'common/services/CircularList'; +import type { UnderlineStyle } from 'common/buffer/Constants'; +import type { IBufferSet } from 'common/buffer/Types'; +import type { IParams } from 'common/parser/Types'; +import type { IMouseStateService, ICoreService, IOptionsService, IUnicodeService } from 'common/services/Services'; import { IFunctionIdentifier, ITerminalOptions as IPublicTerminalOptions } from '@xterm/xterm'; -import type { Emitter, IEvent } from 'common/Event'; +import type { Emitter, IEvent } from 'common/base/Event'; + +export type { ICharset } from 'common/data/Charsets'; export interface ICoreTerminal { mouseStateService: IMouseStateService; @@ -97,10 +99,6 @@ export interface IKeyboardResult { key: string | undefined; } -export interface ICharset { - [key: string]: string | undefined; -} - export type CharData = [attr: number, char: string, width: number, code: number]; export interface IColor { diff --git a/src/common/services/UnicodeService.d.ts b/src/common/services/UnicodeService.d.ts new file mode 100644 index 000000000..8235e312d --- /dev/null +++ b/src/common/services/UnicodeService.d.ts @@ -0,0 +1,23 @@ +import { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; +export declare class UnicodeService implements IUnicodeService { + serviceBrand: any; + private _providers; + private _active; + private _activeProvider; + private readonly _onChange; + readonly onChange: import("common/base/Event").IEvent; + static extractShouldJoin(value: UnicodeCharProperties): boolean; + static extractWidth(value: UnicodeCharProperties): UnicodeCharWidth; + static extractCharKind(value: UnicodeCharProperties): number; + static createPropertyValue(state: number, width: number, shouldJoin?: boolean): UnicodeCharProperties; + constructor(); + dispose(): void; + get versions(): string[]; + get activeVersion(): string; + set activeVersion(version: string); + register(provider: IUnicodeVersionProvider): void; + wcwidth(num: number): UnicodeCharWidth; + getStringCellWidth(s: string): number; + charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; +} +//# sourceMappingURL=UnicodeService.d.ts.map \ No newline at end of file diff --git a/src/common/services/UnicodeService.d.ts.map b/src/common/services/UnicodeService.d.ts.map new file mode 100644 index 000000000..f4d1012ae --- /dev/null +++ b/src/common/services/UnicodeService.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UnicodeService.d.ts","sourceRoot":"","sources":["UnicodeService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG7H,qBAAa,cAAe,YAAW,eAAe;IAC7C,YAAY,EAAE,GAAG,CAAC;IAEzB,OAAO,CAAC,UAAU,CAAiE;IACnF,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,eAAe,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,SAAgB,QAAQ,6CAAwB;IAEhD,OAAc,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAErE;IACD,OAAc,YAAY,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CAEzE;IACD,OAAc,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAElE;IACD,OAAc,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,qBAAqB,CAElH;IAED,cAKC;IAEM,OAAO,IAAI,IAAI,CAErB;IAED,IAAW,QAAQ,IAAI,MAAM,EAAE,CAE9B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,OAAO,EAAE,MAAM,EAOvC;IAEM,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAEvD;IAKM,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAE5C;IAEM,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAkC3C;IAEM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,GAAG,qBAAqB,CAEhG;CACF"} \ No newline at end of file diff --git a/src/common/services/UnicodeService.js b/src/common/services/UnicodeService.js new file mode 100644 index 000000000..bbca4f17e --- /dev/null +++ b/src/common/services/UnicodeService.js @@ -0,0 +1,85 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnicodeService = void 0; +const UnicodeV6_1 = require("common/input/UnicodeV6"); +const Event_1 = require("common/base/Event"); +class UnicodeService { + static extractShouldJoin(value) { + return (value & 1) !== 0; + } + static extractWidth(value) { + return ((value >> 1) & 0x3); + } + static extractCharKind(value) { + return value >> 3; + } + static createPropertyValue(state, width, shouldJoin = false) { + return ((state & 0xffffff) << 3) | ((width & 3) << 1) | (shouldJoin ? 1 : 0); + } + constructor() { + this._providers = Object.create(null); + this._active = ''; + this._onChange = new Event_1.Emitter(); + this.onChange = this._onChange.event; + const defaultProvider = new UnicodeV6_1.UnicodeV6(); + this.register(defaultProvider); + this._active = defaultProvider.version; + this._activeProvider = defaultProvider; + } + dispose() { + this._onChange.dispose(); + } + get versions() { + return Object.keys(this._providers); + } + get activeVersion() { + return this._active; + } + set activeVersion(version) { + if (!this._providers[version]) { + throw new Error(`unknown Unicode version "${version}"`); + } + this._active = version; + this._activeProvider = this._providers[version]; + this._onChange.fire(version); + } + register(provider) { + this._providers[provider.version] = provider; + } + wcwidth(num) { + return this._activeProvider.wcwidth(num); + } + getStringCellWidth(s) { + let result = 0; + let precedingInfo = 0; + const length = s.length; + for (let i = 0; i < length; ++i) { + let code = s.charCodeAt(i); + if (0xD800 <= code && code <= 0xDBFF) { + if (++i >= length) { + return result + this.wcwidth(code); + } + const second = s.charCodeAt(i); + if (0xDC00 <= second && second <= 0xDFFF) { + code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + else { + result += this.wcwidth(second); + } + } + const currentInfo = this.charProperties(code, precedingInfo); + let chWidth = UnicodeService.extractWidth(currentInfo); + if (UnicodeService.extractShouldJoin(currentInfo)) { + chWidth -= UnicodeService.extractWidth(precedingInfo); + } + result += chWidth; + precedingInfo = currentInfo; + } + return result; + } + charProperties(codepoint, preceding) { + return this._activeProvider.charProperties(codepoint, preceding); + } +} +exports.UnicodeService = UnicodeService; +//# sourceMappingURL=UnicodeService.js.map \ No newline at end of file diff --git a/src/common/services/UnicodeService.js.map b/src/common/services/UnicodeService.js.map new file mode 100644 index 000000000..1ee6f2bdb --- /dev/null +++ b/src/common/services/UnicodeService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"UnicodeService.js","sourceRoot":"","sources":["UnicodeService.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/services/UnicodeService.ts b/src/common/services/UnicodeService.ts index d0dd8584d..99b4546a0 100644 --- a/src/common/services/UnicodeService.ts +++ b/src/common/services/UnicodeService.ts @@ -5,7 +5,7 @@ import { UnicodeV6 } from 'common/input/UnicodeV6'; import { IUnicodeService, IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; export class UnicodeService implements IUnicodeService { public serviceBrand: any; diff --git a/src/common/services/tsconfig.json b/src/common/services/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/services/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/CoreTerminal.ts b/src/common/terminal/CoreTerminal.ts similarity index 98% rename from src/common/CoreTerminal.ts rename to src/common/terminal/CoreTerminal.ts index 80168aa65..40fdf337f 100644 --- a/src/common/CoreTerminal.ts +++ b/src/common/terminal/CoreTerminal.ts @@ -26,19 +26,19 @@ import { InstantiationService } from 'common/services/InstantiationService'; import { LogService } from 'common/services/LogService'; import { BufferService, BufferServiceConstants } from 'common/services/BufferService'; import { OptionsService } from 'common/services/OptionsService'; -import { IDisposable, IAttributeData, ICoreTerminal, IScrollEvent } from 'common/Types'; +import { IDisposable, IAttributeData, ICoreTerminal, IScrollEvent } from 'common/services/Types'; import { CoreService } from 'common/services/CoreService'; import { MouseStateService } from 'common/services/MouseStateService'; import { UnicodeService } from 'common/services/UnicodeService'; import { CharsetService } from 'common/services/CharsetService'; -import { updateWindowsModeWrappedState } from 'common/WindowsMode'; +import { updateWindowsModeWrappedState } from 'common/terminal/WindowsMode'; import { IFunctionIdentifier, IParams } from 'common/parser/Types'; import { IBufferSet } from 'common/buffer/Types'; -import { InputHandler } from 'common/InputHandler'; +import { InputHandler } from 'common/terminal/InputHandler'; import { WriteBuffer } from 'common/input/WriteBuffer'; import { OscLinkService } from 'common/services/OscLinkService'; -import { Emitter, EventUtils, type IEvent } from 'common/Event'; -import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; +import { Emitter, EventUtils, type IEvent } from 'common/base/Event'; +import { Disposable, MutableDisposable, toDisposable } from 'common/base/Lifecycle'; // Only trigger this warning a single time per session let hasWriteSyncWarnHappened = false; diff --git a/src/common/InputHandler.test.ts b/src/common/terminal/InputHandler.test.ts similarity index 99% rename from src/common/InputHandler.test.ts rename to src/common/terminal/InputHandler.test.ts index 5c59b062b..6e6de639c 100644 --- a/src/common/InputHandler.test.ts +++ b/src/common/terminal/InputHandler.test.ts @@ -4,14 +4,14 @@ */ import { assert } from 'chai'; -import { InputHandler } from 'common/InputHandler'; -import { IBufferLine, IAttributeData, IColorEvent, ColorRequestType, SpecialColorIndex } from 'common/Types'; +import { InputHandler } from 'common/terminal/InputHandler'; +import { IBufferLine, IAttributeData, IColorEvent, ColorRequestType, SpecialColorIndex } from 'common/services/Types'; import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { CellData } from 'common/buffer/CellData'; import { Attributes, BgFlags, UnderlineStyle } from 'common/buffer/Constants'; import { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData'; import { Params } from 'common/parser/Params'; -import { MockCoreService, MockBufferService, MockOptionsService, MockLogService, MockMouseStateService, MockCharsetService, MockUnicodeService, MockOscLinkService, extendedAttributes } from 'common/TestUtils.test'; +import { MockCoreService, MockBufferService, MockOptionsService, MockLogService, MockMouseStateService, MockCharsetService, MockUnicodeService, MockOscLinkService, extendedAttributes } from 'common/terminal/TestUtils.test'; import { IBufferService, ICoreService, type IOscLinkService } from 'common/services/Services'; import { DEFAULT_OPTIONS } from 'common/services/OptionsService'; import { BufferService } from 'common/services/BufferService'; diff --git a/src/common/InputHandler.ts b/src/common/terminal/InputHandler.ts similarity index 99% rename from src/common/InputHandler.ts rename to src/common/terminal/InputHandler.ts index fd1fdb8a1..a739fdbf3 100644 --- a/src/common/InputHandler.ts +++ b/src/common/terminal/InputHandler.ts @@ -4,12 +4,12 @@ * @license MIT */ -import { IInputHandler, IAttributeData, IDisposable, IWindowOptions, IColorEvent, IParseStack, ColorIndex, ColorRequestType, SpecialColorIndex } from 'common/Types'; +import { IInputHandler, IAttributeData, IDisposable, IWindowOptions, IColorEvent, IParseStack, ColorIndex, ColorRequestType, SpecialColorIndex } from 'common/services/Types'; import { C0, C1 } from 'common/data/EscapeSequences'; import { CHARSETS, DEFAULT_CHARSET } from 'common/data/Charsets'; import { EscapeSequenceParser } from 'common/parser/EscapeSequenceParser'; -import { Disposable } from 'common/Lifecycle'; -import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32 } from 'common/input/TextDecoder'; +import { Disposable } from 'common/base/Lifecycle'; +import { StringToUtf32, stringFromCodePoint, Utf8ToUtf32 } from 'common/encoding/TextDecoder'; import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { IParsingState, IEscapeSequenceParser, IParams, IFunctionIdentifier } from 'common/parser/Types'; import { NULL_CELL_CODE, NULL_CELL_WIDTH, Attributes, FgFlags, BgFlags, Content, UnderlineStyle } from 'common/buffer/Constants'; @@ -22,8 +22,8 @@ import { DcsHandler } from 'common/parser/DcsParser'; import { ApcHandler } from 'common/parser/ApcParser'; import { IBuffer } from 'common/buffer/Types'; import { parseColor } from 'common/input/XParseColor'; -import { Emitter } from 'common/Event'; -import { XTERM_VERSION } from 'common/Version'; +import { Emitter } from 'common/base/Event'; +import { XTERM_VERSION } from 'common/base/Version'; /** * Map collect to glevel. Used in `selectCharset`. diff --git a/src/common/terminal/TestUtils.test.d.ts b/src/common/terminal/TestUtils.test.d.ts new file mode 100644 index 000000000..e8e4853a5 --- /dev/null +++ b/src/common/terminal/TestUtils.test.d.ts @@ -0,0 +1,123 @@ +import { IBufferService, ICoreService, ILogService, IOptionsService, ITerminalOptions, IMouseStateService, ICharsetService, UnicodeCharProperties, UnicodeCharWidth, IUnicodeService, IUnicodeVersionProvider, LogLevelEnum, IDecorationService, IInternalDecoration, IOscLinkService, type IBufferResizeEvent } from 'common/services/Services'; +import { IBufferSet, IBuffer } from 'common/buffer/Types'; +import { IDecPrivateModes, ICoreMouseEvent, CoreMouseEventType, ICharset, IModes, IAttributeData, IOscLinkData, IDisposable, IBufferLine, IExtendedAttrs } from 'common/services/Types'; +import { IDecorationOptions, IDecoration } from '@xterm/xterm'; +import { type IEvent } from 'common/base/Event'; +import { CellData } from 'common/buffer/CellData'; +export declare function createCellData(attr: number, char: string, width: number): CellData; +export declare function extendedAttributes(line: IBufferLine, index: number): IExtendedAttrs | undefined; +export declare const NULL_CELL_DATA: Readonly; +export declare class MockBufferService implements IBufferService { + cols: number; + rows: number; + serviceBrand: any; + get buffer(): IBuffer; + buffers: IBufferSet; + onResize: IEvent; + onScroll: IEvent; + private readonly _onScroll; + isUserScrolling: boolean; + constructor(cols: number, rows: number, optionsService?: IOptionsService); + scrollPages(pageCount: number): void; + scrollToTop(): void; + scrollToLine(line: number): void; + scroll(eraseAttr: IAttributeData, isWrapped: boolean): void; + scrollToBottom(): void; + scrollLines(disp: number, suppressScrollEvent?: boolean): void; + resize(cols: number, rows: number): void; + reset(): void; +} +export declare class MockMouseStateService implements IMouseStateService { + serviceBrand: any; + areMouseEventsActive: boolean; + activeEncoding: string; + activeProtocol: string; + isDefaultEncoding: boolean; + isPixelEncoding: boolean; + addEncoding(name: string): void; + addProtocol(name: string): void; + reset(): void; + onProtocolChange: IEvent; + restrictMouseEvent(event: ICoreMouseEvent): boolean; + encodeMouseEvent(event: ICoreMouseEvent): string; + setCustomWheelEventHandler(customWheelEventHandler: ((event: WheelEvent) => boolean) | undefined): void; + allowCustomWheelEvent(ev: WheelEvent): boolean; +} +export declare class MockCharsetService implements ICharsetService { + serviceBrand: any; + charset: ICharset | undefined; + glevel: number; + charsets: (ICharset | undefined)[]; + reset(): void; + setgLevel(g: number): void; + setgCharset(g: number, charset: ICharset | undefined): void; +} +export declare class MockCoreService implements ICoreService { + serviceBrand: any; + isCursorInitialized: boolean; + isCursorHidden: boolean; + isFocused: boolean; + modes: IModes; + decPrivateModes: IDecPrivateModes; + kittyKeyboard: { + flags: number; + mainFlags: number; + altFlags: number; + mainStack: number[]; + altStack: number[]; + }; + onData: IEvent; + onUserInput: IEvent; + onBinary: IEvent; + onRequestScrollToBottom: IEvent; + reset(): void; + triggerDataEvent(data: string, wasUserInput?: boolean): void; + triggerBinaryEvent(data: string): void; +} +export declare class MockLogService implements ILogService { + serviceBrand: any; + logLevel: LogLevelEnum; + trace(message: any, ...optionalParams: any[]): void; + debug(message: any, ...optionalParams: any[]): void; + info(message: any, ...optionalParams: any[]): void; + warn(message: any, ...optionalParams: any[]): void; + error(message: any, ...optionalParams: any[]): void; +} +export declare class MockOptionsService implements IOptionsService { + serviceBrand: any; + readonly rawOptions: Required; + options: Required; + onOptionChange: IEvent; + constructor(testOptions?: Partial); + onSpecificOptionChange(key: T, listener: (arg1: ITerminalOptions[T]) => any): IDisposable; + onMultipleOptionChange(keys: (keyof ITerminalOptions)[], listener: () => any): IDisposable; + setOptions(options: ITerminalOptions): void; +} +export declare class MockOscLinkService implements IOscLinkService { + serviceBrand: any; + registerLink(linkData: IOscLinkData): number; + getLinkData(linkId: number): IOscLinkData | undefined; + addLineToLink(linkId: number, y: number): void; +} +export declare class MockUnicodeService implements IUnicodeService { + serviceBrand: any; + private _provider; + register(provider: IUnicodeVersionProvider): void; + versions: string[]; + activeVersion: string; + onChange: IEvent; + wcwidth: (codepoint: number) => UnicodeCharWidth; + charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties; + getStringCellWidth(s: string): number; +} +export declare class MockDecorationService implements IDecorationService { + serviceBrand: any; + get decorations(): IterableIterator; + onDecorationRegistered: IEvent; + onDecorationRemoved: IEvent; + registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined; + reset(): void; + forEachDecorationAtCell(x: number, line: number, layer: 'bottom' | 'top' | undefined, callback: (decoration: IInternalDecoration) => void): void; + dispose(): void; +} +//# sourceMappingURL=TestUtils.test.d.ts.map \ No newline at end of file diff --git a/src/common/terminal/TestUtils.test.d.ts.map b/src/common/terminal/TestUtils.test.d.ts.map new file mode 100644 index 000000000..468f48dd3 --- /dev/null +++ b/src/common/terminal/TestUtils.test.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestUtils.test.d.ts","sourceRoot":"","sources":["TestUtils.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/terminal/TestUtils.test.js b/src/common/terminal/TestUtils.test.js new file mode 100644 index 000000000..e89b4f144 --- /dev/null +++ b/src/common/terminal/TestUtils.test.js @@ -0,0 +1,234 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MockDecorationService = exports.MockUnicodeService = exports.MockOscLinkService = exports.MockOptionsService = exports.MockLogService = exports.MockCoreService = exports.MockCharsetService = exports.MockMouseStateService = exports.MockBufferService = exports.NULL_CELL_DATA = void 0; +exports.createCellData = createCellData; +exports.extendedAttributes = extendedAttributes; +const Services_1 = require("common/services/Services"); +const UnicodeService_1 = require("common/services/UnicodeService"); +const OptionsService_1 = require("common/services/OptionsService"); +const BufferSet_1 = require("common/buffer/BufferSet"); +const UnicodeV6_1 = require("common/input/UnicodeV6"); +const Event_1 = require("common/base/Event"); +const CellData_1 = require("common/buffer/CellData"); +const Constants_1 = require("common/buffer/Constants"); +function createCellData(attr, char, width) { + return CellData_1.CellData.fromCharData([attr, char, width, char.length === 0 ? 0 : char.charCodeAt(0)]); +} +function extendedAttributes(line, index) { + const cell = new CellData_1.CellData(); + line.loadCell(index, cell); + return cell.hasExtendedAttrs() !== 0 ? cell.extended : undefined; +} +exports.NULL_CELL_DATA = Object.freeze(createCellData(Constants_1.DEFAULT_ATTR, Constants_1.NULL_CELL_CHAR, Constants_1.NULL_CELL_WIDTH)); +class MockBufferService { + get buffer() { return this.buffers.active; } + constructor(cols, rows, optionsService = new MockOptionsService()) { + this.cols = cols; + this.rows = rows; + this.buffers = {}; + this.onResize = new Event_1.Emitter().event; + this.onScroll = new Event_1.Emitter().event; + this._onScroll = new Event_1.Emitter(); + this.isUserScrolling = false; + this.buffers = new BufferSet_1.BufferSet(optionsService, this, new MockLogService()); + this.buffers.onBufferActivate(e => { + this._onScroll.fire(e.activeBuffer.ydisp); + }); + } + scrollPages(pageCount) { + throw new Error('Method not implemented.'); + } + scrollToTop() { + throw new Error('Method not implemented.'); + } + scrollToLine(line) { + throw new Error('Method not implemented.'); + } + scroll(eraseAttr, isWrapped) { + throw new Error('Method not implemented.'); + } + scrollToBottom() { + throw new Error('Method not implemented.'); + } + scrollLines(disp, suppressScrollEvent) { + throw new Error('Method not implemented.'); + } + resize(cols, rows) { + this.cols = cols; + this.rows = rows; + } + reset() { } +} +exports.MockBufferService = MockBufferService; +class MockMouseStateService { + constructor() { + this.areMouseEventsActive = false; + this.activeEncoding = ''; + this.activeProtocol = ''; + this.isDefaultEncoding = true; + this.isPixelEncoding = false; + this.onProtocolChange = new Event_1.Emitter().event; + } + addEncoding(name) { } + addProtocol(name) { } + reset() { } + restrictMouseEvent(event) { return true; } + encodeMouseEvent(event) { return ''; } + setCustomWheelEventHandler(customWheelEventHandler) { } + allowCustomWheelEvent(ev) { return true; } +} +exports.MockMouseStateService = MockMouseStateService; +class MockCharsetService { + constructor() { + this.glevel = 0; + this.charsets = []; + } + reset() { } + setgLevel(g) { + this.glevel = g; + this.charset = this.charsets[g]; + } + setgCharset(g, charset) { + this.charsets[g] = charset; + if (this.glevel === g) { + this.charset = charset; + } + } +} +exports.MockCharsetService = MockCharsetService; +class MockCoreService { + constructor() { + this.isCursorInitialized = true; + this.isCursorHidden = false; + this.isFocused = false; + this.modes = { + insertMode: false + }; + this.decPrivateModes = { + applicationCursorKeys: false, + applicationKeypad: false, + bracketedPasteMode: false, + colorSchemeUpdates: false, + cursorBlink: undefined, + cursorStyle: undefined, + origin: false, + reverseWraparound: false, + sendFocus: false, + synchronizedOutput: false, + win32InputMode: false, + wraparound: true + }; + this.kittyKeyboard = { + flags: 0, + mainFlags: 0, + altFlags: 0, + mainStack: [], + altStack: [] + }; + this.onData = new Event_1.Emitter().event; + this.onUserInput = new Event_1.Emitter().event; + this.onBinary = new Event_1.Emitter().event; + this.onRequestScrollToBottom = new Event_1.Emitter().event; + } + reset() { } + triggerDataEvent(data, wasUserInput) { } + triggerBinaryEvent(data) { } +} +exports.MockCoreService = MockCoreService; +class MockLogService { + constructor() { + this.logLevel = Services_1.LogLevelEnum.DEBUG; + } + trace(message, ...optionalParams) { } + debug(message, ...optionalParams) { } + info(message, ...optionalParams) { } + warn(message, ...optionalParams) { } + error(message, ...optionalParams) { } +} +exports.MockLogService = MockLogService; +class MockOptionsService { + constructor(testOptions) { + this.rawOptions = structuredClone(OptionsService_1.DEFAULT_OPTIONS); + this.options = this.rawOptions; + this.onOptionChange = new Event_1.Emitter().event; + if (testOptions) { + for (const key of Object.keys(testOptions)) { + this.rawOptions[key] = testOptions[key]; + } + } + } + onSpecificOptionChange(key, listener) { + return this.onOptionChange(eventKey => { + if (eventKey === key) { + listener(this.rawOptions[key]); + } + }); + } + onMultipleOptionChange(keys, listener) { + return this.onOptionChange(eventKey => { + if (keys.indexOf(eventKey) !== -1) { + listener(); + } + }); + } + setOptions(options) { + for (const key of Object.keys(options)) { + this.options[key] = options[key]; + } + } +} +exports.MockOptionsService = MockOptionsService; +class MockOscLinkService { + registerLink(linkData) { + return 1; + } + getLinkData(linkId) { + return undefined; + } + addLineToLink(linkId, y) { + } +} +exports.MockOscLinkService = MockOscLinkService; +class MockUnicodeService { + constructor() { + this._provider = new UnicodeV6_1.UnicodeV6(); + this.versions = []; + this.activeVersion = ''; + this.onChange = new Event_1.Emitter().event; + this.wcwidth = (codepoint) => this._provider.wcwidth(codepoint); + } + register(provider) { + throw new Error('Method not implemented.'); + } + charProperties(codepoint, preceding) { + let width = this.wcwidth(codepoint); + let shouldJoin = width === 0 && preceding !== 0; + if (shouldJoin) { + const oldWidth = UnicodeService_1.UnicodeService.extractWidth(preceding); + if (oldWidth === 0) { + shouldJoin = false; + } + else if (oldWidth > width) { + width = oldWidth; + } + } + return UnicodeService_1.UnicodeService.createPropertyValue(0, width, shouldJoin); + } + getStringCellWidth(s) { + throw new Error('Method not implemented.'); + } +} +exports.MockUnicodeService = MockUnicodeService; +class MockDecorationService { + constructor() { + this.onDecorationRegistered = new Event_1.Emitter().event; + this.onDecorationRemoved = new Event_1.Emitter().event; + } + get decorations() { return [].values(); } + registerDecoration(decorationOptions) { return undefined; } + reset() { } + forEachDecorationAtCell(x, line, layer, callback) { } + dispose() { } +} +exports.MockDecorationService = MockDecorationService; +//# sourceMappingURL=TestUtils.test.js.map \ No newline at end of file diff --git a/src/common/terminal/TestUtils.test.js.map b/src/common/terminal/TestUtils.test.js.map new file mode 100644 index 000000000..abf4ee866 --- /dev/null +++ b/src/common/terminal/TestUtils.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TestUtils.test.js","sourceRoot":"","sources":["TestUtils.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/common/TestUtils.test.ts b/src/common/terminal/TestUtils.test.ts similarity index 98% rename from src/common/TestUtils.test.ts rename to src/common/terminal/TestUtils.test.ts index 69c2d499d..c2c6c1321 100644 --- a/src/common/TestUtils.test.ts +++ b/src/common/terminal/TestUtils.test.ts @@ -8,10 +8,10 @@ import { UnicodeService } from 'common/services/UnicodeService'; import { DEFAULT_OPTIONS } from 'common/services/OptionsService'; import { IBufferSet, IBuffer } from 'common/buffer/Types'; import { BufferSet } from 'common/buffer/BufferSet'; -import { IDecPrivateModes, ICoreMouseEvent, CoreMouseEventType, ICharset, IModes, IAttributeData, IOscLinkData, IDisposable, IBufferLine, IExtendedAttrs } from 'common/Types'; +import { IDecPrivateModes, ICoreMouseEvent, CoreMouseEventType, ICharset, IModes, IAttributeData, IOscLinkData, IDisposable, IBufferLine, IExtendedAttrs } from 'common/services/Types'; import { UnicodeV6 } from 'common/input/UnicodeV6'; import { IDecorationOptions, IDecoration } from '@xterm/xterm'; -import { Emitter, type IEvent } from 'common/Event'; +import { Emitter, type IEvent } from 'common/base/Event'; import { CellData } from 'common/buffer/CellData'; import { DEFAULT_ATTR, NULL_CELL_CHAR, NULL_CELL_WIDTH } from 'common/buffer/Constants'; diff --git a/src/common/WindowsMode.ts b/src/common/terminal/WindowsMode.ts similarity index 100% rename from src/common/WindowsMode.ts rename to src/common/terminal/WindowsMode.ts diff --git a/src/common/terminal/tsconfig.json b/src/common/terminal/tsconfig.json new file mode 100644 index 000000000..3d38b2d18 --- /dev/null +++ b/src/common/terminal/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../tsconfig.json"], + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["./**/*"] +} diff --git a/src/common/tsconfig.json b/src/common/tsconfig.json index 31a893756..ef66ca3ab 100644 --- a/src/common/tsconfig.json +++ b/src/common/tsconfig.json @@ -5,19 +5,38 @@ "es2015", "es2016.Array.Include", "es2019.string", - "es2021.weakref" + "es2021.weakref", + "dom" ], - "outDir": "../../out", + "outDir": "../../out/common", + "rootDir": ".", "types": [ "../../node_modules/@types/mocha" ], "paths": { - "common/*": [ "./../common/*" ], - "*": [ "./../*" ] + "common/base/*": ["./base/*"], + "common/encoding/*": ["./encoding/*"], + "common/data/*": ["./data/*"], + "common/buffer/*": ["./buffer/*"], + "common/parser/*": ["./parser/*"], + "common/input/*": ["./input/*"], + "common/services/*": ["./services/*"], + "common/terminal/*": ["./terminal/*"], + "common/public/*": ["./public/*"], + "common/*": ["./*"], + "*": ["../*"] } }, "include": [ - "./**/*", + "./base/**/*", + "./encoding/**/*", + "./data/**/*", + "./buffer/**/*", + "./parser/**/*", + "./input/**/*", + "./services/**/*", + "./terminal/**/*", + "./public/**/*", "../../typings/xterm.d.ts" ] } diff --git a/src/headless/Terminal.ts b/src/headless/Terminal.ts index a348ae824..ba49af1cd 100644 --- a/src/headless/Terminal.ts +++ b/src/headless/Terminal.ts @@ -23,9 +23,9 @@ import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { IBuffer } from 'common/buffer/Types'; -import { CoreTerminal } from 'common/CoreTerminal'; -import { IMarker, ITerminalOptions } from 'common/Types'; -import { Emitter, EventUtils } from 'common/Event'; +import { CoreTerminal } from 'common/terminal/CoreTerminal'; +import { IMarker, ITerminalOptions } from 'common/services/Types'; +import { Emitter, EventUtils } from 'common/base/Event'; export class Terminal extends CoreTerminal { private readonly _onBell = this._register(new Emitter()); diff --git a/src/headless/public/Terminal.ts b/src/headless/public/Terminal.ts index d593dea15..eecabb013 100644 --- a/src/headless/public/Terminal.ts +++ b/src/headless/public/Terminal.ts @@ -9,9 +9,9 @@ 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 { AddonManager } from 'common/public/AddonManager'; -import { ITerminalOptions } from 'common/Types'; -import { Disposable } from 'common/Lifecycle'; -import type { IEvent } from 'common/Event'; +import { ITerminalOptions } from 'common/services/Types'; +import { Disposable } from 'common/base/Lifecycle'; +import type { IEvent } from 'common/base/Event'; /** * The set of options that only have an effect when set in the Terminal constructor. */ diff --git a/test/benchmark/DecorationService.benchmark.ts b/test/benchmark/DecorationService.benchmark.ts index 1a2033de1..8906641c4 100644 --- a/test/benchmark/DecorationService.benchmark.ts +++ b/test/benchmark/DecorationService.benchmark.ts @@ -5,7 +5,7 @@ import { perfContext, before, RuntimeCase } from 'xterm-benchmark'; import { DecorationService } from 'common/services/DecorationService'; -import { MockLogService, MockBufferService, MockOptionsService } from 'common/TestUtils.test'; +import { MockLogService, MockBufferService, MockOptionsService } from 'common/terminal/TestUtils.test'; const enum Constants { COLS = 80, ROWS = 30, diff --git a/test/benchmark/Event.benchmark.ts b/test/benchmark/Event.benchmark.ts index 9cd8216dc..68c5c950b 100644 --- a/test/benchmark/Event.benchmark.ts +++ b/test/benchmark/Event.benchmark.ts @@ -4,7 +4,7 @@ */ import { perfContext, before, RuntimeCase } from 'xterm-benchmark'; -import { Emitter } from 'common/Event'; +import { Emitter } from 'common/base/Event'; const ITERATIONS = 1_000_000; diff --git a/test/benchmark/Terminal.benchmark.ts b/test/benchmark/Terminal.benchmark.ts index fb06b429e..bee8139f1 100644 --- a/test/benchmark/Terminal.benchmark.ts +++ b/test/benchmark/Terminal.benchmark.ts @@ -6,7 +6,7 @@ import { perfContext, before, ThroughputRuntimeCase } from 'xterm-benchmark'; import { spawn } from 'node-pty'; -import { Utf8ToUtf32, stringFromCodePoint } from 'common/input/TextDecoder'; +import { Utf8ToUtf32, stringFromCodePoint } from 'common/encoding/TextDecoder'; import { CoreBrowserTerminal } from 'browser/CoreBrowserTerminal'; perfContext('Terminal: ls -lR /usr/lib', () => { diff --git a/test/playwright/TestUtils.ts b/test/playwright/TestUtils.ts index 8a76c8820..eaa418db6 100644 --- a/test/playwright/TestUtils.ts +++ b/test/playwright/TestUtils.ts @@ -7,7 +7,7 @@ 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 { ICoreTerminal, IDisposable, IMarker } from 'common/services/Types'; import * as playwright from '@playwright/test'; import { IBuffer, IBufferCell, IBufferLine, IBufferNamespace, IBufferRange, IDecoration, IDecorationOptions, IModes, IRenderDimensions, ITerminalInitOnlyOptions, ITerminalOptions, Terminal } from '@xterm/xterm';