@opentuah/core 0.1.80 → 0.1.84
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-0envey0s.js → index-0t4rap2j.js} +137 -8
- package/{index-0envey0s.js.map → index-0t4rap2j.js.map} +7 -6
- package/index.js +131 -34
- package/index.js.map +6 -5
- package/lib/RGBA.d.ts +0 -1
- package/lib/index.d.ts +1 -0
- package/lib/open-url.d.ts +16 -0
- package/lib/vterm-ffi.d.ts +28 -0
- package/package.json +9 -7
- package/renderables/Diff.d.ts +8 -11
- package/renderables/LineNumberRenderable.d.ts +0 -15
- 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
|
@@ -939,9 +939,6 @@ class RGBA {
|
|
|
939
939
|
brighten(factor) {
|
|
940
940
|
return RGBA.fromValues(Math.min(1, this.r * factor), Math.min(1, this.g * factor), Math.min(1, this.b * factor), this.a);
|
|
941
941
|
}
|
|
942
|
-
withAlpha(alpha) {
|
|
943
|
-
return RGBA.fromValues(this.r, this.g, this.b, alpha);
|
|
944
|
-
}
|
|
945
942
|
equals(other) {
|
|
946
943
|
if (!other)
|
|
947
944
|
return false;
|
|
@@ -7662,6 +7659,57 @@ class TerminalPalette {
|
|
|
7662
7659
|
function createTerminalPalette(stdin, stdout, writeFn, isLegacyTmux) {
|
|
7663
7660
|
return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux);
|
|
7664
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
|
+
}
|
|
7665
7713
|
// src/zig.ts
|
|
7666
7714
|
import { dlopen, toArrayBuffer as toArrayBuffer3, JSCallback, ptr as ptr3 } from "bun:ffi";
|
|
7667
7715
|
import { existsSync as existsSync2 } from "fs";
|
|
@@ -8056,13 +8104,15 @@ var CursorStateStruct = defineStruct([
|
|
|
8056
8104
|
]);
|
|
8057
8105
|
|
|
8058
8106
|
// src/zig.ts
|
|
8059
|
-
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`);
|
|
8060
8110
|
var targetLibPath = module.default;
|
|
8061
8111
|
if (isBunfsPath(targetLibPath)) {
|
|
8062
8112
|
targetLibPath = targetLibPath.replace("../", "");
|
|
8063
8113
|
}
|
|
8064
8114
|
if (!existsSync2(targetLibPath)) {
|
|
8065
|
-
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}`);
|
|
8066
8116
|
}
|
|
8067
8117
|
registerEnvVar({
|
|
8068
8118
|
name: "OTUI_DEBUG_FFI",
|
|
@@ -9001,6 +9051,23 @@ function getOpenTUILib(libPath) {
|
|
|
9001
9051
|
bufferDrawChar: {
|
|
9002
9052
|
args: ["ptr", "u32", "u32", "u32", "ptr", "ptr", "u32"],
|
|
9003
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"
|
|
9004
9071
|
}
|
|
9005
9072
|
});
|
|
9006
9073
|
if (env.OTUI_DEBUG_FFI || env.OTUI_TRACE_FFI) {
|
|
@@ -10338,6 +10405,68 @@ class FFIRenderLib {
|
|
|
10338
10405
|
onAnyNativeEvent(handler) {
|
|
10339
10406
|
this._anyEventHandlers.push(handler);
|
|
10340
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
|
+
}
|
|
10341
10470
|
}
|
|
10342
10471
|
var opentuiLibPath;
|
|
10343
10472
|
var opentuiLib;
|
|
@@ -14939,7 +15068,7 @@ Captured output:
|
|
|
14939
15068
|
}
|
|
14940
15069
|
}
|
|
14941
15070
|
|
|
14942
|
-
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 };
|
|
14943
15072
|
|
|
14944
|
-
//# debugId=
|
|
14945
|
-
//# sourceMappingURL=index-
|
|
15073
|
+
//# debugId=A616522D538CBE5564756E2164756E21
|
|
15074
|
+
//# sourceMappingURL=index-0t4rap2j.js.map
|