@boba-cli/machine 0.1.0-alpha.1 → 0.1.0-alpha.2

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/dist/index.js CHANGED
@@ -359,6 +359,17 @@ function createAlwaysEnabledStyle() {
359
359
  return createStyle({ level: 3, has256: true, has16m: true });
360
360
  }
361
361
 
362
- export { ALT_SCREEN_OFF, ALT_SCREEN_ON, BEL, BLINK, BOLD, BRACKETED_PASTE_END, BRACKETED_PASTE_OFF, BRACKETED_PASTE_ON, BRACKETED_PASTE_START, CLEAR_LINE, CLEAR_LINE_END, CLEAR_LINE_START, CLEAR_SCREEN, CLEAR_SCREEN_DOWN, CLEAR_SCREEN_UP, CSI, CURSOR_HIDE, CURSOR_HOME, CURSOR_RESTORE, CURSOR_SAVE, CURSOR_SHOW, DIM, ESC, FOCUS_IN, FOCUS_OUT, HIDDEN, ITALIC, MOUSE_ALL_OFF, MOUSE_ALL_ON, MOUSE_CELL_OFF, MOUSE_CELL_ON, MOUSE_SGR_OFF, MOUSE_SGR_ON, OSC, REPORT_FOCUS_OFF, REPORT_FOCUS_ON, RESET, RESET_SCROLL_REGION, REVERSE, ST, STRIKETHROUGH, UNDERLINE, allocBytes, bg256, bgRGB, byteLength, bytesEqual, concatBytes, copyBytes, createAlwaysEnabledStyle, createStyle, cursorBackward, cursorDown, cursorForward, cursorTo, cursorUp, decodeFirstRune, decodeString, encodeString, fg256, fgRGB, fromBytes, indexOfString, scrollDown, scrollUp, setScrollRegion, setWindowTitle, sliceBytes, startsWith, startsWithString };
362
+ // src/detect.ts
363
+ function isNodeEnvironment() {
364
+ const g = globalThis;
365
+ const proc = g["process"];
366
+ return !!proc && typeof proc["versions"]?.["node"] === "string";
367
+ }
368
+ function isBrowserEnvironment() {
369
+ const g = globalThis;
370
+ return typeof g["window"] !== "undefined" && typeof g["document"] !== "undefined" && !isNodeEnvironment();
371
+ }
372
+
373
+ export { ALT_SCREEN_OFF, ALT_SCREEN_ON, BEL, BLINK, BOLD, BRACKETED_PASTE_END, BRACKETED_PASTE_OFF, BRACKETED_PASTE_ON, BRACKETED_PASTE_START, CLEAR_LINE, CLEAR_LINE_END, CLEAR_LINE_START, CLEAR_SCREEN, CLEAR_SCREEN_DOWN, CLEAR_SCREEN_UP, CSI, CURSOR_HIDE, CURSOR_HOME, CURSOR_RESTORE, CURSOR_SAVE, CURSOR_SHOW, DIM, ESC, FOCUS_IN, FOCUS_OUT, HIDDEN, ITALIC, MOUSE_ALL_OFF, MOUSE_ALL_ON, MOUSE_CELL_OFF, MOUSE_CELL_ON, MOUSE_SGR_OFF, MOUSE_SGR_ON, OSC, REPORT_FOCUS_OFF, REPORT_FOCUS_ON, RESET, RESET_SCROLL_REGION, REVERSE, ST, STRIKETHROUGH, UNDERLINE, allocBytes, bg256, bgRGB, byteLength, bytesEqual, concatBytes, copyBytes, createAlwaysEnabledStyle, createStyle, cursorBackward, cursorDown, cursorForward, cursorTo, cursorUp, decodeFirstRune, decodeString, encodeString, fg256, fgRGB, fromBytes, indexOfString, isBrowserEnvironment, isNodeEnvironment, scrollDown, scrollUp, setScrollRegion, setWindowTitle, sliceBytes, startsWith, startsWithString };
363
374
  //# sourceMappingURL=index.js.map
