@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 CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  RGBA,
4
4
  Renderable
5
- } from "./index-eh2t2dzk.js";
5
+ } from "./index-0t4rap2j.js";
6
6
 
7
7
  // src/3d/WGPURenderer.ts
8
8
  import { PerspectiveCamera, Color, NoToneMapping, LinearSRGBColorSpace } from "three";
@@ -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 module = await import(`@opentuah/core-${process.platform}-${process.arch}/index.ts`);
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: ${process.platform}-${process.arch}`);
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=44DB3F9C0C25268764756E2164756E21
14942
- //# sourceMappingURL=index-eh2t2dzk.js.map
15073
+ //# debugId=A616522D538CBE5564756E2164756E21
15074
+ //# sourceMappingURL=index-0t4rap2j.js.map