@floegence/floeterm-terminal-web 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -445
- package/dist/core/TerminalInputBridge.d.ts +7 -3
- package/dist/core/TerminalInputBridge.d.ts.map +1 -1
- package/dist/core/TerminalInputBridge.js +63 -4
- package/dist/core/TerminalInputBridge.js.map +1 -1
- package/dist/entries/live.d.ts +4 -4
- package/dist/entries/live.d.ts.map +1 -1
- package/dist/entries/live.js +2 -2
- package/dist/entries/live.js.map +1 -1
- package/dist/entries/semantic.d.ts +9 -0
- package/dist/entries/semantic.d.ts.map +1 -0
- package/dist/entries/semantic.js +5 -0
- package/dist/entries/semantic.js.map +1 -0
- package/dist/entries/sessions.d.ts +1 -1
- package/dist/entries/sessions.d.ts.map +1 -1
- package/dist/index.d.ts +4 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -16
- package/dist/index.js.map +1 -1
- package/dist/live/client.d.ts +4 -6
- package/dist/live/client.d.ts.map +1 -1
- package/dist/live/client.js +19 -72
- package/dist/live/client.js.map +1 -1
- package/dist/live/codec.d.ts +8 -21
- package/dist/live/codec.d.ts.map +1 -1
- package/dist/live/codec.js +79 -111
- package/dist/live/codec.js.map +1 -1
- package/dist/live/transport.d.ts +38 -18
- package/dist/live/transport.d.ts.map +1 -1
- package/dist/live/transport.js +59 -133
- package/dist/live/transport.js.map +1 -1
- package/dist/semantic/RendererSurface.d.ts +65 -0
- package/dist/semantic/RendererSurface.d.ts.map +1 -0
- package/dist/semantic/RendererSurface.js +566 -0
- package/dist/semantic/RendererSurface.js.map +1 -0
- package/dist/semantic/presentation.d.ts +97 -0
- package/dist/semantic/presentation.d.ts.map +1 -0
- package/dist/semantic/presentation.js +102 -0
- package/dist/semantic/presentation.js.map +1 -0
- package/dist/types.d.ts +13 -494
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -37
- package/dist/types.js.map +1 -1
- package/package.json +11 -19
- package/dist/checkpoint/GhosttyCheckpoint.worker.d.ts +0 -2
- package/dist/checkpoint/GhosttyCheckpoint.worker.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpoint.worker.js +0 -9
- package/dist/checkpoint/GhosttyCheckpoint.worker.js.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointActor.d.ts +0 -44
- package/dist/checkpoint/GhosttyCheckpointActor.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointActor.js +0 -284
- package/dist/checkpoint/GhosttyCheckpointActor.js.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointEngine.d.ts +0 -62
- package/dist/checkpoint/GhosttyCheckpointEngine.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointEngine.js +0 -175
- package/dist/checkpoint/GhosttyCheckpointEngine.js.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.d.ts +0 -31
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.js +0 -112
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.js.map +0 -1
- package/dist/core/PagedTerminalOutputCoordinator.d.ts +0 -130
- package/dist/core/PagedTerminalOutputCoordinator.d.ts.map +0 -1
- package/dist/core/PagedTerminalOutputCoordinator.js +0 -1197
- package/dist/core/PagedTerminalOutputCoordinator.js.map +0 -1
- package/dist/core/TerminalCore.d.ts +0 -286
- package/dist/core/TerminalCore.d.ts.map +0 -1
- package/dist/core/TerminalCore.js +0 -3566
- package/dist/core/TerminalCore.js.map +0 -1
- package/dist/core/TerminalOutputPipeline.d.ts +0 -86
- package/dist/core/TerminalOutputPipeline.d.ts.map +0 -1
- package/dist/core/TerminalOutputPipeline.js +0 -511
- package/dist/core/TerminalOutputPipeline.js.map +0 -1
- package/dist/core/TerminalRenderScheduler.d.ts +0 -45
- package/dist/core/TerminalRenderScheduler.d.ts.map +0 -1
- package/dist/core/TerminalRenderScheduler.js +0 -145
- package/dist/core/TerminalRenderScheduler.js.map +0 -1
- package/dist/core/TerminalScrollbarOverlay.d.ts +0 -63
- package/dist/core/TerminalScrollbarOverlay.d.ts.map +0 -1
- package/dist/core/TerminalScrollbarOverlay.js +0 -493
- package/dist/core/TerminalScrollbarOverlay.js.map +0 -1
- package/dist/entries/history.d.ts +0 -4
- package/dist/entries/history.d.ts.map +0 -1
- package/dist/entries/history.js +0 -2
- package/dist/entries/history.js.map +0 -1
- package/dist/entries/preload.d.ts +0 -3
- package/dist/entries/preload.d.ts.map +0 -1
- package/dist/entries/preload.js +0 -2
- package/dist/entries/preload.js.map +0 -1
- package/dist/fabric/BeamtermFabricRenderer.d.ts +0 -67
- package/dist/fabric/BeamtermFabricRenderer.d.ts.map +0 -1
- package/dist/fabric/BeamtermFabricRenderer.js +0 -659
- package/dist/fabric/BeamtermFabricRenderer.js.map +0 -1
- package/dist/fabric/TerminalFabricCoordinator.d.ts +0 -40
- package/dist/fabric/TerminalFabricCoordinator.d.ts.map +0 -1
- package/dist/fabric/TerminalFabricCoordinator.js +0 -141
- package/dist/fabric/TerminalFabricCoordinator.js.map +0 -1
- package/dist/fabric/TerminalLiveFabric.d.ts +0 -44
- package/dist/fabric/TerminalLiveFabric.d.ts.map +0 -1
- package/dist/fabric/TerminalLiveFabric.js +0 -117
- package/dist/fabric/TerminalLiveFabric.js.map +0 -1
- package/dist/fabric/types.d.ts +0 -152
- package/dist/fabric/types.d.ts.map +0 -1
- package/dist/fabric/types.js +0 -2
- package/dist/fabric/types.js.map +0 -1
- package/dist/internal/BeamtermResourceLoader.d.ts +0 -3
- package/dist/internal/BeamtermResourceLoader.d.ts.map +0 -1
- package/dist/internal/BeamtermResourceLoader.js +0 -14
- package/dist/internal/BeamtermResourceLoader.js.map +0 -1
- package/dist/internal/GhosttyCompatibilityVersion.d.ts +0 -2
- package/dist/internal/GhosttyCompatibilityVersion.d.ts.map +0 -1
- package/dist/internal/GhosttyCompatibilityVersion.js +0 -2
- package/dist/internal/GhosttyCompatibilityVersion.js.map +0 -1
- package/dist/internal/GhosttyScrollbackCompat.d.ts +0 -16
- package/dist/internal/GhosttyScrollbackCompat.d.ts.map +0 -1
- package/dist/internal/GhosttyScrollbackCompat.js +0 -43
- package/dist/internal/GhosttyScrollbackCompat.js.map +0 -1
- package/dist/internal/GhosttyScrollbarCompat.d.ts +0 -12
- package/dist/internal/GhosttyScrollbarCompat.d.ts.map +0 -1
- package/dist/internal/GhosttyScrollbarCompat.js +0 -160
- package/dist/internal/GhosttyScrollbarCompat.js.map +0 -1
- package/dist/internal/SequenceBuffer.d.ts +0 -19
- package/dist/internal/SequenceBuffer.d.ts.map +0 -1
- package/dist/internal/SequenceBuffer.js +0 -83
- package/dist/internal/SequenceBuffer.js.map +0 -1
- package/dist/internal/TerminalInitializationScheduler.d.ts +0 -38
- package/dist/internal/TerminalInitializationScheduler.d.ts.map +0 -1
- package/dist/internal/TerminalInitializationScheduler.js +0 -112
- package/dist/internal/TerminalInitializationScheduler.js.map +0 -1
- package/dist/internal/TerminalResourceLoader.d.ts +0 -40
- package/dist/internal/TerminalResourceLoader.d.ts.map +0 -1
- package/dist/internal/TerminalResourceLoader.js +0 -165
- package/dist/internal/TerminalResourceLoader.js.map +0 -1
- package/dist/internal/UnicodeSafeUrlProvider.d.ts +0 -17
- package/dist/internal/UnicodeSafeUrlProvider.d.ts.map +0 -1
- package/dist/internal/UnicodeSafeUrlProvider.js +0 -32
- package/dist/internal/UnicodeSafeUrlProvider.js.map +0 -1
- package/dist/internal/scheduleUiTurn.d.ts +0 -5
- package/dist/internal/scheduleUiTurn.d.ts.map +0 -1
- package/dist/internal/scheduleUiTurn.js +0 -37
- package/dist/internal/scheduleUiTurn.js.map +0 -1
- package/dist/manager/TerminalInstanceController.d.ts +0 -88
- package/dist/manager/TerminalInstanceController.d.ts.map +0 -1
- package/dist/manager/TerminalInstanceController.js +0 -1076
- package/dist/manager/TerminalInstanceController.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -3
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -11
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/history.d.ts +0 -2
- package/dist/utils/history.d.ts.map +0 -1
- package/dist/utils/history.js +0 -12
- package/dist/utils/history.js.map +0 -1
- package/dist/utils/xtermAutoResponseFilter.d.ts +0 -2
- package/dist/utils/xtermAutoResponseFilter.d.ts.map +0 -1
- package/dist/utils/xtermAutoResponseFilter.js +0 -109
- package/dist/utils/xtermAutoResponseFilter.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GhosttyCompatibilityVersion.js","sourceRoot":"","sources":["../../src/internal/GhosttyCompatibilityVersion.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mCAAmC,GAAG,YAAY,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export { EXPECTED_GHOSTTY_WEB_COMPAT_VERSION } from './GhosttyCompatibilityVersion.js';
|
|
2
|
-
export declare const MIN_TERMINAL_SCROLLBACK_ROWS = 1;
|
|
3
|
-
export declare const MAX_TERMINAL_SCROLLBACK_ROWS = 10000;
|
|
4
|
-
export declare const GHOSTTY_SCROLLBACK_BYTES_PER_ROW = 8192;
|
|
5
|
-
export declare const MAX_GHOSTTY_SCROLLBACK_BYTES = 81920000;
|
|
6
|
-
export declare const MAX_SUPPORTED_TERMINAL_COLUMNS = 500;
|
|
7
|
-
/**
|
|
8
|
-
* This conversion is a temporary compatibility boundary for the exact pinned
|
|
9
|
-
* ghostty-web release. That release forwards its row-oriented scrollback option
|
|
10
|
-
* to Ghostty's byte-oriented max_scrollback field.
|
|
11
|
-
*/
|
|
12
|
-
export declare function validateTerminalScrollbackRows(value: unknown): number;
|
|
13
|
-
export declare function mapGhosttyScrollbackRowsForPinnedVersion(rows: unknown): number;
|
|
14
|
-
export declare function validateTerminalColumns(value: unknown, label?: string): number;
|
|
15
|
-
export declare function capAutoFitTerminalColumns(value: unknown): number;
|
|
16
|
-
//# sourceMappingURL=GhosttyScrollbackCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GhosttyScrollbackCompat.d.ts","sourceRoot":"","sources":["../../src/internal/GhosttyScrollbackCompat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kCAAkC,CAAC;AAEvF,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,gCAAgC,OAAQ,CAAC;AACtD,eAAO,MAAM,4BAA4B,WAAa,CAAC;AACvD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAKlD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAarE;AAED,wBAAgB,wCAAwC,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAM9E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAS,GAAG,MAAM,CAa9E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKhE"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export { EXPECTED_GHOSTTY_WEB_COMPAT_VERSION } from './GhosttyCompatibilityVersion.js';
|
|
2
|
-
export const MIN_TERMINAL_SCROLLBACK_ROWS = 1;
|
|
3
|
-
export const MAX_TERMINAL_SCROLLBACK_ROWS = 10000;
|
|
4
|
-
export const GHOSTTY_SCROLLBACK_BYTES_PER_ROW = 8192;
|
|
5
|
-
export const MAX_GHOSTTY_SCROLLBACK_BYTES = 81920000;
|
|
6
|
-
export const MAX_SUPPORTED_TERMINAL_COLUMNS = 500;
|
|
7
|
-
const scrollbackRangeDescription = `${MIN_TERMINAL_SCROLLBACK_ROWS} and ${MAX_TERMINAL_SCROLLBACK_ROWS} terminal buffer rows`;
|
|
8
|
-
/**
|
|
9
|
-
* This conversion is a temporary compatibility boundary for the exact pinned
|
|
10
|
-
* ghostty-web release. That release forwards its row-oriented scrollback option
|
|
11
|
-
* to Ghostty's byte-oriented max_scrollback field.
|
|
12
|
-
*/
|
|
13
|
-
export function validateTerminalScrollbackRows(value) {
|
|
14
|
-
if (typeof value !== 'number'
|
|
15
|
-
|| !Number.isFinite(value)
|
|
16
|
-
|| !Number.isInteger(value)
|
|
17
|
-
|| value < MIN_TERMINAL_SCROLLBACK_ROWS
|
|
18
|
-
|| value > MAX_TERMINAL_SCROLLBACK_ROWS) {
|
|
19
|
-
throw new RangeError(`scrollback must be an integer between ${scrollbackRangeDescription}; received ${String(value)}`);
|
|
20
|
-
}
|
|
21
|
-
return value;
|
|
22
|
-
}
|
|
23
|
-
export function mapGhosttyScrollbackRowsForPinnedVersion(rows) {
|
|
24
|
-
const validatedRows = validateTerminalScrollbackRows(rows);
|
|
25
|
-
return Math.min(validatedRows * GHOSTTY_SCROLLBACK_BYTES_PER_ROW, MAX_GHOSTTY_SCROLLBACK_BYTES);
|
|
26
|
-
}
|
|
27
|
-
export function validateTerminalColumns(value, label = 'cols') {
|
|
28
|
-
if (typeof value !== 'number'
|
|
29
|
-
|| !Number.isFinite(value)
|
|
30
|
-
|| !Number.isInteger(value)
|
|
31
|
-
|| value < 1
|
|
32
|
-
|| value > MAX_SUPPORTED_TERMINAL_COLUMNS) {
|
|
33
|
-
throw new RangeError(`${label} must be an integer between 1 and ${MAX_SUPPORTED_TERMINAL_COLUMNS}; received ${String(value)}`);
|
|
34
|
-
}
|
|
35
|
-
return value;
|
|
36
|
-
}
|
|
37
|
-
export function capAutoFitTerminalColumns(value) {
|
|
38
|
-
if (typeof value !== 'number' || !Number.isFinite(value) || value < 1) {
|
|
39
|
-
throw new RangeError(`auto-fit columns must be a finite positive number; received ${String(value)}`);
|
|
40
|
-
}
|
|
41
|
-
return Math.min(Math.floor(value), MAX_SUPPORTED_TERMINAL_COLUMNS);
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=GhosttyScrollbackCompat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GhosttyScrollbackCompat.js","sourceRoot":"","sources":["../../src/internal/GhosttyScrollbackCompat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kCAAkC,CAAC;AAEvF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAM,CAAC;AACnD,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAK,CAAC;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,QAAU,CAAC;AACvD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,MAAM,0BAA0B,GAC9B,GAAG,4BAA4B,QAAQ,4BAA4B,uBAAuB,CAAC;AAE7F;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,IACE,OAAO,KAAK,KAAK,QAAQ;WACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;WACvB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;WACxB,KAAK,GAAG,4BAA4B;WACpC,KAAK,GAAG,4BAA4B,EACvC,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,yCAAyC,0BAA0B,cAAc,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,IAAa;IACpE,MAAM,aAAa,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,CACb,aAAa,GAAG,gCAAgC,EAChD,4BAA4B,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc,EAAE,KAAK,GAAG,MAAM;IACpE,IACE,OAAO,KAAK,KAAK,QAAQ;WACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;WACvB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;WACxB,KAAK,GAAG,CAAC;WACT,KAAK,GAAG,8BAA8B,EACzC,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,GAAG,KAAK,qCAAqC,8BAA8B,cAAc,MAAM,CAAC,KAAK,CAAC,EAAE,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,UAAU,CAAC,+DAA+D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,8BAA8B,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type pinned_ghostty_scrollbar_terminal = Record<string, unknown>;
|
|
2
|
-
type pinned_ghostty_renderer = {
|
|
3
|
-
render?: (...args: unknown[]) => unknown;
|
|
4
|
-
__floetermScrollbarSuppressed?: boolean;
|
|
5
|
-
};
|
|
6
|
-
export declare function suppressPinnedGhosttyScrollbarBeforeOpen(terminal: pinned_ghostty_scrollbar_terminal): void;
|
|
7
|
-
export declare function installPinnedGhosttyOutputViewportPolicy(terminal: pinned_ghostty_scrollbar_terminal): void;
|
|
8
|
-
export declare function isPinnedGhosttyOutputWriteActive(terminal: pinned_ghostty_scrollbar_terminal): boolean;
|
|
9
|
-
export declare function suppressPinnedGhosttyScrollbarRenderer(renderer: pinned_ghostty_renderer): void;
|
|
10
|
-
export declare function installPinnedGhosttyAlternateScreenProjection(terminal: pinned_ghostty_scrollbar_terminal): void;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=GhosttyScrollbarCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GhosttyScrollbarCompat.d.ts","sourceRoot":"","sources":["../../src/internal/GhosttyScrollbarCompat.ts"],"names":[],"mappings":"AAEA,KAAK,iCAAiC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjE,KAAK,uBAAuB,GAAG;IAC7B,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAwEF,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,iCAAiC,GAC1C,IAAI,CA2BN;AAED,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,iCAAiC,GAC1C,IAAI,CAmDN;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,iCAAiC,GAC1C,OAAO,CAET;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAa9F;AAED,wBAAgB,6CAA6C,CAC3D,QAAQ,EAAE,iCAAiC,GAC1C,IAAI,CAWN"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { EXPECTED_GHOSTTY_WEB_COMPAT_VERSION } from './GhosttyCompatibilityVersion.js';
|
|
2
|
-
const outputViewportStates = new WeakMap();
|
|
3
|
-
const TERMINAL_METHODS = [
|
|
4
|
-
'handleMouseDown',
|
|
5
|
-
'showScrollbar',
|
|
6
|
-
'hideScrollbar',
|
|
7
|
-
'fadeInScrollbar',
|
|
8
|
-
'fadeOutScrollbar',
|
|
9
|
-
'getViewportY',
|
|
10
|
-
'getScrollbackLength',
|
|
11
|
-
'scrollToLine',
|
|
12
|
-
'scrollToTop',
|
|
13
|
-
'scrollToBottom',
|
|
14
|
-
'scrollLines',
|
|
15
|
-
'scrollPages',
|
|
16
|
-
'onScroll',
|
|
17
|
-
];
|
|
18
|
-
const SCROLL_NAVIGATION_METHODS = [
|
|
19
|
-
'scrollToLine',
|
|
20
|
-
'scrollToTop',
|
|
21
|
-
'scrollToBottom',
|
|
22
|
-
'scrollLines',
|
|
23
|
-
'scrollPages',
|
|
24
|
-
];
|
|
25
|
-
function pinnedShapeError(detail) {
|
|
26
|
-
return new Error(`The exact pinned ghostty-web ${EXPECTED_GHOSTTY_WEB_COMPAT_VERSION} `
|
|
27
|
-
+ `scrollbar compatibility shape is unavailable (${detail}). `
|
|
28
|
-
+ 'Review and remove or update GhosttyScrollbarCompat before changing ghostty-web.');
|
|
29
|
-
}
|
|
30
|
-
const readPinnedViewportValue = (terminal, method) => {
|
|
31
|
-
const value = Number(terminal[method].call(terminal));
|
|
32
|
-
if (!Number.isFinite(value) || value < 0) {
|
|
33
|
-
throw pinnedShapeError(`Terminal.${method}`);
|
|
34
|
-
}
|
|
35
|
-
return value;
|
|
36
|
-
};
|
|
37
|
-
const readPinnedAlternateScreen = (terminal) => {
|
|
38
|
-
if (typeof terminal.isAlternateScreen !== 'function') {
|
|
39
|
-
throw pinnedShapeError('Terminal.isAlternateScreen');
|
|
40
|
-
}
|
|
41
|
-
return Boolean(terminal.isAlternateScreen.call(terminal));
|
|
42
|
-
};
|
|
43
|
-
function cancelPinnedSmoothScroll(terminal) {
|
|
44
|
-
const animationFrame = terminal.scrollAnimationFrame;
|
|
45
|
-
if (animationFrame !== undefined) {
|
|
46
|
-
if (typeof animationFrame !== 'number' || typeof globalThis.cancelAnimationFrame !== 'function') {
|
|
47
|
-
throw pinnedShapeError('Terminal.scrollAnimationFrame');
|
|
48
|
-
}
|
|
49
|
-
globalThis.cancelAnimationFrame(animationFrame);
|
|
50
|
-
}
|
|
51
|
-
terminal.scrollAnimationFrame = undefined;
|
|
52
|
-
terminal.scrollAnimationStartTime = undefined;
|
|
53
|
-
terminal.scrollAnimationStartY = undefined;
|
|
54
|
-
terminal.targetViewportY = terminal.getViewportY.call(terminal);
|
|
55
|
-
}
|
|
56
|
-
export function suppressPinnedGhosttyScrollbarBeforeOpen(terminal) {
|
|
57
|
-
for (const method of TERMINAL_METHODS) {
|
|
58
|
-
if (typeof terminal[method] !== 'function') {
|
|
59
|
-
throw pinnedShapeError(`Terminal.${method}`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (typeof terminal.animateScroll !== 'function') {
|
|
63
|
-
throw pinnedShapeError('Terminal.animateScroll');
|
|
64
|
-
}
|
|
65
|
-
if (typeof terminal.targetViewportY !== 'number' || !Number.isFinite(terminal.targetViewportY)) {
|
|
66
|
-
throw pinnedShapeError('Terminal.targetViewportY');
|
|
67
|
-
}
|
|
68
|
-
for (const method of SCROLL_NAVIGATION_METHODS) {
|
|
69
|
-
const original = terminal[method];
|
|
70
|
-
terminal[method] = (...args) => {
|
|
71
|
-
cancelPinnedSmoothScroll(terminal);
|
|
72
|
-
return original.apply(terminal, args);
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
const noOp = () => { };
|
|
76
|
-
terminal.handleMouseDown = noOp;
|
|
77
|
-
terminal.showScrollbar = noOp;
|
|
78
|
-
terminal.hideScrollbar = noOp;
|
|
79
|
-
terminal.fadeInScrollbar = noOp;
|
|
80
|
-
terminal.fadeOutScrollbar = noOp;
|
|
81
|
-
}
|
|
82
|
-
export function installPinnedGhosttyOutputViewportPolicy(terminal) {
|
|
83
|
-
if (outputViewportStates.has(terminal))
|
|
84
|
-
return;
|
|
85
|
-
for (const method of ['write', 'getViewportY', 'getScrollbackLength', 'scrollToBottom', 'scrollToLine']) {
|
|
86
|
-
if (typeof terminal[method] !== 'function') {
|
|
87
|
-
throw pinnedShapeError(`Terminal.${method}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
readPinnedAlternateScreen(terminal);
|
|
91
|
-
const state = { writeDepth: 0 };
|
|
92
|
-
const originalWrite = terminal.write;
|
|
93
|
-
const originalScrollToBottom = terminal.scrollToBottom;
|
|
94
|
-
const scrollToLine = terminal.scrollToLine;
|
|
95
|
-
outputViewportStates.set(terminal, state);
|
|
96
|
-
terminal.scrollToBottom = (...args) => {
|
|
97
|
-
if (state.writeDepth > 0)
|
|
98
|
-
return undefined;
|
|
99
|
-
return originalScrollToBottom.apply(terminal, args);
|
|
100
|
-
};
|
|
101
|
-
terminal.write = (...args) => {
|
|
102
|
-
if (state.writeDepth > 0) {
|
|
103
|
-
return originalWrite.apply(terminal, args);
|
|
104
|
-
}
|
|
105
|
-
const beforeViewportY = readPinnedViewportValue(terminal, 'getViewportY');
|
|
106
|
-
const beforeScrollbackLength = readPinnedViewportValue(terminal, 'getScrollbackLength');
|
|
107
|
-
const beforeAlternateScreen = readPinnedAlternateScreen(terminal);
|
|
108
|
-
let completed = false;
|
|
109
|
-
state.writeDepth += 1;
|
|
110
|
-
try {
|
|
111
|
-
const result = originalWrite.apply(terminal, args);
|
|
112
|
-
completed = true;
|
|
113
|
-
return result;
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
state.writeDepth = Math.max(0, state.writeDepth - 1);
|
|
117
|
-
if (completed && state.writeDepth === 0) {
|
|
118
|
-
const afterAlternateScreen = readPinnedAlternateScreen(terminal);
|
|
119
|
-
if (beforeAlternateScreen !== afterAlternateScreen || afterAlternateScreen) {
|
|
120
|
-
originalScrollToBottom.call(terminal);
|
|
121
|
-
}
|
|
122
|
-
else if (beforeViewportY > 0) {
|
|
123
|
-
const afterScrollbackLength = readPinnedViewportValue(terminal, 'getScrollbackLength');
|
|
124
|
-
const appendedRows = Math.max(0, afterScrollbackLength - beforeScrollbackLength);
|
|
125
|
-
scrollToLine.call(terminal, Math.min(afterScrollbackLength, beforeViewportY + appendedRows));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
export function isPinnedGhosttyOutputWriteActive(terminal) {
|
|
132
|
-
return (outputViewportStates.get(terminal)?.writeDepth ?? 0) > 0;
|
|
133
|
-
}
|
|
134
|
-
export function suppressPinnedGhosttyScrollbarRenderer(renderer) {
|
|
135
|
-
if (renderer.__floetermScrollbarSuppressed)
|
|
136
|
-
return;
|
|
137
|
-
if (typeof renderer.render !== 'function') {
|
|
138
|
-
throw pinnedShapeError('renderer.render');
|
|
139
|
-
}
|
|
140
|
-
const originalRender = renderer.render.bind(renderer);
|
|
141
|
-
renderer.render = (...args) => {
|
|
142
|
-
const nextArgs = [...args];
|
|
143
|
-
while (nextArgs.length < 5)
|
|
144
|
-
nextArgs.push(undefined);
|
|
145
|
-
nextArgs[4] = 0;
|
|
146
|
-
return originalRender(...nextArgs);
|
|
147
|
-
};
|
|
148
|
-
renderer.__floetermScrollbarSuppressed = true;
|
|
149
|
-
}
|
|
150
|
-
export function installPinnedGhosttyAlternateScreenProjection(terminal) {
|
|
151
|
-
if (!(terminal.element instanceof HTMLElement)) {
|
|
152
|
-
throw pinnedShapeError('Terminal.element');
|
|
153
|
-
}
|
|
154
|
-
const wasmTerm = terminal.wasmTerm;
|
|
155
|
-
if (!wasmTerm || typeof wasmTerm.isAlternateScreen !== 'function') {
|
|
156
|
-
throw pinnedShapeError('Terminal.wasmTerm.isAlternateScreen');
|
|
157
|
-
}
|
|
158
|
-
terminal.isAlternateScreen = () => Boolean(wasmTerm.isAlternateScreen.call(wasmTerm));
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=GhosttyScrollbarCompat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GhosttyScrollbarCompat.js","sourceRoot":"","sources":["../../src/internal/GhosttyScrollbarCompat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { TerminalDataChunk } from '../types.js';
|
|
2
|
-
interface SequenceBufferConfig {
|
|
3
|
-
maxPendingChunks: number;
|
|
4
|
-
maxPendingBytes: number;
|
|
5
|
-
}
|
|
6
|
-
export declare class SequenceBuffer {
|
|
7
|
-
private expectedSequence;
|
|
8
|
-
private readonly pending;
|
|
9
|
-
private pendingBytes;
|
|
10
|
-
private readonly config;
|
|
11
|
-
constructor(config?: Partial<SequenceBufferConfig>);
|
|
12
|
-
reset(startSequence: number): void;
|
|
13
|
-
flushPending(): TerminalDataChunk[];
|
|
14
|
-
push(chunk: TerminalDataChunk, _now?: number): TerminalDataChunk[];
|
|
15
|
-
assertCoveredThrough(sequence: number): void;
|
|
16
|
-
coverThrough(sequence: number): TerminalDataChunk[];
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=SequenceBuffer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceBuffer.d.ts","sourceRoot":"","sources":["../../src/internal/SequenceBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAaD,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAOtD,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAQlC,YAAY,IAAI,iBAAiB,EAAE;IAYnC,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,SAAa,GAAG,iBAAiB,EAAE;IAwBtE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS5C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;CAmBpD"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
const defaultConfig = {
|
|
2
|
-
maxPendingChunks: 4096,
|
|
3
|
-
maxPendingBytes: 8 * 1024 * 1024,
|
|
4
|
-
};
|
|
5
|
-
const normalizePositiveInteger = (value, fallback) => (typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : fallback);
|
|
6
|
-
// Reliable transports may reorder delivery across the history/live handoff, but
|
|
7
|
-
// they must never infer or skip a missing sequence. Recovery owns gap resolution.
|
|
8
|
-
export class SequenceBuffer {
|
|
9
|
-
constructor(config = {}) {
|
|
10
|
-
this.expectedSequence = 1;
|
|
11
|
-
this.pending = new Map();
|
|
12
|
-
this.pendingBytes = 0;
|
|
13
|
-
this.config = {
|
|
14
|
-
maxPendingChunks: normalizePositiveInteger(config.maxPendingChunks, defaultConfig.maxPendingChunks),
|
|
15
|
-
maxPendingBytes: normalizePositiveInteger(config.maxPendingBytes, defaultConfig.maxPendingBytes),
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
reset(startSequence) {
|
|
19
|
-
this.expectedSequence = Number.isSafeInteger(startSequence) && startSequence > 0
|
|
20
|
-
? startSequence
|
|
21
|
-
: 1;
|
|
22
|
-
this.pending.clear();
|
|
23
|
-
this.pendingBytes = 0;
|
|
24
|
-
}
|
|
25
|
-
flushPending() {
|
|
26
|
-
const ready = [];
|
|
27
|
-
while (this.pending.has(this.expectedSequence)) {
|
|
28
|
-
const chunk = this.pending.get(this.expectedSequence);
|
|
29
|
-
this.pending.delete(this.expectedSequence);
|
|
30
|
-
this.pendingBytes -= chunk.data.byteLength;
|
|
31
|
-
ready.push(chunk);
|
|
32
|
-
this.expectedSequence += 1;
|
|
33
|
-
}
|
|
34
|
-
return ready;
|
|
35
|
-
}
|
|
36
|
-
push(chunk, _now = Date.now()) {
|
|
37
|
-
const sequence = chunk.sequence;
|
|
38
|
-
if (!Number.isSafeInteger(sequence) || sequence < 1) {
|
|
39
|
-
return [chunk];
|
|
40
|
-
}
|
|
41
|
-
if (sequence < this.expectedSequence || this.pending.has(sequence)) {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
if (sequence === this.expectedSequence) {
|
|
45
|
-
this.expectedSequence += 1;
|
|
46
|
-
return [chunk, ...this.flushPending()];
|
|
47
|
-
}
|
|
48
|
-
if (this.pending.size + 1 > this.config.maxPendingChunks
|
|
49
|
-
|| this.pendingBytes + chunk.data.byteLength > this.config.maxPendingBytes) {
|
|
50
|
-
throw new Error('terminal output reorder queue limit exceeded');
|
|
51
|
-
}
|
|
52
|
-
this.pending.set(sequence, chunk);
|
|
53
|
-
this.pendingBytes += chunk.data.byteLength;
|
|
54
|
-
return [];
|
|
55
|
-
}
|
|
56
|
-
assertCoveredThrough(sequence) {
|
|
57
|
-
if (!Number.isSafeInteger(sequence) || sequence < 0) {
|
|
58
|
-
throw new Error('terminal output replay boundary is invalid');
|
|
59
|
-
}
|
|
60
|
-
if (this.expectedSequence <= sequence) {
|
|
61
|
-
throw new Error(`missing terminal output sequence ${this.expectedSequence} before replay boundary ${sequence}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
coverThrough(sequence) {
|
|
65
|
-
if (!Number.isSafeInteger(sequence) || sequence < 0) {
|
|
66
|
-
throw new Error('terminal output replay coverage is invalid');
|
|
67
|
-
}
|
|
68
|
-
if (sequence < this.expectedSequence - 1) {
|
|
69
|
-
return [];
|
|
70
|
-
}
|
|
71
|
-
const covered = [...this.pending.entries()]
|
|
72
|
-
.filter(([pendingSequence]) => pendingSequence <= sequence)
|
|
73
|
-
.sort(([left], [right]) => left - right)
|
|
74
|
-
.map(([pendingSequence, chunk]) => {
|
|
75
|
-
this.pending.delete(pendingSequence);
|
|
76
|
-
this.pendingBytes -= chunk.data.byteLength;
|
|
77
|
-
return chunk;
|
|
78
|
-
});
|
|
79
|
-
this.expectedSequence = sequence + 1;
|
|
80
|
-
return [...covered, ...this.flushPending()];
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=SequenceBuffer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceBuffer.js","sourceRoot":"","sources":["../../src/internal/SequenceBuffer.ts"],"names":[],"mappings":"AAOA,MAAM,aAAa,GAAyB;IAC1C,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;CACjC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,KAAyB,EAAE,QAAgB,EAAU,EAAE,CAAC,CACxF,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CACzF,CAAC;AAEF,gFAAgF;AAChF,kFAAkF;AAClF,MAAM,OAAO,cAAc;IAMzB,YAAY,SAAwC,EAAE;QAL9C,qBAAgB,GAAG,CAAC,CAAC;QACZ,YAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;QACxD,iBAAY,GAAG,CAAC,CAAC;QAIvB,IAAI,CAAC,MAAM,GAAG;YACZ,gBAAgB,EAAE,wBAAwB,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC;YACnG,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC;SACjG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAqB;QACzB,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC;YAC9E,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACV,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAE,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAwB,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IACE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB;eACjD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAC1E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB,CAAC,QAAgB;QACnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,gBAAgB,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,eAAe,IAAI,QAAQ,CAAC;aAC1D,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YACrC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { type ScheduleTurn } from './scheduleUiTurn.js';
|
|
2
|
-
import type { TerminalInitializationPriority } from '../types.js';
|
|
3
|
-
export type TerminalInitializationPermit = {
|
|
4
|
-
release(): void;
|
|
5
|
-
};
|
|
6
|
-
export type TerminalInitializationRequest = Readonly<{
|
|
7
|
-
permit: Promise<TerminalInitializationPermit | null>;
|
|
8
|
-
promote: () => void;
|
|
9
|
-
cancel: () => void;
|
|
10
|
-
}>;
|
|
11
|
-
export type TerminalInitializationSchedulerSnapshot = Readonly<{
|
|
12
|
-
active: number;
|
|
13
|
-
activeBackground: number;
|
|
14
|
-
queued: number;
|
|
15
|
-
queuedInteractive: number;
|
|
16
|
-
queuedBackground: number;
|
|
17
|
-
maxConcurrent: number;
|
|
18
|
-
maxBackgroundConcurrent: number;
|
|
19
|
-
}>;
|
|
20
|
-
export declare class TerminalInitializationScheduler {
|
|
21
|
-
private readonly maxConcurrent;
|
|
22
|
-
private readonly scheduleTurn;
|
|
23
|
-
private readonly maxBackgroundConcurrent;
|
|
24
|
-
private readonly interactiveQueue;
|
|
25
|
-
private readonly backgroundQueue;
|
|
26
|
-
private activeCount;
|
|
27
|
-
private activeBackgroundCount;
|
|
28
|
-
private drainScheduled;
|
|
29
|
-
constructor(maxConcurrent?: number, scheduleTurn?: ScheduleTurn, maxBackgroundConcurrent?: number);
|
|
30
|
-
request(priority?: TerminalInitializationPriority): TerminalInitializationRequest;
|
|
31
|
-
getSnapshot(): TerminalInitializationSchedulerSnapshot;
|
|
32
|
-
private queueFor;
|
|
33
|
-
private scheduleDrain;
|
|
34
|
-
private drain;
|
|
35
|
-
}
|
|
36
|
-
export declare const terminalInitializationScheduler: TerminalInitializationScheduler;
|
|
37
|
-
export declare const getTerminalInitializationSchedulerStats: () => TerminalInitializationSchedulerSnapshot;
|
|
38
|
-
//# sourceMappingURL=TerminalInitializationScheduler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalInitializationScheduler.d.ts","sourceRoot":"","sources":["../../src/internal/TerminalInitializationScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAQF,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,MAAM,EAAE,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,uCAAuC,GAAG,QAAQ,CAAC;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC,CAAC;AAQH,qBAAa,+BAA+B;IAQxC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAT1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IACvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,cAAc,CAAS;gBAGZ,aAAa,SAAsC,EACnD,YAAY,GAAE,YAAgC,EAC9C,uBAAuB,SAAsC;IAGhF,OAAO,CAAC,QAAQ,GAAE,8BAA8C,GAAG,6BAA6B;IA+BhG,WAAW,IAAI,uCAAuC;IAYtD,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,KAAK;CAkCd;AAED,eAAO,MAAM,+BAA+B,iCAAwC,CAAC;AAErF,eAAO,MAAM,uCAAuC,QAAO,uCAE1D,CAAC"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { scheduleNextFrame } from './scheduleUiTurn.js';
|
|
2
|
-
const DEFAULT_MAX_CONCURRENT_INITIALIZERS = 3;
|
|
3
|
-
const DEFAULT_MAX_BACKGROUND_INITIALIZERS = 1;
|
|
4
|
-
// Terminal initialization is CPU and WebGL-resource heavy. A small global gate
|
|
5
|
-
// keeps large live grids responsive while every mounted terminal still becomes
|
|
6
|
-
// a real, live terminal instead of a snapshot or paused placeholder.
|
|
7
|
-
export class TerminalInitializationScheduler {
|
|
8
|
-
constructor(maxConcurrent = DEFAULT_MAX_CONCURRENT_INITIALIZERS, scheduleTurn = scheduleNextFrame, maxBackgroundConcurrent = DEFAULT_MAX_BACKGROUND_INITIALIZERS) {
|
|
9
|
-
this.maxConcurrent = maxConcurrent;
|
|
10
|
-
this.scheduleTurn = scheduleTurn;
|
|
11
|
-
this.maxBackgroundConcurrent = maxBackgroundConcurrent;
|
|
12
|
-
this.interactiveQueue = [];
|
|
13
|
-
this.backgroundQueue = [];
|
|
14
|
-
this.activeCount = 0;
|
|
15
|
-
this.activeBackgroundCount = 0;
|
|
16
|
-
this.drainScheduled = false;
|
|
17
|
-
}
|
|
18
|
-
request(priority = 'interactive') {
|
|
19
|
-
let waiter;
|
|
20
|
-
const permit = new Promise(resolve => {
|
|
21
|
-
waiter = { resolve, priority, active: true };
|
|
22
|
-
this.queueFor(priority).push(waiter);
|
|
23
|
-
this.scheduleDrain();
|
|
24
|
-
});
|
|
25
|
-
return {
|
|
26
|
-
permit,
|
|
27
|
-
promote: () => {
|
|
28
|
-
if (!waiter.active || waiter.priority === 'interactive')
|
|
29
|
-
return;
|
|
30
|
-
const index = this.backgroundQueue.indexOf(waiter);
|
|
31
|
-
if (index < 0)
|
|
32
|
-
return;
|
|
33
|
-
this.backgroundQueue.splice(index, 1);
|
|
34
|
-
waiter.priority = 'interactive';
|
|
35
|
-
this.interactiveQueue.push(waiter);
|
|
36
|
-
this.scheduleDrain();
|
|
37
|
-
},
|
|
38
|
-
cancel: () => {
|
|
39
|
-
if (!waiter.active)
|
|
40
|
-
return;
|
|
41
|
-
const queue = this.queueFor(waiter.priority);
|
|
42
|
-
const index = queue.indexOf(waiter);
|
|
43
|
-
if (index < 0)
|
|
44
|
-
return;
|
|
45
|
-
queue.splice(index, 1);
|
|
46
|
-
waiter.active = false;
|
|
47
|
-
waiter.resolve(null);
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
getSnapshot() {
|
|
52
|
-
return {
|
|
53
|
-
active: this.activeCount,
|
|
54
|
-
activeBackground: this.activeBackgroundCount,
|
|
55
|
-
queued: this.interactiveQueue.length + this.backgroundQueue.length,
|
|
56
|
-
queuedInteractive: this.interactiveQueue.length,
|
|
57
|
-
queuedBackground: this.backgroundQueue.length,
|
|
58
|
-
maxConcurrent: this.maxConcurrent,
|
|
59
|
-
maxBackgroundConcurrent: this.maxBackgroundConcurrent,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
queueFor(priority) {
|
|
63
|
-
return priority === 'background' ? this.backgroundQueue : this.interactiveQueue;
|
|
64
|
-
}
|
|
65
|
-
scheduleDrain() {
|
|
66
|
-
if (this.drainScheduled) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
this.drainScheduled = true;
|
|
70
|
-
this.scheduleTurn(() => {
|
|
71
|
-
this.drainScheduled = false;
|
|
72
|
-
this.drain();
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
drain() {
|
|
76
|
-
while (this.activeCount < this.maxConcurrent) {
|
|
77
|
-
const waiter = this.interactiveQueue.shift()
|
|
78
|
-
?? (this.activeBackgroundCount < this.maxBackgroundConcurrent
|
|
79
|
-
? this.backgroundQueue.shift()
|
|
80
|
-
: undefined);
|
|
81
|
-
if (!waiter) {
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
if (!waiter.active) {
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
waiter.active = false;
|
|
88
|
-
this.activeCount += 1;
|
|
89
|
-
if (waiter.priority === 'background')
|
|
90
|
-
this.activeBackgroundCount += 1;
|
|
91
|
-
let released = false;
|
|
92
|
-
waiter.resolve({
|
|
93
|
-
release: () => {
|
|
94
|
-
if (released) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
released = true;
|
|
98
|
-
this.activeCount = Math.max(0, this.activeCount - 1);
|
|
99
|
-
if (waiter.priority === 'background') {
|
|
100
|
-
this.activeBackgroundCount = Math.max(0, this.activeBackgroundCount - 1);
|
|
101
|
-
}
|
|
102
|
-
if (this.interactiveQueue.length > 0 || this.backgroundQueue.length > 0) {
|
|
103
|
-
this.scheduleDrain();
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
export const terminalInitializationScheduler = new TerminalInitializationScheduler();
|
|
111
|
-
export const getTerminalInitializationSchedulerStats = () => (terminalInitializationScheduler.getSnapshot());
|
|
112
|
-
//# sourceMappingURL=TerminalInitializationScheduler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalInitializationScheduler.js","sourceRoot":"","sources":["../../src/internal/TerminalInitializationScheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { Logger, TerminalResourcePreloadOptions } from '../types.js';
|
|
2
|
-
import { type TerminalInitializationScheduler } from './TerminalInitializationScheduler.js';
|
|
3
|
-
export type GhosttyRuntimeInstance = InstanceType<typeof import('@floegence/ghostty-web').Ghostty>;
|
|
4
|
-
type GhosttyResourceModule = Pick<typeof import('@floegence/ghostty-web'), 'Terminal' | 'FitAddon' | 'LinkDetector' | 'OSC8LinkProvider' | 'UrlRegexProvider' | 'Ghostty'>;
|
|
5
|
-
type GhosttyModuleImporter = () => Promise<typeof import('@floegence/ghostty-web')>;
|
|
6
|
-
type GhosttyRuntimeScheduler = Pick<TerminalInitializationScheduler, 'request'>;
|
|
7
|
-
export declare const resolveGhosttyRuntime: (module: typeof import("@floegence/ghostty-web")) => GhosttyResourceModule;
|
|
8
|
-
export declare const waitWithAbort: <T>(promise: Promise<T>, signal?: AbortSignal) => Promise<T>;
|
|
9
|
-
export declare const inspectGhosttyRuntimeMemory: (runtime: GhosttyRuntimeInstance) => WebAssembly.Memory;
|
|
10
|
-
export declare class GhosttyResourceLoader {
|
|
11
|
-
private readonly importModule;
|
|
12
|
-
private readonly scheduler;
|
|
13
|
-
private module;
|
|
14
|
-
private modulePromise;
|
|
15
|
-
private reservation;
|
|
16
|
-
constructor(importModule?: GhosttyModuleImporter, scheduler?: GhosttyRuntimeScheduler);
|
|
17
|
-
loadModules(logger: Logger, signal?: AbortSignal): Promise<void>;
|
|
18
|
-
acquireRuntime(logger: Logger): Promise<GhosttyRuntimeInstance>;
|
|
19
|
-
preloadRuntime(logger: Logger): Promise<GhosttyRuntimeInstance>;
|
|
20
|
-
getTerminalConstructor(): typeof import('@floegence/ghostty-web').Terminal | null;
|
|
21
|
-
getFitAddonConstructor(): typeof import('@floegence/ghostty-web').FitAddon | null;
|
|
22
|
-
getLinkConstructors(): {
|
|
23
|
-
LinkDetector: typeof import("@floegence/ghostty-web").LinkDetector;
|
|
24
|
-
OSC8LinkProvider: typeof import("@floegence/ghostty-web").OSC8LinkProvider;
|
|
25
|
-
UrlRegexProvider: typeof import("@floegence/ghostty-web").UrlRegexProvider;
|
|
26
|
-
};
|
|
27
|
-
private loadModule;
|
|
28
|
-
}
|
|
29
|
-
export declare const loadGhosttyModules: (logger: Logger, signal?: AbortSignal) => Promise<void>;
|
|
30
|
-
export declare const acquireGhosttyRuntime: (logger: Logger) => Promise<GhosttyRuntimeInstance>;
|
|
31
|
-
export declare const getGhosttyTerminalConstructor: () => typeof import("@floegence/ghostty-web").Terminal | null;
|
|
32
|
-
export declare const getGhosttyFitAddonConstructor: () => typeof import("@floegence/ghostty-web").FitAddon | null;
|
|
33
|
-
export declare const getGhosttyLinkConstructors: () => {
|
|
34
|
-
LinkDetector: typeof import("@floegence/ghostty-web").LinkDetector;
|
|
35
|
-
OSC8LinkProvider: typeof import("@floegence/ghostty-web").OSC8LinkProvider;
|
|
36
|
-
UrlRegexProvider: typeof import("@floegence/ghostty-web").UrlRegexProvider;
|
|
37
|
-
};
|
|
38
|
-
export declare const preloadTerminalResources: (options?: TerminalResourcePreloadOptions) => Promise<void>;
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=TerminalResourceLoader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalResourceLoader.d.ts","sourceRoot":"","sources":["../../src/internal/TerminalResourceLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAI1E,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,sCAAsC,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,cAAc,wBAAwB,EAAE,OAAO,CAAC,CAAC;AAEnG,KAAK,qBAAqB,GAAG,IAAI,CAC/B,cAAc,wBAAwB,CAAC,EACvC,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,CAC/F,CAAC;AAEF,KAAK,qBAAqB,GAAG,MAAM,OAAO,CAAC,cAAc,wBAAwB,CAAC,CAAC,CAAC;AACpF,KAAK,uBAAuB,GAAG,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;AAchF,eAAO,MAAM,qBAAqB,GAAI,QAAQ,cAAc,wBAAwB,CAAC,KAAG,qBAOvF,CAAC;AASF,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,CAAC,CAiBrF,CAAC;AAQF,eAAO,MAAM,2BAA2B,GAAI,SAAS,sBAAsB,KAAG,WAAW,CAAC,MAWzF,CAAC;AAEF,qBAAa,qBAAqB;IAM9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,WAAW,CAA0C;gBAG1C,YAAY,GAAE,qBAA8D,EAC5E,SAAS,GAAE,uBAAyD;IAGjF,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAarE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA6B/D,sBAAsB,IAAI,cAAc,wBAAwB,EAAE,QAAQ,GAAG,IAAI;IAIjF,sBAAsB,IAAI,cAAc,wBAAwB,EAAE,QAAQ,GAAG,IAAI;IAIjF,mBAAmB;;;;;IAYnB,OAAO,CAAC,UAAU;CAwBnB;AAID,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAErF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,sBAAsB,CAEpF,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAO,cAAc,wBAAwB,EAAE,QAAQ,GAAG,IAEnG,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAO,cAAc,wBAAwB,EAAE,QAAQ,GAAG,IAEnG,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;CAAoD,CAAC;AAE5F,eAAO,MAAM,wBAAwB,GACnC,UAAS,8BAAmC,KAC3C,OAAO,CAAC,IAAI,CAMd,CAAC"}
|