364
375
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bytes.ts","../src/sequences.ts","../src/style/index.ts"],"names":["ESC","r","g","b"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Platform-agnostic byte utilities using Uint8Array.\n * These replace Node.js Buffer operations for cross-platform compatibility.\n */\n\n/** Shared TextEncoder instance for string encoding. */\nconst encoder = new TextEncoder()\n\n/** Shared TextDecoder instance for string decoding. */\nconst decoder = new TextDecoder('utf-8')\n\n/**\n * Encode a string to UTF-8 bytes.\n * Equivalent to `Buffer.from(text, 'utf8')`.\n * @param text - String to encode\n * @returns UTF-8 encoded bytes\n * @public\n */\nexport function encodeString(text: string): Uint8Array {\n return encoder.encode(text)\n}\n\n/**\n * Decode UTF-8 bytes to a string.\n * Equivalent to `buffer.toString('utf8')`.\n * @param bytes - Bytes to decode\n * @returns Decoded string\n * @public\n */\nexport function decodeString(bytes: Uint8Array): string {\n return decoder.decode(bytes)\n}\n\n/**\n * Get the byte length of a string when encoded as UTF-8.\n * Equivalent to `Buffer.byteLength(text, 'utf8')`.\n * @param text - String to measure\n * @returns Byte length\n * @public\n */\nexport function byteLength(text: string): number {\n return encoder.encode(text).length\n}\n\n/**\n * Concatenate multiple Uint8Arrays into one.\n * Equivalent to `Buffer.concat(arrays)`.\n * @param arrays - Arrays to concatenate\n * @returns Combined array\n * @public\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n for (const arr of arrays) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\n/**\n * Create a new Uint8Array of the specified size, filled with zeros.\n * Equivalent to `Buffer.alloc(size)`.\n * @param size - Size of the array\n * @returns New zero-filled array\n * @public\n */\nexport function allocBytes(size: number): Uint8Array {\n return new Uint8Array(size)\n}\n\n/**\n * Create a Uint8Array from an array of byte values.\n * Equivalent to `Buffer.from([...])`.\n * @param values - Byte values (0-255)\n * @returns New Uint8Array\n * @public\n */\nexport function fromBytes(values: number[]): Uint8Array {\n return new Uint8Array(values)\n}\n\n/**\n * Compare two Uint8Arrays for equality.\n * Equivalent to `buffer1.equals(buffer2)`.\n * @param a - First array\n * @param b - Second array\n * @returns True if arrays are equal\n * @public\n */\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n return true\n}\n\n/**\n * Check if a byte array starts with a specific prefix.\n * @param bytes - Array to check\n * @param prefix - Prefix to look for\n * @returns True if bytes starts with prefix\n * @public\n */\nexport function startsWith(bytes: Uint8Array, prefix: Uint8Array): boolean {\n if (bytes.length < prefix.length) {\n return false\n }\n for (let i = 0; i < prefix.length; i++) {\n if (bytes[i] !== prefix[i]) {\n return false\n }\n }\n return true\n}\n\n/**\n * Check if a byte array starts with a specific string (UTF-8 encoded).\n * @param bytes - Array to check\n * @param prefix - String prefix to look for\n * @returns True if bytes starts with the encoded prefix\n * @public\n */\nexport function startsWithString(bytes: Uint8Array, prefix: string): boolean {\n return startsWith(bytes, encodeString(prefix))\n}\n\n/**\n * Find the index of a substring within a byte array.\n * Returns -1 if not found.\n * @param bytes - Array to search\n * @param needle - String to find\n * @param fromIndex - Start index (default 0)\n * @returns Index of first occurrence or -1\n * @public\n */\nexport function indexOfString(\n bytes: Uint8Array,\n needle: string,\n fromIndex: number = 0,\n): number {\n const needleBytes = encodeString(needle)\n const endIndex = bytes.length - needleBytes.length\n\n outer: for (let i = fromIndex; i <= endIndex; i++) {\n for (let j = 0; j < needleBytes.length; j++) {\n if (bytes[i + j] !== needleBytes[j]) {\n continue outer\n }\n }\n return i\n }\n return -1\n}\n\n/**\n * Decode the first complete UTF-8 character from a byte array.\n * Returns the character and its byte length, or null if incomplete.\n * @param bytes - Byte array to decode\n * @param offset - Start offset (default 0)\n * @returns Tuple of [character, byteLength] or [null, 0] if incomplete\n * @public\n */\nexport function decodeFirstRune(\n bytes: Uint8Array,\n offset: number = 0,\n): [string | null, number] {\n if (offset >= bytes.length) {\n return [null, 0]\n }\n\n const firstByte = bytes[offset]\n if (firstByte === undefined) {\n return [null, 0]\n }\n\n // Determine the byte length of this UTF-8 character\n let byteLen: number\n if ((firstByte & 0x80) === 0) {\n // Single byte character (ASCII)\n byteLen = 1\n } else if ((firstByte & 0xe0) === 0xc0) {\n // Two byte character\n byteLen = 2\n } else if ((firstByte & 0xf0) === 0xe0) {\n // Three byte character\n byteLen = 3\n } else if ((firstByte & 0xf8) === 0xf0) {\n // Four byte character\n byteLen = 4\n } else {\n // Invalid UTF-8 start byte, treat as single byte\n byteLen = 1\n }\n\n // Check if we have enough bytes\n if (offset + byteLen > bytes.length) {\n return [null, 0]\n }\n\n // Decode the character\n const slice = bytes.subarray(offset, offset + byteLen)\n const decoded = decoder.decode(slice)\n\n if (decoded.length === 0) {\n return [null, 0]\n }\n\n // Use codePointAt to properly handle surrogate pairs (emoji, etc.)\n // This returns the full Unicode code point, not just the first surrogate\n const codePoint = decoded.codePointAt(0)\n if (codePoint === undefined) {\n return [null, 0]\n }\n\n // Convert the code point back to a string (handles surrogate pairs correctly)\n const firstChar = String.fromCodePoint(codePoint)\n\n return [firstChar, byteLen]\n}\n\n/**\n * Slice a portion of a byte array.\n * Equivalent to `buffer.subarray(start, end)`.\n * @param bytes - Source array\n * @param start - Start index\n * @param end - End index (optional, defaults to length)\n * @returns New Uint8Array view of the slice\n * @public\n */\nexport function sliceBytes(\n bytes: Uint8Array,\n start: number,\n end?: number,\n): Uint8Array {\n return bytes.subarray(start, end)\n}\n\n/**\n * Create a copy of a byte array.\n * @param bytes - Array to copy\n * @returns New Uint8Array with copied data\n * @public\n */\nexport function copyBytes(bytes: Uint8Array): Uint8Array {\n return new Uint8Array(bytes)\n}\n","/**\n * ANSI escape sequences for terminal control.\n * These are platform-agnostic constants that work in any terminal emulator.\n */\n\n/** Escape character. @public */\nexport const ESC = '\\u001b'\n\n/** Control Sequence Introducer. @public */\nexport const CSI = `${ESC}[`\n\n/** Operating System Command. @public */\nexport const OSC = `${ESC}]`\n\n/** String Terminator. @public */\nexport const ST = `${ESC}\\\\`\n\n/** Bell character (alternative string terminator). @public */\nexport const BEL = '\\u0007'\n\n// ============================================================================\n// Cursor Control\n// ============================================================================\n\n/** Show the cursor. @public */\nexport const CURSOR_SHOW = `${CSI}?25h`\n\n/** Hide the cursor. @public */\nexport const CURSOR_HIDE = `${CSI}?25l`\n\n/** Move cursor to home position (1,1). @public */\nexport const CURSOR_HOME = `${CSI}H`\n\n/**\n * Move cursor to specific position.\n * @param row - Row number (1-based)\n * @param col - Column number (1-based)\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorTo(row: number, col: number): string {\n return `${CSI}${row};${col}H`\n}\n\n/**\n * Move cursor up by n rows.\n * @param n - Number of rows\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorUp(n: number = 1): string {\n return `${CSI}${n}A`\n}\n\n/**\n * Move cursor down by n rows.\n * @param n - Number of rows\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorDown(n: number = 1): string {\n return `${CSI}${n}B`\n}\n\n/**\n * Move cursor forward (right) by n columns.\n * @param n - Number of columns\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorForward(n: number = 1): string {\n return `${CSI}${n}C`\n}\n\n/**\n * Move cursor backward (left) by n columns.\n * @param n - Number of columns\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorBackward(n: number = 1): string {\n return `${CSI}${n}D`\n}\n\n/**\n * Save cursor position.\n * @public\n */\nexport const CURSOR_SAVE = `${CSI}s`\n\n/**\n * Restore cursor position.\n * @public\n */\nexport const CURSOR_RESTORE = `${CSI}u`\n\n// ============================================================================\n// Screen Control\n// ============================================================================\n\n/** Clear the entire screen. @public */\nexport const CLEAR_SCREEN = `${CSI}2J`\n\n/** Clear from cursor to end of screen. @public */\nexport const CLEAR_SCREEN_DOWN = `${CSI}0J`\n\n/** Clear from cursor to beginning of screen. @public */\nexport const CLEAR_SCREEN_UP = `${CSI}1J`\n\n/** Clear the entire line. @public */\nexport const CLEAR_LINE = `${CSI}2K`\n\n/** Clear from cursor to end of line. @public */\nexport const CLEAR_LINE_END = `${CSI}0K`\n\n/** Clear from cursor to beginning of line. @public */\nexport const CLEAR_LINE_START = `${CSI}1K`\n\n// ============================================================================\n// Alternate Screen Buffer\n// ============================================================================\n\n/** Enter alternate screen buffer. @public */\nexport const ALT_SCREEN_ON = `${CSI}?1049h`\n\n/** Exit alternate screen buffer. @public */\nexport const ALT_SCREEN_OFF = `${CSI}?1049l`\n\n// ============================================================================\n// Mouse Tracking\n// ============================================================================\n\n/** Enable cell-motion mouse tracking (button events + motion while pressed). @public */\nexport const MOUSE_CELL_ON = `${CSI}?1002h`\n\n/** Enable all-motion mouse tracking (button events + all motion). @public */\nexport const MOUSE_ALL_ON = `${CSI}?1003h`\n\n/** Enable SGR extended mouse mode (supports coordinates \\> 223). @public */\nexport const MOUSE_SGR_ON = `${CSI}?1006h`\n\n/** Disable cell-motion mouse tracking. @public */\nexport const MOUSE_CELL_OFF = `${CSI}?1002l`\n\n/** Disable all-motion mouse tracking. @public */\nexport const MOUSE_ALL_OFF = `${CSI}?1003l`\n\n/** Disable SGR extended mouse mode. @public */\nexport const MOUSE_SGR_OFF = `${CSI}?1006l`\n\n// ============================================================================\n// Bracketed Paste\n// ============================================================================\n\n/** Enable bracketed paste mode. @public */\nexport const BRACKETED_PASTE_ON = `${CSI}?2004h`\n\n/** Disable bracketed paste mode. @public */\nexport const BRACKETED_PASTE_OFF = `${CSI}?2004l`\n\n/** Bracketed paste start sequence. @public */\nexport const BRACKETED_PASTE_START = `${CSI}200~`\n\n/** Bracketed paste end sequence. @public */\nexport const BRACKETED_PASTE_END = `${CSI}201~`\n\n// ============================================================================\n// Focus Reporting\n// ============================================================================\n\n/** Enable focus reporting. @public */\nexport const REPORT_FOCUS_ON = `${CSI}?1004h`\n\n/** Disable focus reporting. @public */\nexport const REPORT_FOCUS_OFF = `${CSI}?1004l`\n\n/** Focus gained sequence. @public */\nexport const FOCUS_IN = `${CSI}I`\n\n/** Focus lost sequence. @public */\nexport const FOCUS_OUT = `${CSI}O`\n\n// ============================================================================\n// Window Control\n// ============================================================================\n\n/**\n * Set the terminal window title.\n * @param title - Window title\n * @returns ANSI escape sequence\n * @public\n */\nexport function setWindowTitle(title: string): string {\n return `${OSC}0;${title}${BEL}`\n}\n\n// ============================================================================\n// Text Formatting (SGR - Select Graphic Rendition)\n// ============================================================================\n\n/** Reset all text attributes. @public */\nexport const RESET = `${CSI}0m`\n\n/** Bold text. @public */\nexport const BOLD = `${CSI}1m`\n\n/** Dim/faint text. @public */\nexport const DIM = `${CSI}2m`\n\n/** Italic text. @public */\nexport const ITALIC = `${CSI}3m`\n\n/** Underlined text. @public */\nexport const UNDERLINE = `${CSI}4m`\n\n/** Blinking text. @public */\nexport const BLINK = `${CSI}5m`\n\n/** Reverse video (swap foreground/background). @public */\nexport const REVERSE = `${CSI}7m`\n\n/** Hidden text. @public */\nexport const HIDDEN = `${CSI}8m`\n\n/** Strikethrough text. @public */\nexport const STRIKETHROUGH = `${CSI}9m`\n\n// ============================================================================\n// Color Utilities\n// ============================================================================\n\n/**\n * Set foreground color using 256-color palette.\n * @param colorIndex - Color index (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function fg256(colorIndex: number): string {\n return `${CSI}38;5;${colorIndex}m`\n}\n\n/**\n * Set background color using 256-color palette.\n * @param colorIndex - Color index (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function bg256(colorIndex: number): string {\n return `${CSI}48;5;${colorIndex}m`\n}\n\n/**\n * Set foreground color using RGB true color.\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function fgRGB(r: number, g: number, b: number): string {\n return `${CSI}38;2;${r};${g};${b}m`\n}\n\n/**\n * Set background color using RGB true color.\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function bgRGB(r: number, g: number, b: number): string {\n return `${CSI}48;2;${r};${g};${b}m`\n}\n\n// ============================================================================\n// Scrolling\n// ============================================================================\n\n/**\n * Scroll up by n lines.\n * @param n - Number of lines\n * @returns ANSI escape sequence\n * @public\n */\nexport function scrollUp(n: number = 1): string {\n return `${CSI}${n}S`\n}\n\n/**\n * Scroll down by n lines.\n * @param n - Number of lines\n * @returns ANSI escape sequence\n * @public\n */\nexport function scrollDown(n: number = 1): string {\n return `${CSI}${n}T`\n}\n\n/**\n * Set scrolling region.\n * @param top - Top row (1-based)\n * @param bottom - Bottom row (1-based)\n * @returns ANSI escape sequence\n * @public\n */\nexport function setScrollRegion(top: number, bottom: number): string {\n return `${CSI}${top};${bottom}r`\n}\n\n/** Reset scrolling region to full screen. @public */\nexport const RESET_SCROLL_REGION = `${CSI}r`\n","/**\n * Pure JavaScript ANSI styling utility for terminal text.\n * Works identically in Node.js and browser/xterm.js contexts.\n */\n\nimport type { ColorSupport, StyleFn } from '../types.js'\n\n// ANSI escape codes\nconst ESC = '\\x1b['\nconst RESET = `${ESC}0m`\n\n// Modifier codes\nconst CODES = {\n // Modifiers (open, close)\n bold: ['1', '22'],\n dim: ['2', '22'],\n italic: ['3', '23'],\n underline: ['4', '24'],\n inverse: ['7', '27'],\n hidden: ['8', '28'],\n strikethrough: ['9', '29'],\n\n // Basic foreground colors (30-37)\n black: ['30', '39'],\n red: ['31', '39'],\n green: ['32', '39'],\n yellow: ['33', '39'],\n blue: ['34', '39'],\n magenta: ['35', '39'],\n cyan: ['36', '39'],\n white: ['37', '39'],\n\n // Bright foreground colors (90-97)\n blackBright: ['90', '39'],\n redBright: ['91', '39'],\n greenBright: ['92', '39'],\n yellowBright: ['93', '39'],\n blueBright: ['94', '39'],\n magentaBright: ['95', '39'],\n cyanBright: ['96', '39'],\n whiteBright: ['97', '39'],\n\n // Basic background colors (40-47)\n bgBlack: ['40', '49'],\n bgRed: ['41', '49'],\n bgGreen: ['42', '49'],\n bgYellow: ['43', '49'],\n bgBlue: ['44', '49'],\n bgMagenta: ['45', '49'],\n bgCyan: ['46', '49'],\n bgWhite: ['47', '49'],\n\n // Bright background colors (100-107)\n bgBlackBright: ['100', '49'],\n bgRedBright: ['101', '49'],\n bgGreenBright: ['102', '49'],\n bgYellowBright: ['103', '49'],\n bgBlueBright: ['104', '49'],\n bgMagentaBright: ['105', '49'],\n bgCyanBright: ['106', '49'],\n bgWhiteBright: ['107', '49'],\n} as const\n\ntype CodeName = keyof typeof CODES\n\n/**\n * Apply ANSI codes to text.\n * @param text - Text to style\n * @param open - Opening ANSI code\n * @param close - Closing ANSI code\n * @returns Styled text\n */\nfunction applyStyle(text: string, open: string, close: string): string {\n const openSeq = `${ESC}${open}m`\n const closeSeq = `${ESC}${close}m`\n\n // Replace any existing close codes with close+open to properly nest styles\n // This handles cases like style.bold(style.bold('text')) where the inner\n // bold close would prematurely end the outer bold\n const replaced = text.replace(\n new RegExp(closeSeq.replace(/[[\\](){}|^$+*?.\\\\]/g, '\\\\$&'), 'g'),\n closeSeq + openSeq,\n )\n\n return openSeq + replaced + closeSeq\n}\n\n/**\n * Convert hex color to RGB.\n * @param hex - Hex color string (with or without #)\n * @returns RGB array [r, g, b]\n */\nfunction hexToRgb(hex: string): [number, number, number] {\n const clean = hex.replace(/^#/, '')\n const num = parseInt(clean, 16)\n\n if (clean.length === 3) {\n // Short form: #RGB -> #RRGGBB\n const r = ((num >> 8) & 0xf) * 17\n const g = ((num >> 4) & 0xf) * 17\n const b = (num & 0xf) * 17\n return [r, g, b]\n }\n\n // Long form: #RRGGBB\n const r = (num >> 16) & 0xff\n const g = (num >> 8) & 0xff\n const b = num & 0xff\n return [r, g, b]\n}\n\n/**\n * Create a chainable style function.\n * @param colorSupport - Color support level information\n * @returns Chainable style function\n * @public\n */\nexport function createStyle(colorSupport: ColorSupport): StyleFn {\n const enabled = colorSupport.level > 0\n\n /**\n * Build a style function that can be chained.\n * @param stack - Array of [open, close] code pairs to apply\n * @returns Style function\n */\n function build(stack: Array<[string, string]>): StyleFn {\n // The function itself - applies all stacked styles\n const fn = (text: string): string => {\n if (!enabled || stack.length === 0) {\n return text\n }\n\n // Apply styles from inside out\n let result = text\n for (let i = stack.length - 1; i >= 0; i--) {\n const [open, close] = stack[i]!\n result = applyStyle(result, open, close)\n }\n return result\n }\n\n // Add all code-based style properties\n const codeNames = Object.keys(CODES) as CodeName[]\n for (const name of codeNames) {\n const [open, close] = CODES[name]\n Object.defineProperty(fn, name, {\n get() {\n return build([...stack, [open, close]])\n },\n })\n }\n\n // Add gray as alias for blackBright\n Object.defineProperty(fn, 'gray', {\n get() {\n const [open, close] = CODES.blackBright\n return build([...stack, [open, close]])\n },\n })\n\n // Add grey as alias for blackBright\n Object.defineProperty(fn, 'grey', {\n get() {\n const [open, close] = CODES.blackBright\n return build([...stack, [open, close]])\n },\n })\n\n // Add extended color methods\n\n // hex(color: string): StyleFn\n Object.defineProperty(fn, 'hex', {\n value: (color: string): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n const [r, g, b] = hexToRgb(color)\n return build([...stack, [`38;2;${r};${g};${b}`, '39']])\n },\n writable: true,\n })\n\n // rgb(r: number, g: number, b: number): StyleFn\n Object.defineProperty(fn, 'rgb', {\n value: (r: number, g: number, b: number): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n return build([...stack, [`38;2;${r};${g};${b}`, '39']])\n },\n writable: true,\n })\n\n // bgHex(color: string): StyleFn\n Object.defineProperty(fn, 'bgHex', {\n value: (color: string): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n const [r, g, b] = hexToRgb(color)\n return build([...stack, [`48;2;${r};${g};${b}`, '49']])\n },\n writable: true,\n })\n\n // bgRgb(r: number, g: number, b: number): StyleFn\n Object.defineProperty(fn, 'bgRgb', {\n value: (r: number, g: number, b: number): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n return build([...stack, [`48;2;${r};${g};${b}`, '49']])\n },\n writable: true,\n })\n\n // ansi256(code: number): StyleFn\n Object.defineProperty(fn, 'ansi256', {\n value: (code: number): StyleFn => {\n if (!enabled || !colorSupport.has256) {\n return build(stack)\n }\n return build([...stack, [`38;5;${code}`, '39']])\n },\n writable: true,\n })\n\n // bgAnsi256(code: number): StyleFn\n Object.defineProperty(fn, 'bgAnsi256', {\n value: (code: number): StyleFn => {\n if (!enabled || !colorSupport.has256) {\n return build(stack)\n }\n return build([...stack, [`48;5;${code}`, '49']])\n },\n writable: true,\n })\n\n return fn as StyleFn\n }\n\n return build([])\n}\n\n/**\n * Create a style function that always applies colors (for xterm.js).\n * @returns Chainable style function with full color support\n * @public\n */\nexport function createAlwaysEnabledStyle(): StyleFn {\n return createStyle({ level: 3, hasBasic: true, has256: true, has16m: true })\n}\n"]}
1
+ {"version":3,"sources":["../src/bytes.ts","../src/sequences.ts","../src/style/index.ts","../src/detect.ts"],"names":["ESC","r","g","b"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Platform-agnostic byte utilities using Uint8Array.\n * These replace Node.js Buffer operations for cross-platform compatibility.\n */\n\n/** Shared TextEncoder instance for string encoding. */\nconst encoder = new TextEncoder()\n\n/** Shared TextDecoder instance for string decoding. */\nconst decoder = new TextDecoder('utf-8')\n\n/**\n * Encode a string to UTF-8 bytes.\n * Equivalent to `Buffer.from(text, 'utf8')`.\n * @param text - String to encode\n * @returns UTF-8 encoded bytes\n * @public\n */\nexport function encodeString(text: string): Uint8Array {\n return encoder.encode(text)\n}\n\n/**\n * Decode UTF-8 bytes to a string.\n * Equivalent to `buffer.toString('utf8')`.\n * @param bytes - Bytes to decode\n * @returns Decoded string\n * @public\n */\nexport function decodeString(bytes: Uint8Array): string {\n return decoder.decode(bytes)\n}\n\n/**\n * Get the byte length of a string when encoded as UTF-8.\n * Equivalent to `Buffer.byteLength(text, 'utf8')`.\n * @param text - String to measure\n * @returns Byte length\n * @public\n */\nexport function byteLength(text: string): number {\n return encoder.encode(text).length\n}\n\n/**\n * Concatenate multiple Uint8Arrays into one.\n * Equivalent to `Buffer.concat(arrays)`.\n * @param arrays - Arrays to concatenate\n * @returns Combined array\n * @public\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0)\n const result = new Uint8Array(totalLength)\n let offset = 0\n for (const arr of arrays) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\n/**\n * Create a new Uint8Array of the specified size, filled with zeros.\n * Equivalent to `Buffer.alloc(size)`.\n * @param size - Size of the array\n * @returns New zero-filled array\n * @public\n */\nexport function allocBytes(size: number): Uint8Array {\n return new Uint8Array(size)\n}\n\n/**\n * Create a Uint8Array from an array of byte values.\n * Equivalent to `Buffer.from([...])`.\n * @param values - Byte values (0-255)\n * @returns New Uint8Array\n * @public\n */\nexport function fromBytes(values: number[]): Uint8Array {\n return new Uint8Array(values)\n}\n\n/**\n * Compare two Uint8Arrays for equality.\n * Equivalent to `buffer1.equals(buffer2)`.\n * @param a - First array\n * @param b - Second array\n * @returns True if arrays are equal\n * @public\n */\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n return true\n}\n\n/**\n * Check if a byte array starts with a specific prefix.\n * @param bytes - Array to check\n * @param prefix - Prefix to look for\n * @returns True if bytes starts with prefix\n * @public\n */\nexport function startsWith(bytes: Uint8Array, prefix: Uint8Array): boolean {\n if (bytes.length < prefix.length) {\n return false\n }\n for (let i = 0; i < prefix.length; i++) {\n if (bytes[i] !== prefix[i]) {\n return false\n }\n }\n return true\n}\n\n/**\n * Check if a byte array starts with a specific string (UTF-8 encoded).\n * @param bytes - Array to check\n * @param prefix - String prefix to look for\n * @returns True if bytes starts with the encoded prefix\n * @public\n */\nexport function startsWithString(bytes: Uint8Array, prefix: string): boolean {\n return startsWith(bytes, encodeString(prefix))\n}\n\n/**\n * Find the index of a substring within a byte array.\n * Returns -1 if not found.\n * @param bytes - Array to search\n * @param needle - String to find\n * @param fromIndex - Start index (default 0)\n * @returns Index of first occurrence or -1\n * @public\n */\nexport function indexOfString(\n bytes: Uint8Array,\n needle: string,\n fromIndex: number = 0,\n): number {\n const needleBytes = encodeString(needle)\n const endIndex = bytes.length - needleBytes.length\n\n outer: for (let i = fromIndex; i <= endIndex; i++) {\n for (let j = 0; j < needleBytes.length; j++) {\n if (bytes[i + j] !== needleBytes[j]) {\n continue outer\n }\n }\n return i\n }\n return -1\n}\n\n/**\n * Decode the first complete UTF-8 character from a byte array.\n * Returns the character and its byte length, or null if incomplete.\n * @param bytes - Byte array to decode\n * @param offset - Start offset (default 0)\n * @returns Tuple of [character, byteLength] or [null, 0] if incomplete\n * @public\n */\nexport function decodeFirstRune(\n bytes: Uint8Array,\n offset: number = 0,\n): [string | null, number] {\n if (offset >= bytes.length) {\n return [null, 0]\n }\n\n const firstByte = bytes[offset]\n if (firstByte === undefined) {\n return [null, 0]\n }\n\n // Determine the byte length of this UTF-8 character\n let byteLen: number\n if ((firstByte & 0x80) === 0) {\n // Single byte character (ASCII)\n byteLen = 1\n } else if ((firstByte & 0xe0) === 0xc0) {\n // Two byte character\n byteLen = 2\n } else if ((firstByte & 0xf0) === 0xe0) {\n // Three byte character\n byteLen = 3\n } else if ((firstByte & 0xf8) === 0xf0) {\n // Four byte character\n byteLen = 4\n } else {\n // Invalid UTF-8 start byte, treat as single byte\n byteLen = 1\n }\n\n // Check if we have enough bytes\n if (offset + byteLen > bytes.length) {\n return [null, 0]\n }\n\n // Decode the character\n const slice = bytes.subarray(offset, offset + byteLen)\n const decoded = decoder.decode(slice)\n\n if (decoded.length === 0) {\n return [null, 0]\n }\n\n // Use codePointAt to properly handle surrogate pairs (emoji, etc.)\n // This returns the full Unicode code point, not just the first surrogate\n const codePoint = decoded.codePointAt(0)\n if (codePoint === undefined) {\n return [null, 0]\n }\n\n // Convert the code point back to a string (handles surrogate pairs correctly)\n const firstChar = String.fromCodePoint(codePoint)\n\n return [firstChar, byteLen]\n}\n\n/**\n * Slice a portion of a byte array.\n * Equivalent to `buffer.subarray(start, end)`.\n * @param bytes - Source array\n * @param start - Start index\n * @param end - End index (optional, defaults to length)\n * @returns New Uint8Array view of the slice\n * @public\n */\nexport function sliceBytes(\n bytes: Uint8Array,\n start: number,\n end?: number,\n): Uint8Array {\n return bytes.subarray(start, end)\n}\n\n/**\n * Create a copy of a byte array.\n * @param bytes - Array to copy\n * @returns New Uint8Array with copied data\n * @public\n */\nexport function copyBytes(bytes: Uint8Array): Uint8Array {\n return new Uint8Array(bytes)\n}\n","/**\n * ANSI escape sequences for terminal control.\n * These are platform-agnostic constants that work in any terminal emulator.\n */\n\n/** Escape character. @public */\nexport const ESC = '\\u001b'\n\n/** Control Sequence Introducer. @public */\nexport const CSI = `${ESC}[`\n\n/** Operating System Command. @public */\nexport const OSC = `${ESC}]`\n\n/** String Terminator. @public */\nexport const ST = `${ESC}\\\\`\n\n/** Bell character (alternative string terminator). @public */\nexport const BEL = '\\u0007'\n\n// ============================================================================\n// Cursor Control\n// ============================================================================\n\n/** Show the cursor. @public */\nexport const CURSOR_SHOW = `${CSI}?25h`\n\n/** Hide the cursor. @public */\nexport const CURSOR_HIDE = `${CSI}?25l`\n\n/** Move cursor to home position (1,1). @public */\nexport const CURSOR_HOME = `${CSI}H`\n\n/**\n * Move cursor to specific position.\n * @param row - Row number (1-based)\n * @param col - Column number (1-based)\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorTo(row: number, col: number): string {\n return `${CSI}${row};${col}H`\n}\n\n/**\n * Move cursor up by n rows.\n * @param n - Number of rows\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorUp(n: number = 1): string {\n return `${CSI}${n}A`\n}\n\n/**\n * Move cursor down by n rows.\n * @param n - Number of rows\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorDown(n: number = 1): string {\n return `${CSI}${n}B`\n}\n\n/**\n * Move cursor forward (right) by n columns.\n * @param n - Number of columns\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorForward(n: number = 1): string {\n return `${CSI}${n}C`\n}\n\n/**\n * Move cursor backward (left) by n columns.\n * @param n - Number of columns\n * @returns ANSI escape sequence\n * @public\n */\nexport function cursorBackward(n: number = 1): string {\n return `${CSI}${n}D`\n}\n\n/**\n * Save cursor position.\n * @public\n */\nexport const CURSOR_SAVE = `${CSI}s`\n\n/**\n * Restore cursor position.\n * @public\n */\nexport const CURSOR_RESTORE = `${CSI}u`\n\n// ============================================================================\n// Screen Control\n// ============================================================================\n\n/** Clear the entire screen. @public */\nexport const CLEAR_SCREEN = `${CSI}2J`\n\n/** Clear from cursor to end of screen. @public */\nexport const CLEAR_SCREEN_DOWN = `${CSI}0J`\n\n/** Clear from cursor to beginning of screen. @public */\nexport const CLEAR_SCREEN_UP = `${CSI}1J`\n\n/** Clear the entire line. @public */\nexport const CLEAR_LINE = `${CSI}2K`\n\n/** Clear from cursor to end of line. @public */\nexport const CLEAR_LINE_END = `${CSI}0K`\n\n/** Clear from cursor to beginning of line. @public */\nexport const CLEAR_LINE_START = `${CSI}1K`\n\n// ============================================================================\n// Alternate Screen Buffer\n// ============================================================================\n\n/** Enter alternate screen buffer. @public */\nexport const ALT_SCREEN_ON = `${CSI}?1049h`\n\n/** Exit alternate screen buffer. @public */\nexport const ALT_SCREEN_OFF = `${CSI}?1049l`\n\n// ============================================================================\n// Mouse Tracking\n// ============================================================================\n\n/** Enable cell-motion mouse tracking (button events + motion while pressed). @public */\nexport const MOUSE_CELL_ON = `${CSI}?1002h`\n\n/** Enable all-motion mouse tracking (button events + all motion). @public */\nexport const MOUSE_ALL_ON = `${CSI}?1003h`\n\n/** Enable SGR extended mouse mode (supports coordinates \\> 223). @public */\nexport const MOUSE_SGR_ON = `${CSI}?1006h`\n\n/** Disable cell-motion mouse tracking. @public */\nexport const MOUSE_CELL_OFF = `${CSI}?1002l`\n\n/** Disable all-motion mouse tracking. @public */\nexport const MOUSE_ALL_OFF = `${CSI}?1003l`\n\n/** Disable SGR extended mouse mode. @public */\nexport const MOUSE_SGR_OFF = `${CSI}?1006l`\n\n// ============================================================================\n// Bracketed Paste\n// ============================================================================\n\n/** Enable bracketed paste mode. @public */\nexport const BRACKETED_PASTE_ON = `${CSI}?2004h`\n\n/** Disable bracketed paste mode. @public */\nexport const BRACKETED_PASTE_OFF = `${CSI}?2004l`\n\n/** Bracketed paste start sequence. @public */\nexport const BRACKETED_PASTE_START = `${CSI}200~`\n\n/** Bracketed paste end sequence. @public */\nexport const BRACKETED_PASTE_END = `${CSI}201~`\n\n// ============================================================================\n// Focus Reporting\n// ============================================================================\n\n/** Enable focus reporting. @public */\nexport const REPORT_FOCUS_ON = `${CSI}?1004h`\n\n/** Disable focus reporting. @public */\nexport const REPORT_FOCUS_OFF = `${CSI}?1004l`\n\n/** Focus gained sequence. @public */\nexport const FOCUS_IN = `${CSI}I`\n\n/** Focus lost sequence. @public */\nexport const FOCUS_OUT = `${CSI}O`\n\n// ============================================================================\n// Window Control\n// ============================================================================\n\n/**\n * Set the terminal window title.\n * @param title - Window title\n * @returns ANSI escape sequence\n * @public\n */\nexport function setWindowTitle(title: string): string {\n return `${OSC}0;${title}${BEL}`\n}\n\n// ============================================================================\n// Text Formatting (SGR - Select Graphic Rendition)\n// ============================================================================\n\n/** Reset all text attributes. @public */\nexport const RESET = `${CSI}0m`\n\n/** Bold text. @public */\nexport const BOLD = `${CSI}1m`\n\n/** Dim/faint text. @public */\nexport const DIM = `${CSI}2m`\n\n/** Italic text. @public */\nexport const ITALIC = `${CSI}3m`\n\n/** Underlined text. @public */\nexport const UNDERLINE = `${CSI}4m`\n\n/** Blinking text. @public */\nexport const BLINK = `${CSI}5m`\n\n/** Reverse video (swap foreground/background). @public */\nexport const REVERSE = `${CSI}7m`\n\n/** Hidden text. @public */\nexport const HIDDEN = `${CSI}8m`\n\n/** Strikethrough text. @public */\nexport const STRIKETHROUGH = `${CSI}9m`\n\n// ============================================================================\n// Color Utilities\n// ============================================================================\n\n/**\n * Set foreground color using 256-color palette.\n * @param colorIndex - Color index (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function fg256(colorIndex: number): string {\n return `${CSI}38;5;${colorIndex}m`\n}\n\n/**\n * Set background color using 256-color palette.\n * @param colorIndex - Color index (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function bg256(colorIndex: number): string {\n return `${CSI}48;5;${colorIndex}m`\n}\n\n/**\n * Set foreground color using RGB true color.\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function fgRGB(r: number, g: number, b: number): string {\n return `${CSI}38;2;${r};${g};${b}m`\n}\n\n/**\n * Set background color using RGB true color.\n * @param r - Red component (0-255)\n * @param g - Green component (0-255)\n * @param b - Blue component (0-255)\n * @returns ANSI escape sequence\n * @public\n */\nexport function bgRGB(r: number, g: number, b: number): string {\n return `${CSI}48;2;${r};${g};${b}m`\n}\n\n// ============================================================================\n// Scrolling\n// ============================================================================\n\n/**\n * Scroll up by n lines.\n * @param n - Number of lines\n * @returns ANSI escape sequence\n * @public\n */\nexport function scrollUp(n: number = 1): string {\n return `${CSI}${n}S`\n}\n\n/**\n * Scroll down by n lines.\n * @param n - Number of lines\n * @returns ANSI escape sequence\n * @public\n */\nexport function scrollDown(n: number = 1): string {\n return `${CSI}${n}T`\n}\n\n/**\n * Set scrolling region.\n * @param top - Top row (1-based)\n * @param bottom - Bottom row (1-based)\n * @returns ANSI escape sequence\n * @public\n */\nexport function setScrollRegion(top: number, bottom: number): string {\n return `${CSI}${top};${bottom}r`\n}\n\n/** Reset scrolling region to full screen. @public */\nexport const RESET_SCROLL_REGION = `${CSI}r`\n","/**\n * Pure JavaScript ANSI styling utility for terminal text.\n * Works identically in Node.js and browser/xterm.js contexts.\n */\n\nimport type { ColorSupport, StyleFn } from '../types.js'\n\n// ANSI escape codes\nconst ESC = '\\x1b['\nconst RESET = `${ESC}0m`\n\n// Modifier codes\nconst CODES = {\n // Modifiers (open, close)\n bold: ['1', '22'],\n dim: ['2', '22'],\n italic: ['3', '23'],\n underline: ['4', '24'],\n inverse: ['7', '27'],\n hidden: ['8', '28'],\n strikethrough: ['9', '29'],\n\n // Basic foreground colors (30-37)\n black: ['30', '39'],\n red: ['31', '39'],\n green: ['32', '39'],\n yellow: ['33', '39'],\n blue: ['34', '39'],\n magenta: ['35', '39'],\n cyan: ['36', '39'],\n white: ['37', '39'],\n\n // Bright foreground colors (90-97)\n blackBright: ['90', '39'],\n redBright: ['91', '39'],\n greenBright: ['92', '39'],\n yellowBright: ['93', '39'],\n blueBright: ['94', '39'],\n magentaBright: ['95', '39'],\n cyanBright: ['96', '39'],\n whiteBright: ['97', '39'],\n\n // Basic background colors (40-47)\n bgBlack: ['40', '49'],\n bgRed: ['41', '49'],\n bgGreen: ['42', '49'],\n bgYellow: ['43', '49'],\n bgBlue: ['44', '49'],\n bgMagenta: ['45', '49'],\n bgCyan: ['46', '49'],\n bgWhite: ['47', '49'],\n\n // Bright background colors (100-107)\n bgBlackBright: ['100', '49'],\n bgRedBright: ['101', '49'],\n bgGreenBright: ['102', '49'],\n bgYellowBright: ['103', '49'],\n bgBlueBright: ['104', '49'],\n bgMagentaBright: ['105', '49'],\n bgCyanBright: ['106', '49'],\n bgWhiteBright: ['107', '49'],\n} as const\n\ntype CodeName = keyof typeof CODES\n\n/**\n * Apply ANSI codes to text.\n * @param text - Text to style\n * @param open - Opening ANSI code\n * @param close - Closing ANSI code\n * @returns Styled text\n */\nfunction applyStyle(text: string, open: string, close: string): string {\n const openSeq = `${ESC}${open}m`\n const closeSeq = `${ESC}${close}m`\n\n // Replace any existing close codes with close+open to properly nest styles\n // This handles cases like style.bold(style.bold('text')) where the inner\n // bold close would prematurely end the outer bold\n const replaced = text.replace(\n new RegExp(closeSeq.replace(/[[\\](){}|^$+*?.\\\\]/g, '\\\\$&'), 'g'),\n closeSeq + openSeq,\n )\n\n return openSeq + replaced + closeSeq\n}\n\n/**\n * Convert hex color to RGB.\n * @param hex - Hex color string (with or without #)\n * @returns RGB array [r, g, b]\n */\nfunction hexToRgb(hex: string): [number, number, number] {\n const clean = hex.replace(/^#/, '')\n const num = parseInt(clean, 16)\n\n if (clean.length === 3) {\n // Short form: #RGB -> #RRGGBB\n const r = ((num >> 8) & 0xf) * 17\n const g = ((num >> 4) & 0xf) * 17\n const b = (num & 0xf) * 17\n return [r, g, b]\n }\n\n // Long form: #RRGGBB\n const r = (num >> 16) & 0xff\n const g = (num >> 8) & 0xff\n const b = num & 0xff\n return [r, g, b]\n}\n\n/**\n * Create a chainable style function.\n * @param colorSupport - Color support level information\n * @returns Chainable style function\n * @public\n */\nexport function createStyle(colorSupport: ColorSupport): StyleFn {\n const enabled = colorSupport.level > 0\n\n /**\n * Build a style function that can be chained.\n * @param stack - Array of [open, close] code pairs to apply\n * @returns Style function\n */\n function build(stack: Array<[string, string]>): StyleFn {\n // The function itself - applies all stacked styles\n const fn = (text: string): string => {\n if (!enabled || stack.length === 0) {\n return text\n }\n\n // Apply styles from inside out\n let result = text\n for (let i = stack.length - 1; i >= 0; i--) {\n const [open, close] = stack[i]!\n result = applyStyle(result, open, close)\n }\n return result\n }\n\n // Add all code-based style properties\n const codeNames = Object.keys(CODES) as CodeName[]\n for (const name of codeNames) {\n const [open, close] = CODES[name]\n Object.defineProperty(fn, name, {\n get() {\n return build([...stack, [open, close]])\n },\n })\n }\n\n // Add gray as alias for blackBright\n Object.defineProperty(fn, 'gray', {\n get() {\n const [open, close] = CODES.blackBright\n return build([...stack, [open, close]])\n },\n })\n\n // Add grey as alias for blackBright\n Object.defineProperty(fn, 'grey', {\n get() {\n const [open, close] = CODES.blackBright\n return build([...stack, [open, close]])\n },\n })\n\n // Add extended color methods\n\n // hex(color: string): StyleFn\n Object.defineProperty(fn, 'hex', {\n value: (color: string): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n const [r, g, b] = hexToRgb(color)\n return build([...stack, [`38;2;${r};${g};${b}`, '39']])\n },\n writable: true,\n })\n\n // rgb(r: number, g: number, b: number): StyleFn\n Object.defineProperty(fn, 'rgb', {\n value: (r: number, g: number, b: number): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n return build([...stack, [`38;2;${r};${g};${b}`, '39']])\n },\n writable: true,\n })\n\n // bgHex(color: string): StyleFn\n Object.defineProperty(fn, 'bgHex', {\n value: (color: string): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n const [r, g, b] = hexToRgb(color)\n return build([...stack, [`48;2;${r};${g};${b}`, '49']])\n },\n writable: true,\n })\n\n // bgRgb(r: number, g: number, b: number): StyleFn\n Object.defineProperty(fn, 'bgRgb', {\n value: (r: number, g: number, b: number): StyleFn => {\n if (!enabled || !colorSupport.has16m) {\n return build(stack)\n }\n return build([...stack, [`48;2;${r};${g};${b}`, '49']])\n },\n writable: true,\n })\n\n // ansi256(code: number): StyleFn\n Object.defineProperty(fn, 'ansi256', {\n value: (code: number): StyleFn => {\n if (!enabled || !colorSupport.has256) {\n return build(stack)\n }\n return build([...stack, [`38;5;${code}`, '39']])\n },\n writable: true,\n })\n\n // bgAnsi256(code: number): StyleFn\n Object.defineProperty(fn, 'bgAnsi256', {\n value: (code: number): StyleFn => {\n if (!enabled || !colorSupport.has256) {\n return build(stack)\n }\n return build([...stack, [`48;5;${code}`, '49']])\n },\n writable: true,\n })\n\n return fn as StyleFn\n }\n\n return build([])\n}\n\n/**\n * Create a style function that always applies colors (for xterm.js).\n * @returns Chainable style function with full color support\n * @public\n */\nexport function createAlwaysEnabledStyle(): StyleFn {\n return createStyle({ level: 3, hasBasic: true, has256: true, has16m: true })\n}\n","/**\n * Platform detection utilities.\n */\n\n/**\n * Checks if the current environment is Node.js.\n *\n * @remarks\n * Uses a runtime check that works without requiring `@types/node`.\n *\n * @returns `true` if running in Node.js, `false` otherwise\n * @public\n */\nexport function isNodeEnvironment(): boolean {\n const g = globalThis as Record<string, unknown>\n const proc = g['process'] as Record<string, unknown> | undefined\n return (\n !!proc &&\n typeof (proc['versions'] as Record<string, unknown> | undefined)?.[\n 'node'\n ] === 'string'\n )\n}\n\n/**\n * Checks if the current environment is a browser.\n *\n * @remarks\n * Uses a runtime check for the presence of `window` and `document` objects.\n *\n * @returns `true` if running in a browser, `false` otherwise\n * @public\n */\nexport function isBrowserEnvironment(): boolean {\n const g = globalThis as Record<string, unknown>\n return (\n typeof g['window'] !== 'undefined' &&\n typeof g['document'] !== 'undefined' &&\n !isNodeEnvironment()\n )\n}\n"]}
@@ -1,4 +1,5 @@
1
- import { A as ArchiveAdapter, a as ClipboardAdapter, E as EnvironmentAdapter, C as ColorSupport, h as TerminalBackground, c as FileSystemAdapter, D as DirectoryEntry, F as FileStat, P as PathAdapter, e as SignalAdapter, f as SignalHandler, b as Disposable, T as TerminalAdapter, I as InputHandler, R as ResizeHandler, i as TerminalSize, d as PlatformAdapter, g as StyleAdapter } from '../types-FB6TYMn5.cjs';
1
+ import { A as ArchiveAdapter, C as ClipboardAdapter, b as FileSystemAdapter, D as DirectoryEntry, F as FileStat, P as PathAdapter, d as SignalAdapter, e as SignalHandler, a as Disposable, T as TerminalAdapter, I as InputHandler, R as ResizeHandler, g as TerminalSize, c as PlatformAdapter, f as StyleAdapter } from '../types-l5LiTaxI.cjs';
2
+ import { EnvironmentAdapter, ColorSupport, TerminalBackground } from '@boba-cli/core';
2
3
 
3
4
  /**
4
5
  * Node.js archive adapter using archiver and unzipper.
@@ -1,4 +1,5 @@
1
- import { A as ArchiveAdapter, a as ClipboardAdapter, E as EnvironmentAdapter, C as ColorSupport, h as TerminalBackground, c as FileSystemAdapter, D as DirectoryEntry, F as FileStat, P as PathAdapter, e as SignalAdapter, f as SignalHandler, b as Disposable, T as TerminalAdapter, I as InputHandler, R as ResizeHandler, i as TerminalSize, d as PlatformAdapter, g as StyleAdapter } from '../types-FB6TYMn5.js';
1
+ import { A as ArchiveAdapter, C as ClipboardAdapter, b as FileSystemAdapter, D as DirectoryEntry, F as FileStat, P as PathAdapter, d as SignalAdapter, e as SignalHandler, a as Disposable, T as TerminalAdapter, I as InputHandler, R as ResizeHandler, g as TerminalSize, c as PlatformAdapter, f as StyleAdapter } from '../types-l5LiTaxI.js';
2
+ import { EnvironmentAdapter, ColorSupport, TerminalBackground } from '@boba-cli/core';
2
3
 
3
4
  /**
4
5
  * Node.js archive adapter using archiver and unzipper.
@@ -1,22 +1,5 @@
1
- /**
2
- * Color support levels for terminal output.
3
- * @public
4
- */
5
- interface ColorSupport {
6
- /** The maximum color level supported (0-3). */
7
- readonly level: number;
8
- /** Whether basic 16-color support is available. */
9
- readonly hasBasic: boolean;
10
- /** Whether 256-color support is available. */
11
- readonly has256: boolean;
12
- /** Whether 16 million (true color) support is available. */
13
- readonly has16m: boolean;
14
- }
15
- /**
16
- * Terminal background mode.
17
- * @public
18
- */
19
- type TerminalBackground = 'dark' | 'light' | 'unknown';
1
+ import { EnvironmentAdapter } from '@boba-cli/core';
2
+
20
3
  /**
21
4
  * Terminal dimensions.
22
5
  * @public
@@ -131,28 +114,6 @@ interface ClipboardAdapter {
131
114
  */
132
115
  isAvailable(): boolean;
133
116
  }
134
- /**
135
- * Environment adapter interface for platform-agnostic environment access.
136
- * @public
137
- */
138
- interface EnvironmentAdapter {
139
- /**
140
- * Get an environment variable value.
141
- * @param name - Variable name
142
- * @returns Variable value or undefined
143
- */
144
- get(name: string): string | undefined;
145
- /**
146
- * Get color support level.
147
- * @returns Color support information
148
- */
149
- getColorSupport(): ColorSupport;
150
- /**
151
- * Detect terminal background mode.
152
- * @returns Background mode (dark, light, or unknown)
153
- */
154
- getTerminalBackground(): TerminalBackground;
155
- }
156
117
  /**
157
118
  * File stat information returned by filesystem operations.
158
119
  * @public
@@ -440,4 +401,4 @@ interface PlatformAdapter extends Disposable {
440
401
  readonly style: StyleAdapter;
441
402
  }
442
403
 
443
- export type { ArchiveAdapter as A, ColorSupport as C, DirectoryEntry as D, EnvironmentAdapter as E, FileStat as F, InputHandler as I, PathAdapter as P, ResizeHandler as R, StyleFn as S, TerminalAdapter as T, ClipboardAdapter as a, Disposable as b, FileSystemAdapter as c, PlatformAdapter as d, SignalAdapter as e, SignalHandler as f, StyleAdapter as g, TerminalBackground as h, TerminalSize as i };
404
+ export type { ArchiveAdapter as A, ClipboardAdapter as C, DirectoryEntry as D, FileStat as F, InputHandler as I, PathAdapter as P, ResizeHandler as R, StyleFn as S, TerminalAdapter as T, Disposable as a, FileSystemAdapter as b, PlatformAdapter as c, SignalAdapter as d, SignalHandler as e, StyleAdapter as f, TerminalSize as g };
@@ -1,22 +1,5 @@
1
- /**
2
- * Color support levels for terminal output.
3
- * @public
4
- */
5
- interface ColorSupport {
6
- /** The maximum color level supported (0-3). */
7
- readonly level: number;
8
- /** Whether basic 16-color support is available. */
9
- readonly hasBasic: boolean;
10
- /** Whether 256-color support is available. */
11
- readonly has256: boolean;
12
- /** Whether 16 million (true color) support is available. */
13
- readonly has16m: boolean;
14
- }
15
- /**
16
- * Terminal background mode.
17
- * @public
18
- */
19
- type TerminalBackground = 'dark' | 'light' | 'unknown';
1
+ import { EnvironmentAdapter } from '@boba-cli/core';
2
+
20
3
  /**
21
4
  * Terminal dimensions.
22
5
  * @public
@@ -131,28 +114,6 @@ interface ClipboardAdapter {
131
114
  */
132
115
  isAvailable(): boolean;
133
116
  }
