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