@opentuah/core 0.1.81 → 0.1.85
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/3d.js +1 -1
- package/{index-eh2t2dzk.js → index-0t4rap2j.js} +137 -5
- package/{index-eh2t2dzk.js.map → index-0t4rap2j.js.map} +6 -5
- package/index.js +113 -2
- package/index.js.map +4 -3
- package/lib/index.d.ts +1 -0
- package/lib/vterm-ffi.d.ts +28 -0
- package/package.json +9 -7
- package/renderables/Terminal.d.ts +35 -0
- package/renderables/index.d.ts +1 -0
- package/testing.js +1 -1
- package/zig.d.ts +10 -0
package/3d.js
CHANGED
|
@@ -7659,6 +7659,57 @@ class TerminalPalette {
|
|
|
7659
7659
|
function createTerminalPalette(stdin, stdout, writeFn, isLegacyTmux) {
|
|
7660
7660
|
return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux);
|
|
7661
7661
|
}
|
|
7662
|
+
|
|
7663
|
+
// src/lib/vterm-ffi.ts
|
|
7664
|
+
var DEFAULT_FG = RGBA.fromHex("#d4d4d4");
|
|
7665
|
+
var VTermStyleFlags = {
|
|
7666
|
+
BOLD: 1,
|
|
7667
|
+
ITALIC: 2,
|
|
7668
|
+
UNDERLINE: 4,
|
|
7669
|
+
STRIKETHROUGH: 8,
|
|
7670
|
+
INVERSE: 16,
|
|
7671
|
+
FAINT: 32
|
|
7672
|
+
};
|
|
7673
|
+
function convertSpanToChunk(span) {
|
|
7674
|
+
const { text, fg: fg2, bg: bg2, flags } = span;
|
|
7675
|
+
let fgColor = fg2 ? RGBA.fromHex(fg2) : DEFAULT_FG;
|
|
7676
|
+
let bgColor = bg2 ? RGBA.fromHex(bg2) : undefined;
|
|
7677
|
+
if (flags & VTermStyleFlags.INVERSE) {
|
|
7678
|
+
const temp = fgColor;
|
|
7679
|
+
fgColor = bgColor || DEFAULT_FG;
|
|
7680
|
+
bgColor = temp;
|
|
7681
|
+
}
|
|
7682
|
+
let attributes = 0;
|
|
7683
|
+
if (flags & VTermStyleFlags.BOLD)
|
|
7684
|
+
attributes |= TextAttributes.BOLD;
|
|
7685
|
+
if (flags & VTermStyleFlags.ITALIC)
|
|
7686
|
+
attributes |= TextAttributes.ITALIC;
|
|
7687
|
+
if (flags & VTermStyleFlags.UNDERLINE)
|
|
7688
|
+
attributes |= TextAttributes.UNDERLINE;
|
|
7689
|
+
if (flags & VTermStyleFlags.STRIKETHROUGH)
|
|
7690
|
+
attributes |= TextAttributes.STRIKETHROUGH;
|
|
7691
|
+
if (flags & VTermStyleFlags.FAINT)
|
|
7692
|
+
attributes |= TextAttributes.DIM;
|
|
7693
|
+
return { __isChunk: true, text, fg: fgColor, bg: bgColor, attributes };
|
|
7694
|
+
}
|
|
7695
|
+
function vtermDataToStyledText(data) {
|
|
7696
|
+
const chunks = [];
|
|
7697
|
+
for (let i = 0;i < data.lines.length; i++) {
|
|
7698
|
+
const line = data.lines[i];
|
|
7699
|
+
if (line.spans.length === 0) {
|
|
7700
|
+
chunks.push({ __isChunk: true, text: " ", attributes: 0 });
|
|
7701
|
+
} else {
|
|
7702
|
+
for (const span of line.spans) {
|
|
7703
|
+
chunks.push(convertSpanToChunk(span));
|
|
7704
|
+
}
|
|
7705
|
+
}
|
|
7706
|
+
if (i < data.lines.length - 1) {
|
|
7707
|
+
chunks.push({ __isChunk: true, text: `
|
|
7708
|
+
`, attributes: 0 });
|
|
7709
|
+
}
|
|
7710
|
+
}
|
|
7711
|
+
return new StyledText(chunks);
|
|
7712
|
+
}
|
|
7662
7713
|
// src/zig.ts
|
|
7663
7714
|
import { dlopen, toArrayBuffer as toArrayBuffer3, JSCallback, ptr as ptr3 } from "bun:ffi";
|
|
7664
7715
|
import { existsSync as existsSync2 } from "fs";
|
|
@@ -8053,13 +8104,15 @@ var CursorStateStruct = defineStruct([
|
|
|
8053
8104
|
]);
|
|
8054
8105
|
|
|
8055
8106
|
// src/zig.ts
|
|
8056
|
-
var
|
|
8107
|
+
var isMusl = process.platform === "linux" && (existsSync2("/lib/ld-musl-x86_64.so.1") || existsSync2("/lib/ld-musl-aarch64.so.1"));
|
|
8108
|
+
var platformName = isMusl ? "linux-musl" : process.platform;
|
|
8109
|
+
var module = await import(`@opentuah/core-${platformName}-${process.arch}/index.ts`);
|
|
8057
8110
|
var targetLibPath = module.default;
|
|
8058
8111
|
if (isBunfsPath(targetLibPath)) {
|
|
8059
8112
|
targetLibPath = targetLibPath.replace("../", "");
|
|
8060
8113
|
}
|
|
8061
8114
|
if (!existsSync2(targetLibPath)) {
|
|
8062
|
-
throw new Error(`opentui is not supported on the current platform: ${
|
|
8115
|
+
throw new Error(`opentui is not supported on the current platform: ${platformName}-${process.arch}`);
|
|
8063
8116
|
}
|
|
8064
8117
|
registerEnvVar({
|
|
8065
8118
|
name: "OTUI_DEBUG_FFI",
|
|
@@ -8998,6 +9051,23 @@ function getOpenTUILib(libPath) {
|
|
|
8998
9051
|
bufferDrawChar: {
|
|
8999
9052
|
args: ["ptr", "u32", "u32", "u32", "ptr", "ptr", "u32"],
|
|
9000
9053
|
returns: "void"
|
|
9054
|
+
},
|
|
9055
|
+
vtermPtyToJson: {
|
|
9056
|
+
args: [
|
|
9057
|
+
"ptr",
|
|
9058
|
+
"usize",
|
|
9059
|
+
"u16",
|
|
9060
|
+
"u16",
|
|
9061
|
+
"usize",
|
|
9062
|
+
"usize",
|
|
9063
|
+
"ptr",
|
|
9064
|
+
"usize"
|
|
9065
|
+
],
|
|
9066
|
+
returns: "usize"
|
|
9067
|
+
},
|
|
9068
|
+
vtermPtyToText: {
|
|
9069
|
+
args: ["ptr", "usize", "u16", "u16", "ptr", "usize"],
|
|
9070
|
+
returns: "usize"
|
|
9001
9071
|
}
|
|
9002
9072
|
});
|
|
9003
9073
|
if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {
|
|
@@ -10335,6 +10405,68 @@ class FFIRenderLib {
|
|
|
10335
10405
|
onAnyNativeEvent(handler) {
|
|
10336
10406
|
this._anyEventHandlers.push(handler);
|
|
10337
10407
|
}
|
|
10408
|
+
vtermBuffer = null;
|
|
10409
|
+
vtermBufferSize = 4194304;
|
|
10410
|
+
getVtermBuffer() {
|
|
10411
|
+
if (!this.vtermBuffer) {
|
|
10412
|
+
this.vtermBuffer = new Uint8Array(this.vtermBufferSize);
|
|
10413
|
+
}
|
|
10414
|
+
return this.vtermBuffer;
|
|
10415
|
+
}
|
|
10416
|
+
vtermPtyToJson(input, options = {}) {
|
|
10417
|
+
const { cols = 120, rows = 40, offset = 0, limit = 0 } = options;
|
|
10418
|
+
const inputStr = typeof input === "string" ? input : input.toString("utf-8");
|
|
10419
|
+
if (inputStr.length === 0) {
|
|
10420
|
+
return {
|
|
10421
|
+
cols,
|
|
10422
|
+
rows,
|
|
10423
|
+
cursor: [0, 0],
|
|
10424
|
+
offset,
|
|
10425
|
+
totalLines: 0,
|
|
10426
|
+
lines: []
|
|
10427
|
+
};
|
|
10428
|
+
}
|
|
10429
|
+
const inputBuffer = Buffer.from(inputStr);
|
|
10430
|
+
const outBuffer = this.getVtermBuffer();
|
|
10431
|
+
const actualLen = this.opentui.symbols.vtermPtyToJson(ptr3(inputBuffer), inputBuffer.length, cols, rows, offset, limit, ptr3(outBuffer), outBuffer.length);
|
|
10432
|
+
const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
|
|
10433
|
+
if (len === 0) {
|
|
10434
|
+
throw new Error("VTerm ptyToJson returned 0: either the FFI call failed to initialize/process, or the output exceeded the buffer size and was truncated");
|
|
10435
|
+
}
|
|
10436
|
+
const jsonStr = this.decoder.decode(outBuffer.subarray(0, len));
|
|
10437
|
+
const raw = JSON.parse(jsonStr);
|
|
10438
|
+
return {
|
|
10439
|
+
cols: raw.cols,
|
|
10440
|
+
rows: raw.rows,
|
|
10441
|
+
cursor: raw.cursor,
|
|
10442
|
+
offset: raw.offset,
|
|
10443
|
+
totalLines: raw.totalLines,
|
|
10444
|
+
lines: raw.lines.map((line) => ({
|
|
10445
|
+
spans: line.map(([text, fg2, bg2, flags, width]) => ({
|
|
10446
|
+
text,
|
|
10447
|
+
fg: fg2,
|
|
10448
|
+
bg: bg2,
|
|
10449
|
+
flags,
|
|
10450
|
+
width
|
|
10451
|
+
}))
|
|
10452
|
+
}))
|
|
10453
|
+
};
|
|
10454
|
+
}
|
|
10455
|
+
vtermPtyToText(input, options = {}) {
|
|
10456
|
+
const { cols = 500, rows = 256 } = options;
|
|
10457
|
+
const inputStr = typeof input === "string" ? input : input.toString("utf-8");
|
|
10458
|
+
if (inputStr.length === 0) {
|
|
10459
|
+
return "";
|
|
10460
|
+
}
|
|
10461
|
+
const inputBuffer = Buffer.from(inputStr);
|
|
10462
|
+
const outBuffer = this.getVtermBuffer();
|
|
10463
|
+
const actualLen = this.opentui.symbols.vtermPtyToText(ptr3(inputBuffer), inputBuffer.length, cols, rows, ptr3(outBuffer), outBuffer.length);
|
|
10464
|
+
const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
|
|
10465
|
+
if (len === 0) {
|
|
10466
|
+
return "";
|
|
10467
|
+
}
|
|
10468
|
+
return this.decoder.decode(outBuffer.subarray(0, len));
|
|
10469
|
+
}
|
|
10338
10470
|
}
|
|
10339
10471
|
var opentuiLibPath;
|
|
10340
10472
|
var opentuiLib;
|
|
@@ -14936,7 +15068,7 @@ Captured output:
|
|
|
14936
15068
|
}
|
|
14937
15069
|
}
|
|
14938
15070
|
|
|
14939
|
-
export { isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, createTextAttributes, attributesWithLink, getLinkId, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, link, t, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, StdinBuffer, parseAlign, parseAlignItems, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, ANSI, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingKey, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
|
|
15071
|
+
export { isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, createTextAttributes, attributesWithLink, getLinkId, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, link, t, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, StdinBuffer, parseAlign, parseAlignItems, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, VTermStyleFlags, vtermDataToStyledText, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, ANSI, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingKey, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
|
|
14940
15072
|
|
|
14941
|
-
//# debugId=
|
|
14942
|
-
//# sourceMappingURL=index-
|
|
15073
|
+
//# debugId=A616522D538CBE5564756E2164756E21
|
|
15074
|
+
//# sourceMappingURL=index-0t4rap2j.js.map
|