134
- /**
135
- * Environment adapter interface for platform-agnostic environment access.
136
- * @public
137
- */
138
- interface EnvironmentAdapter {
139
- /**
140
- * Get an environment variable value.
141
- * @param name - Variable name
142
- * @returns Variable value or undefined
143
- */
144
- get(name: string): string | undefined;
145
- /**
146
- * Get color support level.
147
- * @returns Color support information
148
- */
149
- getColorSupport(): ColorSupport;
150
- /**
151
- * Detect terminal background mode.
152
- * @returns Background mode (dark, light, or unknown)
153
- */
154
- getTerminalBackground(): TerminalBackground;
155
- }
156
117
  /**
157
118
  * File stat information returned by filesystem operations.
158
119
  * @public
@@ -440,4 +401,4 @@ interface PlatformAdapter extends Disposable {
440
401
  readonly style: StyleAdapter;
441
402
  }
442
403
 
443
- export type { ArchiveAdapter as A, ColorSupport as C, DirectoryEntry as D, EnvironmentAdapter as E, FileStat as F, InputHandler as I, PathAdapter as P, ResizeHandler as R, StyleFn as S, TerminalAdapter as T, ClipboardAdapter as a, Disposable as b, FileSystemAdapter as c, PlatformAdapter as d, SignalAdapter as e, SignalHandler as f, StyleAdapter as g, TerminalBackground as h, TerminalSize as i };
404
+ export type { ArchiveAdapter as A, ClipboardAdapter as C, DirectoryEntry as D, FileStat as F, InputHandler as I, PathAdapter as P, ResizeHandler as R, StyleFn as S, TerminalAdapter as T, Disposable as a, FileSystemAdapter as b, PlatformAdapter as c, SignalAdapter as d, SignalHandler as e, StyleAdapter as f, TerminalSize as g };
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@boba-cli/machine",
3
3
  "description": "Platform abstraction layer for Boba terminal UIs",
4
- "version": "0.1.0-alpha.1",
4
+ "version": "0.1.0-alpha.2",
5
+ "dependencies": {
6
+ "@boba-cli/core": "0.1.0-alpha.2"
7
+ },
5
8
  "devDependencies": {
6
9
  "@types/archiver": "^6.0.4",
7
10
  "@types/node": "^24.10.2",