@cascadetui/core 0.1.13 → 0.1.14

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.
@@ -38,7 +38,7 @@
38
38
  "import type { Extmark } from \"./extmarks\"\r\n\r\nexport interface ExtmarksSnapshot {\r\n extmarks: Map<number, Extmark>\r\n nextId: number\r\n}\r\n\r\nexport class ExtmarksHistory {\r\n private undoStack: ExtmarksSnapshot[] = []\r\n private redoStack: ExtmarksSnapshot[] = []\r\n\r\n saveSnapshot(extmarks: Map<number, Extmark>, nextId: number): void {\r\n const snapshot: ExtmarksSnapshot = {\r\n extmarks: new Map(Array.from(extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\r\n nextId,\r\n }\r\n this.undoStack.push(snapshot)\r\n this.redoStack = []\r\n }\r\n\r\n undo(): ExtmarksSnapshot | null {\r\n if (this.undoStack.length === 0) return null\r\n return this.undoStack.pop()!\r\n }\r\n\r\n redo(): ExtmarksSnapshot | null {\r\n if (this.redoStack.length === 0) return null\r\n return this.redoStack.pop()!\r\n }\r\n\r\n pushRedo(snapshot: ExtmarksSnapshot): void {\r\n this.redoStack.push(snapshot)\r\n }\r\n\r\n pushUndo(snapshot: ExtmarksSnapshot): void {\r\n this.undoStack.push(snapshot)\r\n }\r\n\r\n clear(): void {\r\n this.undoStack = []\r\n this.redoStack = []\r\n }\r\n\r\n canUndo(): boolean {\r\n return this.undoStack.length > 0\r\n }\r\n\r\n canRedo(): boolean {\r\n return this.redoStack.length > 0\r\n }\r\n}\r\n",
39
39
  "import type { EditBuffer } from \"../edit-buffer\"\r\nimport type { EditorView } from \"../editor-view\"\r\nimport { ExtmarksHistory, type ExtmarksSnapshot } from \"./extmarks-history\"\r\n\r\nexport interface Extmark {\r\n id: number\r\n start: number // Display-width offset (including newlines), NOT JS string index\r\n end: number // Display-width offset (including newlines), NOT JS string index\r\n virtual: boolean\r\n styleId?: number\r\n priority?: number\r\n data?: any\r\n typeId: number\r\n}\r\n\r\nexport interface ExtmarkOptions {\r\n start: number // Display-width offset (including newlines), NOT JS string index\r\n end: number // Display-width offset (including newlines), NOT JS string index\r\n virtual?: boolean\r\n styleId?: number\r\n priority?: number\r\n data?: any\r\n typeId?: number\r\n metadata?: any\r\n}\r\n\r\n/**\r\n * WARNING: This is simulating extmarks in the edit buffer\r\n * and will move to a real native implementation in the future.\r\n * Use with caution.\r\n */\r\nexport class ExtmarksController {\r\n private editBuffer: EditBuffer\r\n private editorView: EditorView\r\n private extmarks = new Map<number, Extmark>()\r\n private extmarksByTypeId = new Map<number, Set<number>>()\r\n private metadata = new Map<number, any>()\r\n private nextId = 1\r\n private destroyed = false\r\n private history = new ExtmarksHistory()\r\n private typeNameToId = new Map<string, number>()\r\n private typeIdToName = new Map<number, string>()\r\n private nextTypeId = 1\r\n\r\n private originalMoveCursorLeft: typeof EditBuffer.prototype.moveCursorLeft\r\n private originalMoveCursorRight: typeof EditBuffer.prototype.moveCursorRight\r\n private originalSetCursorByOffset: typeof EditBuffer.prototype.setCursorByOffset\r\n private originalMoveUpVisual: typeof EditorView.prototype.moveUpVisual\r\n private originalMoveDownVisual: typeof EditorView.prototype.moveDownVisual\r\n private originalDeleteCharBackward: typeof EditBuffer.prototype.deleteCharBackward\r\n private originalDeleteChar: typeof EditBuffer.prototype.deleteChar\r\n private originalInsertText: typeof EditBuffer.prototype.insertText\r\n private originalInsertChar: typeof EditBuffer.prototype.insertChar\r\n private originalDeleteRange: typeof EditBuffer.prototype.deleteRange\r\n private originalSetText: typeof EditBuffer.prototype.setText\r\n private originalReplaceText: typeof EditBuffer.prototype.replaceText\r\n private originalClear: typeof EditBuffer.prototype.clear\r\n private originalNewLine: typeof EditBuffer.prototype.newLine\r\n private originalDeleteLine: typeof EditBuffer.prototype.deleteLine\r\n private originalEditorViewDeleteSelectedText: typeof EditorView.prototype.deleteSelectedText\r\n private originalUndo: typeof EditBuffer.prototype.undo\r\n private originalRedo: typeof EditBuffer.prototype.redo\r\n\r\n constructor(editBuffer: EditBuffer, editorView: EditorView) {\r\n this.editBuffer = editBuffer\r\n this.editorView = editorView\r\n\r\n this.originalMoveCursorLeft = editBuffer.moveCursorLeft.bind(editBuffer)\r\n this.originalMoveCursorRight = editBuffer.moveCursorRight.bind(editBuffer)\r\n this.originalSetCursorByOffset = editBuffer.setCursorByOffset.bind(editBuffer)\r\n this.originalMoveUpVisual = editorView.moveUpVisual.bind(editorView)\r\n this.originalMoveDownVisual = editorView.moveDownVisual.bind(editorView)\r\n this.originalDeleteCharBackward = editBuffer.deleteCharBackward.bind(editBuffer)\r\n this.originalDeleteChar = editBuffer.deleteChar.bind(editBuffer)\r\n this.originalInsertText = editBuffer.insertText.bind(editBuffer)\r\n this.originalInsertChar = editBuffer.insertChar.bind(editBuffer)\r\n this.originalDeleteRange = editBuffer.deleteRange.bind(editBuffer)\r\n this.originalSetText = editBuffer.setText.bind(editBuffer)\r\n this.originalReplaceText = editBuffer.replaceText.bind(editBuffer)\r\n this.originalClear = editBuffer.clear.bind(editBuffer)\r\n this.originalNewLine = editBuffer.newLine.bind(editBuffer)\r\n this.originalDeleteLine = editBuffer.deleteLine.bind(editBuffer)\r\n this.originalEditorViewDeleteSelectedText = editorView.deleteSelectedText.bind(editorView)\r\n this.originalUndo = editBuffer.undo.bind(editBuffer)\r\n this.originalRedo = editBuffer.redo.bind(editBuffer)\r\n\r\n this.wrapCursorMovement()\r\n this.wrapDeletion()\r\n this.wrapInsertion()\r\n this.wrapEditorViewDeleteSelectedText()\r\n this.wrapUndoRedo()\r\n this.setupContentChangeListener()\r\n }\r\n\r\n private wrapCursorMovement(): void {\r\n this.editBuffer.moveCursorLeft = (): void => {\r\n if (this.destroyed) {\r\n this.originalMoveCursorLeft()\r\n return\r\n }\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n const hasSelection = this.editorView.hasSelection()\r\n\r\n if (hasSelection) {\r\n this.originalMoveCursorLeft()\r\n return\r\n }\r\n\r\n const targetOffset = currentOffset - 1\r\n if (targetOffset < 0) {\r\n this.originalMoveCursorLeft()\r\n return\r\n }\r\n\r\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\r\n if (virtualExtmark && currentOffset >= virtualExtmark.end) {\r\n this.editBuffer.setCursorByOffset(virtualExtmark.start - 1)\r\n return\r\n }\r\n\r\n this.originalMoveCursorLeft()\r\n }\r\n\r\n this.editBuffer.moveCursorRight = (): void => {\r\n if (this.destroyed) {\r\n this.originalMoveCursorRight()\r\n return\r\n }\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n const hasSelection = this.editorView.hasSelection()\r\n\r\n if (hasSelection) {\r\n this.originalMoveCursorRight()\r\n return\r\n }\r\n\r\n const targetOffset = currentOffset + 1\r\n const textLength = this.editBuffer.getText().length\r\n\r\n if (targetOffset > textLength) {\r\n this.originalMoveCursorRight()\r\n return\r\n }\r\n\r\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\r\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\r\n this.editBuffer.setCursorByOffset(virtualExtmark.end)\r\n return\r\n }\r\n\r\n this.originalMoveCursorRight()\r\n }\r\n\r\n this.editorView.moveUpVisual = (): void => {\r\n if (this.destroyed) {\r\n this.originalMoveUpVisual()\r\n return\r\n }\r\n\r\n const hasSelection = this.editorView.hasSelection()\r\n\r\n if (hasSelection) {\r\n this.originalMoveUpVisual()\r\n return\r\n }\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n this.originalMoveUpVisual()\r\n const newOffset = this.editorView.getVisualCursor().offset\r\n\r\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset)\r\n if (virtualExtmark) {\r\n const distanceToStart = newOffset - virtualExtmark.start\r\n const distanceToEnd = virtualExtmark.end - newOffset\r\n\r\n if (distanceToStart < distanceToEnd) {\r\n this.editorView.setCursorByOffset(virtualExtmark.start - 1)\r\n } else {\r\n this.editorView.setCursorByOffset(virtualExtmark.end)\r\n }\r\n }\r\n }\r\n\r\n this.editorView.moveDownVisual = (): void => {\r\n if (this.destroyed) {\r\n this.originalMoveDownVisual()\r\n return\r\n }\r\n\r\n const hasSelection = this.editorView.hasSelection()\r\n\r\n if (hasSelection) {\r\n this.originalMoveDownVisual()\r\n return\r\n }\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n this.originalMoveDownVisual()\r\n const newOffset = this.editorView.getVisualCursor().offset\r\n\r\n const virtualExtmark = this.findVirtualExtmarkContaining(newOffset)\r\n if (virtualExtmark) {\r\n const distanceToStart = newOffset - virtualExtmark.start\r\n const distanceToEnd = virtualExtmark.end - newOffset\r\n\r\n if (distanceToStart < distanceToEnd) {\r\n const adjustedOffset = virtualExtmark.start - 1\r\n const targetOffset = adjustedOffset <= currentOffset ? virtualExtmark.end : adjustedOffset\r\n this.editorView.setCursorByOffset(targetOffset)\r\n } else {\r\n this.editorView.setCursorByOffset(virtualExtmark.end)\r\n }\r\n }\r\n }\r\n\r\n this.editBuffer.setCursorByOffset = (offset: number): void => {\r\n if (this.destroyed) {\r\n this.originalSetCursorByOffset(offset)\r\n return\r\n }\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n const hasSelection = this.editorView.hasSelection()\r\n\r\n if (hasSelection) {\r\n this.originalSetCursorByOffset(offset)\r\n return\r\n }\r\n\r\n const movingForward = offset > currentOffset\r\n\r\n if (movingForward) {\r\n const virtualExtmark = this.findVirtualExtmarkContaining(offset)\r\n if (virtualExtmark && currentOffset <= virtualExtmark.start) {\r\n this.originalSetCursorByOffset(virtualExtmark.end)\r\n return\r\n }\r\n } else {\r\n for (const extmark of this.extmarks.values()) {\r\n if (extmark.virtual && currentOffset >= extmark.end && offset < extmark.end && offset >= extmark.start) {\r\n this.originalSetCursorByOffset(extmark.start - 1)\r\n return\r\n }\r\n }\r\n }\r\n\r\n this.originalSetCursorByOffset(offset)\r\n }\r\n }\r\n\r\n private wrapDeletion(): void {\r\n this.editBuffer.deleteCharBackward = (): void => {\r\n if (this.destroyed) {\r\n this.originalDeleteCharBackward()\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n const hadSelection = this.editorView.hasSelection()\r\n\r\n if (currentOffset === 0) {\r\n this.originalDeleteCharBackward()\r\n return\r\n }\r\n\r\n if (hadSelection) {\r\n this.originalDeleteCharBackward()\r\n return\r\n }\r\n\r\n const targetOffset = currentOffset - 1\r\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\r\n\r\n if (virtualExtmark && currentOffset === virtualExtmark.end) {\r\n const startCursor = this.offsetToPosition(virtualExtmark.start)\r\n const endCursor = this.offsetToPosition(virtualExtmark.end)\r\n const deleteOffset = virtualExtmark.start\r\n const deleteLength = virtualExtmark.end - virtualExtmark.start\r\n\r\n this.deleteExtmarkById(virtualExtmark.id)\r\n\r\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col)\r\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\r\n\r\n this.updateHighlights()\r\n\r\n return\r\n }\r\n\r\n this.originalDeleteCharBackward()\r\n this.adjustExtmarksAfterDeletion(targetOffset, 1)\r\n }\r\n\r\n this.editBuffer.deleteChar = (): void => {\r\n if (this.destroyed) {\r\n this.originalDeleteChar()\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n const textLength = this.editBuffer.getText().length\r\n const hadSelection = this.editorView.hasSelection()\r\n\r\n if (currentOffset >= textLength) {\r\n this.originalDeleteChar()\r\n return\r\n }\r\n\r\n if (hadSelection) {\r\n this.originalDeleteChar()\r\n return\r\n }\r\n\r\n const targetOffset = currentOffset\r\n const virtualExtmark = this.findVirtualExtmarkContaining(targetOffset)\r\n\r\n if (virtualExtmark && currentOffset === virtualExtmark.start) {\r\n const startCursor = this.offsetToPosition(virtualExtmark.start)\r\n const endCursor = this.offsetToPosition(virtualExtmark.end)\r\n const deleteOffset = virtualExtmark.start\r\n const deleteLength = virtualExtmark.end - virtualExtmark.start\r\n\r\n this.deleteExtmarkById(virtualExtmark.id)\r\n\r\n this.originalDeleteRange(startCursor.row, startCursor.col, endCursor.row, endCursor.col)\r\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\r\n\r\n this.updateHighlights()\r\n\r\n return\r\n }\r\n\r\n this.originalDeleteChar()\r\n this.adjustExtmarksAfterDeletion(targetOffset, 1)\r\n }\r\n\r\n this.editBuffer.deleteRange = (startLine: number, startCol: number, endLine: number, endCol: number): void => {\r\n if (this.destroyed) {\r\n this.originalDeleteRange(startLine, startCol, endLine, endCol)\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const startOffset = this.positionToOffset(startLine, startCol)\r\n const endOffset = this.positionToOffset(endLine, endCol)\r\n const length = endOffset - startOffset\r\n\r\n this.originalDeleteRange(startLine, startCol, endLine, endCol)\r\n this.adjustExtmarksAfterDeletion(startOffset, length)\r\n }\r\n\r\n this.editBuffer.deleteLine = (): void => {\r\n if (this.destroyed) {\r\n this.originalDeleteLine()\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const text = this.editBuffer.getText()\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n\r\n let lineStart = 0\r\n for (let i = currentOffset - 1; i >= 0; i--) {\r\n if (text[i] === \"\\n\") {\r\n lineStart = i + 1\r\n break\r\n }\r\n }\r\n\r\n let lineEnd = text.length\r\n for (let i = currentOffset; i < text.length; i++) {\r\n if (text[i] === \"\\n\") {\r\n lineEnd = i + 1\r\n break\r\n }\r\n }\r\n\r\n const deleteLength = lineEnd - lineStart\r\n\r\n this.originalDeleteLine()\r\n this.adjustExtmarksAfterDeletion(lineStart, deleteLength)\r\n }\r\n }\r\n\r\n private wrapInsertion(): void {\r\n this.editBuffer.insertText = (text: string): void => {\r\n if (this.destroyed) {\r\n this.originalInsertText(text)\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n this.originalInsertText(text)\r\n this.adjustExtmarksAfterInsertion(currentOffset, text.length)\r\n }\r\n\r\n this.editBuffer.insertChar = (char: string): void => {\r\n if (this.destroyed) {\r\n this.originalInsertChar(char)\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n this.originalInsertChar(char)\r\n this.adjustExtmarksAfterInsertion(currentOffset, 1)\r\n }\r\n\r\n this.editBuffer.setText = (text: string): void => {\r\n if (this.destroyed) {\r\n this.originalSetText(text)\r\n return\r\n }\r\n\r\n this.clear()\r\n this.originalSetText(text)\r\n }\r\n\r\n this.editBuffer.replaceText = (text: string): void => {\r\n if (this.destroyed) {\r\n this.originalReplaceText(text)\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n this.clear()\r\n this.originalReplaceText(text)\r\n }\r\n\r\n this.editBuffer.clear = (): void => {\r\n if (this.destroyed) {\r\n this.originalClear()\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n this.clear()\r\n this.originalClear()\r\n }\r\n\r\n this.editBuffer.newLine = (): void => {\r\n if (this.destroyed) {\r\n this.originalNewLine()\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const currentOffset = this.editorView.getVisualCursor().offset\r\n this.originalNewLine()\r\n this.adjustExtmarksAfterInsertion(currentOffset, 1)\r\n }\r\n }\r\n\r\n private wrapEditorViewDeleteSelectedText(): void {\r\n this.editorView.deleteSelectedText = (): void => {\r\n if (this.destroyed) {\r\n this.originalEditorViewDeleteSelectedText()\r\n return\r\n }\r\n\r\n this.saveSnapshot()\r\n\r\n const selection = this.editorView.getSelection()\r\n if (!selection) {\r\n this.originalEditorViewDeleteSelectedText()\r\n return\r\n }\r\n\r\n const deleteOffset = Math.min(selection.start, selection.end)\r\n const deleteLength = Math.abs(selection.end - selection.start)\r\n\r\n this.originalEditorViewDeleteSelectedText()\r\n\r\n if (deleteLength > 0) {\r\n this.adjustExtmarksAfterDeletion(deleteOffset, deleteLength)\r\n }\r\n }\r\n }\r\n\r\n private setupContentChangeListener(): void {\r\n this.editBuffer.on(\"content-changed\", () => {\r\n if (this.destroyed) return\r\n this.updateHighlights()\r\n })\r\n }\r\n\r\n private deleteExtmarkById(id: number): void {\r\n const extmark = this.extmarks.get(id)\r\n if (extmark) {\r\n this.extmarks.delete(id)\r\n this.extmarksByTypeId.get(extmark.typeId)?.delete(id)\r\n this.metadata.delete(id)\r\n }\r\n }\r\n\r\n private findVirtualExtmarkContaining(offset: number): Extmark | null {\r\n for (const extmark of this.extmarks.values()) {\r\n if (extmark.virtual && offset >= extmark.start && offset < extmark.end) {\r\n return extmark\r\n }\r\n }\r\n return null\r\n }\r\n\r\n private adjustExtmarksAfterInsertion(insertOffset: number, length: number): void {\r\n for (const extmark of this.extmarks.values()) {\r\n if (extmark.start >= insertOffset) {\r\n extmark.start += length\r\n extmark.end += length\r\n } else if (extmark.end > insertOffset) {\r\n extmark.end += length\r\n }\r\n }\r\n this.updateHighlights()\r\n }\r\n\r\n public adjustExtmarksAfterDeletion(deleteOffset: number, length: number): void {\r\n const toDelete: number[] = []\r\n\r\n for (const extmark of this.extmarks.values()) {\r\n if (extmark.end <= deleteOffset) {\r\n continue\r\n }\r\n\r\n if (extmark.start >= deleteOffset + length) {\r\n extmark.start -= length\r\n extmark.end -= length\r\n } else if (extmark.start >= deleteOffset && extmark.end <= deleteOffset + length) {\r\n toDelete.push(extmark.id)\r\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset + length) {\r\n extmark.end -= length\r\n } else if (extmark.start < deleteOffset && extmark.end > deleteOffset) {\r\n extmark.end -= Math.min(extmark.end, deleteOffset + length) - deleteOffset\r\n } else if (extmark.start < deleteOffset + length && extmark.end > deleteOffset + length) {\r\n const overlap = deleteOffset + length - extmark.start\r\n extmark.start = deleteOffset\r\n extmark.end -= length\r\n }\r\n }\r\n\r\n for (const id of toDelete) {\r\n this.deleteExtmarkById(id)\r\n }\r\n\r\n this.updateHighlights()\r\n }\r\n\r\n private offsetToPosition(offset: number): { row: number; col: number } {\r\n const result = this.editBuffer.offsetToPosition(offset)\r\n if (!result) {\r\n return { row: 0, col: 0 }\r\n }\r\n return result\r\n }\r\n\r\n private positionToOffset(row: number, col: number): number {\r\n return this.editBuffer.positionToOffset(row, col)\r\n }\r\n\r\n private updateHighlights(): void {\r\n this.editBuffer.clearAllHighlights()\r\n\r\n for (const extmark of this.extmarks.values()) {\r\n if (extmark.styleId !== undefined) {\r\n // extmark.start/end are display-width offsets including newlines (from cursor operations)\r\n // addHighlightByCharRange expects display-width offsets excluding newlines\r\n // So we need to subtract the number of newlines before each position\r\n const startWithoutNewlines = this.offsetExcludingNewlines(extmark.start)\r\n const endWithoutNewlines = this.offsetExcludingNewlines(extmark.end)\r\n\r\n this.editBuffer.addHighlightByCharRange({\r\n start: startWithoutNewlines,\r\n end: endWithoutNewlines,\r\n styleId: extmark.styleId,\r\n priority: extmark.priority ?? 0,\r\n hlRef: extmark.id,\r\n })\r\n }\r\n }\r\n }\r\n\r\n private offsetExcludingNewlines(offset: number): number {\r\n // offset is a display-width offset from the start of the buffer (includes newlines)\r\n // We need to convert to display-width excluding newlines\r\n // This means: subtract 1 for each newline encountered before this offset\r\n const text = this.editBuffer.getText()\r\n let displayWidthSoFar = 0\r\n let newlineCount = 0\r\n\r\n // Walk through the text and calculate display widths\r\n let i = 0\r\n while (i < text.length && displayWidthSoFar < offset) {\r\n if (text[i] === \"\\n\") {\r\n displayWidthSoFar++ // newline counts as width 1 in cursor offset\r\n newlineCount++\r\n i++\r\n } else {\r\n // Find the next newline or end of string\r\n let j = i\r\n while (j < text.length && text[j] !== \"\\n\") {\r\n j++\r\n }\r\n const chunk = text.substring(i, j)\r\n const chunkWidth = Bun.stringWidth(chunk)\r\n\r\n if (displayWidthSoFar + chunkWidth < offset) {\r\n // Entire chunk fits before offset\r\n displayWidthSoFar += chunkWidth\r\n i = j\r\n } else {\r\n // Offset is within this chunk - need to find exact position\r\n // Walk character by character\r\n for (let k = i; k < j && displayWidthSoFar < offset; k++) {\r\n const charWidth = Bun.stringWidth(text[k])\r\n displayWidthSoFar += charWidth\r\n }\r\n break\r\n }\r\n }\r\n }\r\n\r\n return offset - newlineCount\r\n }\r\n\r\n public create(options: ExtmarkOptions): number {\r\n if (this.destroyed) {\r\n throw new Error(\"ExtmarksController is destroyed\")\r\n }\r\n\r\n const id = this.nextId++\r\n const typeId = options.typeId ?? 0\r\n const extmark: Extmark = {\r\n id,\r\n start: options.start,\r\n end: options.end,\r\n virtual: options.virtual ?? false,\r\n styleId: options.styleId,\r\n priority: options.priority,\r\n data: options.data,\r\n typeId,\r\n }\r\n\r\n this.extmarks.set(id, extmark)\r\n\r\n if (!this.extmarksByTypeId.has(typeId)) {\r\n this.extmarksByTypeId.set(typeId, new Set())\r\n }\r\n this.extmarksByTypeId.get(typeId)!.add(id)\r\n\r\n if (options.metadata !== undefined) {\r\n this.metadata.set(id, options.metadata)\r\n }\r\n\r\n this.updateHighlights()\r\n\r\n return id\r\n }\r\n\r\n public delete(id: number): boolean {\r\n if (this.destroyed) {\r\n throw new Error(\"ExtmarksController is destroyed\")\r\n }\r\n\r\n const extmark = this.extmarks.get(id)\r\n if (!extmark) return false\r\n\r\n this.deleteExtmarkById(id)\r\n this.updateHighlights()\r\n\r\n return true\r\n }\r\n\r\n public get(id: number): Extmark | null {\r\n if (this.destroyed) return null\r\n return this.extmarks.get(id) ?? null\r\n }\r\n\r\n public getAll(): Extmark[] {\r\n if (this.destroyed) return []\r\n return Array.from(this.extmarks.values())\r\n }\r\n\r\n public getVirtual(): Extmark[] {\r\n if (this.destroyed) return []\r\n return Array.from(this.extmarks.values()).filter((e) => e.virtual)\r\n }\r\n\r\n public getAtOffset(offset: number): Extmark[] {\r\n if (this.destroyed) return []\r\n return Array.from(this.extmarks.values()).filter((e) => offset >= e.start && offset < e.end)\r\n }\r\n\r\n public getAllForTypeId(typeId: number): Extmark[] {\r\n if (this.destroyed) return []\r\n const ids = this.extmarksByTypeId.get(typeId)\r\n if (!ids) return []\r\n return Array.from(ids)\r\n .map((id) => this.extmarks.get(id))\r\n .filter((e): e is Extmark => e !== undefined)\r\n }\r\n\r\n public clear(): void {\r\n if (this.destroyed) return\r\n\r\n this.extmarks.clear()\r\n this.extmarksByTypeId.clear()\r\n this.metadata.clear()\r\n this.updateHighlights()\r\n }\r\n\r\n private saveSnapshot(): void {\r\n this.history.saveSnapshot(this.extmarks, this.nextId)\r\n }\r\n\r\n private restoreSnapshot(snapshot: ExtmarksSnapshot): void {\r\n this.extmarks = new Map(Array.from(snapshot.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }]))\r\n this.nextId = snapshot.nextId\r\n this.updateHighlights()\r\n }\r\n\r\n private wrapUndoRedo(): void {\r\n this.editBuffer.undo = (): string | null => {\r\n if (this.destroyed) {\r\n return this.originalUndo()\r\n }\r\n\r\n if (!this.history.canUndo()) {\r\n return this.originalUndo()\r\n }\r\n\r\n const currentSnapshot: ExtmarksSnapshot = {\r\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\r\n nextId: this.nextId,\r\n }\r\n this.history.pushRedo(currentSnapshot)\r\n\r\n const snapshot = this.history.undo()!\r\n this.restoreSnapshot(snapshot)\r\n\r\n return this.originalUndo()\r\n }\r\n\r\n this.editBuffer.redo = (): string | null => {\r\n if (this.destroyed) {\r\n return this.originalRedo()\r\n }\r\n\r\n if (!this.history.canRedo()) {\r\n return this.originalRedo()\r\n }\r\n\r\n const currentSnapshot: ExtmarksSnapshot = {\r\n extmarks: new Map(Array.from(this.extmarks.entries()).map(([id, extmark]) => [id, { ...extmark }])),\r\n nextId: this.nextId,\r\n }\r\n this.history.pushUndo(currentSnapshot)\r\n\r\n const snapshot = this.history.redo()!\r\n this.restoreSnapshot(snapshot)\r\n\r\n return this.originalRedo()\r\n }\r\n }\r\n\r\n public registerType(typeName: string): number {\r\n if (this.destroyed) {\r\n throw new Error(\"ExtmarksController is destroyed\")\r\n }\r\n\r\n const existing = this.typeNameToId.get(typeName)\r\n if (existing !== undefined) {\r\n return existing\r\n }\r\n\r\n const typeId = this.nextTypeId++\r\n this.typeNameToId.set(typeName, typeId)\r\n this.typeIdToName.set(typeId, typeName)\r\n return typeId\r\n }\r\n\r\n public getTypeId(typeName: string): number | null {\r\n if (this.destroyed) return null\r\n return this.typeNameToId.get(typeName) ?? null\r\n }\r\n\r\n public getTypeName(typeId: number): string | null {\r\n if (this.destroyed) return null\r\n return this.typeIdToName.get(typeId) ?? null\r\n }\r\n\r\n public getMetadataFor(extmarkId: number): any {\r\n if (this.destroyed) return undefined\r\n return this.metadata.get(extmarkId)\r\n }\r\n\r\n public destroy(): void {\r\n if (this.destroyed) return\r\n\r\n this.editBuffer.moveCursorLeft = this.originalMoveCursorLeft\r\n this.editBuffer.moveCursorRight = this.originalMoveCursorRight\r\n this.editBuffer.setCursorByOffset = this.originalSetCursorByOffset\r\n this.editorView.moveUpVisual = this.originalMoveUpVisual\r\n this.editorView.moveDownVisual = this.originalMoveDownVisual\r\n this.editBuffer.deleteCharBackward = this.originalDeleteCharBackward\r\n this.editBuffer.deleteChar = this.originalDeleteChar\r\n this.editBuffer.insertText = this.originalInsertText\r\n this.editBuffer.insertChar = this.originalInsertChar\r\n this.editBuffer.deleteRange = this.originalDeleteRange\r\n this.editBuffer.setText = this.originalSetText\r\n this.editBuffer.replaceText = this.originalReplaceText\r\n this.editBuffer.clear = this.originalClear\r\n this.editBuffer.newLine = this.originalNewLine\r\n this.editBuffer.deleteLine = this.originalDeleteLine\r\n this.editorView.deleteSelectedText = this.originalEditorViewDeleteSelectedText\r\n this.editBuffer.undo = this.originalUndo\r\n this.editBuffer.redo = this.originalRedo\r\n\r\n this.extmarks.clear()\r\n this.extmarksByTypeId.clear()\r\n this.metadata.clear()\r\n this.typeNameToId.clear()\r\n this.typeIdToName.clear()\r\n this.history.clear()\r\n this.destroyed = true\r\n }\r\n}\r\n\r\nexport function createExtmarksController(editBuffer: EditBuffer, editorView: EditorView): ExtmarksController {\r\n return new ExtmarksController(editBuffer, editorView)\r\n}\r\n",
40
40
  "type Hex = string | null\r\n\r\nconst OSC4_RESPONSE =\r\n /\\x1b]4;(\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g\r\n\r\nconst OSC_SPECIAL_RESPONSE =\r\n /\\x1b](\\d+);(?:(?:rgb:)([0-9a-fA-F]+)\\/([0-9a-fA-F]+)\\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\\x07|\\x1b\\\\)/g\r\n\r\nexport type WriteFunction = (data: string | Buffer) => boolean\r\n\r\nexport interface TerminalColors {\r\n palette: Hex[]\r\n defaultForeground: Hex\r\n defaultBackground: Hex\r\n cursorColor: Hex\r\n mouseForeground: Hex\r\n mouseBackground: Hex\r\n tekForeground: Hex\r\n tekBackground: Hex\r\n highlightBackground: Hex\r\n highlightForeground: Hex\r\n}\r\n\r\nexport interface GetPaletteOptions {\r\n timeout?: number\r\n size?: number\r\n}\r\n\r\nexport interface TerminalPaletteDetector {\r\n detect(options?: GetPaletteOptions): Promise<TerminalColors>\r\n detectOSCSupport(timeoutMs?: number): Promise<boolean>\r\n cleanup(): void\r\n}\r\n\r\nfunction scaleComponent(comp: string): string {\r\n const val = parseInt(comp, 16)\r\n const maxIn = (1 << (4 * comp.length)) - 1\r\n return Math.round((val / maxIn) * 255)\r\n .toString(16)\r\n .padStart(2, \"0\")\r\n}\r\n\r\nfunction toHex(r?: string, g?: string, b?: string, hex6?: string): string {\r\n if (hex6) return `#${hex6.toLowerCase()}`\r\n if (r && g && b) return `#${scaleComponent(r)}${scaleComponent(g)}${scaleComponent(b)}`\r\n return \"#000000\"\r\n}\r\n\r\n/**\r\n * Wrap OSC sequence for tmux passthrough\r\n * tmux requires DCS sequences to pass OSC to the underlying terminal\r\n * Format: ESC P tmux; ESC <OSC_SEQUENCE> ESC \\\r\n */\r\nfunction wrapForTmux(osc: string): string {\r\n // Replace ESC with ESC ESC for tmux (escape the escape)\r\n const escaped = osc.replace(/\\x1b/g, \"\\x1b\\x1b\")\r\n return `\\x1bPtmux;${escaped}\\x1b\\\\`\r\n}\r\n\r\nexport class TerminalPalette implements TerminalPaletteDetector {\r\n private stdin: NodeJS.ReadStream\r\n private stdout: NodeJS.WriteStream\r\n private writeFn: WriteFunction\r\n private activeListeners: Array<{ event: string; handler: (...args: any[]) => void }> = []\r\n private activeTimers: Array<NodeJS.Timeout> = []\r\n private inLegacyTmux: boolean\r\n\r\n constructor(stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, writeFn?: WriteFunction, isLegacyTmux?: boolean) {\r\n this.stdin = stdin\r\n this.stdout = stdout\r\n this.writeFn = writeFn || ((data: string | Buffer) => stdout.write(data))\r\n this.inLegacyTmux = isLegacyTmux ?? false\r\n }\r\n\r\n /**\r\n * Write an OSC sequence, wrapping for tmux if needed\r\n */\r\n private writeOsc(osc: string): boolean {\r\n const data = this.inLegacyTmux ? wrapForTmux(osc) : osc\r\n return this.writeFn(data)\r\n }\r\n\r\n cleanup(): void {\r\n for (const { event, handler } of this.activeListeners) {\r\n this.stdin.removeListener(event, handler)\r\n }\r\n this.activeListeners = []\r\n\r\n for (const timer of this.activeTimers) {\r\n clearTimeout(timer)\r\n }\r\n this.activeTimers = []\r\n }\r\n\r\n async detectOSCSupport(timeoutMs = 300): Promise<boolean> {\r\n const out = this.stdout\r\n const inp = this.stdin\r\n\r\n if (!out.isTTY || !inp.isTTY) return false\r\n\r\n return new Promise<boolean>((resolve) => {\r\n let buffer = \"\"\r\n\r\n const onData = (chunk: string | Buffer) => {\r\n buffer += chunk.toString()\r\n // Reset regex lastIndex before testing due to global flag\r\n OSC4_RESPONSE.lastIndex = 0\r\n if (OSC4_RESPONSE.test(buffer)) {\r\n cleanup()\r\n resolve(true)\r\n }\r\n }\r\n\r\n const onTimeout = () => {\r\n cleanup()\r\n resolve(false)\r\n }\r\n\r\n const cleanup = () => {\r\n clearTimeout(timer)\r\n inp.removeListener(\"data\", onData)\r\n // Remove from active tracking\r\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData)\r\n if (listenerIdx !== -1) this.activeListeners.splice(listenerIdx, 1)\r\n const timerIdx = this.activeTimers.indexOf(timer)\r\n if (timerIdx !== -1) this.activeTimers.splice(timerIdx, 1)\r\n }\r\n\r\n const timer = setTimeout(onTimeout, timeoutMs)\r\n this.activeTimers.push(timer)\r\n inp.on(\"data\", onData)\r\n this.activeListeners.push({ event: \"data\", handler: onData })\r\n this.writeOsc(\"\\x1b]4;0;?\\x07\")\r\n })\r\n }\r\n\r\n private async queryPalette(indices: number[], timeoutMs = 1200): Promise<Map<number, Hex>> {\r\n const out = this.stdout\r\n const inp = this.stdin\r\n const results = new Map<number, Hex>()\r\n indices.forEach((i) => results.set(i, null))\r\n\r\n if (!out.isTTY || !inp.isTTY) {\r\n return results\r\n }\r\n\r\n return new Promise<Map<number, Hex>>((resolve) => {\r\n let buffer = \"\"\r\n let lastResponseTime = Date.now()\r\n let idleTimer: NodeJS.Timeout | null = null\r\n\r\n const onData = (chunk: string | Buffer) => {\r\n buffer += chunk.toString()\r\n lastResponseTime = Date.now()\r\n\r\n let m: RegExpExecArray | null\r\n OSC4_RESPONSE.lastIndex = 0\r\n while ((m = OSC4_RESPONSE.exec(buffer))) {\r\n const idx = parseInt(m[1], 10)\r\n if (results.has(idx)) results.set(idx, toHex(m[2], m[3], m[4], m[5]))\r\n }\r\n\r\n if (buffer.length > 8192) buffer = buffer.slice(-4096)\r\n\r\n const done = [...results.values()].filter((v) => v !== null).length\r\n if (done === results.size) {\r\n cleanup()\r\n resolve(results)\r\n return\r\n }\r\n\r\n if (idleTimer) clearTimeout(idleTimer)\r\n idleTimer = setTimeout(() => {\r\n cleanup()\r\n resolve(results)\r\n }, 150)\r\n if (idleTimer) this.activeTimers.push(idleTimer)\r\n }\r\n\r\n const onTimeout = () => {\r\n cleanup()\r\n resolve(results)\r\n }\r\n\r\n const cleanup = () => {\r\n clearTimeout(timer)\r\n if (idleTimer) clearTimeout(idleTimer)\r\n inp.removeListener(\"data\", onData)\r\n // Remove from active tracking\r\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData)\r\n if (listenerIdx !== -1) this.activeListeners.splice(listenerIdx, 1)\r\n const timerIdx = this.activeTimers.indexOf(timer)\r\n if (timerIdx !== -1) this.activeTimers.splice(timerIdx, 1)\r\n if (idleTimer) {\r\n const idleTimerIdx = this.activeTimers.indexOf(idleTimer)\r\n if (idleTimerIdx !== -1) this.activeTimers.splice(idleTimerIdx, 1)\r\n }\r\n }\r\n\r\n const timer = setTimeout(onTimeout, timeoutMs)\r\n this.activeTimers.push(timer)\r\n inp.on(\"data\", onData)\r\n this.activeListeners.push({ event: \"data\", handler: onData })\r\n this.writeOsc(indices.map((i) => `\\x1b]4;${i};?\\x07`).join(\"\"))\r\n })\r\n }\r\n\r\n private async querySpecialColors(timeoutMs = 1200): Promise<Record<number, Hex>> {\r\n const out = this.stdout\r\n const inp = this.stdin\r\n const results: Record<number, Hex> = {\r\n 10: null,\r\n 11: null,\r\n 12: null,\r\n 13: null,\r\n 14: null,\r\n 15: null,\r\n 16: null,\r\n 17: null,\r\n 19: null,\r\n }\r\n\r\n if (!out.isTTY || !inp.isTTY) {\r\n return results\r\n }\r\n\r\n return new Promise<Record<number, Hex>>((resolve) => {\r\n let buffer = \"\"\r\n let idleTimer: NodeJS.Timeout | null = null\r\n\r\n const onData = (chunk: string | Buffer) => {\r\n buffer += chunk.toString()\r\n\r\n let m: RegExpExecArray | null\r\n OSC_SPECIAL_RESPONSE.lastIndex = 0\r\n while ((m = OSC_SPECIAL_RESPONSE.exec(buffer))) {\r\n const idx = parseInt(m[1], 10)\r\n if (idx in results) {\r\n results[idx] = toHex(m[2], m[3], m[4], m[5])\r\n }\r\n }\r\n\r\n if (buffer.length > 8192) buffer = buffer.slice(-4096)\r\n\r\n const done = Object.values(results).filter((v) => v !== null).length\r\n if (done === Object.keys(results).length) {\r\n cleanup()\r\n resolve(results)\r\n return\r\n }\r\n\r\n if (idleTimer) clearTimeout(idleTimer)\r\n idleTimer = setTimeout(() => {\r\n cleanup()\r\n resolve(results)\r\n }, 150)\r\n if (idleTimer) this.activeTimers.push(idleTimer)\r\n }\r\n\r\n const onTimeout = () => {\r\n cleanup()\r\n resolve(results)\r\n }\r\n\r\n const cleanup = () => {\r\n clearTimeout(timer)\r\n if (idleTimer) clearTimeout(idleTimer)\r\n inp.removeListener(\"data\", onData)\r\n const listenerIdx = this.activeListeners.findIndex((l) => l.handler === onData)\r\n if (listenerIdx !== -1) this.activeListeners.splice(listenerIdx, 1)\r\n const timerIdx = this.activeTimers.indexOf(timer)\r\n if (timerIdx !== -1) this.activeTimers.splice(timerIdx, 1)\r\n if (idleTimer) {\r\n const idleTimerIdx = this.activeTimers.indexOf(idleTimer)\r\n if (idleTimerIdx !== -1) this.activeTimers.splice(idleTimerIdx, 1)\r\n }\r\n }\r\n\r\n const timer = setTimeout(onTimeout, timeoutMs)\r\n this.activeTimers.push(timer)\r\n inp.on(\"data\", onData)\r\n this.activeListeners.push({ event: \"data\", handler: onData })\r\n this.writeOsc(\r\n [\r\n \"\\x1b]10;?\\x07\",\r\n \"\\x1b]11;?\\x07\",\r\n \"\\x1b]12;?\\x07\",\r\n \"\\x1b]13;?\\x07\",\r\n \"\\x1b]14;?\\x07\",\r\n \"\\x1b]15;?\\x07\",\r\n \"\\x1b]16;?\\x07\",\r\n \"\\x1b]17;?\\x07\",\r\n \"\\x1b]19;?\\x07\",\r\n ].join(\"\"),\r\n )\r\n })\r\n }\r\n\r\n async detect(options?: GetPaletteOptions): Promise<TerminalColors> {\r\n const { timeout = 5000, size = 16 } = options || {}\r\n const supported = await this.detectOSCSupport()\r\n\r\n if (!supported) {\r\n return {\r\n palette: Array(size).fill(null),\r\n defaultForeground: null,\r\n defaultBackground: null,\r\n cursorColor: null,\r\n mouseForeground: null,\r\n mouseBackground: null,\r\n tekForeground: null,\r\n tekBackground: null,\r\n highlightBackground: null,\r\n highlightForeground: null,\r\n }\r\n }\r\n\r\n const indicesToQuery = [...Array(size).keys()]\r\n const [paletteResults, specialColors] = await Promise.all([\r\n this.queryPalette(indicesToQuery, timeout),\r\n this.querySpecialColors(timeout),\r\n ])\r\n\r\n return {\r\n palette: [...Array(size).keys()].map((i) => paletteResults.get(i) ?? null),\r\n defaultForeground: specialColors[10],\r\n defaultBackground: specialColors[11],\r\n cursorColor: specialColors[12],\r\n mouseForeground: specialColors[13],\r\n mouseBackground: specialColors[14],\r\n tekForeground: specialColors[15],\r\n tekBackground: specialColors[16],\r\n highlightBackground: specialColors[17],\r\n highlightForeground: specialColors[19],\r\n }\r\n }\r\n}\r\n\r\nexport function createTerminalPalette(\r\n stdin: NodeJS.ReadStream,\r\n stdout: NodeJS.WriteStream,\r\n writeFn?: WriteFunction,\r\n isLegacyTmux?: boolean,\r\n): TerminalPaletteDetector {\r\n return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux)\r\n}\r\n",
41
- "import { dlopen, toArrayBuffer, JSCallback, ptr, type Pointer } from \"bun:ffi\"\r\nimport { existsSync } from \"fs\"\r\nimport { EventEmitter } from \"events\"\r\nimport {\r\n type CursorStyle,\r\n type CursorStyleOptions,\r\n type DebugOverlayCorner,\r\n type WidthMethod,\r\n type Highlight,\r\n type LineInfo,\r\n type MousePointerStyle,\r\n} from \"./types\"\r\nexport type { LineInfo, AllocatorStats, BuildOptions }\r\n\r\nimport { RGBA } from \"./lib/RGBA\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport { TextBuffer } from \"./text-buffer\"\r\nimport { env, registerEnvVar } from \"./lib/env\"\r\nimport {\r\n StyledChunkStruct,\r\n HighlightStruct,\r\n LogicalCursorStruct,\r\n VisualCursorStruct,\r\n TerminalCapabilitiesStruct,\r\n EncodedCharStruct,\r\n LineInfoStruct,\r\n MeasureResultStruct,\r\n CursorStateStruct,\r\n CursorStyleOptionsStruct,\r\n GridDrawOptionsStruct,\r\n NativeSpanFeedOptionsStruct,\r\n NativeSpanFeedStatsStruct,\r\n ReserveInfoStruct,\r\n BuildOptionsStruct,\r\n AllocatorStatsStruct,\r\n} from \"./zig-structs\"\r\nimport type {\r\n NativeSpanFeedOptions,\r\n NativeSpanFeedStats,\r\n ReserveInfo,\r\n BuildOptions,\r\n AllocatorStats,\r\n} from \"./zig-structs\"\r\nimport { isBunfsPath } from \"./lib/bunfs\"\r\n\r\nconst module = await import(`@cascadetui/core-${process.platform}-${process.arch}/index.ts`)\r\nlet targetLibPath = module.default\r\n\r\nif (isBunfsPath(targetLibPath)) {\r\n targetLibPath = targetLibPath.replace(\"../\", \"\")\r\n}\r\n\r\nif (!existsSync(targetLibPath)) {\r\n throw new Error(`cascade is not supported on the current platform: ${process.platform}-${process.arch}`)\r\n}\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_DEBUG_FFI\",\r\n description: \"Enable debug logging for the FFI bindings.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FFI\",\r\n description: \"Enable tracing for the FFI bindings.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FFI_SLOW_MS\",\r\n description: \"Log slow FFI calls (>= threshold, in ms).\",\r\n type: \"number\",\r\n default: 0,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FFI_MAX_SAMPLES\",\r\n description: \"Max timing samples to keep per FFI symbol when CASCADE_TRACE_FFI is enabled.\",\r\n type: \"number\",\r\n default: 5000,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FRAME_BREAKDOWN\",\r\n description: \"Enable detailed frame timing breakdown (yoga, render tree, native, stdout write)\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\n// Env vars used in terminal.zig\r\nregisterEnvVar({\r\n name: \"CASCADE_FORCE_WCWIDTH\",\r\n description: \"Use wcwidth for character width calculations\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\nregisterEnvVar({\r\n name: \"CASCADE_FORCE_UNICODE\",\r\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\nregisterEnvVar({\r\n name: \"CASCADE_GRAPHICS\",\r\n description: \"Enable Kitty graphics protocol detection\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\nregisterEnvVar({\r\n name: \"CASCADE_FORCE_NOZWJ\",\r\n description: \"Use no_zwj width method (Unicode without ZWJ joining)\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\n// Cursor & mouse pointer style mappings (avoid recreation on each call)\r\nconst CURSOR_STYLE_TO_ID = { block: 0, line: 1, underline: 2 } as const\r\nconst CURSOR_ID_TO_STYLE = [\"block\", \"line\", \"underline\"] as const\r\nconst MOUSE_STYLE_TO_ID = { default: 0, pointer: 1, text: 2, crosshair: 3, move: 4, \"not-allowed\": 5 } as const\r\n\r\n// Global singleton state for FFI tracing to prevent duplicate exit handlers\r\nlet globalTraceSymbols: Record<string, number[]> | null = null\r\nlet globalFFILogWriter: ReturnType<ReturnType<typeof Bun.file>[\"writer\"]> | null = null\r\nlet exitHandlerRegistered = false\r\n\r\nfunction toPointer(value: number | bigint): Pointer {\r\n if (typeof value === \"bigint\") {\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\r\n throw new Error(\"Pointer exceeds safe integer range\")\r\n }\r\n return Number(value) as Pointer\r\n }\r\n return value as Pointer\r\n}\r\n\r\nfunction toNumber(value: number | bigint): number {\r\n return typeof value === \"bigint\" ? Number(value) : value\r\n}\r\n\r\nfunction getCascadeLib(libPath?: string) {\r\n const resolvedLibPath = libPath || targetLibPath\r\n\r\n const rawSymbols = dlopen(resolvedLibPath, {\r\n // Logging\r\n setLogCallback: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n // Event bus\r\n setEventCallback: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n // Renderer management\r\n createRenderer: {\r\n args: [\"u32\", \"u32\", \"bool\", \"bool\"],\r\n returns: \"ptr\",\r\n },\r\n setTerminalEnvVar: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"usize\"],\r\n returns: \"bool\",\r\n },\r\n destroyRenderer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n setUseThread: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n setBackgroundColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n setRenderOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n updateStats: {\r\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\r\n returns: \"void\",\r\n },\r\n updateMemoryStats: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n render: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n getNextBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n getCurrentBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n\r\n queryPixelResolution: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n createOptimizedBuffer: {\r\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\r\n returns: \"ptr\",\r\n },\r\n destroyOptimizedBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n drawFrameBuffer: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n getBufferWidth: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n getBufferHeight: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n bufferClear: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferGetCharPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetFgPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetBgPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetAttributesPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetRespectAlpha: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n bufferSetRespectAlpha: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n bufferGetId: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n bufferGetRealCharSize: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n bufferWriteResolvedChars: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\r\n returns: \"u32\",\r\n },\r\n\r\n bufferDrawText: {\r\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferSetCellWithAlphaBlending: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferSetCell: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferFillRect: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferResize: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Link API\r\n linkAlloc: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n linkGetUrl: {\r\n args: [\"u32\", \"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n attributesWithLink: {\r\n args: [\"u32\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n attributesGetLinkId: {\r\n args: [\"u32\"],\r\n returns: \"u32\",\r\n },\r\n\r\n resizeRenderer: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Cursor functions (now renderer-scoped)\r\n setCursorPosition: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n setCursorColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n getCursorState: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Cursor and mouse pointer style (combined)\r\n setCursorStyleOptions: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Debug overlay\r\n setDebugOverlay: {\r\n args: [\"ptr\", \"bool\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Terminal control\r\n clearTerminal: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n setTerminalTitle: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n copyToClipboardOSC52: {\r\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\"],\r\n returns: \"bool\",\r\n },\r\n clearClipboardOSC52: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"bool\",\r\n },\r\n\r\n bufferDrawSuperSampleBuffer: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawPackedBuffer: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawGrayscaleBuffer: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawGrayscaleBufferSupersampled: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawGrid: {\r\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawBox: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferPushScissorRect: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferPopScissorRect: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferClearScissorRects: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferPushOpacity: {\r\n args: [\"ptr\", \"f32\"],\r\n returns: \"void\",\r\n },\r\n bufferPopOpacity: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferGetCurrentOpacity: {\r\n args: [\"ptr\"],\r\n returns: \"f32\",\r\n },\r\n bufferClearOpacity: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n addToHitGrid: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n clearCurrentHitGrid: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n hitGridPushScissorRect: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n hitGridPopScissorRect: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n hitGridClearScissorRects: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n addToCurrentHitGridClipped: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n checkHit: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n getHitGridDirty: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n dumpHitGrid: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n dumpBuffers: {\r\n args: [\"ptr\", \"i64\"],\r\n returns: \"void\",\r\n },\r\n dumpStdoutBuffer: {\r\n args: [\"ptr\", \"i64\"],\r\n returns: \"void\",\r\n },\r\n restoreTerminalModes: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n enableMouse: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n disableMouse: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n enableKittyKeyboard: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n disableKittyKeyboard: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n setKittyKeyboardFlags: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n getKittyKeyboardFlags: {\r\n args: [\"ptr\"],\r\n returns: \"u8\",\r\n },\r\n setupTerminal: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n suspendRenderer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n resumeRenderer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n writeOut: {\r\n args: [\"ptr\", \"ptr\", \"u64\"],\r\n returns: \"void\",\r\n },\r\n\r\n // TextBuffer functions\r\n createTextBuffer: {\r\n args: [\"u8\"],\r\n returns: \"ptr\",\r\n },\r\n destroyTextBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetLength: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferGetByteSize: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n\r\n textBufferReset: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferClear: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetDefaultFg: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetDefaultBg: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetDefaultAttributes: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferResetDefaults: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetTabWidth: {\r\n args: [\"ptr\"],\r\n returns: \"u8\",\r\n },\r\n textBufferSetTabWidth: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferRegisterMemBuffer: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\r\n returns: \"u16\",\r\n },\r\n textBufferReplaceMemBuffer: {\r\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\r\n returns: \"bool\",\r\n },\r\n textBufferClearMemRegistry: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetTextFromMem: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferAppend: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n textBufferAppendFromMemId: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferLoadFile: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"bool\",\r\n },\r\n textBufferSetStyledText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferGetPlainText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferAddHighlightByCharRange: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferAddHighlight: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferRemoveHighlightsByRef: {\r\n args: [\"ptr\", \"u16\"],\r\n returns: \"void\",\r\n },\r\n textBufferClearLineHighlights: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferClearAllHighlights: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetSyntaxStyle: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetLineHighlightsPtr: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n textBufferFreeLineHighlights: {\r\n args: [\"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetHighlightCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferGetTextRange: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferGetTextRangeByCoords: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // TextBufferView functions\r\n createTextBufferView: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n destroyTextBufferView: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetSelection: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewResetSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetSelectionInfo: {\r\n args: [\"ptr\"],\r\n returns: \"u64\",\r\n },\r\n textBufferViewSetLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n textBufferViewUpdateSelection: {\r\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewUpdateLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n textBufferViewResetLocalSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetWrapWidth: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetWrapMode: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetViewportSize: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetViewport: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetVirtualLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferViewGetLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetLogicalLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetSelectedText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferViewGetPlainText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferViewSetTabIndicator: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetTabIndicatorColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetTruncate: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewMeasureForDimensions: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n bufferDrawTextBufferView: {\r\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawEditorView: {\r\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // EditorView functions\r\n createEditorView: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"ptr\",\r\n },\r\n destroyEditorView: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetViewportSize: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetViewport: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetViewport: {\r\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetScrollMargin: {\r\n args: [\"ptr\", \"f32\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetWrapMode: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetVirtualLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n editorViewGetTotalVirtualLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n editorViewGetTextBufferView: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n editorViewGetLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetLogicalLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // EditBuffer functions\r\n createEditBuffer: {\r\n args: [\"u8\"],\r\n returns: \"ptr\",\r\n },\r\n destroyEditBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetTextFromMem: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n editBufferReplaceText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferReplaceTextFromMem: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferInsertChar: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferInsertText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteChar: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteCharBackward: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteRange: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferNewLine: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteLine: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorLeft: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorRight: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorUp: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorDown: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGotoLine: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetCursor: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetCursorToLineCol: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetCursorByOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetCursorPosition: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetId: {\r\n args: [\"ptr\"],\r\n returns: \"u16\",\r\n },\r\n editBufferGetTextBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n editBufferDebugLogRope: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferUndo: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferRedo: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferCanUndo: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n editBufferCanRedo: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n editBufferClearHistory: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferClear: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetNextWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetPrevWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetEOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferOffsetToPosition: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n editBufferPositionToOffset: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n editBufferGetLineStartOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n editBufferGetTextRange: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferGetTextRangeByCoords: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // EditorView selection and editing methods\r\n editorViewSetSelection: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewResetSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetSelection: {\r\n args: [\"ptr\"],\r\n returns: \"u64\",\r\n },\r\n editorViewSetLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\r\n returns: \"bool\",\r\n },\r\n editorViewUpdateSelection: {\r\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewUpdateLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\r\n returns: \"bool\",\r\n },\r\n editorViewResetLocalSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetSelectedTextBytes: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editorViewGetCursor: {\r\n args: [\"ptr\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // EditorView VisualCursor methods\r\n editorViewGetVisualCursor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n editorViewMoveUpVisual: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewMoveDownVisual: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewDeleteSelectedText: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetCursorByOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetNextWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetPrevWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetEOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetVisualSOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetVisualEOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetPlaceholderStyledText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetTabIndicator: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetTabIndicatorColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n getArenaAllocatedBytes: {\r\n args: [],\r\n returns: \"usize\",\r\n },\r\n getBuildOptions: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n getAllocatorStats: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // SyntaxStyle functions\r\n createSyntaxStyle: {\r\n args: [],\r\n returns: \"ptr\",\r\n },\r\n destroySyntaxStyle: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n syntaxStyleRegister: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\r\n returns: \"u32\",\r\n },\r\n syntaxStyleResolveByName: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"u32\",\r\n },\r\n syntaxStyleGetStyleCount: {\r\n args: [\"ptr\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // Terminal capability functions\r\n getTerminalCapabilities: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n processCapabilityResponse: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Unicode encoding API\r\n encodeUnicode: {\r\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\r\n returns: \"bool\",\r\n },\r\n freeUnicode: {\r\n args: [\"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawChar: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // NativeSpanFeed\r\n createNativeSpanFeed: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n attachNativeSpanFeed: {\r\n args: [\"ptr\"],\r\n returns: \"i32\",\r\n },\r\n destroyNativeSpanFeed: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n streamWrite: {\r\n args: [\"ptr\", \"ptr\", \"u64\"],\r\n returns: \"i32\",\r\n },\r\n streamCommit: {\r\n args: [\"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamDrainSpans: {\r\n args: [\"ptr\", \"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n streamClose: {\r\n args: [\"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamReserve: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamCommitReserved: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"i32\",\r\n },\r\n streamSetOptions: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamGetStats: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamSetCallback: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n })\r\n\r\n if (env.CASCADE_DEBUG_FFI || env.CASCADE_TRACE_FFI) {\r\n return {\r\n symbols: convertToDebugSymbols(rawSymbols.symbols),\r\n }\r\n }\r\n\r\n return rawSymbols\r\n}\r\n\r\nfunction convertToDebugSymbols<T extends Record<string, any>>(symbols: T): T {\r\n // Initialize global state on first call\r\n if (!globalTraceSymbols) {\r\n globalTraceSymbols = {}\r\n }\r\n\r\n // Initialize global debug log writer on first call\r\n if (env.CASCADE_DEBUG_FFI && !globalFFILogWriter) {\r\n const now = new Date()\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const logFilePath = `ffi_cascade_debug_${timestamp}.log`\r\n globalFFILogWriter = Bun.file(logFilePath).writer()\r\n }\r\n\r\n const slowThresholdMs = typeof env.CASCADE_TRACE_FFI_SLOW_MS === \"number\" ? env.CASCADE_TRACE_FFI_SLOW_MS : 0\r\n const maxSamples =\r\n typeof env.CASCADE_TRACE_FFI_MAX_SAMPLES === \"number\" && env.CASCADE_TRACE_FFI_MAX_SAMPLES > 0\r\n ? env.CASCADE_TRACE_FFI_MAX_SAMPLES\r\n : 5000\r\n\r\n const formatArg = (arg: any): string => {\r\n if (arg === null) return \"null\"\r\n if (arg === undefined) return \"undefined\"\r\n const t = typeof arg\r\n if (t === \"string\") return JSON.stringify(arg.length > 200 ? arg.slice(0, 200) + \"…\" : arg)\r\n if (t === \"number\" || t === \"boolean\" || t === \"bigint\") return String(arg)\r\n\r\n if (arg instanceof Uint8Array) return `Uint8Array(${arg.byteLength})`\r\n if (arg instanceof ArrayBuffer) return `ArrayBuffer(${arg.byteLength})`\r\n\r\n if (Array.isArray(arg)) return `Array(${arg.length})`\r\n\r\n if (t === \"object\") {\r\n const ctor = (arg as any)?.constructor?.name\r\n if (ctor && ctor !== \"Object\") return ctor\r\n try {\r\n const json = JSON.stringify(arg)\r\n if (typeof json === \"string\") return json.length > 200 ? json.slice(0, 200) + \"…\" : json\r\n } catch {\r\n return \"Object\"\r\n }\r\n return \"Object\"\r\n }\r\n\r\n return String(arg)\r\n }\r\n\r\n let slowWriter: any = null\r\n const writeSlow = (line: string) => {\r\n if (slowThresholdMs <= 0) return\r\n if (!slowWriter) {\r\n const now = new Date()\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const slowFilePath = `ffi_cascade_slow_${timestamp}.log`\r\n slowWriter = Bun.file(slowFilePath).writer()\r\n }\r\n const buffer = new TextEncoder().encode(line + \"\\n\")\r\n slowWriter.write(buffer)\r\n }\r\n\r\n const debugSymbols: Record<string, any> = {}\r\n let hasTracing = false\r\n\r\n Object.entries(symbols).forEach(([key, value]) => {\r\n debugSymbols[key] = value\r\n })\r\n\r\n if (env.CASCADE_DEBUG_FFI && globalFFILogWriter) {\r\n const writer = globalFFILogWriter\r\n const writeSync = (msg: string) => {\r\n const buffer = new TextEncoder().encode(msg + \"\\n\")\r\n writer.write(buffer)\r\n writer.flush()\r\n }\r\n\r\n Object.entries(symbols).forEach(([key, value]) => {\r\n if (typeof value === \"function\") {\r\n debugSymbols[key] = (...args: any[]) => {\r\n writeSync(`${key}(${args.map((arg) => String(arg)).join(\", \")})`)\r\n const result = value(...args)\r\n writeSync(`${key} returned: ${String(result)}`)\r\n return result\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (env.CASCADE_TRACE_FFI) {\r\n hasTracing = true\r\n Object.entries(symbols).forEach(([key, value]) => {\r\n if (typeof value === \"function\") {\r\n // Initialize trace array for this symbol if not exists\r\n if (!globalTraceSymbols![key]) {\r\n globalTraceSymbols![key] = []\r\n }\r\n\r\n const originalFunc = debugSymbols[key]\r\n debugSymbols[key] = (...args: any[]) => {\r\n const start = performance.now()\r\n const result = originalFunc(...args)\r\n const end = performance.now()\r\n const dt = end - start\r\n const timings = globalTraceSymbols![key]\r\n timings.push(dt)\r\n if (timings.length > maxSamples) {\r\n timings.splice(0, timings.length - maxSamples)\r\n }\r\n\r\n if (slowThresholdMs > 0 && dt >= slowThresholdMs) {\r\n const argStr = args.map(formatArg).join(\", \")\r\n writeSlow(`${new Date().toISOString()} ${key} ${dt.toFixed(2)}ms (${argStr})`)\r\n }\r\n return result\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Register exit handler only once\r\n if ((env.CASCADE_DEBUG_FFI || env.CASCADE_TRACE_FFI) && !exitHandlerRegistered) {\r\n exitHandlerRegistered = true\r\n\r\n process.on(\"exit\", () => {\r\n try {\r\n if (globalFFILogWriter) {\r\n globalFFILogWriter.end()\r\n }\r\n\r\n if (slowWriter) {\r\n slowWriter.end()\r\n }\r\n } catch (e) {\r\n // Ignore errors on exit\r\n }\r\n\r\n if (globalTraceSymbols) {\r\n const allStats: Array<{\r\n name: string\r\n count: number\r\n total: number\r\n average: number\r\n min: number\r\n max: number\r\n median: number\r\n p90: number\r\n p99: number\r\n }> = []\r\n\r\n for (const [key, timings] of Object.entries(globalTraceSymbols)) {\r\n if (!Array.isArray(timings) || timings.length === 0) {\r\n continue\r\n }\r\n\r\n const sortedTimings = [...timings].sort((a, b) => a - b)\r\n const count = sortedTimings.length\r\n\r\n const total = sortedTimings.reduce((acc, t) => acc + t, 0)\r\n const average = total / count\r\n const min = sortedTimings[0]\r\n const max = sortedTimings[count - 1]\r\n\r\n const medianIndex = Math.floor(count / 2)\r\n const p90Index = Math.floor(count * 0.9)\r\n const p99Index = Math.floor(count * 0.99)\r\n\r\n const median = sortedTimings[medianIndex]\r\n const p90 = sortedTimings[Math.min(p90Index, count - 1)]\r\n const p99 = sortedTimings[Math.min(p99Index, count - 1)]\r\n\r\n allStats.push({\r\n name: key,\r\n count,\r\n total,\r\n average,\r\n min,\r\n max,\r\n median,\r\n p90,\r\n p99,\r\n })\r\n }\r\n\r\n allStats.sort((a, b) => b.total - a.total)\r\n\r\n const lines: string[] = []\r\n lines.push(\"\\n--- Cascade FFI Call Performance ---\")\r\n lines.push(\"Sorted by total time spent (descending)\")\r\n lines.push(\r\n \"-------------------------------------------------------------------------------------------------------------------------\",\r\n )\r\n\r\n if (allStats.length === 0) {\r\n lines.push(\"No trace data collected or all symbols had zero calls.\")\r\n } else {\r\n const nameHeader = \"Symbol\"\r\n const callsHeader = \"Calls\"\r\n const totalHeader = \"Total (ms)\"\r\n const avgHeader = \"Avg (ms)\"\r\n const minHeader = \"Min (ms)\"\r\n const maxHeader = \"Max (ms)\"\r\n const medHeader = \"Med (ms)\"\r\n const p90Header = \"P90 (ms)\"\r\n const p99Header = \"P99 (ms)\"\r\n\r\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length))\r\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length))\r\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length))\r\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length))\r\n const minWidth = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length))\r\n const maxWidth = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length))\r\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length))\r\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length))\r\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length))\r\n\r\n lines.push(\r\n `${nameHeader.padEnd(nameWidth)} | ` +\r\n `${callsHeader.padStart(countWidth)} | ` +\r\n `${totalHeader.padStart(totalWidth)} | ` +\r\n `${avgHeader.padStart(avgWidth)} | ` +\r\n `${minHeader.padStart(minWidth)} | ` +\r\n `${maxHeader.padStart(maxWidth)} | ` +\r\n `${medHeader.padStart(medianWidth)} | ` +\r\n `${p90Header.padStart(p90Width)} | ` +\r\n `${p99Header.padStart(p99Width)}`,\r\n )\r\n lines.push(\r\n `${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(minWidth)}-+-${\"-\".repeat(maxWidth)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`,\r\n )\r\n\r\n allStats.forEach((stat) => {\r\n lines.push(\r\n `${stat.name.padEnd(nameWidth)} | ` +\r\n `${String(stat.count).padStart(countWidth)} | ` +\r\n `${stat.total.toFixed(2).padStart(totalWidth)} | ` +\r\n `${stat.average.toFixed(2).padStart(avgWidth)} | ` +\r\n `${stat.min.toFixed(2).padStart(minWidth)} | ` +\r\n `${stat.max.toFixed(2).padStart(maxWidth)} | ` +\r\n `${stat.median.toFixed(2).padStart(medianWidth)} | ` +\r\n `${stat.p90.toFixed(2).padStart(p90Width)} | ` +\r\n `${stat.p99.toFixed(2).padStart(p99Width)}`,\r\n )\r\n })\r\n }\r\n lines.push(\r\n \"-------------------------------------------------------------------------------------------------------------------------\",\r\n )\r\n\r\n const output = lines.join(\"\\n\")\r\n console.log(output)\r\n\r\n try {\r\n const now = new Date()\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const traceFilePath = `ffi_cascade_trace_${timestamp}.log`\r\n Bun.write(traceFilePath, output)\r\n } catch (e) {\r\n console.error(\"Failed to write FFI trace file:\", e)\r\n }\r\n }\r\n })\r\n }\r\n\r\n return debugSymbols as T\r\n}\r\n\r\n// Log levels matching Zig's LogLevel enum\r\nexport enum LogLevel {\r\n Error = 0,\r\n Warn = 1,\r\n Info = 2,\r\n Debug = 3,\r\n}\r\n\r\n/**\r\n * VisualCursor represents a cursor position with both visual and logical coordinates.\r\n * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE.\r\n * This means visualRow=0 is the first visible line in the viewport, not the first line in the document.\r\n * Logical coordinates (logicalRow, logicalCol) are document-absolute.\r\n */\r\nexport interface VisualCursor {\r\n visualRow: number // Viewport-relative row (0 = top of viewport)\r\n visualCol: number // Viewport-relative column (0 = left edge of viewport when not wrapping)\r\n logicalRow: number // Document-absolute row\r\n logicalCol: number // Document-absolute column\r\n offset: number // Global display-width offset from buffer start\r\n}\r\n\r\nexport interface LogicalCursor {\r\n row: number\r\n col: number\r\n offset: number\r\n}\r\n\r\nexport interface CursorState {\r\n x: number\r\n y: number\r\n visible: boolean\r\n style: CursorStyle\r\n blinking: boolean\r\n color: RGBA\r\n}\r\n\r\nexport type NativeSpanFeedEventHandler = (eventId: number, arg0: Pointer, arg1: number | bigint) => void\r\n\r\nexport interface RenderLib {\r\n createRenderer: (width: number, height: number, options?: { testing?: boolean; remote?: boolean }) => Pointer | null\r\n setTerminalEnvVar: (renderer: Pointer, key: string, value: string) => boolean\r\n destroyRenderer: (renderer: Pointer) => void\r\n setUseThread: (renderer: Pointer, useThread: boolean) => void\r\n setBackgroundColor: (renderer: Pointer, color: RGBA) => void\r\n setRenderOffset: (renderer: Pointer, offset: number) => void\r\n updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void\r\n updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\r\n render: (renderer: Pointer, force: boolean) => void\r\n getNextBuffer: (renderer: Pointer) => OptimizedBuffer\r\n getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer\r\n createOptimizedBuffer: (\r\n width: number,\r\n height: number,\r\n widthMethod: WidthMethod,\r\n respectAlpha?: boolean,\r\n id?: string,\r\n ) => OptimizedBuffer\r\n destroyOptimizedBuffer: (bufferPtr: Pointer) => void\r\n drawFrameBuffer: (\r\n targetBufferPtr: Pointer,\r\n destX: number,\r\n destY: number,\r\n bufferPtr: Pointer,\r\n sourceX?: number,\r\n sourceY?: number,\r\n sourceWidth?: number,\r\n sourceHeight?: number,\r\n ) => void\r\n getBufferWidth: (buffer: Pointer) => number\r\n getBufferHeight: (buffer: Pointer) => number\r\n bufferClear: (buffer: Pointer, color: RGBA) => void\r\n bufferGetCharPtr: (buffer: Pointer) => Pointer\r\n bufferGetFgPtr: (buffer: Pointer) => Pointer\r\n bufferGetBgPtr: (buffer: Pointer) => Pointer\r\n bufferGetAttributesPtr: (buffer: Pointer) => Pointer\r\n bufferGetRespectAlpha: (buffer: Pointer) => boolean\r\n bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void\r\n bufferGetId: (buffer: Pointer) => string\r\n bufferGetRealCharSize: (buffer: Pointer) => number\r\n bufferWriteResolvedChars: (buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\r\n bufferDrawText: (\r\n buffer: Pointer,\r\n text: string,\r\n x: number,\r\n y: number,\r\n color: RGBA,\r\n bgColor?: RGBA,\r\n attributes?: number,\r\n ) => void\r\n bufferSetCellWithAlphaBlending: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) => void\r\n bufferSetCell: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) => void\r\n bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void\r\n bufferDrawSuperSampleBuffer: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n pixelDataPtr: Pointer,\r\n pixelDataLength: number,\r\n format: \"bgra8unorm\" | \"rgba8unorm\",\r\n alignedBytesPerRow: number,\r\n ) => void\r\n bufferDrawPackedBuffer: (\r\n buffer: Pointer,\r\n dataPtr: Pointer,\r\n dataLen: number,\r\n posX: number,\r\n posY: number,\r\n terminalWidthCells: number,\r\n terminalHeightCells: number,\r\n ) => void\r\n bufferDrawGrayscaleBuffer: (\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ) => void\r\n bufferDrawGrayscaleBufferSupersampled: (\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ) => void\r\n bufferDrawGrid: (\r\n buffer: Pointer,\r\n borderChars: Uint32Array,\r\n borderFg: RGBA,\r\n borderBg: RGBA,\r\n columnOffsets: Int32Array,\r\n columnCount: number,\r\n rowOffsets: Int32Array,\r\n rowCount: number,\r\n options: { drawInner: boolean; drawOuter: boolean },\r\n ) => void\r\n bufferDrawBox: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n borderChars: Uint32Array,\r\n packedOptions: number,\r\n borderColor: RGBA,\r\n backgroundColor: RGBA,\r\n title: string | null,\r\n ) => void\r\n bufferResize: (buffer: Pointer, width: number, height: number) => void\r\n resizeRenderer: (renderer: Pointer, width: number, height: number) => void\r\n setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void\r\n setCursorColor: (renderer: Pointer, color: RGBA) => void\r\n getCursorState: (renderer: Pointer) => CursorState\r\n setCursorStyleOptions: (renderer: Pointer, options: CursorStyleOptions) => void\r\n setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void\r\n clearTerminal: (renderer: Pointer) => void\r\n setTerminalTitle: (renderer: Pointer, title: string) => void\r\n copyToClipboardOSC52: (renderer: Pointer, target: number, payload: Uint8Array) => boolean\r\n clearClipboardOSC52: (renderer: Pointer, target: number) => boolean\r\n addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void\r\n clearCurrentHitGrid: (renderer: Pointer) => void\r\n hitGridPushScissorRect: (renderer: Pointer, x: number, y: number, width: number, height: number) => void\r\n hitGridPopScissorRect: (renderer: Pointer) => void\r\n hitGridClearScissorRects: (renderer: Pointer) => void\r\n addToCurrentHitGridClipped: (\r\n renderer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n id: number,\r\n ) => void\r\n checkHit: (renderer: Pointer, x: number, y: number) => number\r\n getHitGridDirty: (renderer: Pointer) => boolean\r\n dumpHitGrid: (renderer: Pointer) => void\r\n dumpBuffers: (renderer: Pointer, timestamp?: number) => void\r\n dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void\r\n restoreTerminalModes: (renderer: Pointer) => void\r\n enableMouse: (renderer: Pointer, enableMovement: boolean) => void\r\n disableMouse: (renderer: Pointer) => void\r\n enableKittyKeyboard: (renderer: Pointer, flags: number) => void\r\n disableKittyKeyboard: (renderer: Pointer) => void\r\n setKittyKeyboardFlags: (renderer: Pointer, flags: number) => void\r\n getKittyKeyboardFlags: (renderer: Pointer) => number\r\n setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void\r\n suspendRenderer: (renderer: Pointer) => void\r\n resumeRenderer: (renderer: Pointer) => void\r\n queryPixelResolution: (renderer: Pointer) => void\r\n writeOut: (renderer: Pointer, data: string | Uint8Array) => void\r\n\r\n // TextBuffer methods\r\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\r\n destroyTextBuffer: (buffer: Pointer) => void\r\n textBufferGetLength: (buffer: Pointer) => number\r\n textBufferGetByteSize: (buffer: Pointer) => number\r\n\r\n textBufferReset: (buffer: Pointer) => void\r\n textBufferClear: (buffer: Pointer) => void\r\n textBufferRegisterMemBuffer: (buffer: Pointer, bytes: Uint8Array, owned?: boolean) => number\r\n textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\r\n textBufferClearMemRegistry: (buffer: Pointer) => void\r\n textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\r\n textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void\r\n textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void\r\n textBufferLoadFile: (buffer: Pointer, path: string) => boolean\r\n textBufferSetStyledText: (\r\n buffer: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\r\n ) => void\r\n textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void\r\n textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void\r\n textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void\r\n textBufferResetDefaults: (buffer: Pointer) => void\r\n textBufferGetTabWidth: (buffer: Pointer) => number\r\n textBufferSetTabWidth: (buffer: Pointer, width: number) => void\r\n textBufferGetLineCount: (buffer: Pointer) => number\r\n getPlainTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n textBufferGetTextRange: (\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n textBufferGetTextRangeByCoords: (\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n\r\n // TextBufferView methods\r\n createTextBufferView: (textBuffer: Pointer) => Pointer\r\n destroyTextBufferView: (view: Pointer) => void\r\n textBufferViewSetSelection: (\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => void\r\n textBufferViewResetSelection: (view: Pointer) => void\r\n textBufferViewGetSelection: (view: Pointer) => { start: number; end: number } | null\r\n textBufferViewSetLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => boolean\r\n textBufferViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\r\n textBufferViewUpdateLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => boolean\r\n textBufferViewResetLocalSelection: (view: Pointer) => void\r\n textBufferViewSetWrapWidth: (view: Pointer, width: number) => void\r\n textBufferViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\r\n textBufferViewSetViewportSize: (view: Pointer, width: number, height: number) => void\r\n textBufferViewSetViewport: (view: Pointer, x: number, y: number, width: number, height: number) => void\r\n textBufferViewGetLineInfo: (view: Pointer) => LineInfo\r\n textBufferViewGetLogicalLineInfo: (view: Pointer) => LineInfo\r\n textBufferViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\r\n textBufferViewGetPlainTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\r\n textBufferViewSetTabIndicator: (view: Pointer, indicator: number) => void\r\n textBufferViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\r\n textBufferViewSetTruncate: (view: Pointer, truncate: boolean) => void\r\n textBufferViewMeasureForDimensions: (\r\n view: Pointer,\r\n width: number,\r\n height: number,\r\n ) => { lineCount: number; maxWidth: number } | null\r\n textBufferViewGetVirtualLineCount: (view: Pointer) => number\r\n\r\n readonly encoder: TextEncoder\r\n readonly decoder: TextDecoder\r\n bufferDrawTextBufferView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\r\n bufferDrawEditorView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\r\n\r\n // EditBuffer methods\r\n createEditBuffer: (widthMethod: WidthMethod) => Pointer\r\n destroyEditBuffer: (buffer: Pointer) => void\r\n editBufferSetText: (buffer: Pointer, textBytes: Uint8Array) => void\r\n editBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\r\n editBufferReplaceText: (buffer: Pointer, textBytes: Uint8Array) => void\r\n editBufferReplaceTextFromMem: (buffer: Pointer, memId: number) => void\r\n editBufferGetText: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n editBufferInsertChar: (buffer: Pointer, char: string) => void\r\n editBufferInsertText: (buffer: Pointer, text: string) => void\r\n editBufferDeleteChar: (buffer: Pointer) => void\r\n editBufferDeleteCharBackward: (buffer: Pointer) => void\r\n editBufferDeleteRange: (buffer: Pointer, startLine: number, startCol: number, endLine: number, endCol: number) => void\r\n editBufferNewLine: (buffer: Pointer) => void\r\n editBufferDeleteLine: (buffer: Pointer) => void\r\n editBufferMoveCursorLeft: (buffer: Pointer) => void\r\n editBufferMoveCursorRight: (buffer: Pointer) => void\r\n editBufferMoveCursorUp: (buffer: Pointer) => void\r\n editBufferMoveCursorDown: (buffer: Pointer) => void\r\n editBufferGotoLine: (buffer: Pointer, line: number) => void\r\n editBufferSetCursor: (buffer: Pointer, line: number, col: number) => void\r\n editBufferSetCursorToLineCol: (buffer: Pointer, line: number, col: number) => void\r\n editBufferSetCursorByOffset: (buffer: Pointer, offset: number) => void\r\n editBufferGetCursorPosition: (buffer: Pointer) => LogicalCursor\r\n editBufferGetId: (buffer: Pointer) => number\r\n editBufferGetTextBuffer: (buffer: Pointer) => Pointer\r\n editBufferDebugLogRope: (buffer: Pointer) => void\r\n editBufferUndo: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n editBufferRedo: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n editBufferCanUndo: (buffer: Pointer) => boolean\r\n editBufferCanRedo: (buffer: Pointer) => boolean\r\n editBufferClearHistory: (buffer: Pointer) => void\r\n editBufferClear: (buffer: Pointer) => void\r\n editBufferGetNextWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\r\n editBufferGetPrevWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\r\n editBufferGetEOL: (buffer: Pointer) => { row: number; col: number; offset: number }\r\n editBufferOffsetToPosition: (buffer: Pointer, offset: number) => { row: number; col: number; offset: number } | null\r\n editBufferPositionToOffset: (buffer: Pointer, row: number, col: number) => number\r\n editBufferGetLineStartOffset: (buffer: Pointer, row: number) => number\r\n editBufferGetTextRange: (\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n editBufferGetTextRangeByCoords: (\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n\r\n // EditorView methods\r\n createEditorView: (editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number) => Pointer\r\n destroyEditorView: (view: Pointer) => void\r\n editorViewSetViewportSize: (view: Pointer, width: number, height: number) => void\r\n editorViewSetViewport: (\r\n view: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n moveCursor: boolean,\r\n ) => void\r\n editorViewGetViewport: (view: Pointer) => { offsetY: number; offsetX: number; height: number; width: number }\r\n editorViewSetScrollMargin: (view: Pointer, margin: number) => void\r\n editorViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\r\n editorViewGetVirtualLineCount: (view: Pointer) => number\r\n editorViewGetTotalVirtualLineCount: (view: Pointer) => number\r\n editorViewGetTextBufferView: (view: Pointer) => Pointer\r\n editorViewSetSelection: (\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => void\r\n editorViewResetSelection: (view: Pointer) => void\r\n editorViewGetSelection: (view: Pointer) => { start: number; end: number } | null\r\n editorViewSetLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ) => boolean\r\n\r\n editorViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\r\n editorViewUpdateLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ) => boolean\r\n\r\n editorViewResetLocalSelection: (view: Pointer) => void\r\n editorViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\r\n editorViewGetCursor: (view: Pointer) => { row: number; col: number }\r\n editorViewGetText: (view: Pointer, maxLength: number) => Uint8Array | null\r\n editorViewGetVisualCursor: (view: Pointer) => VisualCursor\r\n editorViewMoveUpVisual: (view: Pointer) => void\r\n editorViewMoveDownVisual: (view: Pointer) => void\r\n editorViewDeleteSelectedText: (view: Pointer) => void\r\n editorViewSetCursorByOffset: (view: Pointer, offset: number) => void\r\n editorViewGetNextWordBoundary: (view: Pointer) => VisualCursor\r\n editorViewGetPrevWordBoundary: (view: Pointer) => VisualCursor\r\n editorViewGetEOL: (view: Pointer) => VisualCursor\r\n editorViewGetVisualSOL: (view: Pointer) => VisualCursor\r\n editorViewGetVisualEOL: (view: Pointer) => VisualCursor\r\n editorViewGetLineInfo: (view: Pointer) => LineInfo\r\n editorViewGetLogicalLineInfo: (view: Pointer) => LineInfo\r\n editorViewSetPlaceholderStyledText: (\r\n view: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\r\n ) => void\r\n editorViewSetTabIndicator: (view: Pointer, indicator: number) => void\r\n editorViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\r\n\r\n bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void\r\n bufferPopScissorRect: (buffer: Pointer) => void\r\n bufferClearScissorRects: (buffer: Pointer) => void\r\n bufferPushOpacity: (buffer: Pointer, opacity: number) => void\r\n bufferPopOpacity: (buffer: Pointer) => void\r\n bufferGetCurrentOpacity: (buffer: Pointer) => number\r\n bufferClearOpacity: (buffer: Pointer) => void\r\n textBufferAddHighlightByCharRange: (buffer: Pointer, highlight: Highlight) => void\r\n textBufferAddHighlight: (buffer: Pointer, lineIdx: number, highlight: Highlight) => void\r\n textBufferRemoveHighlightsByRef: (buffer: Pointer, hlRef: number) => void\r\n textBufferClearLineHighlights: (buffer: Pointer, lineIdx: number) => void\r\n textBufferClearAllHighlights: (buffer: Pointer) => void\r\n textBufferSetSyntaxStyle: (buffer: Pointer, style: Pointer | null) => void\r\n textBufferGetLineHighlights: (buffer: Pointer, lineIdx: number) => Array<Highlight>\r\n textBufferGetHighlightCount: (buffer: Pointer) => number\r\n\r\n getArenaAllocatedBytes: () => number\r\n getBuildOptions: () => BuildOptions\r\n getAllocatorStats: () => AllocatorStats\r\n\r\n createSyntaxStyle: () => Pointer\r\n destroySyntaxStyle: (style: Pointer) => void\r\n syntaxStyleRegister: (style: Pointer, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number\r\n syntaxStyleResolveByName: (style: Pointer, name: string) => number | null\r\n syntaxStyleGetStyleCount: (style: Pointer) => number\r\n\r\n getTerminalCapabilities: (renderer: Pointer) => any\r\n processCapabilityResponse: (renderer: Pointer, response: string) => void\r\n\r\n encodeUnicode: (\r\n text: string,\r\n widthMethod: WidthMethod,\r\n ) => { ptr: Pointer; data: Array<{ width: number; char: number }> } | null\r\n freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }) => void\r\n bufferDrawChar: (buffer: Pointer, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => void\r\n\r\n registerNativeSpanFeedStream: (stream: Pointer, handler: NativeSpanFeedEventHandler) => void\r\n unregisterNativeSpanFeedStream: (stream: Pointer) => void\r\n createNativeSpanFeed: (options?: NativeSpanFeedOptions | null) => Pointer\r\n attachNativeSpanFeed: (stream: Pointer) => number\r\n destroyNativeSpanFeed: (stream: Pointer) => void\r\n streamWrite: (stream: Pointer, data: Uint8Array | string) => number\r\n streamCommit: (stream: Pointer) => number\r\n streamDrainSpans: (stream: Pointer, outBuffer: Uint8Array, maxSpans: number) => number\r\n streamClose: (stream: Pointer) => number\r\n streamSetOptions: (stream: Pointer, options: NativeSpanFeedOptions) => number\r\n streamGetStats: (stream: Pointer) => NativeSpanFeedStats | null\r\n streamReserve: (stream: Pointer, minLen: number) => { status: number; info: ReserveInfo | null }\r\n streamCommitReserved: (stream: Pointer, length: number) => number\r\n\r\n onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\r\n onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\r\n offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\r\n onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void\r\n}\r\n\r\nclass FFIRenderLib implements RenderLib {\r\n private cascade: ReturnType<typeof getCascadeLib>\r\n public readonly encoder: TextEncoder = new TextEncoder()\r\n public readonly decoder: TextDecoder = new TextDecoder()\r\n private logCallbackWrapper: any // Store the FFI callback wrapper\r\n private eventCallbackWrapper: any // Store the FFI event callback wrapper\r\n private _nativeEvents: EventEmitter = new EventEmitter()\r\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\r\n private nativeSpanFeedCallbackWrapper: JSCallback | null = null\r\n private nativeSpanFeedHandlers = new Map<Pointer, NativeSpanFeedEventHandler>()\r\n\r\n constructor(libPath?: string) {\r\n this.cascade = getCascadeLib(libPath)\r\n this.setupLogging()\r\n this.setupEventBus()\r\n }\r\n\r\n private setupLogging() {\r\n if (this.logCallbackWrapper) {\r\n return\r\n }\r\n\r\n const logCallback = new JSCallback(\r\n (level: number, msgPtr: Pointer, msgLenBigInt: bigint | number) => {\r\n try {\r\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt\r\n\r\n if (msgLen === 0 || !msgPtr) {\r\n return\r\n }\r\n\r\n const msgBuffer = toArrayBuffer(msgPtr, 0, msgLen)\r\n const msgBytes = new Uint8Array(msgBuffer)\r\n const message = this.decoder.decode(msgBytes)\r\n\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message)\r\n break\r\n case LogLevel.Warn:\r\n console.warn(message)\r\n break\r\n case LogLevel.Info:\r\n console.info(message)\r\n break\r\n case LogLevel.Debug:\r\n console.debug(message)\r\n break\r\n default:\r\n console.log(message)\r\n }\r\n } catch (error) {\r\n console.error(\"Error in Zig log callback:\", error)\r\n }\r\n },\r\n {\r\n args: [\"u8\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n )\r\n\r\n this.logCallbackWrapper = logCallback\r\n\r\n if (!logCallback.ptr) {\r\n throw new Error(\"Failed to create log callback\")\r\n }\r\n\r\n this.setLogCallback(logCallback.ptr)\r\n }\r\n\r\n private setLogCallback(callbackPtr: Pointer) {\r\n this.cascade.symbols.setLogCallback(callbackPtr)\r\n }\r\n\r\n private setupEventBus() {\r\n if (this.eventCallbackWrapper) {\r\n return\r\n }\r\n\r\n const eventCallback = new JSCallback(\r\n (namePtr: Pointer, nameLenBigInt: bigint | number, dataPtr: Pointer, dataLenBigInt: bigint | number) => {\r\n try {\r\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt\r\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt\r\n\r\n if (nameLen === 0 || !namePtr) {\r\n return\r\n }\r\n\r\n const nameBuffer = toArrayBuffer(namePtr, 0, nameLen)\r\n const nameBytes = new Uint8Array(nameBuffer)\r\n const eventName = this.decoder.decode(nameBytes)\r\n\r\n let eventData: ArrayBuffer\r\n if (dataLen > 0 && dataPtr) {\r\n eventData = toArrayBuffer(dataPtr, 0, dataLen).slice()\r\n } else {\r\n eventData = new ArrayBuffer(0)\r\n }\r\n\r\n queueMicrotask(() => {\r\n this._nativeEvents.emit(eventName, eventData)\r\n\r\n for (const handler of this._anyEventHandlers) {\r\n handler(eventName, eventData)\r\n }\r\n })\r\n } catch (error) {\r\n console.error(\"Error in native event callback:\", error)\r\n }\r\n },\r\n {\r\n args: [\"ptr\", \"usize\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n )\r\n\r\n this.eventCallbackWrapper = eventCallback\r\n\r\n if (!eventCallback.ptr) {\r\n throw new Error(\"Failed to create event callback\")\r\n }\r\n\r\n this.setEventCallback(eventCallback.ptr)\r\n }\r\n\r\n private ensureNativeSpanFeedCallback(): JSCallback {\r\n if (this.nativeSpanFeedCallbackWrapper) {\r\n return this.nativeSpanFeedCallbackWrapper\r\n }\r\n\r\n const callback = new JSCallback(\r\n (streamPtr: Pointer, eventId: number, arg0: Pointer, arg1: number | bigint) => {\r\n const handler = this.nativeSpanFeedHandlers.get(toPointer(streamPtr))\r\n if (handler) {\r\n handler(eventId, arg0, arg1)\r\n }\r\n },\r\n {\r\n args: [\"ptr\", \"u32\", \"ptr\", \"u64\"],\r\n returns: \"void\",\r\n },\r\n )\r\n\r\n this.nativeSpanFeedCallbackWrapper = callback\r\n\r\n if (!callback.ptr) {\r\n throw new Error(\"Failed to create native span feed callback\")\r\n }\r\n\r\n return callback\r\n }\r\n\r\n private setEventCallback(callbackPtr: Pointer) {\r\n this.cascade.symbols.setEventCallback(callbackPtr)\r\n }\r\n\r\n public createRenderer(width: number, height: number, options: { testing?: boolean; remote?: boolean } = {}) {\r\n const testing = options.testing ?? false\r\n const remote = options.remote ?? false\r\n return this.cascade.symbols.createRenderer(width, height, testing, remote)\r\n }\r\n\r\n public setTerminalEnvVar(renderer: Pointer, key: string, value: string): boolean {\r\n const keyBytes = this.encoder.encode(key)\r\n const valueBytes = this.encoder.encode(value)\r\n return this.cascade.symbols.setTerminalEnvVar(renderer, keyBytes, keyBytes.length, valueBytes, valueBytes.length)\r\n }\r\n\r\n public destroyRenderer(renderer: Pointer): void {\r\n this.cascade.symbols.destroyRenderer(renderer)\r\n }\r\n\r\n public setUseThread(renderer: Pointer, useThread: boolean) {\r\n this.cascade.symbols.setUseThread(renderer, useThread)\r\n }\r\n\r\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\r\n this.cascade.symbols.setBackgroundColor(renderer, color.buffer)\r\n }\r\n\r\n public setRenderOffset(renderer: Pointer, offset: number) {\r\n this.cascade.symbols.setRenderOffset(renderer, offset)\r\n }\r\n\r\n public updateStats(renderer: Pointer, time: number, fps: number, frameCallbackTime: number) {\r\n this.cascade.symbols.updateStats(renderer, time, fps, frameCallbackTime)\r\n }\r\n\r\n public updateMemoryStats(renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) {\r\n this.cascade.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers)\r\n }\r\n\r\n public getNextBuffer(renderer: Pointer): OptimizedBuffer {\r\n const bufferPtr = this.cascade.symbols.getNextBuffer(renderer)\r\n if (!bufferPtr) {\r\n throw new Error(\"Failed to get next buffer\")\r\n }\r\n\r\n const width = this.cascade.symbols.getBufferWidth(bufferPtr)\r\n const height = this.cascade.symbols.getBufferHeight(bufferPtr)\r\n\r\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" })\r\n }\r\n\r\n public getCurrentBuffer(renderer: Pointer): OptimizedBuffer {\r\n const bufferPtr = this.cascade.symbols.getCurrentBuffer(renderer)\r\n if (!bufferPtr) {\r\n throw new Error(\"Failed to get current buffer\")\r\n }\r\n\r\n const width = this.cascade.symbols.getBufferWidth(bufferPtr)\r\n const height = this.cascade.symbols.getBufferHeight(bufferPtr)\r\n\r\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" })\r\n }\r\n\r\n public bufferGetCharPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetCharPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get char pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetFgPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetFgPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get fg pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetBgPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetBgPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get bg pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetAttributesPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetAttributesPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get attributes pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetRespectAlpha(buffer: Pointer): boolean {\r\n return this.cascade.symbols.bufferGetRespectAlpha(buffer)\r\n }\r\n\r\n public bufferSetRespectAlpha(buffer: Pointer, respectAlpha: boolean): void {\r\n this.cascade.symbols.bufferSetRespectAlpha(buffer, respectAlpha)\r\n }\r\n\r\n public bufferGetId(buffer: Pointer): string {\r\n const maxLen = 256\r\n const outBuffer = new Uint8Array(maxLen)\r\n const actualLen = this.cascade.symbols.bufferGetId(buffer, outBuffer, maxLen)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n return this.decoder.decode(outBuffer.slice(0, len))\r\n }\r\n\r\n public bufferGetRealCharSize(buffer: Pointer): number {\r\n return this.cascade.symbols.bufferGetRealCharSize(buffer)\r\n }\r\n\r\n public bufferWriteResolvedChars(buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean): number {\r\n const bytesWritten = this.cascade.symbols.bufferWriteResolvedChars(\r\n buffer,\r\n outputBuffer,\r\n outputBuffer.length,\r\n addLineBreaks,\r\n )\r\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten\r\n }\r\n\r\n public getBufferWidth(buffer: Pointer): number {\r\n return this.cascade.symbols.getBufferWidth(buffer)\r\n }\r\n\r\n public getBufferHeight(buffer: Pointer): number {\r\n return this.cascade.symbols.getBufferHeight(buffer)\r\n }\r\n\r\n public bufferClear(buffer: Pointer, color: RGBA) {\r\n this.cascade.symbols.bufferClear(buffer, color.buffer)\r\n }\r\n\r\n public bufferDrawText(\r\n buffer: Pointer,\r\n text: string,\r\n x: number,\r\n y: number,\r\n color: RGBA,\r\n bgColor?: RGBA,\r\n attributes?: number,\r\n ) {\r\n const textBytes = this.encoder.encode(text)\r\n const textLength = textBytes.byteLength\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = color.buffer\r\n\r\n this.cascade.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg, bg, attributes ?? 0)\r\n }\r\n\r\n public bufferSetCellWithAlphaBlending(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) {\r\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\r\n const bg = bgColor.buffer\r\n const fg = color.buffer\r\n\r\n this.cascade.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\r\n }\r\n\r\n public bufferSetCell(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) {\r\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\r\n const bg = bgColor.buffer\r\n const fg = color.buffer\r\n\r\n this.cascade.symbols.bufferSetCell(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\r\n }\r\n\r\n public bufferFillRect(buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) {\r\n const bg = color.buffer\r\n this.cascade.symbols.bufferFillRect(buffer, x, y, width, height, bg)\r\n }\r\n\r\n public bufferDrawSuperSampleBuffer(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n pixelDataPtr: Pointer,\r\n pixelDataLength: number,\r\n format: \"bgra8unorm\" | \"rgba8unorm\",\r\n alignedBytesPerRow: number,\r\n ): void {\r\n const formatId = format === \"bgra8unorm\" ? 0 : 1\r\n this.cascade.symbols.bufferDrawSuperSampleBuffer(\r\n buffer,\r\n x,\r\n y,\r\n pixelDataPtr,\r\n pixelDataLength,\r\n formatId,\r\n alignedBytesPerRow,\r\n )\r\n }\r\n\r\n public bufferDrawPackedBuffer(\r\n buffer: Pointer,\r\n dataPtr: Pointer,\r\n dataLen: number,\r\n posX: number,\r\n posY: number,\r\n terminalWidthCells: number,\r\n terminalHeightCells: number,\r\n ): void {\r\n this.cascade.symbols.bufferDrawPackedBuffer(\r\n buffer,\r\n dataPtr,\r\n dataLen,\r\n posX,\r\n posY,\r\n terminalWidthCells,\r\n terminalHeightCells,\r\n )\r\n }\r\n\r\n public bufferDrawGrayscaleBuffer(\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ): void {\r\n this.cascade.symbols.bufferDrawGrayscaleBuffer(\r\n buffer,\r\n posX,\r\n posY,\r\n intensitiesPtr,\r\n srcWidth,\r\n srcHeight,\r\n fg?.buffer ?? null,\r\n bg?.buffer ?? null,\r\n )\r\n }\r\n\r\n public bufferDrawGrayscaleBufferSupersampled(\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ): void {\r\n this.cascade.symbols.bufferDrawGrayscaleBufferSupersampled(\r\n buffer,\r\n posX,\r\n posY,\r\n intensitiesPtr,\r\n srcWidth,\r\n srcHeight,\r\n fg?.buffer ?? null,\r\n bg?.buffer ?? null,\r\n )\r\n }\r\n\r\n public bufferDrawGrid(\r\n buffer: Pointer,\r\n borderChars: Uint32Array,\r\n borderFg: RGBA,\r\n borderBg: RGBA,\r\n columnOffsets: Int32Array,\r\n columnCount: number,\r\n rowOffsets: Int32Array,\r\n rowCount: number,\r\n options: { drawInner: boolean; drawOuter: boolean },\r\n ): void {\r\n const optionsBuffer = GridDrawOptionsStruct.pack({\r\n drawInner: options.drawInner,\r\n drawOuter: options.drawOuter,\r\n })\r\n\r\n this.cascade.symbols.bufferDrawGrid(\r\n buffer,\r\n borderChars,\r\n borderFg.buffer,\r\n borderBg.buffer,\r\n columnOffsets,\r\n columnCount,\r\n rowOffsets,\r\n rowCount,\r\n ptr(optionsBuffer),\r\n )\r\n }\r\n\r\n public bufferDrawBox(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n borderChars: Uint32Array,\r\n packedOptions: number,\r\n borderColor: RGBA,\r\n backgroundColor: RGBA,\r\n title: string | null,\r\n ): void {\r\n const titleBytes = title ? this.encoder.encode(title) : null\r\n const titleLen = title ? titleBytes!.length : 0\r\n const titlePtr = title ? titleBytes : null\r\n\r\n this.cascade.symbols.bufferDrawBox(\r\n buffer,\r\n x,\r\n y,\r\n width,\r\n height,\r\n borderChars,\r\n packedOptions,\r\n borderColor.buffer,\r\n backgroundColor.buffer,\r\n titlePtr,\r\n titleLen,\r\n )\r\n }\r\n\r\n public bufferResize(buffer: Pointer, width: number, height: number): void {\r\n this.cascade.symbols.bufferResize(buffer, width, height)\r\n }\r\n\r\n // Link API\r\n public linkAlloc(url: string): number {\r\n const urlBytes = this.encoder.encode(url)\r\n return this.cascade.symbols.linkAlloc(urlBytes, urlBytes.length)\r\n }\r\n\r\n public linkGetUrl(linkId: number, maxLen: number = 512): string {\r\n const outBuffer = new Uint8Array(maxLen)\r\n const actualLen = this.cascade.symbols.linkGetUrl(linkId, outBuffer, maxLen)\r\n return this.decoder.decode(outBuffer.slice(0, actualLen))\r\n }\r\n\r\n public attributesWithLink(baseAttributes: number, linkId: number): number {\r\n return this.cascade.symbols.attributesWithLink(baseAttributes, linkId)\r\n }\r\n\r\n public attributesGetLinkId(attributes: number): number {\r\n return this.cascade.symbols.attributesGetLinkId(attributes)\r\n }\r\n\r\n public resizeRenderer(renderer: Pointer, width: number, height: number) {\r\n this.cascade.symbols.resizeRenderer(renderer, width, height)\r\n }\r\n\r\n public setCursorPosition(renderer: Pointer, x: number, y: number, visible: boolean) {\r\n this.cascade.symbols.setCursorPosition(renderer, x, y, visible)\r\n }\r\n\r\n public setCursorColor(renderer: Pointer, color: RGBA) {\r\n this.cascade.symbols.setCursorColor(renderer, color.buffer)\r\n }\r\n\r\n public getCursorState(renderer: Pointer): CursorState {\r\n const cursorBuffer = new ArrayBuffer(CursorStateStruct.size)\r\n this.cascade.symbols.getCursorState(renderer, ptr(cursorBuffer))\r\n const struct = CursorStateStruct.unpack(cursorBuffer)\r\n\r\n return {\r\n x: struct.x,\r\n y: struct.y,\r\n visible: struct.visible,\r\n style: CURSOR_ID_TO_STYLE[struct.style] ?? \"block\",\r\n blinking: struct.blinking,\r\n color: RGBA.fromValues(struct.r, struct.g, struct.b, struct.a),\r\n }\r\n }\r\n\r\n public setCursorStyleOptions(renderer: Pointer, options: CursorStyleOptions): void {\r\n const style = options.style != null ? CURSOR_STYLE_TO_ID[options.style] : 255\r\n const blinking = options.blinking != null ? (options.blinking ? 1 : 0) : 255\r\n const cursor = options.cursor != null ? MOUSE_STYLE_TO_ID[options.cursor] : 255\r\n\r\n const buffer = CursorStyleOptionsStruct.pack({ style, blinking, color: options.color, cursor })\r\n this.cascade.symbols.setCursorStyleOptions(renderer, ptr(buffer))\r\n }\r\n\r\n public render(renderer: Pointer, force: boolean) {\r\n this.cascade.symbols.render(renderer, force)\r\n }\r\n\r\n public createOptimizedBuffer(\r\n width: number,\r\n height: number,\r\n widthMethod: WidthMethod,\r\n respectAlpha: boolean = false,\r\n id?: string,\r\n ): OptimizedBuffer {\r\n if (Number.isNaN(width) || Number.isNaN(height)) {\r\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack)\r\n }\r\n\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n const idToUse = id || \"unnamed buffer\"\r\n const idBytes = this.encoder.encode(idToUse)\r\n const bufferPtr = this.cascade.symbols.createOptimizedBuffer(\r\n width,\r\n height,\r\n respectAlpha,\r\n widthMethodCode,\r\n idBytes,\r\n idBytes.length,\r\n )\r\n if (!bufferPtr) {\r\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`)\r\n }\r\n\r\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod })\r\n }\r\n\r\n public destroyOptimizedBuffer(bufferPtr: Pointer) {\r\n this.cascade.symbols.destroyOptimizedBuffer(bufferPtr)\r\n }\r\n\r\n public drawFrameBuffer(\r\n targetBufferPtr: Pointer,\r\n destX: number,\r\n destY: number,\r\n bufferPtr: Pointer,\r\n sourceX?: number,\r\n sourceY?: number,\r\n sourceWidth?: number,\r\n sourceHeight?: number,\r\n ) {\r\n const srcX = sourceX ?? 0\r\n const srcY = sourceY ?? 0\r\n const srcWidth = sourceWidth ?? 0\r\n const srcHeight = sourceHeight ?? 0\r\n this.cascade.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight)\r\n }\r\n\r\n public setDebugOverlay(renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) {\r\n this.cascade.symbols.setDebugOverlay(renderer, enabled, corner)\r\n }\r\n\r\n public clearTerminal(renderer: Pointer) {\r\n this.cascade.symbols.clearTerminal(renderer)\r\n }\r\n\r\n public setTerminalTitle(renderer: Pointer, title: string) {\r\n const titleBytes = this.encoder.encode(title)\r\n this.cascade.symbols.setTerminalTitle(renderer, titleBytes, titleBytes.length)\r\n }\r\n\r\n public copyToClipboardOSC52(renderer: Pointer, target: number, payload: Uint8Array): boolean {\r\n return this.cascade.symbols.copyToClipboardOSC52(renderer, target, payload, payload.length)\r\n }\r\n\r\n public clearClipboardOSC52(renderer: Pointer, target: number): boolean {\r\n return this.cascade.symbols.clearClipboardOSC52(renderer, target)\r\n }\r\n\r\n public addToHitGrid(renderer: Pointer, x: number, y: number, width: number, height: number, id: number) {\r\n this.cascade.symbols.addToHitGrid(renderer, x, y, width, height, id)\r\n }\r\n\r\n public clearCurrentHitGrid(renderer: Pointer) {\r\n this.cascade.symbols.clearCurrentHitGrid(renderer)\r\n }\r\n\r\n public hitGridPushScissorRect(renderer: Pointer, x: number, y: number, width: number, height: number) {\r\n this.cascade.symbols.hitGridPushScissorRect(renderer, x, y, width, height)\r\n }\r\n\r\n public hitGridPopScissorRect(renderer: Pointer) {\r\n this.cascade.symbols.hitGridPopScissorRect(renderer)\r\n }\r\n\r\n public hitGridClearScissorRects(renderer: Pointer) {\r\n this.cascade.symbols.hitGridClearScissorRects(renderer)\r\n }\r\n\r\n public addToCurrentHitGridClipped(\r\n renderer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n id: number,\r\n ) {\r\n this.cascade.symbols.addToCurrentHitGridClipped(renderer, x, y, width, height, id)\r\n }\r\n\r\n public checkHit(renderer: Pointer, x: number, y: number): number {\r\n return this.cascade.symbols.checkHit(renderer, x, y)\r\n }\r\n\r\n public getHitGridDirty(renderer: Pointer): boolean {\r\n return this.cascade.symbols.getHitGridDirty(renderer)\r\n }\r\n\r\n public dumpHitGrid(renderer: Pointer): void {\r\n this.cascade.symbols.dumpHitGrid(renderer)\r\n }\r\n\r\n public dumpBuffers(renderer: Pointer, timestamp?: number): void {\r\n const ts = timestamp ?? Date.now()\r\n this.cascade.symbols.dumpBuffers(renderer, ts)\r\n }\r\n\r\n public dumpStdoutBuffer(renderer: Pointer, timestamp?: number): void {\r\n const ts = timestamp ?? Date.now()\r\n this.cascade.symbols.dumpStdoutBuffer(renderer, ts)\r\n }\r\n\r\n public restoreTerminalModes(renderer: Pointer): void {\r\n this.cascade.symbols.restoreTerminalModes(renderer)\r\n }\r\n\r\n public enableMouse(renderer: Pointer, enableMovement: boolean): void {\r\n this.cascade.symbols.enableMouse(renderer, enableMovement)\r\n }\r\n\r\n public disableMouse(renderer: Pointer): void {\r\n this.cascade.symbols.disableMouse(renderer)\r\n }\r\n\r\n public enableKittyKeyboard(renderer: Pointer, flags: number): void {\r\n this.cascade.symbols.enableKittyKeyboard(renderer, flags)\r\n }\r\n\r\n public disableKittyKeyboard(renderer: Pointer): void {\r\n this.cascade.symbols.disableKittyKeyboard(renderer)\r\n }\r\n\r\n public setKittyKeyboardFlags(renderer: Pointer, flags: number): void {\r\n this.cascade.symbols.setKittyKeyboardFlags(renderer, flags)\r\n }\r\n\r\n public getKittyKeyboardFlags(renderer: Pointer): number {\r\n return this.cascade.symbols.getKittyKeyboardFlags(renderer)\r\n }\r\n\r\n public setupTerminal(renderer: Pointer, useAlternateScreen: boolean): void {\r\n this.cascade.symbols.setupTerminal(renderer, useAlternateScreen)\r\n }\r\n\r\n public suspendRenderer(renderer: Pointer): void {\r\n this.cascade.symbols.suspendRenderer(renderer)\r\n }\r\n\r\n public resumeRenderer(renderer: Pointer): void {\r\n this.cascade.symbols.resumeRenderer(renderer)\r\n }\r\n\r\n public queryPixelResolution(renderer: Pointer): void {\r\n this.cascade.symbols.queryPixelResolution(renderer)\r\n }\r\n\r\n /**\r\n * Write data to stdout, synchronizing with the render thread if necessary.\r\n * This should be used for ALL stdout writes to avoid race conditions when\r\n * the render thread is active.\r\n */\r\n public writeOut(renderer: Pointer, data: string | Uint8Array): void {\r\n const bytes = typeof data === \"string\" ? new TextEncoder().encode(data) : data\r\n if (bytes.length === 0) return\r\n this.cascade.symbols.writeOut(renderer, ptr(bytes), bytes.length)\r\n }\r\n\r\n // TextBuffer methods\r\n public createTextBuffer(widthMethod: WidthMethod): TextBuffer {\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n const bufferPtr = this.cascade.symbols.createTextBuffer(widthMethodCode)\r\n if (!bufferPtr) {\r\n throw new Error(`Failed to create TextBuffer`)\r\n }\r\n\r\n return new TextBuffer(this, bufferPtr)\r\n }\r\n\r\n public destroyTextBuffer(buffer: Pointer): void {\r\n this.cascade.symbols.destroyTextBuffer(buffer)\r\n }\r\n\r\n public textBufferGetLength(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetLength(buffer)\r\n }\r\n\r\n public textBufferGetByteSize(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetByteSize(buffer)\r\n }\r\n\r\n public textBufferReset(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferReset(buffer)\r\n }\r\n\r\n public textBufferClear(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferClear(buffer)\r\n }\r\n\r\n public textBufferSetDefaultFg(buffer: Pointer, fg: RGBA | null): void {\r\n const fgPtr = fg ? fg.buffer : null\r\n this.cascade.symbols.textBufferSetDefaultFg(buffer, fgPtr)\r\n }\r\n\r\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\r\n const bgPtr = bg ? bg.buffer : null\r\n this.cascade.symbols.textBufferSetDefaultBg(buffer, bgPtr)\r\n }\r\n\r\n public textBufferSetDefaultAttributes(buffer: Pointer, attributes: number | null): void {\r\n const attrValue = attributes === null ? null : new Uint8Array([attributes])\r\n this.cascade.symbols.textBufferSetDefaultAttributes(buffer, attrValue)\r\n }\r\n\r\n public textBufferResetDefaults(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferResetDefaults(buffer)\r\n }\r\n\r\n public textBufferGetTabWidth(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetTabWidth(buffer)\r\n }\r\n\r\n public textBufferSetTabWidth(buffer: Pointer, width: number): void {\r\n this.cascade.symbols.textBufferSetTabWidth(buffer, width)\r\n }\r\n\r\n public textBufferRegisterMemBuffer(buffer: Pointer, bytes: Uint8Array, owned: boolean = false): number {\r\n const result = this.cascade.symbols.textBufferRegisterMemBuffer(buffer, bytes, bytes.length, owned)\r\n if (result === 0xffff) {\r\n throw new Error(\"Failed to register memory buffer\")\r\n }\r\n return result\r\n }\r\n\r\n public textBufferReplaceMemBuffer(\r\n buffer: Pointer,\r\n memId: number,\r\n bytes: Uint8Array,\r\n owned: boolean = false,\r\n ): boolean {\r\n return this.cascade.symbols.textBufferReplaceMemBuffer(buffer, memId, bytes, bytes.length, owned)\r\n }\r\n\r\n public textBufferClearMemRegistry(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferClearMemRegistry(buffer)\r\n }\r\n\r\n public textBufferSetTextFromMem(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.textBufferSetTextFromMem(buffer, memId)\r\n }\r\n\r\n public textBufferAppend(buffer: Pointer, bytes: Uint8Array): void {\r\n this.cascade.symbols.textBufferAppend(buffer, bytes, bytes.length)\r\n }\r\n\r\n public textBufferAppendFromMemId(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.textBufferAppendFromMemId(buffer, memId)\r\n }\r\n\r\n public textBufferLoadFile(buffer: Pointer, path: string): boolean {\r\n const pathBytes = this.encoder.encode(path)\r\n return this.cascade.symbols.textBufferLoadFile(buffer, pathBytes, pathBytes.length)\r\n }\r\n\r\n public textBufferSetStyledText(\r\n buffer: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\r\n ): void {\r\n if (chunks.length === 0) {\r\n this.textBufferClear(buffer)\r\n return\r\n }\r\n\r\n const chunksBuffer = StyledChunkStruct.packList(chunks)\r\n this.cascade.symbols.textBufferSetStyledText(buffer, ptr(chunksBuffer), chunks.length)\r\n }\r\n\r\n public textBufferGetLineCount(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetLineCount(buffer)\r\n }\r\n\r\n private textBufferGetPlainText(buffer: Pointer, outPtr: Pointer, maxLen: number): number {\r\n const result = this.cascade.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.textBufferGetPlainText(buffer, ptr(outBuffer), maxLength)\r\n\r\n if (actualLen === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, actualLen)\r\n }\r\n\r\n public textBufferGetTextRange(\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.cascade.symbols.textBufferGetTextRange(\r\n buffer,\r\n startOffset,\r\n endOffset,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n\r\n if (len === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public textBufferGetTextRangeByCoords(\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.cascade.symbols.textBufferGetTextRangeByCoords(\r\n buffer,\r\n startRow,\r\n startCol,\r\n endRow,\r\n endCol,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n\r\n if (len === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n // TextBufferView methods\r\n public createTextBufferView(textBuffer: Pointer): Pointer {\r\n const viewPtr = this.cascade.symbols.createTextBufferView(textBuffer)\r\n if (!viewPtr) {\r\n throw new Error(\"Failed to create TextBufferView\")\r\n }\r\n return viewPtr\r\n }\r\n\r\n public destroyTextBufferView(view: Pointer): void {\r\n this.cascade.symbols.destroyTextBufferView(view)\r\n }\r\n\r\n public textBufferViewSetSelection(\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.textBufferViewSetSelection(view, start, end, bg, fg)\r\n }\r\n\r\n public textBufferViewResetSelection(view: Pointer): void {\r\n this.cascade.symbols.textBufferViewResetSelection(view)\r\n }\r\n\r\n public textBufferViewGetSelection(view: Pointer): { start: number; end: number } | null {\r\n const packedInfo = this.textBufferViewGetSelectionInfo(view)\r\n\r\n // Check for no selection marker (0xFFFFFFFF_FFFFFFFF)\r\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\r\n return null\r\n }\r\n\r\n const start = Number(packedInfo >> 32n)\r\n const end = Number(packedInfo & 0xffff_ffffn)\r\n\r\n return { start, end }\r\n }\r\n\r\n private textBufferViewGetSelectionInfo(view: Pointer): bigint {\r\n return this.cascade.symbols.textBufferViewGetSelectionInfo(view)\r\n }\r\n\r\n public textBufferViewSetLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\r\n }\r\n\r\n public textBufferViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.textBufferViewUpdateSelection(view, end, bg, fg)\r\n }\r\n\r\n public textBufferViewUpdateLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\r\n }\r\n\r\n public textBufferViewResetLocalSelection(view: Pointer): void {\r\n this.cascade.symbols.textBufferViewResetLocalSelection(view)\r\n }\r\n\r\n public textBufferViewSetWrapWidth(view: Pointer, width: number): void {\r\n this.cascade.symbols.textBufferViewSetWrapWidth(view, width)\r\n }\r\n\r\n public textBufferViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\r\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\r\n this.cascade.symbols.textBufferViewSetWrapMode(view, modeValue)\r\n }\r\n\r\n public textBufferViewSetViewportSize(view: Pointer, width: number, height: number): void {\r\n this.cascade.symbols.textBufferViewSetViewportSize(view, width, height)\r\n }\r\n\r\n public textBufferViewSetViewport(view: Pointer, x: number, y: number, width: number, height: number): void {\r\n this.cascade.symbols.textBufferViewSetViewport(view, x, y, width, height)\r\n }\r\n\r\n public textBufferViewGetLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.textBufferViewGetLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n public textBufferViewGetLogicalLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n public textBufferViewGetVirtualLineCount(view: Pointer): number {\r\n return this.cascade.symbols.textBufferViewGetVirtualLineCount(view)\r\n }\r\n\r\n private textBufferViewGetLineInfoDirect(view: Pointer, outPtr: Pointer): void {\r\n this.cascade.symbols.textBufferViewGetLineInfoDirect(view, outPtr)\r\n }\r\n\r\n private textBufferViewGetLogicalLineInfoDirect(view: Pointer, outPtr: Pointer): void {\r\n this.cascade.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr)\r\n }\r\n\r\n private textBufferViewGetSelectedText(view: Pointer, outPtr: Pointer, maxLen: number): number {\r\n const result = this.cascade.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer, maxLen: number): number {\r\n const result = this.cascade.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.textBufferViewGetSelectedText(view, ptr(outBuffer), maxLength)\r\n\r\n if (actualLen === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, actualLen)\r\n }\r\n\r\n public textBufferViewGetPlainTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.textBufferViewGetPlainText(view, ptr(outBuffer), maxLength)\r\n\r\n if (actualLen === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, actualLen)\r\n }\r\n\r\n public textBufferViewSetTabIndicator(view: Pointer, indicator: number): void {\r\n this.cascade.symbols.textBufferViewSetTabIndicator(view, indicator)\r\n }\r\n\r\n public textBufferViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\r\n this.cascade.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer)\r\n }\r\n\r\n public textBufferViewSetTruncate(view: Pointer, truncate: boolean): void {\r\n this.cascade.symbols.textBufferViewSetTruncate(view, truncate)\r\n }\r\n\r\n public textBufferViewMeasureForDimensions(\r\n view: Pointer,\r\n width: number,\r\n height: number,\r\n ): { lineCount: number; maxWidth: number } | null {\r\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size)\r\n const resultPtr = ptr(new Uint8Array(resultBuffer))\r\n const success = this.cascade.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr)\r\n if (!success) {\r\n return null\r\n }\r\n const result = MeasureResultStruct.unpack(resultBuffer)\r\n return result\r\n }\r\n\r\n public textBufferAddHighlightByCharRange(buffer: Pointer, highlight: Highlight): void {\r\n const packedHighlight = HighlightStruct.pack(highlight)\r\n this.cascade.symbols.textBufferAddHighlightByCharRange(buffer, ptr(packedHighlight))\r\n }\r\n\r\n public textBufferAddHighlight(buffer: Pointer, lineIdx: number, highlight: Highlight): void {\r\n const packedHighlight = HighlightStruct.pack(highlight)\r\n this.cascade.symbols.textBufferAddHighlight(buffer, lineIdx, ptr(packedHighlight))\r\n }\r\n\r\n public textBufferRemoveHighlightsByRef(buffer: Pointer, hlRef: number): void {\r\n this.cascade.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef)\r\n }\r\n\r\n public textBufferClearLineHighlights(buffer: Pointer, lineIdx: number): void {\r\n this.cascade.symbols.textBufferClearLineHighlights(buffer, lineIdx)\r\n }\r\n\r\n public textBufferClearAllHighlights(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferClearAllHighlights(buffer)\r\n }\r\n\r\n public textBufferSetSyntaxStyle(buffer: Pointer, style: Pointer | null): void {\r\n this.cascade.symbols.textBufferSetSyntaxStyle(buffer, style)\r\n }\r\n\r\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\r\n const outCountBuf = new BigUint64Array(1)\r\n\r\n const nativePtr = this.cascade.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\r\n if (!nativePtr) return []\r\n\r\n const count = Number(outCountBuf[0])\r\n const byteLen = count * HighlightStruct.size\r\n const raw = toArrayBuffer(nativePtr, 0, byteLen)\r\n const results = HighlightStruct.unpackList(raw, count)\r\n\r\n this.cascade.symbols.textBufferFreeLineHighlights(nativePtr, count)\r\n\r\n return results\r\n }\r\n\r\n public textBufferGetHighlightCount(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetHighlightCount(buffer)\r\n }\r\n\r\n public getArenaAllocatedBytes(): number {\r\n const result = this.cascade.symbols.getArenaAllocatedBytes()\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public getBuildOptions(): BuildOptions {\r\n const optionsBuffer = new ArrayBuffer(BuildOptionsStruct.size)\r\n this.cascade.symbols.getBuildOptions(ptr(optionsBuffer))\r\n const options = BuildOptionsStruct.unpack(optionsBuffer)\r\n\r\n return {\r\n gpaSafeStats: !!options.gpaSafeStats,\r\n gpaMemoryLimitTracking: !!options.gpaMemoryLimitTracking,\r\n }\r\n }\r\n\r\n public getAllocatorStats(): AllocatorStats {\r\n const statsBuffer = new ArrayBuffer(AllocatorStatsStruct.size)\r\n this.cascade.symbols.getAllocatorStats(ptr(statsBuffer))\r\n const stats = AllocatorStatsStruct.unpack(statsBuffer)\r\n\r\n return {\r\n totalRequestedBytes: toNumber(stats.totalRequestedBytes),\r\n activeAllocations: toNumber(stats.activeAllocations),\r\n smallAllocations: toNumber(stats.smallAllocations),\r\n largeAllocations: toNumber(stats.largeAllocations),\r\n requestedBytesValid: !!stats.requestedBytesValid,\r\n }\r\n }\r\n\r\n public bufferDrawTextBufferView(buffer: Pointer, view: Pointer, x: number, y: number): void {\r\n this.cascade.symbols.bufferDrawTextBufferView(buffer, view, x, y)\r\n }\r\n\r\n public bufferDrawEditorView(buffer: Pointer, view: Pointer, x: number, y: number): void {\r\n this.cascade.symbols.bufferDrawEditorView(buffer, view, x, y)\r\n }\r\n\r\n // EditorView methods\r\n public createEditorView(editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number): Pointer {\r\n const viewPtr = this.cascade.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight)\r\n if (!viewPtr) {\r\n throw new Error(\"Failed to create EditorView\")\r\n }\r\n return viewPtr\r\n }\r\n\r\n public destroyEditorView(view: Pointer): void {\r\n this.cascade.symbols.destroyEditorView(view)\r\n }\r\n\r\n public editorViewSetViewportSize(view: Pointer, width: number, height: number): void {\r\n this.cascade.symbols.editorViewSetViewportSize(view, width, height)\r\n }\r\n\r\n public editorViewSetViewport(\r\n view: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n moveCursor: boolean,\r\n ): void {\r\n this.cascade.symbols.editorViewSetViewport(view, x, y, width, height, moveCursor)\r\n }\r\n\r\n public editorViewGetViewport(view: Pointer): { offsetY: number; offsetX: number; height: number; width: number } {\r\n const x = new Uint32Array(1)\r\n const y = new Uint32Array(1)\r\n const width = new Uint32Array(1)\r\n const height = new Uint32Array(1)\r\n\r\n this.cascade.symbols.editorViewGetViewport(view, ptr(x), ptr(y), ptr(width), ptr(height))\r\n\r\n return {\r\n offsetX: x[0],\r\n offsetY: y[0],\r\n width: width[0],\r\n height: height[0],\r\n }\r\n }\r\n\r\n public editorViewSetScrollMargin(view: Pointer, margin: number): void {\r\n this.cascade.symbols.editorViewSetScrollMargin(view, margin)\r\n }\r\n\r\n public editorViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\r\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\r\n this.cascade.symbols.editorViewSetWrapMode(view, modeValue)\r\n }\r\n\r\n public editorViewGetVirtualLineCount(view: Pointer): number {\r\n return this.cascade.symbols.editorViewGetVirtualLineCount(view)\r\n }\r\n\r\n public editorViewGetTotalVirtualLineCount(view: Pointer): number {\r\n return this.cascade.symbols.editorViewGetTotalVirtualLineCount(view)\r\n }\r\n\r\n public editorViewGetTextBufferView(view: Pointer): Pointer {\r\n const result = this.cascade.symbols.editorViewGetTextBufferView(view)\r\n if (!result) {\r\n throw new Error(\"Failed to get TextBufferView from EditorView\")\r\n }\r\n return result\r\n }\r\n\r\n public editorViewGetLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.cascade.symbols.editorViewGetLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n public editorViewGetLogicalLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.cascade.symbols.editorViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n // EditBuffer implementations\r\n public createEditBuffer(widthMethod: WidthMethod): Pointer {\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n const bufferPtr = this.cascade.symbols.createEditBuffer(widthMethodCode)\r\n if (!bufferPtr) {\r\n throw new Error(\"Failed to create EditBuffer\")\r\n }\r\n return bufferPtr\r\n }\r\n\r\n public destroyEditBuffer(buffer: Pointer): void {\r\n this.cascade.symbols.destroyEditBuffer(buffer)\r\n }\r\n\r\n public editBufferSetText(buffer: Pointer, textBytes: Uint8Array): void {\r\n this.cascade.symbols.editBufferSetText(buffer, textBytes, textBytes.length)\r\n }\r\n\r\n public editBufferSetTextFromMem(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.editBufferSetTextFromMem(buffer, memId)\r\n }\r\n\r\n public editBufferReplaceText(buffer: Pointer, textBytes: Uint8Array): void {\r\n this.cascade.symbols.editBufferReplaceText(buffer, textBytes, textBytes.length)\r\n }\r\n\r\n public editBufferReplaceTextFromMem(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.editBufferReplaceTextFromMem(buffer, memId)\r\n }\r\n\r\n public editBufferGetText(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferGetText(buffer, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferInsertChar(buffer: Pointer, char: string): void {\r\n const charBytes = this.encoder.encode(char)\r\n this.cascade.symbols.editBufferInsertChar(buffer, charBytes, charBytes.length)\r\n }\r\n\r\n public editBufferInsertText(buffer: Pointer, text: string): void {\r\n const textBytes = this.encoder.encode(text)\r\n this.cascade.symbols.editBufferInsertText(buffer, textBytes, textBytes.length)\r\n }\r\n\r\n public editBufferDeleteChar(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDeleteChar(buffer)\r\n }\r\n\r\n public editBufferDeleteCharBackward(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDeleteCharBackward(buffer)\r\n }\r\n\r\n public editBufferDeleteRange(\r\n buffer: Pointer,\r\n startLine: number,\r\n startCol: number,\r\n endLine: number,\r\n endCol: number,\r\n ): void {\r\n this.cascade.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol)\r\n }\r\n\r\n public editBufferNewLine(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferNewLine(buffer)\r\n }\r\n\r\n public editBufferDeleteLine(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDeleteLine(buffer)\r\n }\r\n\r\n public editBufferMoveCursorLeft(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorLeft(buffer)\r\n }\r\n\r\n public editBufferMoveCursorRight(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorRight(buffer)\r\n }\r\n\r\n public editBufferMoveCursorUp(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorUp(buffer)\r\n }\r\n\r\n public editBufferMoveCursorDown(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorDown(buffer)\r\n }\r\n\r\n public editBufferGotoLine(buffer: Pointer, line: number): void {\r\n this.cascade.symbols.editBufferGotoLine(buffer, line)\r\n }\r\n\r\n public editBufferSetCursor(buffer: Pointer, line: number, byteOffset: number): void {\r\n this.cascade.symbols.editBufferSetCursor(buffer, line, byteOffset)\r\n }\r\n\r\n public editBufferSetCursorToLineCol(buffer: Pointer, line: number, col: number): void {\r\n this.cascade.symbols.editBufferSetCursorToLineCol(buffer, line, col)\r\n }\r\n\r\n public editBufferSetCursorByOffset(buffer: Pointer, offset: number): void {\r\n this.cascade.symbols.editBufferSetCursorByOffset(buffer, offset)\r\n }\r\n\r\n public editBufferGetCursorPosition(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetCursorPosition(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferGetId(buffer: Pointer): number {\r\n return this.cascade.symbols.editBufferGetId(buffer)\r\n }\r\n\r\n public editBufferGetTextBuffer(buffer: Pointer): Pointer {\r\n const result = this.cascade.symbols.editBufferGetTextBuffer(buffer)\r\n if (!result) {\r\n throw new Error(\"Failed to get TextBuffer from EditBuffer\")\r\n }\r\n return result\r\n }\r\n\r\n public editBufferDebugLogRope(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDebugLogRope(buffer)\r\n }\r\n\r\n public editBufferUndo(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferUndo(buffer, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferRedo(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferRedo(buffer, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferCanUndo(buffer: Pointer): boolean {\r\n return this.cascade.symbols.editBufferCanUndo(buffer)\r\n }\r\n\r\n public editBufferCanRedo(buffer: Pointer): boolean {\r\n return this.cascade.symbols.editBufferCanRedo(buffer)\r\n }\r\n\r\n public editBufferClearHistory(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferClearHistory(buffer)\r\n }\r\n\r\n public editBufferClear(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferClear(buffer)\r\n }\r\n\r\n public editBufferGetNextWordBoundary(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetNextWordBoundary(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetPrevWordBoundary(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetEOL(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n const success = this.cascade.symbols.editBufferOffsetToPosition(buffer, offset, ptr(cursorBuffer))\r\n if (!success) return null\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferPositionToOffset(buffer: Pointer, row: number, col: number): number {\r\n return this.cascade.symbols.editBufferPositionToOffset(buffer, row, col)\r\n }\r\n\r\n public editBufferGetLineStartOffset(buffer: Pointer, row: number): number {\r\n return this.cascade.symbols.editBufferGetLineStartOffset(buffer, row)\r\n }\r\n\r\n public editBufferGetTextRange(\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferGetTextRange(\r\n buffer,\r\n startOffset,\r\n endOffset,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferGetTextRangeByCoords(\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferGetTextRangeByCoords(\r\n buffer,\r\n startRow,\r\n startCol,\r\n endRow,\r\n endCol,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n // EditorView selection and editing implementations\r\n public editorViewSetSelection(\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.editorViewSetSelection(view, start, end, bg, fg)\r\n }\r\n\r\n public editorViewResetSelection(view: Pointer): void {\r\n this.cascade.symbols.editorViewResetSelection(view)\r\n }\r\n\r\n public editorViewGetSelection(view: Pointer): { start: number; end: number } | null {\r\n const packedInfo = this.cascade.symbols.editorViewGetSelection(view)\r\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\r\n return null\r\n }\r\n const start = Number(packedInfo >> 32n)\r\n const end = Number(packedInfo & 0xffff_ffffn)\r\n return { start, end }\r\n }\r\n\r\n public editorViewSetLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.editorViewSetLocalSelection(\r\n view,\r\n anchorX,\r\n anchorY,\r\n focusX,\r\n focusY,\r\n bg,\r\n fg,\r\n updateCursor,\r\n followCursor,\r\n )\r\n }\r\n\r\n public editorViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.editorViewUpdateSelection(view, end, bg, fg)\r\n }\r\n\r\n public editorViewUpdateLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.editorViewUpdateLocalSelection(\r\n view,\r\n anchorX,\r\n anchorY,\r\n focusX,\r\n focusY,\r\n bg,\r\n fg,\r\n updateCursor,\r\n followCursor,\r\n )\r\n }\r\n\r\n public editorViewResetLocalSelection(view: Pointer): void {\r\n this.cascade.symbols.editorViewResetLocalSelection(view)\r\n }\r\n\r\n public editorViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editorViewGetSelectedTextBytes(view, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editorViewGetCursor(view: Pointer): { row: number; col: number } {\r\n const row = new Uint32Array(1)\r\n const col = new Uint32Array(1)\r\n this.cascade.symbols.editorViewGetCursor(view, ptr(row), ptr(col))\r\n return { row: row[0], col: col[0] }\r\n }\r\n\r\n public editorViewGetText(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editorViewGetText(view, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetVisualCursor(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewMoveUpVisual(view: Pointer): void {\r\n this.cascade.symbols.editorViewMoveUpVisual(view)\r\n }\r\n\r\n public editorViewMoveDownVisual(view: Pointer): void {\r\n this.cascade.symbols.editorViewMoveDownVisual(view)\r\n }\r\n\r\n public editorViewDeleteSelectedText(view: Pointer): void {\r\n this.cascade.symbols.editorViewDeleteSelectedText(view)\r\n }\r\n\r\n public editorViewSetCursorByOffset(view: Pointer, offset: number): void {\r\n this.cascade.symbols.editorViewSetCursorByOffset(view, offset)\r\n }\r\n\r\n public editorViewGetNextWordBoundary(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetNextWordBoundary(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetPrevWordBoundary(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetEOL(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetEOL(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetVisualSOL(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetVisualSOL(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetVisualEOL(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetVisualEOL(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public bufferPushScissorRect(buffer: Pointer, x: number, y: number, width: number, height: number): void {\r\n this.cascade.symbols.bufferPushScissorRect(buffer, x, y, width, height)\r\n }\r\n\r\n public bufferPopScissorRect(buffer: Pointer): void {\r\n this.cascade.symbols.bufferPopScissorRect(buffer)\r\n }\r\n\r\n public bufferClearScissorRects(buffer: Pointer): void {\r\n this.cascade.symbols.bufferClearScissorRects(buffer)\r\n }\r\n\r\n public bufferPushOpacity(buffer: Pointer, opacity: number): void {\r\n this.cascade.symbols.bufferPushOpacity(buffer, opacity)\r\n }\r\n\r\n public bufferPopOpacity(buffer: Pointer): void {\r\n this.cascade.symbols.bufferPopOpacity(buffer)\r\n }\r\n\r\n public bufferGetCurrentOpacity(buffer: Pointer): number {\r\n return this.cascade.symbols.bufferGetCurrentOpacity(buffer)\r\n }\r\n\r\n public bufferClearOpacity(buffer: Pointer): void {\r\n this.cascade.symbols.bufferClearOpacity(buffer)\r\n }\r\n\r\n public getTerminalCapabilities(renderer: Pointer) {\r\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size)\r\n this.cascade.symbols.getTerminalCapabilities(renderer, ptr(capsBuffer))\r\n\r\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer)\r\n\r\n return {\r\n kitty_keyboard: caps.kitty_keyboard,\r\n kitty_graphics: caps.kitty_graphics,\r\n rgb: caps.rgb,\r\n unicode: caps.unicode,\r\n sgr_pixels: caps.sgr_pixels,\r\n color_scheme_updates: caps.color_scheme_updates,\r\n explicit_width: caps.explicit_width,\r\n scaled_text: caps.scaled_text,\r\n sixel: caps.sixel,\r\n focus_tracking: caps.focus_tracking,\r\n sync: caps.sync,\r\n bracketed_paste: caps.bracketed_paste,\r\n hyperlinks: caps.hyperlinks,\r\n osc52: caps.osc52,\r\n explicit_cursor_positioning: caps.explicit_cursor_positioning,\r\n terminal: {\r\n name: caps.term_name ?? \"\",\r\n version: caps.term_version ?? \"\",\r\n from_xtversion: caps.term_from_xtversion,\r\n },\r\n }\r\n }\r\n\r\n public processCapabilityResponse(renderer: Pointer, response: string): void {\r\n const responseBytes = this.encoder.encode(response)\r\n this.cascade.symbols.processCapabilityResponse(renderer, responseBytes, responseBytes.length)\r\n }\r\n\r\n public encodeUnicode(\r\n text: string,\r\n widthMethod: WidthMethod,\r\n ): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\r\n const textBytes = this.encoder.encode(text)\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n\r\n const outPtrBuffer = new ArrayBuffer(8) // Pointer size\r\n const outLenBuffer = new ArrayBuffer(8) // usize\r\n\r\n const success = this.cascade.symbols.encodeUnicode(\r\n textBytes,\r\n textBytes.length,\r\n ptr(outPtrBuffer),\r\n ptr(outLenBuffer),\r\n widthMethodCode,\r\n )\r\n\r\n if (!success) {\r\n return null\r\n }\r\n\r\n const outPtrView = new BigUint64Array(outPtrBuffer)\r\n const outLenView = new BigUint64Array(outLenBuffer)\r\n\r\n const resultPtr = Number(outPtrView[0]) as Pointer\r\n const resultLen = Number(outLenView[0])\r\n\r\n if (resultLen === 0) {\r\n return { ptr: resultPtr, data: [] }\r\n }\r\n\r\n // Convert pointer to ArrayBuffer and use EncodedCharStruct to unpack the list\r\n const byteLen = resultLen * EncodedCharStruct.size\r\n const raw = toArrayBuffer(resultPtr, 0, byteLen)\r\n const data = EncodedCharStruct.unpackList(raw, resultLen)\r\n\r\n return { ptr: resultPtr, data }\r\n }\r\n\r\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\r\n this.cascade.symbols.freeUnicode(encoded.ptr, encoded.data.length)\r\n }\r\n\r\n public bufferDrawChar(\r\n buffer: Pointer,\r\n char: number,\r\n x: number,\r\n y: number,\r\n fg: RGBA,\r\n bg: RGBA,\r\n attributes: number = 0,\r\n ): void {\r\n this.cascade.symbols.bufferDrawChar(buffer, char, x, y, fg.buffer, bg.buffer, attributes)\r\n }\r\n\r\n public registerNativeSpanFeedStream(stream: Pointer, handler: NativeSpanFeedEventHandler): void {\r\n const callback = this.ensureNativeSpanFeedCallback()\r\n this.nativeSpanFeedHandlers.set(toPointer(stream), handler)\r\n this.cascade.symbols.streamSetCallback(stream, callback.ptr)\r\n }\r\n\r\n public unregisterNativeSpanFeedStream(stream: Pointer): void {\r\n this.cascade.symbols.streamSetCallback(stream, null)\r\n this.nativeSpanFeedHandlers.delete(toPointer(stream))\r\n }\r\n\r\n public createNativeSpanFeed(options?: NativeSpanFeedOptions | null): Pointer {\r\n const optionsBuffer = options == null ? null : NativeSpanFeedOptionsStruct.pack(options)\r\n const streamPtr = this.cascade.symbols.createNativeSpanFeed(optionsBuffer ? ptr(optionsBuffer) : null)\r\n if (!streamPtr) {\r\n throw new Error(\"Failed to create stream\")\r\n }\r\n return toPointer(streamPtr)\r\n }\r\n\r\n public attachNativeSpanFeed(stream: Pointer): number {\r\n return this.cascade.symbols.attachNativeSpanFeed(stream)\r\n }\r\n\r\n public destroyNativeSpanFeed(stream: Pointer): void {\r\n this.cascade.symbols.destroyNativeSpanFeed(stream)\r\n this.nativeSpanFeedHandlers.delete(toPointer(stream))\r\n }\r\n\r\n public streamWrite(stream: Pointer, data: Uint8Array | string): number {\r\n const bytes = typeof data === \"string\" ? this.encoder.encode(data) : data\r\n return this.cascade.symbols.streamWrite(stream, ptr(bytes), bytes.length)\r\n }\r\n\r\n public streamCommit(stream: Pointer): number {\r\n return this.cascade.symbols.streamCommit(stream)\r\n }\r\n\r\n public streamDrainSpans(stream: Pointer, outBuffer: Uint8Array, maxSpans: number): number {\r\n const count = this.cascade.symbols.streamDrainSpans(stream, ptr(outBuffer), maxSpans)\r\n return toNumber(count)\r\n }\r\n\r\n public streamClose(stream: Pointer): number {\r\n return this.cascade.symbols.streamClose(stream)\r\n }\r\n\r\n public streamSetOptions(stream: Pointer, options: NativeSpanFeedOptions): number {\r\n const optionsBuffer = NativeSpanFeedOptionsStruct.pack(options)\r\n return this.cascade.symbols.streamSetOptions(stream, ptr(optionsBuffer))\r\n }\r\n\r\n public streamGetStats(stream: Pointer): NativeSpanFeedStats | null {\r\n const statsBuffer = new ArrayBuffer(NativeSpanFeedStatsStruct.size)\r\n const status = this.cascade.symbols.streamGetStats(stream, ptr(statsBuffer))\r\n if (status !== 0) {\r\n return null\r\n }\r\n const stats = NativeSpanFeedStatsStruct.unpack(statsBuffer)\r\n return {\r\n bytesWritten: typeof stats.bytesWritten === \"bigint\" ? stats.bytesWritten : BigInt(stats.bytesWritten),\r\n spansCommitted: typeof stats.spansCommitted === \"bigint\" ? stats.spansCommitted : BigInt(stats.spansCommitted),\r\n chunks: stats.chunks,\r\n pendingSpans: stats.pendingSpans,\r\n }\r\n }\r\n\r\n public streamReserve(stream: Pointer, minLen: number): { status: number; info: ReserveInfo | null } {\r\n const reserveBuffer = new ArrayBuffer(ReserveInfoStruct.size)\r\n const status = this.cascade.symbols.streamReserve(stream, minLen, ptr(reserveBuffer))\r\n if (status !== 0) {\r\n return { status, info: null }\r\n }\r\n return { status, info: ReserveInfoStruct.unpack(reserveBuffer) }\r\n }\r\n\r\n public streamCommitReserved(stream: Pointer, length: number): number {\r\n return this.cascade.symbols.streamCommitReserved(stream, length)\r\n }\r\n\r\n public createSyntaxStyle(): Pointer {\r\n const stylePtr = this.cascade.symbols.createSyntaxStyle()\r\n if (!stylePtr) {\r\n throw new Error(\"Failed to create SyntaxStyle\")\r\n }\r\n return stylePtr\r\n }\r\n\r\n public destroySyntaxStyle(style: Pointer): void {\r\n this.cascade.symbols.destroySyntaxStyle(style)\r\n }\r\n\r\n public syntaxStyleRegister(\r\n style: Pointer,\r\n name: string,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n attributes: number,\r\n ): number {\r\n const nameBytes = this.encoder.encode(name)\r\n const fgPtr = fg ? fg.buffer : null\r\n const bgPtr = bg ? bg.buffer : null\r\n return this.cascade.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes)\r\n }\r\n\r\n public syntaxStyleResolveByName(style: Pointer, name: string): number | null {\r\n const nameBytes = this.encoder.encode(name)\r\n const id = this.cascade.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length)\r\n return id === 0 ? null : id\r\n }\r\n\r\n public syntaxStyleGetStyleCount(style: Pointer): number {\r\n const result = this.cascade.symbols.syntaxStyleGetStyleCount(style)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public editorViewSetPlaceholderStyledText(\r\n view: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\r\n ): void {\r\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\r\n if (nonEmptyChunks.length === 0) {\r\n this.cascade.symbols.editorViewSetPlaceholderStyledText(view, null, 0)\r\n return\r\n }\r\n\r\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\r\n this.cascade.symbols.editorViewSetPlaceholderStyledText(view, ptr(chunksBuffer), nonEmptyChunks.length)\r\n }\r\n\r\n public editorViewSetTabIndicator(view: Pointer, indicator: number): void {\r\n this.cascade.symbols.editorViewSetTabIndicator(view, indicator)\r\n }\r\n\r\n public editorViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\r\n this.cascade.symbols.editorViewSetTabIndicatorColor(view, color.buffer)\r\n }\r\n\r\n public onNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\r\n this._nativeEvents.on(name, handler)\r\n }\r\n\r\n public onceNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\r\n this._nativeEvents.once(name, handler)\r\n }\r\n\r\n public offNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\r\n this._nativeEvents.off(name, handler)\r\n }\r\n\r\n public onAnyNativeEvent(handler: (name: string, data: ArrayBuffer) => void): void {\r\n this._anyEventHandlers.push(handler)\r\n }\r\n}\r\n\r\nlet cascadeLibPath: string | undefined\r\nlet cascadeLib: RenderLib | undefined\r\n\r\nexport function setRenderLibPath(libPath: string) {\r\n if (cascadeLibPath !== libPath) {\r\n cascadeLibPath = libPath\r\n cascadeLib = undefined\r\n }\r\n}\r\n\r\nexport function resolveRenderLib(): RenderLib {\r\n if (!cascadeLib) {\r\n try {\r\n cascadeLib = new FFIRenderLib(cascadeLibPath)\r\n } catch (error) {\r\n throw new Error(\r\n `Failed to initialize Cascade render library: ${error instanceof Error ? error.message : \"Unknown error\"}`,\r\n )\r\n }\r\n }\r\n return cascadeLib\r\n}\r\n\r\n// Try eager loading\r\ntry {\r\n cascadeLib = new FFIRenderLib(cascadeLibPath)\r\n} catch (error) {}\r\n",
41
+ "import { dlopen, toArrayBuffer, JSCallback, ptr, type Pointer } from \"bun:ffi\"\r\nimport { existsSync } from \"fs\"\r\nimport { EventEmitter } from \"events\"\r\nimport {\r\n type CursorStyle,\r\n type CursorStyleOptions,\r\n type DebugOverlayCorner,\r\n type WidthMethod,\r\n type Highlight,\r\n type LineInfo,\r\n type MousePointerStyle,\r\n} from \"./types\"\r\nexport type { LineInfo, AllocatorStats, BuildOptions }\r\n\r\nimport { RGBA } from \"./lib/RGBA\"\r\nimport { OptimizedBuffer } from \"./buffer\"\r\nimport { TextBuffer } from \"./text-buffer\"\r\nimport { env, registerEnvVar } from \"./lib/env\"\r\nimport {\r\n StyledChunkStruct,\r\n HighlightStruct,\r\n LogicalCursorStruct,\r\n VisualCursorStruct,\r\n TerminalCapabilitiesStruct,\r\n EncodedCharStruct,\r\n LineInfoStruct,\r\n MeasureResultStruct,\r\n CursorStateStruct,\r\n CursorStyleOptionsStruct,\r\n GridDrawOptionsStruct,\r\n NativeSpanFeedOptionsStruct,\r\n NativeSpanFeedStatsStruct,\r\n ReserveInfoStruct,\r\n BuildOptionsStruct,\r\n AllocatorStatsStruct,\r\n} from \"./zig-structs\"\r\nimport type {\r\n NativeSpanFeedOptions,\r\n NativeSpanFeedStats,\r\n ReserveInfo,\r\n BuildOptions,\r\n AllocatorStats,\r\n} from \"./zig-structs\"\r\nimport { isBunfsPath } from \"./lib/bunfs\"\r\n\r\nconst module = await import(`@cascadetui/core-${process.platform}-${process.arch}/index.ts`)\r\nlet targetLibPath = module.default\r\n\r\nif (isBunfsPath(targetLibPath)) {\r\n targetLibPath = targetLibPath.replace(\"../\", \"\")\r\n}\r\n\r\nif (!existsSync(targetLibPath)) {\r\n throw new Error(`cascade is not supported on the current platform: ${process.platform}-${process.arch}`)\r\n}\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_DEBUG_FFI\",\r\n description: \"Enable debug logging for the FFI bindings.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FFI\",\r\n description: \"Enable tracing for the FFI bindings.\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FFI_SLOW_MS\",\r\n description: \"Log slow FFI calls (>= threshold, in ms).\",\r\n type: \"number\",\r\n default: 0,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FFI_MAX_SAMPLES\",\r\n description: \"Max timing samples to keep per FFI symbol when CASCADE_TRACE_FFI is enabled.\",\r\n type: \"number\",\r\n default: 5000,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_TRACE_FRAME_BREAKDOWN\",\r\n description: \"Enable detailed frame timing breakdown (yoga, render tree, native, stdout write)\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_FREEZE_THRESHOLD_MS\",\r\n description: \"Threshold in ms to detect a freeze (FFI call that blocks longer than this). Set to 0 to disable.\",\r\n type: \"number\",\r\n default: 100,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_FREEZE_STACK_DEPTH\",\r\n description: \"Number of stack frames to capture on freeze detection.\",\r\n type: \"number\",\r\n default: 20,\r\n})\r\n\r\nregisterEnvVar({\r\n name: \"CASCADE_FREEZE_MEMORY_SNAPSHOT\",\r\n description: \"Capture memory stats on freeze detection.\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\n\r\n// Env vars used in terminal.zig\r\nregisterEnvVar({\r\n name: \"CASCADE_FORCE_WCWIDTH\",\r\n description: \"Use wcwidth for character width calculations\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\nregisterEnvVar({\r\n name: \"CASCADE_FORCE_UNICODE\",\r\n description: \"Force Mode 2026 Unicode support in terminal capabilities\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\nregisterEnvVar({\r\n name: \"CASCADE_GRAPHICS\",\r\n description: \"Enable Kitty graphics protocol detection\",\r\n type: \"boolean\",\r\n default: true,\r\n})\r\nregisterEnvVar({\r\n name: \"CASCADE_FORCE_NOZWJ\",\r\n description: \"Use no_zwj width method (Unicode without ZWJ joining)\",\r\n type: \"boolean\",\r\n default: false,\r\n})\r\n\r\n// Cursor & mouse pointer style mappings (avoid recreation on each call)\r\nconst CURSOR_STYLE_TO_ID = { block: 0, line: 1, underline: 2 } as const\r\nconst CURSOR_ID_TO_STYLE = [\"block\", \"line\", \"underline\"] as const\r\nconst MOUSE_STYLE_TO_ID = { default: 0, pointer: 1, text: 2, crosshair: 3, move: 4, \"not-allowed\": 5 } as const\r\n\r\n// Global singleton state for FFI tracing to prevent duplicate exit handlers\r\nlet globalTraceSymbols: Record<string, number[]> | null = null\r\nlet globalFFILogWriter: ReturnType<ReturnType<typeof Bun.file>[\"writer\"]> | null = null\r\nlet globalFreezeWriter: ReturnType<ReturnType<typeof Bun.file>[\"writer\"]> | null = null\r\nlet exitHandlerRegistered = false\r\n\r\n// Freeze detection state\r\ninterface FreezeEvent {\r\n timestamp: string\r\n symbol: string\r\n durationMs: number\r\n thresholdMs: number\r\n args: string\r\n result: string\r\n stackTrace: string[]\r\n memoryUsage: NodeJS.MemoryUsage | null\r\n cpuUsage: NodeJS.CpuUsage | null\r\n callChain: string[] // Previous calls leading to freeze\r\n}\r\nlet freezeEvents: FreezeEvent[] = []\r\nlet recentCalls: Array<{ symbol: string; timestamp: number; duration: number }> = []\r\nconst MAX_RECENT_CALLS = 50\r\n\r\nfunction toPointer(value: number | bigint): Pointer {\r\n if (typeof value === \"bigint\") {\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\r\n throw new Error(\"Pointer exceeds safe integer range\")\r\n }\r\n return Number(value) as Pointer\r\n }\r\n return value as Pointer\r\n}\r\n\r\nfunction toNumber(value: number | bigint): number {\r\n return typeof value === \"bigint\" ? Number(value) : value\r\n}\r\n\r\nfunction getCascadeLib(libPath?: string) {\r\n const resolvedLibPath = libPath || targetLibPath\r\n\r\n const rawSymbols = dlopen(resolvedLibPath, {\r\n // Logging\r\n setLogCallback: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n // Event bus\r\n setEventCallback: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n // Renderer management\r\n createRenderer: {\r\n args: [\"u32\", \"u32\", \"bool\", \"bool\"],\r\n returns: \"ptr\",\r\n },\r\n setTerminalEnvVar: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"usize\"],\r\n returns: \"bool\",\r\n },\r\n destroyRenderer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n setUseThread: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n setBackgroundColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n setRenderOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n updateStats: {\r\n args: [\"ptr\", \"f64\", \"u32\", \"f64\"],\r\n returns: \"void\",\r\n },\r\n updateMemoryStats: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n render: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n getNextBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n getCurrentBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n\r\n queryPixelResolution: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n createOptimizedBuffer: {\r\n args: [\"u32\", \"u32\", \"bool\", \"u8\", \"ptr\", \"usize\"],\r\n returns: \"ptr\",\r\n },\r\n destroyOptimizedBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n drawFrameBuffer: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n getBufferWidth: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n getBufferHeight: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n bufferClear: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferGetCharPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetFgPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetBgPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetAttributesPtr: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n bufferGetRespectAlpha: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n bufferSetRespectAlpha: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n bufferGetId: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n bufferGetRealCharSize: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n bufferWriteResolvedChars: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\r\n returns: \"u32\",\r\n },\r\n\r\n bufferDrawText: {\r\n args: [\"ptr\", \"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferSetCellWithAlphaBlending: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferSetCell: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferFillRect: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferResize: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Link API\r\n linkAlloc: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n linkGetUrl: {\r\n args: [\"u32\", \"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n attributesWithLink: {\r\n args: [\"u32\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n attributesGetLinkId: {\r\n args: [\"u32\"],\r\n returns: \"u32\",\r\n },\r\n\r\n resizeRenderer: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Cursor functions (now renderer-scoped)\r\n setCursorPosition: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n setCursorColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n getCursorState: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Cursor and mouse pointer style (combined)\r\n setCursorStyleOptions: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Debug overlay\r\n setDebugOverlay: {\r\n args: [\"ptr\", \"bool\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Terminal control\r\n clearTerminal: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n setTerminalTitle: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n copyToClipboardOSC52: {\r\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\"],\r\n returns: \"bool\",\r\n },\r\n clearClipboardOSC52: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"bool\",\r\n },\r\n\r\n bufferDrawSuperSampleBuffer: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\", \"u8\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawPackedBuffer: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawGrayscaleBuffer: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawGrayscaleBufferSupersampled: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawGrid: {\r\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\", \"u32\", \"ptr\", \"u32\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawBox: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"ptr\", \"u32\", \"ptr\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferPushScissorRect: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n bufferPopScissorRect: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferClearScissorRects: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferPushOpacity: {\r\n args: [\"ptr\", \"f32\"],\r\n returns: \"void\",\r\n },\r\n bufferPopOpacity: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n bufferGetCurrentOpacity: {\r\n args: [\"ptr\"],\r\n returns: \"f32\",\r\n },\r\n bufferClearOpacity: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n addToHitGrid: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n clearCurrentHitGrid: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n hitGridPushScissorRect: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n hitGridPopScissorRect: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n hitGridClearScissorRects: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n addToCurrentHitGridClipped: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n checkHit: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n getHitGridDirty: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n dumpHitGrid: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n dumpBuffers: {\r\n args: [\"ptr\", \"i64\"],\r\n returns: \"void\",\r\n },\r\n dumpStdoutBuffer: {\r\n args: [\"ptr\", \"i64\"],\r\n returns: \"void\",\r\n },\r\n restoreTerminalModes: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n enableMouse: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n disableMouse: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n enableKittyKeyboard: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n disableKittyKeyboard: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n setKittyKeyboardFlags: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n getKittyKeyboardFlags: {\r\n args: [\"ptr\"],\r\n returns: \"u8\",\r\n },\r\n setupTerminal: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n suspendRenderer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n resumeRenderer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n writeOut: {\r\n args: [\"ptr\", \"ptr\", \"u64\"],\r\n returns: \"void\",\r\n },\r\n\r\n // TextBuffer functions\r\n createTextBuffer: {\r\n args: [\"u8\"],\r\n returns: \"ptr\",\r\n },\r\n destroyTextBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetLength: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferGetByteSize: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n\r\n textBufferReset: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferClear: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetDefaultFg: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetDefaultBg: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetDefaultAttributes: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferResetDefaults: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetTabWidth: {\r\n args: [\"ptr\"],\r\n returns: \"u8\",\r\n },\r\n textBufferSetTabWidth: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferRegisterMemBuffer: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"bool\"],\r\n returns: \"u16\",\r\n },\r\n textBufferReplaceMemBuffer: {\r\n args: [\"ptr\", \"u8\", \"ptr\", \"usize\", \"bool\"],\r\n returns: \"bool\",\r\n },\r\n textBufferClearMemRegistry: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetTextFromMem: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferAppend: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n textBufferAppendFromMemId: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferLoadFile: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"bool\",\r\n },\r\n textBufferSetStyledText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferGetPlainText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferAddHighlightByCharRange: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferAddHighlight: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferRemoveHighlightsByRef: {\r\n args: [\"ptr\", \"u16\"],\r\n returns: \"void\",\r\n },\r\n textBufferClearLineHighlights: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferClearAllHighlights: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferSetSyntaxStyle: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetLineHighlightsPtr: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n textBufferFreeLineHighlights: {\r\n args: [\"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n textBufferGetHighlightCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferGetTextRange: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferGetTextRangeByCoords: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // TextBufferView functions\r\n createTextBufferView: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n destroyTextBufferView: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetSelection: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewResetSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetSelectionInfo: {\r\n args: [\"ptr\"],\r\n returns: \"u64\",\r\n },\r\n textBufferViewSetLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n textBufferViewUpdateSelection: {\r\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewUpdateLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n textBufferViewResetLocalSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetWrapWidth: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetWrapMode: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetViewportSize: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetViewport: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetVirtualLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n textBufferViewGetLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetLogicalLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewGetSelectedText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferViewGetPlainText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n textBufferViewSetTabIndicator: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetTabIndicatorColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewSetTruncate: {\r\n args: [\"ptr\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n textBufferViewMeasureForDimensions: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n bufferDrawTextBufferView: {\r\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawEditorView: {\r\n args: [\"ptr\", \"ptr\", \"i32\", \"i32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // EditorView functions\r\n createEditorView: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"ptr\",\r\n },\r\n destroyEditorView: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetViewportSize: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetViewport: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"bool\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetViewport: {\r\n args: [\"ptr\", \"ptr\", \"ptr\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetScrollMargin: {\r\n args: [\"ptr\", \"f32\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetWrapMode: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetVirtualLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n editorViewGetTotalVirtualLineCount: {\r\n args: [\"ptr\"],\r\n returns: \"u32\",\r\n },\r\n editorViewGetTextBufferView: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n editorViewGetLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetLogicalLineInfoDirect: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // EditBuffer functions\r\n createEditBuffer: {\r\n args: [\"u8\"],\r\n returns: \"ptr\",\r\n },\r\n destroyEditBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetTextFromMem: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n editBufferReplaceText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferReplaceTextFromMem: {\r\n args: [\"ptr\", \"u8\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferInsertChar: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferInsertText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteChar: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteCharBackward: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteRange: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferNewLine: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferDeleteLine: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorLeft: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorRight: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorUp: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferMoveCursorDown: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGotoLine: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetCursor: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetCursorToLineCol: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferSetCursorByOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetCursorPosition: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetId: {\r\n args: [\"ptr\"],\r\n returns: \"u16\",\r\n },\r\n editBufferGetTextBuffer: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n editBufferDebugLogRope: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferUndo: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferRedo: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferCanUndo: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n editBufferCanRedo: {\r\n args: [\"ptr\"],\r\n returns: \"bool\",\r\n },\r\n editBufferClearHistory: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferClear: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetNextWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetPrevWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferGetEOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editBufferOffsetToPosition: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"bool\",\r\n },\r\n editBufferPositionToOffset: {\r\n args: [\"ptr\", \"u32\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n editBufferGetLineStartOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n editBufferGetTextRange: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editBufferGetTextRangeByCoords: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"u32\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // EditorView selection and editing methods\r\n editorViewSetSelection: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewResetSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetSelection: {\r\n args: [\"ptr\"],\r\n returns: \"u64\",\r\n },\r\n editorViewSetLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\r\n returns: \"bool\",\r\n },\r\n editorViewUpdateSelection: {\r\n args: [\"ptr\", \"u32\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewUpdateLocalSelection: {\r\n args: [\"ptr\", \"i32\", \"i32\", \"i32\", \"i32\", \"ptr\", \"ptr\", \"bool\", \"bool\"],\r\n returns: \"bool\",\r\n },\r\n editorViewResetLocalSelection: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetSelectedTextBytes: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n editorViewGetCursor: {\r\n args: [\"ptr\", \"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // EditorView VisualCursor methods\r\n editorViewGetVisualCursor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n editorViewMoveUpVisual: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewMoveDownVisual: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewDeleteSelectedText: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetCursorByOffset: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetNextWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetPrevWordBoundary: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetEOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetVisualSOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewGetVisualEOL: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetPlaceholderStyledText: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetTabIndicator: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n editorViewSetTabIndicatorColor: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n getArenaAllocatedBytes: {\r\n args: [],\r\n returns: \"usize\",\r\n },\r\n getBuildOptions: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n getAllocatorStats: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n\r\n // SyntaxStyle functions\r\n createSyntaxStyle: {\r\n args: [],\r\n returns: \"ptr\",\r\n },\r\n destroySyntaxStyle: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n syntaxStyleRegister: {\r\n args: [\"ptr\", \"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\r\n returns: \"u32\",\r\n },\r\n syntaxStyleResolveByName: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"u32\",\r\n },\r\n syntaxStyleGetStyleCount: {\r\n args: [\"ptr\"],\r\n returns: \"usize\",\r\n },\r\n\r\n // Terminal capability functions\r\n getTerminalCapabilities: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n processCapabilityResponse: {\r\n args: [\"ptr\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n\r\n // Unicode encoding API\r\n encodeUnicode: {\r\n args: [\"ptr\", \"usize\", \"ptr\", \"ptr\", \"u8\"],\r\n returns: \"bool\",\r\n },\r\n freeUnicode: {\r\n args: [\"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n bufferDrawChar: {\r\n args: [\"ptr\", \"u32\", \"u32\", \"u32\", \"ptr\", \"ptr\", \"u32\"],\r\n returns: \"void\",\r\n },\r\n\r\n // NativeSpanFeed\r\n createNativeSpanFeed: {\r\n args: [\"ptr\"],\r\n returns: \"ptr\",\r\n },\r\n attachNativeSpanFeed: {\r\n args: [\"ptr\"],\r\n returns: \"i32\",\r\n },\r\n destroyNativeSpanFeed: {\r\n args: [\"ptr\"],\r\n returns: \"void\",\r\n },\r\n streamWrite: {\r\n args: [\"ptr\", \"ptr\", \"u64\"],\r\n returns: \"i32\",\r\n },\r\n streamCommit: {\r\n args: [\"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamDrainSpans: {\r\n args: [\"ptr\", \"ptr\", \"u32\"],\r\n returns: \"u32\",\r\n },\r\n streamClose: {\r\n args: [\"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamReserve: {\r\n args: [\"ptr\", \"u32\", \"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamCommitReserved: {\r\n args: [\"ptr\", \"u32\"],\r\n returns: \"i32\",\r\n },\r\n streamSetOptions: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamGetStats: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"i32\",\r\n },\r\n streamSetCallback: {\r\n args: [\"ptr\", \"ptr\"],\r\n returns: \"void\",\r\n },\r\n })\r\n\r\n if (env.CASCADE_DEBUG_FFI || env.CASCADE_TRACE_FFI) {\r\n return {\r\n symbols: convertToDebugSymbols(rawSymbols.symbols),\r\n }\r\n }\r\n\r\n return rawSymbols\r\n}\r\n\r\nfunction convertToDebugSymbols<T extends Record<string, any>>(symbols: T): T {\r\n // Initialize global state on first call\r\n if (!globalTraceSymbols) {\r\n globalTraceSymbols = {}\r\n }\r\n\r\n // Initialize global debug log writer on first call\r\n if (env.CASCADE_DEBUG_FFI && !globalFFILogWriter) {\r\n const now = new Date()\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const logFilePath = `ffi_cascade_debug_${timestamp}.log`\r\n globalFFILogWriter = Bun.file(logFilePath).writer()\r\n }\r\n\r\n const slowThresholdMs = typeof env.CASCADE_TRACE_FFI_SLOW_MS === \"number\" ? env.CASCADE_TRACE_FFI_SLOW_MS : 0\r\n const maxSamples =\r\n typeof env.CASCADE_TRACE_FFI_MAX_SAMPLES === \"number\" && env.CASCADE_TRACE_FFI_MAX_SAMPLES > 0\r\n ? env.CASCADE_TRACE_FFI_MAX_SAMPLES\r\n : 5000\r\n\r\n const formatArg = (arg: any): string => {\r\n if (arg === null) return \"null\"\r\n if (arg === undefined) return \"undefined\"\r\n const t = typeof arg\r\n if (t === \"string\") return JSON.stringify(arg.length > 200 ? arg.slice(0, 200) + \"…\" : arg)\r\n if (t === \"number\" || t === \"boolean\" || t === \"bigint\") return String(arg)\r\n\r\n if (arg instanceof Uint8Array) return `Uint8Array(${arg.byteLength})`\r\n if (arg instanceof ArrayBuffer) return `ArrayBuffer(${arg.byteLength})`\r\n\r\n if (Array.isArray(arg)) return `Array(${arg.length})`\r\n\r\n if (t === \"object\") {\r\n const ctor = (arg as any)?.constructor?.name\r\n if (ctor && ctor !== \"Object\") return ctor\r\n try {\r\n const json = JSON.stringify(arg)\r\n if (typeof json === \"string\") return json.length > 200 ? json.slice(0, 200) + \"…\" : json\r\n } catch {\r\n return \"Object\"\r\n }\r\n return \"Object\"\r\n }\r\n\r\n return String(arg)\r\n }\r\n\r\n let slowWriter: any = null\r\n const writeSlow = (line: string) => {\r\n if (slowThresholdMs <= 0) return\r\n if (!slowWriter) {\r\n const now = new Date()\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const slowFilePath = `ffi_cascade_slow_${timestamp}.log`\r\n slowWriter = Bun.file(slowFilePath).writer()\r\n }\r\n const buffer = new TextEncoder().encode(line + \"\\n\")\r\n slowWriter.write(buffer)\r\n }\r\n\r\n // Freeze detection helpers\r\n const freezeThresholdMs = typeof env.CASCADE_FREEZE_THRESHOLD_MS === \"number\" ? env.CASCADE_FREEZE_THRESHOLD_MS : 100\r\n const freezeStackDepth = typeof env.CASCADE_FREEZE_STACK_DEPTH === \"number\" ? env.CASCADE_FREEZE_STACK_DEPTH : 20\r\n const freezeMemorySnapshot = env.CASCADE_FREEZE_MEMORY_SNAPSHOT !== false\r\n\r\n const captureStackTrace = (): string[] => {\r\n const stack = new Error().stack?.split(\"\\n\") || []\r\n const frames: string[] = []\r\n for (let i = 2; i < Math.min(stack.length, freezeStackDepth + 2); i++) {\r\n const line = stack[i]?.trim()\r\n if (line) frames.push(line)\r\n }\r\n return frames\r\n }\r\n\r\n const captureFreezeEvent = (\r\n symbol: string,\r\n durationMs: number,\r\n args: string,\r\n result: string,\r\n ): FreezeEvent => {\r\n const callChain = recentCalls\r\n .slice(-10)\r\n .map(c => `${c.symbol}(${c.duration.toFixed(2)}ms)`)\r\n .reverse()\r\n\r\n return {\r\n timestamp: new Date().toISOString(),\r\n symbol,\r\n durationMs,\r\n thresholdMs: freezeThresholdMs,\r\n args,\r\n result,\r\n stackTrace: captureStackTrace(),\r\n memoryUsage: freezeMemorySnapshot ? process.memoryUsage() : null,\r\n cpuUsage: freezeMemorySnapshot ? process.cpuUsage() : null,\r\n callChain,\r\n }\r\n }\r\n\r\n const writeFreezeEvent = (event: FreezeEvent) => {\r\n if (!globalFreezeWriter) {\r\n const now = new Date()\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const freezeFilePath = `ffi_cascade_freeze_${timestamp}.log`\r\n globalFreezeWriter = Bun.file(freezeFilePath).writer()\r\n }\r\n\r\n const lines: string[] = []\r\n lines.push(\"╔══════════════════════════════════════════════════════════════════════════════╗\")\r\n lines.push(\"║ FREEZE EVENT DETECTED ║\")\r\n lines.push(\"╚══════════════════════════════════════════════════════════════════════════════╝\")\r\n lines.push(``)\r\n lines.push(`Timestamp: ${event.timestamp}`)\r\n lines.push(`Symbol: ${event.symbol}`)\r\n lines.push(`Duration: ${event.durationMs.toFixed(3)}ms (threshold: ${event.thresholdMs}ms)`)\r\n lines.push(`Over threshold by: ${(event.durationMs - event.thresholdMs).toFixed(3)}ms`)\r\n lines.push(``)\r\n lines.push(`Arguments: ${event.args.slice(0, 500)}${event.args.length > 500 ? \"...\" : \"\"}`)\r\n lines.push(`Result: ${event.result.slice(0, 200)}${event.result.length > 200 ? \"...\" : \"\"}`)\r\n lines.push(``)\r\n lines.push(`--- CALL CHAIN (last 10 calls before freeze, most recent first) ---`)\r\n if (event.callChain.length > 0) {\r\n event.callChain.forEach((c, i) => lines.push(` ${i + 1}. ${c}`))\r\n } else {\r\n lines.push(` (no previous calls recorded)`)\r\n }\r\n lines.push(``)\r\n lines.push(`--- STACK TRACE (${event.stackTrace.length} frames) ---`)\r\n event.stackTrace.forEach((frame, i) => lines.push(` ${i + 1}. ${frame}`))\r\n lines.push(``)\r\n if (event.memoryUsage) {\r\n lines.push(`--- MEMORY SNAPSHOT ---`)\r\n lines.push(` RSS: ${(event.memoryUsage.rss / 1024 / 1024).toFixed(2)} MB`)\r\n lines.push(` Heap Total: ${(event.memoryUsage.heapTotal / 1024 / 1024).toFixed(2)} MB`)\r\n lines.push(` Heap Used: ${(event.memoryUsage.heapUsed / 1024 / 1024).toFixed(2)} MB`)\r\n lines.push(` External: ${(event.memoryUsage.external / 1024 / 1024).toFixed(2)} MB`)\r\n lines.push(` Array Buffers: ${(event.memoryUsage.arrayBuffers / 1024 / 1024).toFixed(2)} MB`)\r\n }\r\n if (event.cpuUsage) {\r\n lines.push(``)\r\n lines.push(`--- CPU USAGE ---`)\r\n lines.push(` User: ${(event.cpuUsage.user / 1000).toFixed(2)} ms`)\r\n lines.push(` System: ${(event.cpuUsage.system / 1000).toFixed(2)} ms`)\r\n }\r\n lines.push(``)\r\n lines.push(`================================================================================`)\r\n lines.push(``)\r\n\r\n const buffer = new TextEncoder().encode(lines.join(\"\\n\") + \"\\n\")\r\n globalFreezeWriter.write(buffer)\r\n globalFreezeWriter.flush()\r\n\r\n // Also log to console for immediate visibility\r\n console.error(`\\n[FREEZE DETECTED] ${event.symbol} blocked for ${event.durationMs.toFixed(2)}ms`)\r\n console.error(` See ffi_cascade_freeze_*.log for full details\\n`)\r\n }\r\n\r\n const debugSymbols: Record<string, any> = {}\r\n let hasTracing = false\r\n\r\n Object.entries(symbols).forEach(([key, value]) => {\r\n debugSymbols[key] = value\r\n })\r\n\r\n if (env.CASCADE_DEBUG_FFI && globalFFILogWriter) {\r\n const writer = globalFFILogWriter\r\n const writeSync = (msg: string) => {\r\n const buffer = new TextEncoder().encode(msg + \"\\n\")\r\n writer.write(buffer)\r\n writer.flush()\r\n }\r\n\r\n // Helper to extract caller info from stack trace\r\n const getCallerInfo = (): string => {\r\n const stack = new Error().stack?.split(\"\\n\") || []\r\n // Stack format varies, look for relevant frames after this function\r\n for (let i = 2; i < stack.length; i++) {\r\n const line = stack[i]\r\n // Skip internal frames, look for actual caller\r\n if (line && !line.includes(\"zig.ts\") && !line.includes(\"node:\")) {\r\n const match = line.match(/at .+ \\((.+):(\\d+):(\\d+)\\)/) || line.match(/at (.+):(\\d+):(\\d+)/)\r\n if (match) {\r\n const [, file, lineNum] = match\r\n const fileName = file?.split(\"/\").pop() || file\r\n return `${fileName}:${lineNum}`\r\n }\r\n }\r\n }\r\n return \"unknown\"\r\n }\r\n\r\n Object.entries(symbols).forEach(([key, value]) => {\r\n if (typeof value === \"function\") {\r\n debugSymbols[key] = (...args: any[]) => {\r\n const timestamp = new Date().toISOString()\r\n const caller = getCallerInfo()\r\n const callId = Math.random().toString(36).slice(2, 8)\r\n const argStr = args.map(formatArg).join(\", \")\r\n writeSync(`[${timestamp}] [CALL:${callId}] ${key}(${argStr}) <- ${caller}`)\r\n const start = performance.now()\r\n const result = value(...args)\r\n const duration = performance.now() - start\r\n writeSync(`[${timestamp}] [RETN:${callId}] ${key} => ${formatArg(result)} | ${duration.toFixed(3)}ms`)\r\n\r\n // Track recent calls for freeze call chain\r\n recentCalls.push({ symbol: key, timestamp: start, duration })\r\n if (recentCalls.length > MAX_RECENT_CALLS) {\r\n recentCalls.shift()\r\n }\r\n\r\n // Freeze detection\r\n if (freezeThresholdMs > 0 && duration >= freezeThresholdMs) {\r\n const event = captureFreezeEvent(key, duration, argStr, formatArg(result))\r\n freezeEvents.push(event)\r\n writeFreezeEvent(event)\r\n }\r\n\r\n return result\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (env.CASCADE_TRACE_FFI) {\r\n hasTracing = true\r\n Object.entries(symbols).forEach(([key, value]) => {\r\n if (typeof value === \"function\") {\r\n // Initialize trace array for this symbol if not exists\r\n if (!globalTraceSymbols![key]) {\r\n globalTraceSymbols![key] = []\r\n }\r\n\r\n const originalFunc = debugSymbols[key]\r\n debugSymbols[key] = (...args: any[]) => {\r\n const start = performance.now()\r\n const result = originalFunc(...args)\r\n const end = performance.now()\r\n const dt = end - start\r\n const timings = globalTraceSymbols![key]\r\n timings.push(dt)\r\n if (timings.length > maxSamples) {\r\n timings.splice(0, timings.length - maxSamples)\r\n }\r\n\r\n // Track recent calls for freeze call chain (if not already tracked by DEBUG_FFI)\r\n if (!env.CASCADE_DEBUG_FFI) {\r\n recentCalls.push({ symbol: key, timestamp: start, duration: dt })\r\n if (recentCalls.length > MAX_RECENT_CALLS) {\r\n recentCalls.shift()\r\n }\r\n }\r\n\r\n // Freeze detection (if not already handled by DEBUG_FFI)\r\n if (!env.CASCADE_DEBUG_FFI && freezeThresholdMs > 0 && dt >= freezeThresholdMs) {\r\n const argStr = args.map(formatArg).join(\", \")\r\n const event = captureFreezeEvent(key, dt, argStr, formatArg(result))\r\n freezeEvents.push(event)\r\n writeFreezeEvent(event)\r\n }\r\n\r\n if (slowThresholdMs > 0 && dt >= slowThresholdMs) {\r\n const argStr = args.map(formatArg).join(\", \")\r\n const callId = Math.random().toString(36).slice(2, 8)\r\n // Extract caller info from stack\r\n const stack = new Error().stack?.split(\"\\n\") || []\r\n let caller = \"unknown\"\r\n for (let i = 2; i < stack.length; i++) {\r\n const line = stack[i]\r\n if (line && !line.includes(\"zig.ts\") && !line.includes(\"node:\")) {\r\n const match = line.match(/at .+ \\((.+):(\\d+):(\\d+)\\)/) || line.match(/at (.+):(\\d+):(\\d+)/)\r\n if (match) {\r\n const fileName = match[1]?.split(\"/\").pop() || match[1]\r\n caller = `${fileName}:${match[2]}`\r\n break\r\n }\r\n }\r\n }\r\n writeSlow(`[${new Date().toISOString()}] [SLOW:${callId}] ${key}(${argStr}) <- ${caller} | ${dt.toFixed(3)}ms (threshold: ${slowThresholdMs}ms)`)\r\n }\r\n return result\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Register exit handler only once\r\n if ((env.CASCADE_DEBUG_FFI || env.CASCADE_TRACE_FFI) && !exitHandlerRegistered) {\r\n exitHandlerRegistered = true\r\n\r\n process.on(\"exit\", () => {\r\n try {\r\n if (globalFFILogWriter) {\r\n globalFFILogWriter.end()\r\n }\r\n\r\n if (slowWriter) {\r\n slowWriter.end()\r\n }\r\n\r\n if (globalFreezeWriter) {\r\n globalFreezeWriter.end()\r\n }\r\n } catch (e) {\r\n // Ignore errors on exit\r\n }\r\n\r\n // Write freeze summary if any freezes were detected\r\n if (freezeEvents.length > 0) {\r\n const freezeSummary: string[] = []\r\n freezeSummary.push(\"\")\r\n freezeSummary.push(\"================================================================================\")\r\n freezeSummary.push(\" FREEZE EVENTS SUMMARY\")\r\n freezeSummary.push(\"================================================================================\")\r\n freezeSummary.push(`Total freezes detected: ${freezeEvents.length}`)\r\n freezeSummary.push(`Total time frozen: ${freezeEvents.reduce((sum, e) => sum + e.durationMs, 0).toFixed(2)}ms`)\r\n freezeSummary.push(\"\")\r\n freezeSummary.push(\"Freezes by symbol:\")\r\n const freezesBySymbol: Record<string, { count: number; totalMs: number }> = {}\r\n for (const event of freezeEvents) {\r\n if (!freezesBySymbol[event.symbol]) {\r\n freezesBySymbol[event.symbol] = { count: 0, totalMs: 0 }\r\n }\r\n freezesBySymbol[event.symbol].count++\r\n freezesBySymbol[event.symbol].totalMs += event.durationMs\r\n }\r\n const sortedFreezes = Object.entries(freezesBySymbol).sort((a, b) => b[1].totalMs - a[1].totalMs)\r\n for (const [symbol, data] of sortedFreezes) {\r\n freezeSummary.push(` ${symbol.padEnd(30)} | ${String(data.count).padStart(3)} freezes | ${data.totalMs.toFixed(2).padStart(10)}ms`)\r\n }\r\n freezeSummary.push(\"--------------------------------------------------------------------------------\")\r\n freezeSummary.push(\"\")\r\n console.log(freezeSummary.join(\"\\n\"))\r\n }\r\n\r\n if (globalTraceSymbols) {\r\n const allStats: Array<{\r\n name: string\r\n count: number\r\n total: number\r\n average: number\r\n min: number\r\n max: number\r\n median: number\r\n p90: number\r\n p99: number\r\n }> = []\r\n\r\n for (const [key, timings] of Object.entries(globalTraceSymbols)) {\r\n if (!Array.isArray(timings) || timings.length === 0) {\r\n continue\r\n }\r\n\r\n const sortedTimings = [...timings].sort((a, b) => a - b)\r\n const count = sortedTimings.length\r\n\r\n const total = sortedTimings.reduce((acc, t) => acc + t, 0)\r\n const average = total / count\r\n const min = sortedTimings[0]\r\n const max = sortedTimings[count - 1]\r\n\r\n const medianIndex = Math.floor(count / 2)\r\n const p90Index = Math.floor(count * 0.9)\r\n const p99Index = Math.floor(count * 0.99)\r\n\r\n const median = sortedTimings[medianIndex]\r\n const p90 = sortedTimings[Math.min(p90Index, count - 1)]\r\n const p99 = sortedTimings[Math.min(p99Index, count - 1)]\r\n\r\n allStats.push({\r\n name: key,\r\n count,\r\n total,\r\n average,\r\n min,\r\n max,\r\n median,\r\n p90,\r\n p99,\r\n })\r\n }\r\n\r\n allStats.sort((a, b) => b.total - a.total)\r\n\r\n const lines: string[] = []\r\n const now = new Date()\r\n const sessionStart = globalFFILogWriter ? \"session start\" : \"unknown\"\r\n lines.push(\"\")\r\n lines.push(\"================================================================================\")\r\n lines.push(\" CASCADE FFI PERFORMANCE REPORT\")\r\n lines.push(\"================================================================================\")\r\n lines.push(`Generated: ${now.toISOString()}`)\r\n lines.push(`Session: ${sessionStart}`)\r\n lines.push(`Total symbols traced: ${allStats.length}`)\r\n lines.push(`Total calls recorded: ${allStats.reduce((sum, s) => sum + s.count, 0)}`)\r\n lines.push(`Total time in FFI: ${allStats.reduce((sum, s) => sum + s.total, 0).toFixed(2)}ms`)\r\n lines.push(\"\")\r\n lines.push(\"Statistics sorted by total time (descending)\")\r\n lines.push(\"--------------------------------------------------------------------------------\")\r\n\r\n if (allStats.length === 0) {\r\n lines.push(\"No trace data collected or all symbols had zero calls.\")\r\n } else {\r\n const nameHeader = \"Symbol\"\r\n const callsHeader = \"Calls\"\r\n const totalHeader = \"Total (ms)\"\r\n const avgHeader = \"Avg (ms)\"\r\n const minHeader = \"Min (ms)\"\r\n const maxHeader = \"Max (ms)\"\r\n const medHeader = \"Med (ms)\"\r\n const p90Header = \"P90 (ms)\"\r\n const p99Header = \"P99 (ms)\"\r\n\r\n const nameWidth = Math.max(nameHeader.length, ...allStats.map((s) => s.name.length))\r\n const countWidth = Math.max(callsHeader.length, ...allStats.map((s) => String(s.count).length))\r\n const totalWidth = Math.max(totalHeader.length, ...allStats.map((s) => s.total.toFixed(2).length))\r\n const avgWidth = Math.max(avgHeader.length, ...allStats.map((s) => s.average.toFixed(2).length))\r\n const minWidth = Math.max(minHeader.length, ...allStats.map((s) => s.min.toFixed(2).length))\r\n const maxWidth = Math.max(maxHeader.length, ...allStats.map((s) => s.max.toFixed(2).length))\r\n const medianWidth = Math.max(medHeader.length, ...allStats.map((s) => s.median.toFixed(2).length))\r\n const p90Width = Math.max(p90Header.length, ...allStats.map((s) => s.p90.toFixed(2).length))\r\n const p99Width = Math.max(p99Header.length, ...allStats.map((s) => s.p99.toFixed(2).length))\r\n\r\n lines.push(\r\n `${nameHeader.padEnd(nameWidth)} | ` +\r\n `${callsHeader.padStart(countWidth)} | ` +\r\n `${totalHeader.padStart(totalWidth)} | ` +\r\n `${avgHeader.padStart(avgWidth)} | ` +\r\n `${minHeader.padStart(minWidth)} | ` +\r\n `${maxHeader.padStart(maxWidth)} | ` +\r\n `${medHeader.padStart(medianWidth)} | ` +\r\n `${p90Header.padStart(p90Width)} | ` +\r\n `${p99Header.padStart(p99Width)}`,\r\n )\r\n lines.push(\r\n `${\"-\".repeat(nameWidth)}-+-${\"-\".repeat(countWidth)}-+-${\"-\".repeat(totalWidth)}-+-${\"-\".repeat(avgWidth)}-+-${\"-\".repeat(minWidth)}-+-${\"-\".repeat(maxWidth)}-+-${\"-\".repeat(medianWidth)}-+-${\"-\".repeat(p90Width)}-+-${\"-\".repeat(p99Width)}`,\r\n )\r\n\r\n allStats.forEach((stat) => {\r\n lines.push(\r\n `${stat.name.padEnd(nameWidth)} | ` +\r\n `${String(stat.count).padStart(countWidth)} | ` +\r\n `${stat.total.toFixed(2).padStart(totalWidth)} | ` +\r\n `${stat.average.toFixed(2).padStart(avgWidth)} | ` +\r\n `${stat.min.toFixed(2).padStart(minWidth)} | ` +\r\n `${stat.max.toFixed(2).padStart(maxWidth)} | ` +\r\n `${stat.median.toFixed(2).padStart(medianWidth)} | ` +\r\n `${stat.p90.toFixed(2).padStart(p90Width)} | ` +\r\n `${stat.p99.toFixed(2).padStart(p99Width)}`,\r\n )\r\n })\r\n }\r\n lines.push(\"--------------------------------------------------------------------------------\")\r\n lines.push(\"\")\r\n lines.push(\"SUMMARY BY CATEGORY:\")\r\n lines.push(\"--------------------------------------------------------------------------------\")\r\n \r\n // Group by category (prefix before underscore or first word)\r\n const categories: Record<string, { count: number; total: number; symbols: string[] }> = {}\r\n for (const stat of allStats) {\r\n const category = stat.name.includes(\"Buffer\") ? \"Buffer Operations\"\r\n : stat.name.includes(\"Renderer\") || stat.name.includes(\"render\") ? \"Renderer\"\r\n : stat.name.includes(\"Text\") || stat.name.includes(\"text\") ? \"Text Operations\"\r\n : stat.name.includes(\"Cursor\") || stat.name.includes(\"cursor\") ? \"Cursor\"\r\n : stat.name.includes(\"Edit\") || stat.name.includes(\"edit\") ? \"Edit Operations\"\r\n : stat.name.includes(\"Editor\") || stat.name.includes(\"editor\") ? \"Editor View\"\r\n : stat.name.includes(\"stream\") || stat.name.includes(\"Stream\") ? \"Stream/IO\"\r\n : stat.name.includes(\"link\") || stat.name.includes(\"Link\") ? \"Link Management\"\r\n : \"Other\"\r\n if (!categories[category]) {\r\n categories[category] = { count: 0, total: 0, symbols: [] }\r\n }\r\n categories[category].count += stat.count\r\n categories[category].total += stat.total\r\n categories[category].symbols.push(stat.name)\r\n }\r\n \r\n const sortedCategories = Object.entries(categories).sort((a, b) => b[1].total - a[1].total)\r\n for (const [cat, data] of sortedCategories) {\r\n lines.push(` ${cat.padEnd(20)} | ${String(data.count).padStart(6)} calls | ${data.total.toFixed(2).padStart(12)}ms`)\r\n }\r\n lines.push(\"--------------------------------------------------------------------------------\")\r\n\r\n const output = lines.join(\"\\n\")\r\n console.log(output)\r\n\r\n try {\r\n const timestamp = now.toISOString().replace(/[:.]/g, \"-\").replace(/T/, \"_\").split(\"Z\")[0]\r\n const traceFilePath = `ffi_cascade_trace_${timestamp}.log`\r\n Bun.write(traceFilePath, output)\r\n } catch (e) {\r\n console.error(\"Failed to write FFI trace file:\", e)\r\n }\r\n }\r\n })\r\n }\r\n\r\n return debugSymbols as T\r\n}\r\n\r\n// Log levels matching Zig's LogLevel enum\r\nexport enum LogLevel {\r\n Error = 0,\r\n Warn = 1,\r\n Info = 2,\r\n Debug = 3,\r\n}\r\n\r\n/**\r\n * VisualCursor represents a cursor position with both visual and logical coordinates.\r\n * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE.\r\n * This means visualRow=0 is the first visible line in the viewport, not the first line in the document.\r\n * Logical coordinates (logicalRow, logicalCol) are document-absolute.\r\n */\r\nexport interface VisualCursor {\r\n visualRow: number // Viewport-relative row (0 = top of viewport)\r\n visualCol: number // Viewport-relative column (0 = left edge of viewport when not wrapping)\r\n logicalRow: number // Document-absolute row\r\n logicalCol: number // Document-absolute column\r\n offset: number // Global display-width offset from buffer start\r\n}\r\n\r\nexport interface LogicalCursor {\r\n row: number\r\n col: number\r\n offset: number\r\n}\r\n\r\nexport interface CursorState {\r\n x: number\r\n y: number\r\n visible: boolean\r\n style: CursorStyle\r\n blinking: boolean\r\n color: RGBA\r\n}\r\n\r\nexport type NativeSpanFeedEventHandler = (eventId: number, arg0: Pointer, arg1: number | bigint) => void\r\n\r\nexport interface RenderLib {\r\n createRenderer: (width: number, height: number, options?: { testing?: boolean; remote?: boolean }) => Pointer | null\r\n setTerminalEnvVar: (renderer: Pointer, key: string, value: string) => boolean\r\n destroyRenderer: (renderer: Pointer) => void\r\n setUseThread: (renderer: Pointer, useThread: boolean) => void\r\n setBackgroundColor: (renderer: Pointer, color: RGBA) => void\r\n setRenderOffset: (renderer: Pointer, offset: number) => void\r\n updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void\r\n updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void\r\n render: (renderer: Pointer, force: boolean) => void\r\n getNextBuffer: (renderer: Pointer) => OptimizedBuffer\r\n getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer\r\n createOptimizedBuffer: (\r\n width: number,\r\n height: number,\r\n widthMethod: WidthMethod,\r\n respectAlpha?: boolean,\r\n id?: string,\r\n ) => OptimizedBuffer\r\n destroyOptimizedBuffer: (bufferPtr: Pointer) => void\r\n drawFrameBuffer: (\r\n targetBufferPtr: Pointer,\r\n destX: number,\r\n destY: number,\r\n bufferPtr: Pointer,\r\n sourceX?: number,\r\n sourceY?: number,\r\n sourceWidth?: number,\r\n sourceHeight?: number,\r\n ) => void\r\n getBufferWidth: (buffer: Pointer) => number\r\n getBufferHeight: (buffer: Pointer) => number\r\n bufferClear: (buffer: Pointer, color: RGBA) => void\r\n bufferGetCharPtr: (buffer: Pointer) => Pointer\r\n bufferGetFgPtr: (buffer: Pointer) => Pointer\r\n bufferGetBgPtr: (buffer: Pointer) => Pointer\r\n bufferGetAttributesPtr: (buffer: Pointer) => Pointer\r\n bufferGetRespectAlpha: (buffer: Pointer) => boolean\r\n bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void\r\n bufferGetId: (buffer: Pointer) => string\r\n bufferGetRealCharSize: (buffer: Pointer) => number\r\n bufferWriteResolvedChars: (buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean) => number\r\n bufferDrawText: (\r\n buffer: Pointer,\r\n text: string,\r\n x: number,\r\n y: number,\r\n color: RGBA,\r\n bgColor?: RGBA,\r\n attributes?: number,\r\n ) => void\r\n bufferSetCellWithAlphaBlending: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) => void\r\n bufferSetCell: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) => void\r\n bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void\r\n bufferDrawSuperSampleBuffer: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n pixelDataPtr: Pointer,\r\n pixelDataLength: number,\r\n format: \"bgra8unorm\" | \"rgba8unorm\",\r\n alignedBytesPerRow: number,\r\n ) => void\r\n bufferDrawPackedBuffer: (\r\n buffer: Pointer,\r\n dataPtr: Pointer,\r\n dataLen: number,\r\n posX: number,\r\n posY: number,\r\n terminalWidthCells: number,\r\n terminalHeightCells: number,\r\n ) => void\r\n bufferDrawGrayscaleBuffer: (\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ) => void\r\n bufferDrawGrayscaleBufferSupersampled: (\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ) => void\r\n bufferDrawGrid: (\r\n buffer: Pointer,\r\n borderChars: Uint32Array,\r\n borderFg: RGBA,\r\n borderBg: RGBA,\r\n columnOffsets: Int32Array,\r\n columnCount: number,\r\n rowOffsets: Int32Array,\r\n rowCount: number,\r\n options: { drawInner: boolean; drawOuter: boolean },\r\n ) => void\r\n bufferDrawBox: (\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n borderChars: Uint32Array,\r\n packedOptions: number,\r\n borderColor: RGBA,\r\n backgroundColor: RGBA,\r\n title: string | null,\r\n ) => void\r\n bufferResize: (buffer: Pointer, width: number, height: number) => void\r\n resizeRenderer: (renderer: Pointer, width: number, height: number) => void\r\n setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void\r\n setCursorColor: (renderer: Pointer, color: RGBA) => void\r\n getCursorState: (renderer: Pointer) => CursorState\r\n setCursorStyleOptions: (renderer: Pointer, options: CursorStyleOptions) => void\r\n setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void\r\n clearTerminal: (renderer: Pointer) => void\r\n setTerminalTitle: (renderer: Pointer, title: string) => void\r\n copyToClipboardOSC52: (renderer: Pointer, target: number, payload: Uint8Array) => boolean\r\n clearClipboardOSC52: (renderer: Pointer, target: number) => boolean\r\n addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void\r\n clearCurrentHitGrid: (renderer: Pointer) => void\r\n hitGridPushScissorRect: (renderer: Pointer, x: number, y: number, width: number, height: number) => void\r\n hitGridPopScissorRect: (renderer: Pointer) => void\r\n hitGridClearScissorRects: (renderer: Pointer) => void\r\n addToCurrentHitGridClipped: (\r\n renderer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n id: number,\r\n ) => void\r\n checkHit: (renderer: Pointer, x: number, y: number) => number\r\n getHitGridDirty: (renderer: Pointer) => boolean\r\n dumpHitGrid: (renderer: Pointer) => void\r\n dumpBuffers: (renderer: Pointer, timestamp?: number) => void\r\n dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void\r\n restoreTerminalModes: (renderer: Pointer) => void\r\n enableMouse: (renderer: Pointer, enableMovement: boolean) => void\r\n disableMouse: (renderer: Pointer) => void\r\n enableKittyKeyboard: (renderer: Pointer, flags: number) => void\r\n disableKittyKeyboard: (renderer: Pointer) => void\r\n setKittyKeyboardFlags: (renderer: Pointer, flags: number) => void\r\n getKittyKeyboardFlags: (renderer: Pointer) => number\r\n setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void\r\n suspendRenderer: (renderer: Pointer) => void\r\n resumeRenderer: (renderer: Pointer) => void\r\n queryPixelResolution: (renderer: Pointer) => void\r\n writeOut: (renderer: Pointer, data: string | Uint8Array) => void\r\n\r\n // TextBuffer methods\r\n createTextBuffer: (widthMethod: WidthMethod) => TextBuffer\r\n destroyTextBuffer: (buffer: Pointer) => void\r\n textBufferGetLength: (buffer: Pointer) => number\r\n textBufferGetByteSize: (buffer: Pointer) => number\r\n\r\n textBufferReset: (buffer: Pointer) => void\r\n textBufferClear: (buffer: Pointer) => void\r\n textBufferRegisterMemBuffer: (buffer: Pointer, bytes: Uint8Array, owned?: boolean) => number\r\n textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean\r\n textBufferClearMemRegistry: (buffer: Pointer) => void\r\n textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\r\n textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void\r\n textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void\r\n textBufferLoadFile: (buffer: Pointer, path: string) => boolean\r\n textBufferSetStyledText: (\r\n buffer: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\r\n ) => void\r\n textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void\r\n textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void\r\n textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void\r\n textBufferResetDefaults: (buffer: Pointer) => void\r\n textBufferGetTabWidth: (buffer: Pointer) => number\r\n textBufferSetTabWidth: (buffer: Pointer, width: number) => void\r\n textBufferGetLineCount: (buffer: Pointer) => number\r\n getPlainTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n textBufferGetTextRange: (\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n textBufferGetTextRangeByCoords: (\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n\r\n // TextBufferView methods\r\n createTextBufferView: (textBuffer: Pointer) => Pointer\r\n destroyTextBufferView: (view: Pointer) => void\r\n textBufferViewSetSelection: (\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => void\r\n textBufferViewResetSelection: (view: Pointer) => void\r\n textBufferViewGetSelection: (view: Pointer) => { start: number; end: number } | null\r\n textBufferViewSetLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => boolean\r\n textBufferViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\r\n textBufferViewUpdateLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => boolean\r\n textBufferViewResetLocalSelection: (view: Pointer) => void\r\n textBufferViewSetWrapWidth: (view: Pointer, width: number) => void\r\n textBufferViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\r\n textBufferViewSetViewportSize: (view: Pointer, width: number, height: number) => void\r\n textBufferViewSetViewport: (view: Pointer, x: number, y: number, width: number, height: number) => void\r\n textBufferViewGetLineInfo: (view: Pointer) => LineInfo\r\n textBufferViewGetLogicalLineInfo: (view: Pointer) => LineInfo\r\n textBufferViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\r\n textBufferViewGetPlainTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\r\n textBufferViewSetTabIndicator: (view: Pointer, indicator: number) => void\r\n textBufferViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\r\n textBufferViewSetTruncate: (view: Pointer, truncate: boolean) => void\r\n textBufferViewMeasureForDimensions: (\r\n view: Pointer,\r\n width: number,\r\n height: number,\r\n ) => { lineCount: number; maxWidth: number } | null\r\n textBufferViewGetVirtualLineCount: (view: Pointer) => number\r\n\r\n readonly encoder: TextEncoder\r\n readonly decoder: TextDecoder\r\n bufferDrawTextBufferView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\r\n bufferDrawEditorView: (buffer: Pointer, view: Pointer, x: number, y: number) => void\r\n\r\n // EditBuffer methods\r\n createEditBuffer: (widthMethod: WidthMethod) => Pointer\r\n destroyEditBuffer: (buffer: Pointer) => void\r\n editBufferSetText: (buffer: Pointer, textBytes: Uint8Array) => void\r\n editBufferSetTextFromMem: (buffer: Pointer, memId: number) => void\r\n editBufferReplaceText: (buffer: Pointer, textBytes: Uint8Array) => void\r\n editBufferReplaceTextFromMem: (buffer: Pointer, memId: number) => void\r\n editBufferGetText: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n editBufferInsertChar: (buffer: Pointer, char: string) => void\r\n editBufferInsertText: (buffer: Pointer, text: string) => void\r\n editBufferDeleteChar: (buffer: Pointer) => void\r\n editBufferDeleteCharBackward: (buffer: Pointer) => void\r\n editBufferDeleteRange: (buffer: Pointer, startLine: number, startCol: number, endLine: number, endCol: number) => void\r\n editBufferNewLine: (buffer: Pointer) => void\r\n editBufferDeleteLine: (buffer: Pointer) => void\r\n editBufferMoveCursorLeft: (buffer: Pointer) => void\r\n editBufferMoveCursorRight: (buffer: Pointer) => void\r\n editBufferMoveCursorUp: (buffer: Pointer) => void\r\n editBufferMoveCursorDown: (buffer: Pointer) => void\r\n editBufferGotoLine: (buffer: Pointer, line: number) => void\r\n editBufferSetCursor: (buffer: Pointer, line: number, col: number) => void\r\n editBufferSetCursorToLineCol: (buffer: Pointer, line: number, col: number) => void\r\n editBufferSetCursorByOffset: (buffer: Pointer, offset: number) => void\r\n editBufferGetCursorPosition: (buffer: Pointer) => LogicalCursor\r\n editBufferGetId: (buffer: Pointer) => number\r\n editBufferGetTextBuffer: (buffer: Pointer) => Pointer\r\n editBufferDebugLogRope: (buffer: Pointer) => void\r\n editBufferUndo: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n editBufferRedo: (buffer: Pointer, maxLength: number) => Uint8Array | null\r\n editBufferCanUndo: (buffer: Pointer) => boolean\r\n editBufferCanRedo: (buffer: Pointer) => boolean\r\n editBufferClearHistory: (buffer: Pointer) => void\r\n editBufferClear: (buffer: Pointer) => void\r\n editBufferGetNextWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\r\n editBufferGetPrevWordBoundary: (buffer: Pointer) => { row: number; col: number; offset: number }\r\n editBufferGetEOL: (buffer: Pointer) => { row: number; col: number; offset: number }\r\n editBufferOffsetToPosition: (buffer: Pointer, offset: number) => { row: number; col: number; offset: number } | null\r\n editBufferPositionToOffset: (buffer: Pointer, row: number, col: number) => number\r\n editBufferGetLineStartOffset: (buffer: Pointer, row: number) => number\r\n editBufferGetTextRange: (\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n editBufferGetTextRangeByCoords: (\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ) => Uint8Array | null\r\n\r\n // EditorView methods\r\n createEditorView: (editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number) => Pointer\r\n destroyEditorView: (view: Pointer) => void\r\n editorViewSetViewportSize: (view: Pointer, width: number, height: number) => void\r\n editorViewSetViewport: (\r\n view: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n moveCursor: boolean,\r\n ) => void\r\n editorViewGetViewport: (view: Pointer) => { offsetY: number; offsetX: number; height: number; width: number }\r\n editorViewSetScrollMargin: (view: Pointer, margin: number) => void\r\n editorViewSetWrapMode: (view: Pointer, mode: \"none\" | \"char\" | \"word\") => void\r\n editorViewGetVirtualLineCount: (view: Pointer) => number\r\n editorViewGetTotalVirtualLineCount: (view: Pointer) => number\r\n editorViewGetTextBufferView: (view: Pointer) => Pointer\r\n editorViewSetSelection: (\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ) => void\r\n editorViewResetSelection: (view: Pointer) => void\r\n editorViewGetSelection: (view: Pointer) => { start: number; end: number } | null\r\n editorViewSetLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ) => boolean\r\n\r\n editorViewUpdateSelection: (view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void\r\n editorViewUpdateLocalSelection: (\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ) => boolean\r\n\r\n editorViewResetLocalSelection: (view: Pointer) => void\r\n editorViewGetSelectedTextBytes: (view: Pointer, maxLength: number) => Uint8Array | null\r\n editorViewGetCursor: (view: Pointer) => { row: number; col: number }\r\n editorViewGetText: (view: Pointer, maxLength: number) => Uint8Array | null\r\n editorViewGetVisualCursor: (view: Pointer) => VisualCursor\r\n editorViewMoveUpVisual: (view: Pointer) => void\r\n editorViewMoveDownVisual: (view: Pointer) => void\r\n editorViewDeleteSelectedText: (view: Pointer) => void\r\n editorViewSetCursorByOffset: (view: Pointer, offset: number) => void\r\n editorViewGetNextWordBoundary: (view: Pointer) => VisualCursor\r\n editorViewGetPrevWordBoundary: (view: Pointer) => VisualCursor\r\n editorViewGetEOL: (view: Pointer) => VisualCursor\r\n editorViewGetVisualSOL: (view: Pointer) => VisualCursor\r\n editorViewGetVisualEOL: (view: Pointer) => VisualCursor\r\n editorViewGetLineInfo: (view: Pointer) => LineInfo\r\n editorViewGetLogicalLineInfo: (view: Pointer) => LineInfo\r\n editorViewSetPlaceholderStyledText: (\r\n view: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\r\n ) => void\r\n editorViewSetTabIndicator: (view: Pointer, indicator: number) => void\r\n editorViewSetTabIndicatorColor: (view: Pointer, color: RGBA) => void\r\n\r\n bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void\r\n bufferPopScissorRect: (buffer: Pointer) => void\r\n bufferClearScissorRects: (buffer: Pointer) => void\r\n bufferPushOpacity: (buffer: Pointer, opacity: number) => void\r\n bufferPopOpacity: (buffer: Pointer) => void\r\n bufferGetCurrentOpacity: (buffer: Pointer) => number\r\n bufferClearOpacity: (buffer: Pointer) => void\r\n textBufferAddHighlightByCharRange: (buffer: Pointer, highlight: Highlight) => void\r\n textBufferAddHighlight: (buffer: Pointer, lineIdx: number, highlight: Highlight) => void\r\n textBufferRemoveHighlightsByRef: (buffer: Pointer, hlRef: number) => void\r\n textBufferClearLineHighlights: (buffer: Pointer, lineIdx: number) => void\r\n textBufferClearAllHighlights: (buffer: Pointer) => void\r\n textBufferSetSyntaxStyle: (buffer: Pointer, style: Pointer | null) => void\r\n textBufferGetLineHighlights: (buffer: Pointer, lineIdx: number) => Array<Highlight>\r\n textBufferGetHighlightCount: (buffer: Pointer) => number\r\n\r\n getArenaAllocatedBytes: () => number\r\n getBuildOptions: () => BuildOptions\r\n getAllocatorStats: () => AllocatorStats\r\n\r\n createSyntaxStyle: () => Pointer\r\n destroySyntaxStyle: (style: Pointer) => void\r\n syntaxStyleRegister: (style: Pointer, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number\r\n syntaxStyleResolveByName: (style: Pointer, name: string) => number | null\r\n syntaxStyleGetStyleCount: (style: Pointer) => number\r\n\r\n getTerminalCapabilities: (renderer: Pointer) => any\r\n processCapabilityResponse: (renderer: Pointer, response: string) => void\r\n\r\n encodeUnicode: (\r\n text: string,\r\n widthMethod: WidthMethod,\r\n ) => { ptr: Pointer; data: Array<{ width: number; char: number }> } | null\r\n freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }) => void\r\n bufferDrawChar: (buffer: Pointer, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => void\r\n\r\n registerNativeSpanFeedStream: (stream: Pointer, handler: NativeSpanFeedEventHandler) => void\r\n unregisterNativeSpanFeedStream: (stream: Pointer) => void\r\n createNativeSpanFeed: (options?: NativeSpanFeedOptions | null) => Pointer\r\n attachNativeSpanFeed: (stream: Pointer) => number\r\n destroyNativeSpanFeed: (stream: Pointer) => void\r\n streamWrite: (stream: Pointer, data: Uint8Array | string) => number\r\n streamCommit: (stream: Pointer) => number\r\n streamDrainSpans: (stream: Pointer, outBuffer: Uint8Array, maxSpans: number) => number\r\n streamClose: (stream: Pointer) => number\r\n streamSetOptions: (stream: Pointer, options: NativeSpanFeedOptions) => number\r\n streamGetStats: (stream: Pointer) => NativeSpanFeedStats | null\r\n streamReserve: (stream: Pointer, minLen: number) => { status: number; info: ReserveInfo | null }\r\n streamCommitReserved: (stream: Pointer, length: number) => number\r\n\r\n onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\r\n onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\r\n offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void\r\n onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void\r\n}\r\n\r\nclass FFIRenderLib implements RenderLib {\r\n private cascade: ReturnType<typeof getCascadeLib>\r\n public readonly encoder: TextEncoder = new TextEncoder()\r\n public readonly decoder: TextDecoder = new TextDecoder()\r\n private logCallbackWrapper: any // Store the FFI callback wrapper\r\n private eventCallbackWrapper: any // Store the FFI event callback wrapper\r\n private _nativeEvents: EventEmitter = new EventEmitter()\r\n private _anyEventHandlers: Array<(name: string, data: ArrayBuffer) => void> = []\r\n private nativeSpanFeedCallbackWrapper: JSCallback | null = null\r\n private nativeSpanFeedHandlers = new Map<Pointer, NativeSpanFeedEventHandler>()\r\n\r\n constructor(libPath?: string) {\r\n this.cascade = getCascadeLib(libPath)\r\n this.setupLogging()\r\n this.setupEventBus()\r\n }\r\n\r\n private setupLogging() {\r\n if (this.logCallbackWrapper) {\r\n return\r\n }\r\n\r\n const logCallback = new JSCallback(\r\n (level: number, msgPtr: Pointer, msgLenBigInt: bigint | number) => {\r\n try {\r\n const msgLen = typeof msgLenBigInt === \"bigint\" ? Number(msgLenBigInt) : msgLenBigInt\r\n\r\n if (msgLen === 0 || !msgPtr) {\r\n return\r\n }\r\n\r\n const msgBuffer = toArrayBuffer(msgPtr, 0, msgLen)\r\n const msgBytes = new Uint8Array(msgBuffer)\r\n const message = this.decoder.decode(msgBytes)\r\n\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message)\r\n break\r\n case LogLevel.Warn:\r\n console.warn(message)\r\n break\r\n case LogLevel.Info:\r\n console.info(message)\r\n break\r\n case LogLevel.Debug:\r\n console.debug(message)\r\n break\r\n default:\r\n console.log(message)\r\n }\r\n } catch (error) {\r\n console.error(\"Error in Zig log callback:\", error)\r\n }\r\n },\r\n {\r\n args: [\"u8\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n )\r\n\r\n this.logCallbackWrapper = logCallback\r\n\r\n if (!logCallback.ptr) {\r\n throw new Error(\"Failed to create log callback\")\r\n }\r\n\r\n this.setLogCallback(logCallback.ptr)\r\n }\r\n\r\n private setLogCallback(callbackPtr: Pointer) {\r\n this.cascade.symbols.setLogCallback(callbackPtr)\r\n }\r\n\r\n private setupEventBus() {\r\n if (this.eventCallbackWrapper) {\r\n return\r\n }\r\n\r\n const eventCallback = new JSCallback(\r\n (namePtr: Pointer, nameLenBigInt: bigint | number, dataPtr: Pointer, dataLenBigInt: bigint | number) => {\r\n try {\r\n const nameLen = typeof nameLenBigInt === \"bigint\" ? Number(nameLenBigInt) : nameLenBigInt\r\n const dataLen = typeof dataLenBigInt === \"bigint\" ? Number(dataLenBigInt) : dataLenBigInt\r\n\r\n if (nameLen === 0 || !namePtr) {\r\n return\r\n }\r\n\r\n const nameBuffer = toArrayBuffer(namePtr, 0, nameLen)\r\n const nameBytes = new Uint8Array(nameBuffer)\r\n const eventName = this.decoder.decode(nameBytes)\r\n\r\n let eventData: ArrayBuffer\r\n if (dataLen > 0 && dataPtr) {\r\n eventData = toArrayBuffer(dataPtr, 0, dataLen).slice()\r\n } else {\r\n eventData = new ArrayBuffer(0)\r\n }\r\n\r\n queueMicrotask(() => {\r\n this._nativeEvents.emit(eventName, eventData)\r\n\r\n for (const handler of this._anyEventHandlers) {\r\n handler(eventName, eventData)\r\n }\r\n })\r\n } catch (error) {\r\n console.error(\"Error in native event callback:\", error)\r\n }\r\n },\r\n {\r\n args: [\"ptr\", \"usize\", \"ptr\", \"usize\"],\r\n returns: \"void\",\r\n },\r\n )\r\n\r\n this.eventCallbackWrapper = eventCallback\r\n\r\n if (!eventCallback.ptr) {\r\n throw new Error(\"Failed to create event callback\")\r\n }\r\n\r\n this.setEventCallback(eventCallback.ptr)\r\n }\r\n\r\n private ensureNativeSpanFeedCallback(): JSCallback {\r\n if (this.nativeSpanFeedCallbackWrapper) {\r\n return this.nativeSpanFeedCallbackWrapper\r\n }\r\n\r\n const callback = new JSCallback(\r\n (streamPtr: Pointer, eventId: number, arg0: Pointer, arg1: number | bigint) => {\r\n const handler = this.nativeSpanFeedHandlers.get(toPointer(streamPtr))\r\n if (handler) {\r\n handler(eventId, arg0, arg1)\r\n }\r\n },\r\n {\r\n args: [\"ptr\", \"u32\", \"ptr\", \"u64\"],\r\n returns: \"void\",\r\n },\r\n )\r\n\r\n this.nativeSpanFeedCallbackWrapper = callback\r\n\r\n if (!callback.ptr) {\r\n throw new Error(\"Failed to create native span feed callback\")\r\n }\r\n\r\n return callback\r\n }\r\n\r\n private setEventCallback(callbackPtr: Pointer) {\r\n this.cascade.symbols.setEventCallback(callbackPtr)\r\n }\r\n\r\n public createRenderer(width: number, height: number, options: { testing?: boolean; remote?: boolean } = {}) {\r\n const testing = options.testing ?? false\r\n const remote = options.remote ?? false\r\n return this.cascade.symbols.createRenderer(width, height, testing, remote)\r\n }\r\n\r\n public setTerminalEnvVar(renderer: Pointer, key: string, value: string): boolean {\r\n const keyBytes = this.encoder.encode(key)\r\n const valueBytes = this.encoder.encode(value)\r\n return this.cascade.symbols.setTerminalEnvVar(renderer, keyBytes, keyBytes.length, valueBytes, valueBytes.length)\r\n }\r\n\r\n public destroyRenderer(renderer: Pointer): void {\r\n this.cascade.symbols.destroyRenderer(renderer)\r\n }\r\n\r\n public setUseThread(renderer: Pointer, useThread: boolean) {\r\n this.cascade.symbols.setUseThread(renderer, useThread)\r\n }\r\n\r\n public setBackgroundColor(renderer: Pointer, color: RGBA) {\r\n this.cascade.symbols.setBackgroundColor(renderer, color.buffer)\r\n }\r\n\r\n public setRenderOffset(renderer: Pointer, offset: number) {\r\n this.cascade.symbols.setRenderOffset(renderer, offset)\r\n }\r\n\r\n public updateStats(renderer: Pointer, time: number, fps: number, frameCallbackTime: number) {\r\n this.cascade.symbols.updateStats(renderer, time, fps, frameCallbackTime)\r\n }\r\n\r\n public updateMemoryStats(renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) {\r\n this.cascade.symbols.updateMemoryStats(renderer, heapUsed, heapTotal, arrayBuffers)\r\n }\r\n\r\n public getNextBuffer(renderer: Pointer): OptimizedBuffer {\r\n const bufferPtr = this.cascade.symbols.getNextBuffer(renderer)\r\n if (!bufferPtr) {\r\n throw new Error(\"Failed to get next buffer\")\r\n }\r\n\r\n const width = this.cascade.symbols.getBufferWidth(bufferPtr)\r\n const height = this.cascade.symbols.getBufferHeight(bufferPtr)\r\n\r\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"next buffer\", widthMethod: \"unicode\" })\r\n }\r\n\r\n public getCurrentBuffer(renderer: Pointer): OptimizedBuffer {\r\n const bufferPtr = this.cascade.symbols.getCurrentBuffer(renderer)\r\n if (!bufferPtr) {\r\n throw new Error(\"Failed to get current buffer\")\r\n }\r\n\r\n const width = this.cascade.symbols.getBufferWidth(bufferPtr)\r\n const height = this.cascade.symbols.getBufferHeight(bufferPtr)\r\n\r\n return new OptimizedBuffer(this, bufferPtr, width, height, { id: \"current buffer\", widthMethod: \"unicode\" })\r\n }\r\n\r\n public bufferGetCharPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetCharPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get char pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetFgPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetFgPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get fg pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetBgPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetBgPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get bg pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetAttributesPtr(buffer: Pointer): Pointer {\r\n const ptr = this.cascade.symbols.bufferGetAttributesPtr(buffer)\r\n if (!ptr) {\r\n throw new Error(\"Failed to get attributes pointer\")\r\n }\r\n return ptr\r\n }\r\n\r\n public bufferGetRespectAlpha(buffer: Pointer): boolean {\r\n return this.cascade.symbols.bufferGetRespectAlpha(buffer)\r\n }\r\n\r\n public bufferSetRespectAlpha(buffer: Pointer, respectAlpha: boolean): void {\r\n this.cascade.symbols.bufferSetRespectAlpha(buffer, respectAlpha)\r\n }\r\n\r\n public bufferGetId(buffer: Pointer): string {\r\n const maxLen = 256\r\n const outBuffer = new Uint8Array(maxLen)\r\n const actualLen = this.cascade.symbols.bufferGetId(buffer, outBuffer, maxLen)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n return this.decoder.decode(outBuffer.slice(0, len))\r\n }\r\n\r\n public bufferGetRealCharSize(buffer: Pointer): number {\r\n return this.cascade.symbols.bufferGetRealCharSize(buffer)\r\n }\r\n\r\n public bufferWriteResolvedChars(buffer: Pointer, outputBuffer: Uint8Array, addLineBreaks: boolean): number {\r\n const bytesWritten = this.cascade.symbols.bufferWriteResolvedChars(\r\n buffer,\r\n outputBuffer,\r\n outputBuffer.length,\r\n addLineBreaks,\r\n )\r\n return typeof bytesWritten === \"bigint\" ? Number(bytesWritten) : bytesWritten\r\n }\r\n\r\n public getBufferWidth(buffer: Pointer): number {\r\n return this.cascade.symbols.getBufferWidth(buffer)\r\n }\r\n\r\n public getBufferHeight(buffer: Pointer): number {\r\n return this.cascade.symbols.getBufferHeight(buffer)\r\n }\r\n\r\n public bufferClear(buffer: Pointer, color: RGBA) {\r\n this.cascade.symbols.bufferClear(buffer, color.buffer)\r\n }\r\n\r\n public bufferDrawText(\r\n buffer: Pointer,\r\n text: string,\r\n x: number,\r\n y: number,\r\n color: RGBA,\r\n bgColor?: RGBA,\r\n attributes?: number,\r\n ) {\r\n const textBytes = this.encoder.encode(text)\r\n const textLength = textBytes.byteLength\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = color.buffer\r\n\r\n this.cascade.symbols.bufferDrawText(buffer, textBytes, textLength, x, y, fg, bg, attributes ?? 0)\r\n }\r\n\r\n public bufferSetCellWithAlphaBlending(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) {\r\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\r\n const bg = bgColor.buffer\r\n const fg = color.buffer\r\n\r\n this.cascade.symbols.bufferSetCellWithAlphaBlending(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\r\n }\r\n\r\n public bufferSetCell(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n char: string,\r\n color: RGBA,\r\n bgColor: RGBA,\r\n attributes?: number,\r\n ) {\r\n const charPtr = char.codePointAt(0) ?? \" \".codePointAt(0)!\r\n const bg = bgColor.buffer\r\n const fg = color.buffer\r\n\r\n this.cascade.symbols.bufferSetCell(buffer, x, y, charPtr, fg, bg, attributes ?? 0)\r\n }\r\n\r\n public bufferFillRect(buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) {\r\n const bg = color.buffer\r\n this.cascade.symbols.bufferFillRect(buffer, x, y, width, height, bg)\r\n }\r\n\r\n public bufferDrawSuperSampleBuffer(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n pixelDataPtr: Pointer,\r\n pixelDataLength: number,\r\n format: \"bgra8unorm\" | \"rgba8unorm\",\r\n alignedBytesPerRow: number,\r\n ): void {\r\n const formatId = format === \"bgra8unorm\" ? 0 : 1\r\n this.cascade.symbols.bufferDrawSuperSampleBuffer(\r\n buffer,\r\n x,\r\n y,\r\n pixelDataPtr,\r\n pixelDataLength,\r\n formatId,\r\n alignedBytesPerRow,\r\n )\r\n }\r\n\r\n public bufferDrawPackedBuffer(\r\n buffer: Pointer,\r\n dataPtr: Pointer,\r\n dataLen: number,\r\n posX: number,\r\n posY: number,\r\n terminalWidthCells: number,\r\n terminalHeightCells: number,\r\n ): void {\r\n this.cascade.symbols.bufferDrawPackedBuffer(\r\n buffer,\r\n dataPtr,\r\n dataLen,\r\n posX,\r\n posY,\r\n terminalWidthCells,\r\n terminalHeightCells,\r\n )\r\n }\r\n\r\n public bufferDrawGrayscaleBuffer(\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ): void {\r\n this.cascade.symbols.bufferDrawGrayscaleBuffer(\r\n buffer,\r\n posX,\r\n posY,\r\n intensitiesPtr,\r\n srcWidth,\r\n srcHeight,\r\n fg?.buffer ?? null,\r\n bg?.buffer ?? null,\r\n )\r\n }\r\n\r\n public bufferDrawGrayscaleBufferSupersampled(\r\n buffer: Pointer,\r\n posX: number,\r\n posY: number,\r\n intensitiesPtr: Pointer,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n ): void {\r\n this.cascade.symbols.bufferDrawGrayscaleBufferSupersampled(\r\n buffer,\r\n posX,\r\n posY,\r\n intensitiesPtr,\r\n srcWidth,\r\n srcHeight,\r\n fg?.buffer ?? null,\r\n bg?.buffer ?? null,\r\n )\r\n }\r\n\r\n public bufferDrawGrid(\r\n buffer: Pointer,\r\n borderChars: Uint32Array,\r\n borderFg: RGBA,\r\n borderBg: RGBA,\r\n columnOffsets: Int32Array,\r\n columnCount: number,\r\n rowOffsets: Int32Array,\r\n rowCount: number,\r\n options: { drawInner: boolean; drawOuter: boolean },\r\n ): void {\r\n const optionsBuffer = GridDrawOptionsStruct.pack({\r\n drawInner: options.drawInner,\r\n drawOuter: options.drawOuter,\r\n })\r\n\r\n this.cascade.symbols.bufferDrawGrid(\r\n buffer,\r\n borderChars,\r\n borderFg.buffer,\r\n borderBg.buffer,\r\n columnOffsets,\r\n columnCount,\r\n rowOffsets,\r\n rowCount,\r\n ptr(optionsBuffer),\r\n )\r\n }\r\n\r\n public bufferDrawBox(\r\n buffer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n borderChars: Uint32Array,\r\n packedOptions: number,\r\n borderColor: RGBA,\r\n backgroundColor: RGBA,\r\n title: string | null,\r\n ): void {\r\n const titleBytes = title ? this.encoder.encode(title) : null\r\n const titleLen = title ? titleBytes!.length : 0\r\n const titlePtr = title ? titleBytes : null\r\n\r\n this.cascade.symbols.bufferDrawBox(\r\n buffer,\r\n x,\r\n y,\r\n width,\r\n height,\r\n borderChars,\r\n packedOptions,\r\n borderColor.buffer,\r\n backgroundColor.buffer,\r\n titlePtr,\r\n titleLen,\r\n )\r\n }\r\n\r\n public bufferResize(buffer: Pointer, width: number, height: number): void {\r\n this.cascade.symbols.bufferResize(buffer, width, height)\r\n }\r\n\r\n // Link API\r\n public linkAlloc(url: string): number {\r\n const urlBytes = this.encoder.encode(url)\r\n return this.cascade.symbols.linkAlloc(urlBytes, urlBytes.length)\r\n }\r\n\r\n public linkGetUrl(linkId: number, maxLen: number = 512): string {\r\n const outBuffer = new Uint8Array(maxLen)\r\n const actualLen = this.cascade.symbols.linkGetUrl(linkId, outBuffer, maxLen)\r\n return this.decoder.decode(outBuffer.slice(0, actualLen))\r\n }\r\n\r\n public attributesWithLink(baseAttributes: number, linkId: number): number {\r\n return this.cascade.symbols.attributesWithLink(baseAttributes, linkId)\r\n }\r\n\r\n public attributesGetLinkId(attributes: number): number {\r\n return this.cascade.symbols.attributesGetLinkId(attributes)\r\n }\r\n\r\n public resizeRenderer(renderer: Pointer, width: number, height: number) {\r\n this.cascade.symbols.resizeRenderer(renderer, width, height)\r\n }\r\n\r\n public setCursorPosition(renderer: Pointer, x: number, y: number, visible: boolean) {\r\n this.cascade.symbols.setCursorPosition(renderer, x, y, visible)\r\n }\r\n\r\n public setCursorColor(renderer: Pointer, color: RGBA) {\r\n this.cascade.symbols.setCursorColor(renderer, color.buffer)\r\n }\r\n\r\n public getCursorState(renderer: Pointer): CursorState {\r\n const cursorBuffer = new ArrayBuffer(CursorStateStruct.size)\r\n this.cascade.symbols.getCursorState(renderer, ptr(cursorBuffer))\r\n const struct = CursorStateStruct.unpack(cursorBuffer)\r\n\r\n return {\r\n x: struct.x,\r\n y: struct.y,\r\n visible: struct.visible,\r\n style: CURSOR_ID_TO_STYLE[struct.style] ?? \"block\",\r\n blinking: struct.blinking,\r\n color: RGBA.fromValues(struct.r, struct.g, struct.b, struct.a),\r\n }\r\n }\r\n\r\n public setCursorStyleOptions(renderer: Pointer, options: CursorStyleOptions): void {\r\n const style = options.style != null ? CURSOR_STYLE_TO_ID[options.style] : 255\r\n const blinking = options.blinking != null ? (options.blinking ? 1 : 0) : 255\r\n const cursor = options.cursor != null ? MOUSE_STYLE_TO_ID[options.cursor] : 255\r\n\r\n const buffer = CursorStyleOptionsStruct.pack({ style, blinking, color: options.color, cursor })\r\n this.cascade.symbols.setCursorStyleOptions(renderer, ptr(buffer))\r\n }\r\n\r\n public render(renderer: Pointer, force: boolean) {\r\n this.cascade.symbols.render(renderer, force)\r\n }\r\n\r\n public createOptimizedBuffer(\r\n width: number,\r\n height: number,\r\n widthMethod: WidthMethod,\r\n respectAlpha: boolean = false,\r\n id?: string,\r\n ): OptimizedBuffer {\r\n if (Number.isNaN(width) || Number.isNaN(height)) {\r\n console.error(new Error(`Invalid dimensions for OptimizedBuffer: ${width}x${height}`).stack)\r\n }\r\n\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n const idToUse = id || \"unnamed buffer\"\r\n const idBytes = this.encoder.encode(idToUse)\r\n const bufferPtr = this.cascade.symbols.createOptimizedBuffer(\r\n width,\r\n height,\r\n respectAlpha,\r\n widthMethodCode,\r\n idBytes,\r\n idBytes.length,\r\n )\r\n if (!bufferPtr) {\r\n throw new Error(`Failed to create optimized buffer: ${width}x${height}`)\r\n }\r\n\r\n return new OptimizedBuffer(this, bufferPtr, width, height, { respectAlpha, id, widthMethod })\r\n }\r\n\r\n public destroyOptimizedBuffer(bufferPtr: Pointer) {\r\n this.cascade.symbols.destroyOptimizedBuffer(bufferPtr)\r\n }\r\n\r\n public drawFrameBuffer(\r\n targetBufferPtr: Pointer,\r\n destX: number,\r\n destY: number,\r\n bufferPtr: Pointer,\r\n sourceX?: number,\r\n sourceY?: number,\r\n sourceWidth?: number,\r\n sourceHeight?: number,\r\n ) {\r\n const srcX = sourceX ?? 0\r\n const srcY = sourceY ?? 0\r\n const srcWidth = sourceWidth ?? 0\r\n const srcHeight = sourceHeight ?? 0\r\n this.cascade.symbols.drawFrameBuffer(targetBufferPtr, destX, destY, bufferPtr, srcX, srcY, srcWidth, srcHeight)\r\n }\r\n\r\n public setDebugOverlay(renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) {\r\n this.cascade.symbols.setDebugOverlay(renderer, enabled, corner)\r\n }\r\n\r\n public clearTerminal(renderer: Pointer) {\r\n this.cascade.symbols.clearTerminal(renderer)\r\n }\r\n\r\n public setTerminalTitle(renderer: Pointer, title: string) {\r\n const titleBytes = this.encoder.encode(title)\r\n this.cascade.symbols.setTerminalTitle(renderer, titleBytes, titleBytes.length)\r\n }\r\n\r\n public copyToClipboardOSC52(renderer: Pointer, target: number, payload: Uint8Array): boolean {\r\n return this.cascade.symbols.copyToClipboardOSC52(renderer, target, payload, payload.length)\r\n }\r\n\r\n public clearClipboardOSC52(renderer: Pointer, target: number): boolean {\r\n return this.cascade.symbols.clearClipboardOSC52(renderer, target)\r\n }\r\n\r\n public addToHitGrid(renderer: Pointer, x: number, y: number, width: number, height: number, id: number) {\r\n this.cascade.symbols.addToHitGrid(renderer, x, y, width, height, id)\r\n }\r\n\r\n public clearCurrentHitGrid(renderer: Pointer) {\r\n this.cascade.symbols.clearCurrentHitGrid(renderer)\r\n }\r\n\r\n public hitGridPushScissorRect(renderer: Pointer, x: number, y: number, width: number, height: number) {\r\n this.cascade.symbols.hitGridPushScissorRect(renderer, x, y, width, height)\r\n }\r\n\r\n public hitGridPopScissorRect(renderer: Pointer) {\r\n this.cascade.symbols.hitGridPopScissorRect(renderer)\r\n }\r\n\r\n public hitGridClearScissorRects(renderer: Pointer) {\r\n this.cascade.symbols.hitGridClearScissorRects(renderer)\r\n }\r\n\r\n public addToCurrentHitGridClipped(\r\n renderer: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n id: number,\r\n ) {\r\n this.cascade.symbols.addToCurrentHitGridClipped(renderer, x, y, width, height, id)\r\n }\r\n\r\n public checkHit(renderer: Pointer, x: number, y: number): number {\r\n return this.cascade.symbols.checkHit(renderer, x, y)\r\n }\r\n\r\n public getHitGridDirty(renderer: Pointer): boolean {\r\n return this.cascade.symbols.getHitGridDirty(renderer)\r\n }\r\n\r\n public dumpHitGrid(renderer: Pointer): void {\r\n this.cascade.symbols.dumpHitGrid(renderer)\r\n }\r\n\r\n public dumpBuffers(renderer: Pointer, timestamp?: number): void {\r\n const ts = timestamp ?? Date.now()\r\n this.cascade.symbols.dumpBuffers(renderer, ts)\r\n }\r\n\r\n public dumpStdoutBuffer(renderer: Pointer, timestamp?: number): void {\r\n const ts = timestamp ?? Date.now()\r\n this.cascade.symbols.dumpStdoutBuffer(renderer, ts)\r\n }\r\n\r\n public restoreTerminalModes(renderer: Pointer): void {\r\n this.cascade.symbols.restoreTerminalModes(renderer)\r\n }\r\n\r\n public enableMouse(renderer: Pointer, enableMovement: boolean): void {\r\n this.cascade.symbols.enableMouse(renderer, enableMovement)\r\n }\r\n\r\n public disableMouse(renderer: Pointer): void {\r\n this.cascade.symbols.disableMouse(renderer)\r\n }\r\n\r\n public enableKittyKeyboard(renderer: Pointer, flags: number): void {\r\n this.cascade.symbols.enableKittyKeyboard(renderer, flags)\r\n }\r\n\r\n public disableKittyKeyboard(renderer: Pointer): void {\r\n this.cascade.symbols.disableKittyKeyboard(renderer)\r\n }\r\n\r\n public setKittyKeyboardFlags(renderer: Pointer, flags: number): void {\r\n this.cascade.symbols.setKittyKeyboardFlags(renderer, flags)\r\n }\r\n\r\n public getKittyKeyboardFlags(renderer: Pointer): number {\r\n return this.cascade.symbols.getKittyKeyboardFlags(renderer)\r\n }\r\n\r\n public setupTerminal(renderer: Pointer, useAlternateScreen: boolean): void {\r\n this.cascade.symbols.setupTerminal(renderer, useAlternateScreen)\r\n }\r\n\r\n public suspendRenderer(renderer: Pointer): void {\r\n this.cascade.symbols.suspendRenderer(renderer)\r\n }\r\n\r\n public resumeRenderer(renderer: Pointer): void {\r\n this.cascade.symbols.resumeRenderer(renderer)\r\n }\r\n\r\n public queryPixelResolution(renderer: Pointer): void {\r\n this.cascade.symbols.queryPixelResolution(renderer)\r\n }\r\n\r\n /**\r\n * Write data to stdout, synchronizing with the render thread if necessary.\r\n * This should be used for ALL stdout writes to avoid race conditions when\r\n * the render thread is active.\r\n */\r\n public writeOut(renderer: Pointer, data: string | Uint8Array): void {\r\n const bytes = typeof data === \"string\" ? new TextEncoder().encode(data) : data\r\n if (bytes.length === 0) return\r\n this.cascade.symbols.writeOut(renderer, ptr(bytes), bytes.length)\r\n }\r\n\r\n // TextBuffer methods\r\n public createTextBuffer(widthMethod: WidthMethod): TextBuffer {\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n const bufferPtr = this.cascade.symbols.createTextBuffer(widthMethodCode)\r\n if (!bufferPtr) {\r\n throw new Error(`Failed to create TextBuffer`)\r\n }\r\n\r\n return new TextBuffer(this, bufferPtr)\r\n }\r\n\r\n public destroyTextBuffer(buffer: Pointer): void {\r\n this.cascade.symbols.destroyTextBuffer(buffer)\r\n }\r\n\r\n public textBufferGetLength(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetLength(buffer)\r\n }\r\n\r\n public textBufferGetByteSize(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetByteSize(buffer)\r\n }\r\n\r\n public textBufferReset(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferReset(buffer)\r\n }\r\n\r\n public textBufferClear(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferClear(buffer)\r\n }\r\n\r\n public textBufferSetDefaultFg(buffer: Pointer, fg: RGBA | null): void {\r\n const fgPtr = fg ? fg.buffer : null\r\n this.cascade.symbols.textBufferSetDefaultFg(buffer, fgPtr)\r\n }\r\n\r\n public textBufferSetDefaultBg(buffer: Pointer, bg: RGBA | null): void {\r\n const bgPtr = bg ? bg.buffer : null\r\n this.cascade.symbols.textBufferSetDefaultBg(buffer, bgPtr)\r\n }\r\n\r\n public textBufferSetDefaultAttributes(buffer: Pointer, attributes: number | null): void {\r\n const attrValue = attributes === null ? null : new Uint8Array([attributes])\r\n this.cascade.symbols.textBufferSetDefaultAttributes(buffer, attrValue)\r\n }\r\n\r\n public textBufferResetDefaults(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferResetDefaults(buffer)\r\n }\r\n\r\n public textBufferGetTabWidth(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetTabWidth(buffer)\r\n }\r\n\r\n public textBufferSetTabWidth(buffer: Pointer, width: number): void {\r\n this.cascade.symbols.textBufferSetTabWidth(buffer, width)\r\n }\r\n\r\n public textBufferRegisterMemBuffer(buffer: Pointer, bytes: Uint8Array, owned: boolean = false): number {\r\n const result = this.cascade.symbols.textBufferRegisterMemBuffer(buffer, bytes, bytes.length, owned)\r\n if (result === 0xffff) {\r\n throw new Error(\"Failed to register memory buffer\")\r\n }\r\n return result\r\n }\r\n\r\n public textBufferReplaceMemBuffer(\r\n buffer: Pointer,\r\n memId: number,\r\n bytes: Uint8Array,\r\n owned: boolean = false,\r\n ): boolean {\r\n return this.cascade.symbols.textBufferReplaceMemBuffer(buffer, memId, bytes, bytes.length, owned)\r\n }\r\n\r\n public textBufferClearMemRegistry(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferClearMemRegistry(buffer)\r\n }\r\n\r\n public textBufferSetTextFromMem(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.textBufferSetTextFromMem(buffer, memId)\r\n }\r\n\r\n public textBufferAppend(buffer: Pointer, bytes: Uint8Array): void {\r\n this.cascade.symbols.textBufferAppend(buffer, bytes, bytes.length)\r\n }\r\n\r\n public textBufferAppendFromMemId(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.textBufferAppendFromMemId(buffer, memId)\r\n }\r\n\r\n public textBufferLoadFile(buffer: Pointer, path: string): boolean {\r\n const pathBytes = this.encoder.encode(path)\r\n return this.cascade.symbols.textBufferLoadFile(buffer, pathBytes, pathBytes.length)\r\n }\r\n\r\n public textBufferSetStyledText(\r\n buffer: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string } }>,\r\n ): void {\r\n if (chunks.length === 0) {\r\n this.textBufferClear(buffer)\r\n return\r\n }\r\n\r\n const chunksBuffer = StyledChunkStruct.packList(chunks)\r\n this.cascade.symbols.textBufferSetStyledText(buffer, ptr(chunksBuffer), chunks.length)\r\n }\r\n\r\n public textBufferGetLineCount(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetLineCount(buffer)\r\n }\r\n\r\n private textBufferGetPlainText(buffer: Pointer, outPtr: Pointer, maxLen: number): number {\r\n const result = this.cascade.symbols.textBufferGetPlainText(buffer, outPtr, maxLen)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public getPlainTextBytes(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.textBufferGetPlainText(buffer, ptr(outBuffer), maxLength)\r\n\r\n if (actualLen === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, actualLen)\r\n }\r\n\r\n public textBufferGetTextRange(\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.cascade.symbols.textBufferGetTextRange(\r\n buffer,\r\n startOffset,\r\n endOffset,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n\r\n if (len === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public textBufferGetTextRangeByCoords(\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.cascade.symbols.textBufferGetTextRangeByCoords(\r\n buffer,\r\n startRow,\r\n startCol,\r\n endRow,\r\n endCol,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n\r\n if (len === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n // TextBufferView methods\r\n public createTextBufferView(textBuffer: Pointer): Pointer {\r\n const viewPtr = this.cascade.symbols.createTextBufferView(textBuffer)\r\n if (!viewPtr) {\r\n throw new Error(\"Failed to create TextBufferView\")\r\n }\r\n return viewPtr\r\n }\r\n\r\n public destroyTextBufferView(view: Pointer): void {\r\n this.cascade.symbols.destroyTextBufferView(view)\r\n }\r\n\r\n public textBufferViewSetSelection(\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.textBufferViewSetSelection(view, start, end, bg, fg)\r\n }\r\n\r\n public textBufferViewResetSelection(view: Pointer): void {\r\n this.cascade.symbols.textBufferViewResetSelection(view)\r\n }\r\n\r\n public textBufferViewGetSelection(view: Pointer): { start: number; end: number } | null {\r\n const packedInfo = this.textBufferViewGetSelectionInfo(view)\r\n\r\n // Check for no selection marker (0xFFFFFFFF_FFFFFFFF)\r\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\r\n return null\r\n }\r\n\r\n const start = Number(packedInfo >> 32n)\r\n const end = Number(packedInfo & 0xffff_ffffn)\r\n\r\n return { start, end }\r\n }\r\n\r\n private textBufferViewGetSelectionInfo(view: Pointer): bigint {\r\n return this.cascade.symbols.textBufferViewGetSelectionInfo(view)\r\n }\r\n\r\n public textBufferViewSetLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.textBufferViewSetLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\r\n }\r\n\r\n public textBufferViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.textBufferViewUpdateSelection(view, end, bg, fg)\r\n }\r\n\r\n public textBufferViewUpdateLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.textBufferViewUpdateLocalSelection(view, anchorX, anchorY, focusX, focusY, bg, fg)\r\n }\r\n\r\n public textBufferViewResetLocalSelection(view: Pointer): void {\r\n this.cascade.symbols.textBufferViewResetLocalSelection(view)\r\n }\r\n\r\n public textBufferViewSetWrapWidth(view: Pointer, width: number): void {\r\n this.cascade.symbols.textBufferViewSetWrapWidth(view, width)\r\n }\r\n\r\n public textBufferViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\r\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\r\n this.cascade.symbols.textBufferViewSetWrapMode(view, modeValue)\r\n }\r\n\r\n public textBufferViewSetViewportSize(view: Pointer, width: number, height: number): void {\r\n this.cascade.symbols.textBufferViewSetViewportSize(view, width, height)\r\n }\r\n\r\n public textBufferViewSetViewport(view: Pointer, x: number, y: number, width: number, height: number): void {\r\n this.cascade.symbols.textBufferViewSetViewport(view, x, y, width, height)\r\n }\r\n\r\n public textBufferViewGetLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.textBufferViewGetLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n public textBufferViewGetLogicalLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.textBufferViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n public textBufferViewGetVirtualLineCount(view: Pointer): number {\r\n return this.cascade.symbols.textBufferViewGetVirtualLineCount(view)\r\n }\r\n\r\n private textBufferViewGetLineInfoDirect(view: Pointer, outPtr: Pointer): void {\r\n this.cascade.symbols.textBufferViewGetLineInfoDirect(view, outPtr)\r\n }\r\n\r\n private textBufferViewGetLogicalLineInfoDirect(view: Pointer, outPtr: Pointer): void {\r\n this.cascade.symbols.textBufferViewGetLogicalLineInfoDirect(view, outPtr)\r\n }\r\n\r\n private textBufferViewGetSelectedText(view: Pointer, outPtr: Pointer, maxLen: number): number {\r\n const result = this.cascade.symbols.textBufferViewGetSelectedText(view, outPtr, maxLen)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n private textBufferViewGetPlainText(view: Pointer, outPtr: Pointer, maxLen: number): number {\r\n const result = this.cascade.symbols.textBufferViewGetPlainText(view, outPtr, maxLen)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public textBufferViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.textBufferViewGetSelectedText(view, ptr(outBuffer), maxLength)\r\n\r\n if (actualLen === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, actualLen)\r\n }\r\n\r\n public textBufferViewGetPlainTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n\r\n const actualLen = this.textBufferViewGetPlainText(view, ptr(outBuffer), maxLength)\r\n\r\n if (actualLen === 0) {\r\n return null\r\n }\r\n\r\n return outBuffer.slice(0, actualLen)\r\n }\r\n\r\n public textBufferViewSetTabIndicator(view: Pointer, indicator: number): void {\r\n this.cascade.symbols.textBufferViewSetTabIndicator(view, indicator)\r\n }\r\n\r\n public textBufferViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\r\n this.cascade.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer)\r\n }\r\n\r\n public textBufferViewSetTruncate(view: Pointer, truncate: boolean): void {\r\n this.cascade.symbols.textBufferViewSetTruncate(view, truncate)\r\n }\r\n\r\n public textBufferViewMeasureForDimensions(\r\n view: Pointer,\r\n width: number,\r\n height: number,\r\n ): { lineCount: number; maxWidth: number } | null {\r\n const resultBuffer = new ArrayBuffer(MeasureResultStruct.size)\r\n const resultPtr = ptr(new Uint8Array(resultBuffer))\r\n const success = this.cascade.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr)\r\n if (!success) {\r\n return null\r\n }\r\n const result = MeasureResultStruct.unpack(resultBuffer)\r\n return result\r\n }\r\n\r\n public textBufferAddHighlightByCharRange(buffer: Pointer, highlight: Highlight): void {\r\n const packedHighlight = HighlightStruct.pack(highlight)\r\n this.cascade.symbols.textBufferAddHighlightByCharRange(buffer, ptr(packedHighlight))\r\n }\r\n\r\n public textBufferAddHighlight(buffer: Pointer, lineIdx: number, highlight: Highlight): void {\r\n const packedHighlight = HighlightStruct.pack(highlight)\r\n this.cascade.symbols.textBufferAddHighlight(buffer, lineIdx, ptr(packedHighlight))\r\n }\r\n\r\n public textBufferRemoveHighlightsByRef(buffer: Pointer, hlRef: number): void {\r\n this.cascade.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef)\r\n }\r\n\r\n public textBufferClearLineHighlights(buffer: Pointer, lineIdx: number): void {\r\n this.cascade.symbols.textBufferClearLineHighlights(buffer, lineIdx)\r\n }\r\n\r\n public textBufferClearAllHighlights(buffer: Pointer): void {\r\n this.cascade.symbols.textBufferClearAllHighlights(buffer)\r\n }\r\n\r\n public textBufferSetSyntaxStyle(buffer: Pointer, style: Pointer | null): void {\r\n this.cascade.symbols.textBufferSetSyntaxStyle(buffer, style)\r\n }\r\n\r\n public textBufferGetLineHighlights(buffer: Pointer, lineIdx: number): Array<Highlight> {\r\n const outCountBuf = new BigUint64Array(1)\r\n\r\n const nativePtr = this.cascade.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr(outCountBuf))\r\n if (!nativePtr) return []\r\n\r\n const count = Number(outCountBuf[0])\r\n const byteLen = count * HighlightStruct.size\r\n const raw = toArrayBuffer(nativePtr, 0, byteLen)\r\n const results = HighlightStruct.unpackList(raw, count)\r\n\r\n this.cascade.symbols.textBufferFreeLineHighlights(nativePtr, count)\r\n\r\n return results\r\n }\r\n\r\n public textBufferGetHighlightCount(buffer: Pointer): number {\r\n return this.cascade.symbols.textBufferGetHighlightCount(buffer)\r\n }\r\n\r\n public getArenaAllocatedBytes(): number {\r\n const result = this.cascade.symbols.getArenaAllocatedBytes()\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public getBuildOptions(): BuildOptions {\r\n const optionsBuffer = new ArrayBuffer(BuildOptionsStruct.size)\r\n this.cascade.symbols.getBuildOptions(ptr(optionsBuffer))\r\n const options = BuildOptionsStruct.unpack(optionsBuffer)\r\n\r\n return {\r\n gpaSafeStats: !!options.gpaSafeStats,\r\n gpaMemoryLimitTracking: !!options.gpaMemoryLimitTracking,\r\n }\r\n }\r\n\r\n public getAllocatorStats(): AllocatorStats {\r\n const statsBuffer = new ArrayBuffer(AllocatorStatsStruct.size)\r\n this.cascade.symbols.getAllocatorStats(ptr(statsBuffer))\r\n const stats = AllocatorStatsStruct.unpack(statsBuffer)\r\n\r\n return {\r\n totalRequestedBytes: toNumber(stats.totalRequestedBytes),\r\n activeAllocations: toNumber(stats.activeAllocations),\r\n smallAllocations: toNumber(stats.smallAllocations),\r\n largeAllocations: toNumber(stats.largeAllocations),\r\n requestedBytesValid: !!stats.requestedBytesValid,\r\n }\r\n }\r\n\r\n public bufferDrawTextBufferView(buffer: Pointer, view: Pointer, x: number, y: number): void {\r\n this.cascade.symbols.bufferDrawTextBufferView(buffer, view, x, y)\r\n }\r\n\r\n public bufferDrawEditorView(buffer: Pointer, view: Pointer, x: number, y: number): void {\r\n this.cascade.symbols.bufferDrawEditorView(buffer, view, x, y)\r\n }\r\n\r\n // EditorView methods\r\n public createEditorView(editBufferPtr: Pointer, viewportWidth: number, viewportHeight: number): Pointer {\r\n const viewPtr = this.cascade.symbols.createEditorView(editBufferPtr, viewportWidth, viewportHeight)\r\n if (!viewPtr) {\r\n throw new Error(\"Failed to create EditorView\")\r\n }\r\n return viewPtr\r\n }\r\n\r\n public destroyEditorView(view: Pointer): void {\r\n this.cascade.symbols.destroyEditorView(view)\r\n }\r\n\r\n public editorViewSetViewportSize(view: Pointer, width: number, height: number): void {\r\n this.cascade.symbols.editorViewSetViewportSize(view, width, height)\r\n }\r\n\r\n public editorViewSetViewport(\r\n view: Pointer,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n moveCursor: boolean,\r\n ): void {\r\n this.cascade.symbols.editorViewSetViewport(view, x, y, width, height, moveCursor)\r\n }\r\n\r\n public editorViewGetViewport(view: Pointer): { offsetY: number; offsetX: number; height: number; width: number } {\r\n const x = new Uint32Array(1)\r\n const y = new Uint32Array(1)\r\n const width = new Uint32Array(1)\r\n const height = new Uint32Array(1)\r\n\r\n this.cascade.symbols.editorViewGetViewport(view, ptr(x), ptr(y), ptr(width), ptr(height))\r\n\r\n return {\r\n offsetX: x[0],\r\n offsetY: y[0],\r\n width: width[0],\r\n height: height[0],\r\n }\r\n }\r\n\r\n public editorViewSetScrollMargin(view: Pointer, margin: number): void {\r\n this.cascade.symbols.editorViewSetScrollMargin(view, margin)\r\n }\r\n\r\n public editorViewSetWrapMode(view: Pointer, mode: \"none\" | \"char\" | \"word\"): void {\r\n const modeValue = mode === \"none\" ? 0 : mode === \"char\" ? 1 : 2\r\n this.cascade.symbols.editorViewSetWrapMode(view, modeValue)\r\n }\r\n\r\n public editorViewGetVirtualLineCount(view: Pointer): number {\r\n return this.cascade.symbols.editorViewGetVirtualLineCount(view)\r\n }\r\n\r\n public editorViewGetTotalVirtualLineCount(view: Pointer): number {\r\n return this.cascade.symbols.editorViewGetTotalVirtualLineCount(view)\r\n }\r\n\r\n public editorViewGetTextBufferView(view: Pointer): Pointer {\r\n const result = this.cascade.symbols.editorViewGetTextBufferView(view)\r\n if (!result) {\r\n throw new Error(\"Failed to get TextBufferView from EditorView\")\r\n }\r\n return result\r\n }\r\n\r\n public editorViewGetLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.cascade.symbols.editorViewGetLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n public editorViewGetLogicalLineInfo(view: Pointer): LineInfo {\r\n const outBuffer = new ArrayBuffer(LineInfoStruct.size)\r\n this.cascade.symbols.editorViewGetLogicalLineInfoDirect(view, ptr(outBuffer))\r\n const struct = LineInfoStruct.unpack(outBuffer)\r\n return {\r\n maxLineWidth: struct.maxWidth,\r\n lineStarts: struct.starts as number[],\r\n lineWidths: struct.widths as number[],\r\n lineSources: struct.sources as number[],\r\n lineWraps: struct.wraps as number[],\r\n }\r\n }\r\n\r\n // EditBuffer implementations\r\n public createEditBuffer(widthMethod: WidthMethod): Pointer {\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n const bufferPtr = this.cascade.symbols.createEditBuffer(widthMethodCode)\r\n if (!bufferPtr) {\r\n throw new Error(\"Failed to create EditBuffer\")\r\n }\r\n return bufferPtr\r\n }\r\n\r\n public destroyEditBuffer(buffer: Pointer): void {\r\n this.cascade.symbols.destroyEditBuffer(buffer)\r\n }\r\n\r\n public editBufferSetText(buffer: Pointer, textBytes: Uint8Array): void {\r\n this.cascade.symbols.editBufferSetText(buffer, textBytes, textBytes.length)\r\n }\r\n\r\n public editBufferSetTextFromMem(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.editBufferSetTextFromMem(buffer, memId)\r\n }\r\n\r\n public editBufferReplaceText(buffer: Pointer, textBytes: Uint8Array): void {\r\n this.cascade.symbols.editBufferReplaceText(buffer, textBytes, textBytes.length)\r\n }\r\n\r\n public editBufferReplaceTextFromMem(buffer: Pointer, memId: number): void {\r\n this.cascade.symbols.editBufferReplaceTextFromMem(buffer, memId)\r\n }\r\n\r\n public editBufferGetText(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferGetText(buffer, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferInsertChar(buffer: Pointer, char: string): void {\r\n const charBytes = this.encoder.encode(char)\r\n this.cascade.symbols.editBufferInsertChar(buffer, charBytes, charBytes.length)\r\n }\r\n\r\n public editBufferInsertText(buffer: Pointer, text: string): void {\r\n const textBytes = this.encoder.encode(text)\r\n this.cascade.symbols.editBufferInsertText(buffer, textBytes, textBytes.length)\r\n }\r\n\r\n public editBufferDeleteChar(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDeleteChar(buffer)\r\n }\r\n\r\n public editBufferDeleteCharBackward(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDeleteCharBackward(buffer)\r\n }\r\n\r\n public editBufferDeleteRange(\r\n buffer: Pointer,\r\n startLine: number,\r\n startCol: number,\r\n endLine: number,\r\n endCol: number,\r\n ): void {\r\n this.cascade.symbols.editBufferDeleteRange(buffer, startLine, startCol, endLine, endCol)\r\n }\r\n\r\n public editBufferNewLine(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferNewLine(buffer)\r\n }\r\n\r\n public editBufferDeleteLine(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDeleteLine(buffer)\r\n }\r\n\r\n public editBufferMoveCursorLeft(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorLeft(buffer)\r\n }\r\n\r\n public editBufferMoveCursorRight(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorRight(buffer)\r\n }\r\n\r\n public editBufferMoveCursorUp(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorUp(buffer)\r\n }\r\n\r\n public editBufferMoveCursorDown(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferMoveCursorDown(buffer)\r\n }\r\n\r\n public editBufferGotoLine(buffer: Pointer, line: number): void {\r\n this.cascade.symbols.editBufferGotoLine(buffer, line)\r\n }\r\n\r\n public editBufferSetCursor(buffer: Pointer, line: number, byteOffset: number): void {\r\n this.cascade.symbols.editBufferSetCursor(buffer, line, byteOffset)\r\n }\r\n\r\n public editBufferSetCursorToLineCol(buffer: Pointer, line: number, col: number): void {\r\n this.cascade.symbols.editBufferSetCursorToLineCol(buffer, line, col)\r\n }\r\n\r\n public editBufferSetCursorByOffset(buffer: Pointer, offset: number): void {\r\n this.cascade.symbols.editBufferSetCursorByOffset(buffer, offset)\r\n }\r\n\r\n public editBufferGetCursorPosition(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetCursorPosition(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferGetId(buffer: Pointer): number {\r\n return this.cascade.symbols.editBufferGetId(buffer)\r\n }\r\n\r\n public editBufferGetTextBuffer(buffer: Pointer): Pointer {\r\n const result = this.cascade.symbols.editBufferGetTextBuffer(buffer)\r\n if (!result) {\r\n throw new Error(\"Failed to get TextBuffer from EditBuffer\")\r\n }\r\n return result\r\n }\r\n\r\n public editBufferDebugLogRope(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferDebugLogRope(buffer)\r\n }\r\n\r\n public editBufferUndo(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferUndo(buffer, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferRedo(buffer: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferRedo(buffer, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferCanUndo(buffer: Pointer): boolean {\r\n return this.cascade.symbols.editBufferCanUndo(buffer)\r\n }\r\n\r\n public editBufferCanRedo(buffer: Pointer): boolean {\r\n return this.cascade.symbols.editBufferCanRedo(buffer)\r\n }\r\n\r\n public editBufferClearHistory(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferClearHistory(buffer)\r\n }\r\n\r\n public editBufferClear(buffer: Pointer): void {\r\n this.cascade.symbols.editBufferClear(buffer)\r\n }\r\n\r\n public editBufferGetNextWordBoundary(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetNextWordBoundary(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferGetPrevWordBoundary(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetPrevWordBoundary(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferGetEOL(buffer: Pointer): LogicalCursor {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n this.cascade.symbols.editBufferGetEOL(buffer, ptr(cursorBuffer))\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferOffsetToPosition(buffer: Pointer, offset: number): LogicalCursor | null {\r\n const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size)\r\n const success = this.cascade.symbols.editBufferOffsetToPosition(buffer, offset, ptr(cursorBuffer))\r\n if (!success) return null\r\n return LogicalCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editBufferPositionToOffset(buffer: Pointer, row: number, col: number): number {\r\n return this.cascade.symbols.editBufferPositionToOffset(buffer, row, col)\r\n }\r\n\r\n public editBufferGetLineStartOffset(buffer: Pointer, row: number): number {\r\n return this.cascade.symbols.editBufferGetLineStartOffset(buffer, row)\r\n }\r\n\r\n public editBufferGetTextRange(\r\n buffer: Pointer,\r\n startOffset: number,\r\n endOffset: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferGetTextRange(\r\n buffer,\r\n startOffset,\r\n endOffset,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editBufferGetTextRangeByCoords(\r\n buffer: Pointer,\r\n startRow: number,\r\n startCol: number,\r\n endRow: number,\r\n endCol: number,\r\n maxLength: number,\r\n ): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editBufferGetTextRangeByCoords(\r\n buffer,\r\n startRow,\r\n startCol,\r\n endRow,\r\n endCol,\r\n ptr(outBuffer),\r\n maxLength,\r\n )\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n // EditorView selection and editing implementations\r\n public editorViewSetSelection(\r\n view: Pointer,\r\n start: number,\r\n end: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n ): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.editorViewSetSelection(view, start, end, bg, fg)\r\n }\r\n\r\n public editorViewResetSelection(view: Pointer): void {\r\n this.cascade.symbols.editorViewResetSelection(view)\r\n }\r\n\r\n public editorViewGetSelection(view: Pointer): { start: number; end: number } | null {\r\n const packedInfo = this.cascade.symbols.editorViewGetSelection(view)\r\n if (packedInfo === 0xffff_ffff_ffff_ffffn) {\r\n return null\r\n }\r\n const start = Number(packedInfo >> 32n)\r\n const end = Number(packedInfo & 0xffff_ffffn)\r\n return { start, end }\r\n }\r\n\r\n public editorViewSetLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.editorViewSetLocalSelection(\r\n view,\r\n anchorX,\r\n anchorY,\r\n focusX,\r\n focusY,\r\n bg,\r\n fg,\r\n updateCursor,\r\n followCursor,\r\n )\r\n }\r\n\r\n public editorViewUpdateSelection(view: Pointer, end: number, bgColor: RGBA | null, fgColor: RGBA | null): void {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n this.cascade.symbols.editorViewUpdateSelection(view, end, bg, fg)\r\n }\r\n\r\n public editorViewUpdateLocalSelection(\r\n view: Pointer,\r\n anchorX: number,\r\n anchorY: number,\r\n focusX: number,\r\n focusY: number,\r\n bgColor: RGBA | null,\r\n fgColor: RGBA | null,\r\n updateCursor: boolean,\r\n followCursor: boolean,\r\n ): boolean {\r\n const bg = bgColor ? bgColor.buffer : null\r\n const fg = fgColor ? fgColor.buffer : null\r\n return this.cascade.symbols.editorViewUpdateLocalSelection(\r\n view,\r\n anchorX,\r\n anchorY,\r\n focusX,\r\n focusY,\r\n bg,\r\n fg,\r\n updateCursor,\r\n followCursor,\r\n )\r\n }\r\n\r\n public editorViewResetLocalSelection(view: Pointer): void {\r\n this.cascade.symbols.editorViewResetLocalSelection(view)\r\n }\r\n\r\n public editorViewGetSelectedTextBytes(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editorViewGetSelectedTextBytes(view, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editorViewGetCursor(view: Pointer): { row: number; col: number } {\r\n const row = new Uint32Array(1)\r\n const col = new Uint32Array(1)\r\n this.cascade.symbols.editorViewGetCursor(view, ptr(row), ptr(col))\r\n return { row: row[0], col: col[0] }\r\n }\r\n\r\n public editorViewGetText(view: Pointer, maxLength: number): Uint8Array | null {\r\n const outBuffer = new Uint8Array(maxLength)\r\n const actualLen = this.cascade.symbols.editorViewGetText(view, ptr(outBuffer), maxLength)\r\n const len = typeof actualLen === \"bigint\" ? Number(actualLen) : actualLen\r\n if (len === 0) return null\r\n return outBuffer.slice(0, len)\r\n }\r\n\r\n public editorViewGetVisualCursor(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetVisualCursor(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewMoveUpVisual(view: Pointer): void {\r\n this.cascade.symbols.editorViewMoveUpVisual(view)\r\n }\r\n\r\n public editorViewMoveDownVisual(view: Pointer): void {\r\n this.cascade.symbols.editorViewMoveDownVisual(view)\r\n }\r\n\r\n public editorViewDeleteSelectedText(view: Pointer): void {\r\n this.cascade.symbols.editorViewDeleteSelectedText(view)\r\n }\r\n\r\n public editorViewSetCursorByOffset(view: Pointer, offset: number): void {\r\n this.cascade.symbols.editorViewSetCursorByOffset(view, offset)\r\n }\r\n\r\n public editorViewGetNextWordBoundary(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetNextWordBoundary(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetPrevWordBoundary(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetPrevWordBoundary(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetEOL(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetEOL(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetVisualSOL(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetVisualSOL(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public editorViewGetVisualEOL(view: Pointer): VisualCursor {\r\n const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size)\r\n this.cascade.symbols.editorViewGetVisualEOL(view, ptr(cursorBuffer))\r\n return VisualCursorStruct.unpack(cursorBuffer)\r\n }\r\n\r\n public bufferPushScissorRect(buffer: Pointer, x: number, y: number, width: number, height: number): void {\r\n this.cascade.symbols.bufferPushScissorRect(buffer, x, y, width, height)\r\n }\r\n\r\n public bufferPopScissorRect(buffer: Pointer): void {\r\n this.cascade.symbols.bufferPopScissorRect(buffer)\r\n }\r\n\r\n public bufferClearScissorRects(buffer: Pointer): void {\r\n this.cascade.symbols.bufferClearScissorRects(buffer)\r\n }\r\n\r\n public bufferPushOpacity(buffer: Pointer, opacity: number): void {\r\n this.cascade.symbols.bufferPushOpacity(buffer, opacity)\r\n }\r\n\r\n public bufferPopOpacity(buffer: Pointer): void {\r\n this.cascade.symbols.bufferPopOpacity(buffer)\r\n }\r\n\r\n public bufferGetCurrentOpacity(buffer: Pointer): number {\r\n return this.cascade.symbols.bufferGetCurrentOpacity(buffer)\r\n }\r\n\r\n public bufferClearOpacity(buffer: Pointer): void {\r\n this.cascade.symbols.bufferClearOpacity(buffer)\r\n }\r\n\r\n public getTerminalCapabilities(renderer: Pointer) {\r\n const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size)\r\n this.cascade.symbols.getTerminalCapabilities(renderer, ptr(capsBuffer))\r\n\r\n const caps = TerminalCapabilitiesStruct.unpack(capsBuffer)\r\n\r\n return {\r\n kitty_keyboard: caps.kitty_keyboard,\r\n kitty_graphics: caps.kitty_graphics,\r\n rgb: caps.rgb,\r\n unicode: caps.unicode,\r\n sgr_pixels: caps.sgr_pixels,\r\n color_scheme_updates: caps.color_scheme_updates,\r\n explicit_width: caps.explicit_width,\r\n scaled_text: caps.scaled_text,\r\n sixel: caps.sixel,\r\n focus_tracking: caps.focus_tracking,\r\n sync: caps.sync,\r\n bracketed_paste: caps.bracketed_paste,\r\n hyperlinks: caps.hyperlinks,\r\n osc52: caps.osc52,\r\n explicit_cursor_positioning: caps.explicit_cursor_positioning,\r\n terminal: {\r\n name: caps.term_name ?? \"\",\r\n version: caps.term_version ?? \"\",\r\n from_xtversion: caps.term_from_xtversion,\r\n },\r\n }\r\n }\r\n\r\n public processCapabilityResponse(renderer: Pointer, response: string): void {\r\n const responseBytes = this.encoder.encode(response)\r\n this.cascade.symbols.processCapabilityResponse(renderer, responseBytes, responseBytes.length)\r\n }\r\n\r\n public encodeUnicode(\r\n text: string,\r\n widthMethod: WidthMethod,\r\n ): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\r\n const textBytes = this.encoder.encode(text)\r\n const widthMethodCode = widthMethod === \"wcwidth\" ? 0 : 1\r\n\r\n const outPtrBuffer = new ArrayBuffer(8) // Pointer size\r\n const outLenBuffer = new ArrayBuffer(8) // usize\r\n\r\n const success = this.cascade.symbols.encodeUnicode(\r\n textBytes,\r\n textBytes.length,\r\n ptr(outPtrBuffer),\r\n ptr(outLenBuffer),\r\n widthMethodCode,\r\n )\r\n\r\n if (!success) {\r\n return null\r\n }\r\n\r\n const outPtrView = new BigUint64Array(outPtrBuffer)\r\n const outLenView = new BigUint64Array(outLenBuffer)\r\n\r\n const resultPtr = Number(outPtrView[0]) as Pointer\r\n const resultLen = Number(outLenView[0])\r\n\r\n if (resultLen === 0) {\r\n return { ptr: resultPtr, data: [] }\r\n }\r\n\r\n // Convert pointer to ArrayBuffer and use EncodedCharStruct to unpack the list\r\n const byteLen = resultLen * EncodedCharStruct.size\r\n const raw = toArrayBuffer(resultPtr, 0, byteLen)\r\n const data = EncodedCharStruct.unpackList(raw, resultLen)\r\n\r\n return { ptr: resultPtr, data }\r\n }\r\n\r\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\r\n this.cascade.symbols.freeUnicode(encoded.ptr, encoded.data.length)\r\n }\r\n\r\n public bufferDrawChar(\r\n buffer: Pointer,\r\n char: number,\r\n x: number,\r\n y: number,\r\n fg: RGBA,\r\n bg: RGBA,\r\n attributes: number = 0,\r\n ): void {\r\n this.cascade.symbols.bufferDrawChar(buffer, char, x, y, fg.buffer, bg.buffer, attributes)\r\n }\r\n\r\n public registerNativeSpanFeedStream(stream: Pointer, handler: NativeSpanFeedEventHandler): void {\r\n const callback = this.ensureNativeSpanFeedCallback()\r\n this.nativeSpanFeedHandlers.set(toPointer(stream), handler)\r\n this.cascade.symbols.streamSetCallback(stream, callback.ptr)\r\n }\r\n\r\n public unregisterNativeSpanFeedStream(stream: Pointer): void {\r\n this.cascade.symbols.streamSetCallback(stream, null)\r\n this.nativeSpanFeedHandlers.delete(toPointer(stream))\r\n }\r\n\r\n public createNativeSpanFeed(options?: NativeSpanFeedOptions | null): Pointer {\r\n const optionsBuffer = options == null ? null : NativeSpanFeedOptionsStruct.pack(options)\r\n const streamPtr = this.cascade.symbols.createNativeSpanFeed(optionsBuffer ? ptr(optionsBuffer) : null)\r\n if (!streamPtr) {\r\n throw new Error(\"Failed to create stream\")\r\n }\r\n return toPointer(streamPtr)\r\n }\r\n\r\n public attachNativeSpanFeed(stream: Pointer): number {\r\n return this.cascade.symbols.attachNativeSpanFeed(stream)\r\n }\r\n\r\n public destroyNativeSpanFeed(stream: Pointer): void {\r\n this.cascade.symbols.destroyNativeSpanFeed(stream)\r\n this.nativeSpanFeedHandlers.delete(toPointer(stream))\r\n }\r\n\r\n public streamWrite(stream: Pointer, data: Uint8Array | string): number {\r\n const bytes = typeof data === \"string\" ? this.encoder.encode(data) : data\r\n return this.cascade.symbols.streamWrite(stream, ptr(bytes), bytes.length)\r\n }\r\n\r\n public streamCommit(stream: Pointer): number {\r\n return this.cascade.symbols.streamCommit(stream)\r\n }\r\n\r\n public streamDrainSpans(stream: Pointer, outBuffer: Uint8Array, maxSpans: number): number {\r\n const count = this.cascade.symbols.streamDrainSpans(stream, ptr(outBuffer), maxSpans)\r\n return toNumber(count)\r\n }\r\n\r\n public streamClose(stream: Pointer): number {\r\n return this.cascade.symbols.streamClose(stream)\r\n }\r\n\r\n public streamSetOptions(stream: Pointer, options: NativeSpanFeedOptions): number {\r\n const optionsBuffer = NativeSpanFeedOptionsStruct.pack(options)\r\n return this.cascade.symbols.streamSetOptions(stream, ptr(optionsBuffer))\r\n }\r\n\r\n public streamGetStats(stream: Pointer): NativeSpanFeedStats | null {\r\n const statsBuffer = new ArrayBuffer(NativeSpanFeedStatsStruct.size)\r\n const status = this.cascade.symbols.streamGetStats(stream, ptr(statsBuffer))\r\n if (status !== 0) {\r\n return null\r\n }\r\n const stats = NativeSpanFeedStatsStruct.unpack(statsBuffer)\r\n return {\r\n bytesWritten: typeof stats.bytesWritten === \"bigint\" ? stats.bytesWritten : BigInt(stats.bytesWritten),\r\n spansCommitted: typeof stats.spansCommitted === \"bigint\" ? stats.spansCommitted : BigInt(stats.spansCommitted),\r\n chunks: stats.chunks,\r\n pendingSpans: stats.pendingSpans,\r\n }\r\n }\r\n\r\n public streamReserve(stream: Pointer, minLen: number): { status: number; info: ReserveInfo | null } {\r\n const reserveBuffer = new ArrayBuffer(ReserveInfoStruct.size)\r\n const status = this.cascade.symbols.streamReserve(stream, minLen, ptr(reserveBuffer))\r\n if (status !== 0) {\r\n return { status, info: null }\r\n }\r\n return { status, info: ReserveInfoStruct.unpack(reserveBuffer) }\r\n }\r\n\r\n public streamCommitReserved(stream: Pointer, length: number): number {\r\n return this.cascade.symbols.streamCommitReserved(stream, length)\r\n }\r\n\r\n public createSyntaxStyle(): Pointer {\r\n const stylePtr = this.cascade.symbols.createSyntaxStyle()\r\n if (!stylePtr) {\r\n throw new Error(\"Failed to create SyntaxStyle\")\r\n }\r\n return stylePtr\r\n }\r\n\r\n public destroySyntaxStyle(style: Pointer): void {\r\n this.cascade.symbols.destroySyntaxStyle(style)\r\n }\r\n\r\n public syntaxStyleRegister(\r\n style: Pointer,\r\n name: string,\r\n fg: RGBA | null,\r\n bg: RGBA | null,\r\n attributes: number,\r\n ): number {\r\n const nameBytes = this.encoder.encode(name)\r\n const fgPtr = fg ? fg.buffer : null\r\n const bgPtr = bg ? bg.buffer : null\r\n return this.cascade.symbols.syntaxStyleRegister(style, nameBytes, nameBytes.length, fgPtr, bgPtr, attributes)\r\n }\r\n\r\n public syntaxStyleResolveByName(style: Pointer, name: string): number | null {\r\n const nameBytes = this.encoder.encode(name)\r\n const id = this.cascade.symbols.syntaxStyleResolveByName(style, nameBytes, nameBytes.length)\r\n return id === 0 ? null : id\r\n }\r\n\r\n public syntaxStyleGetStyleCount(style: Pointer): number {\r\n const result = this.cascade.symbols.syntaxStyleGetStyleCount(style)\r\n return typeof result === \"bigint\" ? Number(result) : result\r\n }\r\n\r\n public editorViewSetPlaceholderStyledText(\r\n view: Pointer,\r\n chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number }>,\r\n ): void {\r\n const nonEmptyChunks = chunks.filter((c) => c.text.length > 0)\r\n if (nonEmptyChunks.length === 0) {\r\n this.cascade.symbols.editorViewSetPlaceholderStyledText(view, null, 0)\r\n return\r\n }\r\n\r\n const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks)\r\n this.cascade.symbols.editorViewSetPlaceholderStyledText(view, ptr(chunksBuffer), nonEmptyChunks.length)\r\n }\r\n\r\n public editorViewSetTabIndicator(view: Pointer, indicator: number): void {\r\n this.cascade.symbols.editorViewSetTabIndicator(view, indicator)\r\n }\r\n\r\n public editorViewSetTabIndicatorColor(view: Pointer, color: RGBA): void {\r\n this.cascade.symbols.editorViewSetTabIndicatorColor(view, color.buffer)\r\n }\r\n\r\n public onNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\r\n this._nativeEvents.on(name, handler)\r\n }\r\n\r\n public onceNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\r\n this._nativeEvents.once(name, handler)\r\n }\r\n\r\n public offNativeEvent(name: string, handler: (data: ArrayBuffer) => void): void {\r\n this._nativeEvents.off(name, handler)\r\n }\r\n\r\n public onAnyNativeEvent(handler: (name: string, data: ArrayBuffer) => void): void {\r\n this._anyEventHandlers.push(handler)\r\n }\r\n}\r\n\r\nlet cascadeLibPath: string | undefined\r\nlet cascadeLib: RenderLib | undefined\r\n\r\nexport function setRenderLibPath(libPath: string) {\r\n if (cascadeLibPath !== libPath) {\r\n cascadeLibPath = libPath\r\n cascadeLib = undefined\r\n }\r\n}\r\n\r\nexport function resolveRenderLib(): RenderLib {\r\n if (!cascadeLib) {\r\n try {\r\n cascadeLib = new FFIRenderLib(cascadeLibPath)\r\n } catch (error) {\r\n throw new Error(\r\n `Failed to initialize Cascade render library: ${error instanceof Error ? error.message : \"Unknown error\"}`,\r\n )\r\n }\r\n }\r\n return cascadeLib\r\n}\r\n\r\n// Try eager loading\r\ntry {\r\n cascadeLib = new FFIRenderLib(cascadeLibPath)\r\n} catch (error) {}\r\n",
42
42
  "import type { TextBuffer } from \"./text-buffer\"\r\nimport { RGBA } from \"./lib\"\r\nimport { resolveRenderLib, type RenderLib } from \"./zig\"\r\nimport { type Pointer, toArrayBuffer, ptr } from \"bun:ffi\"\r\nimport { type BorderStyle, type BorderSides, BorderCharArrays, parseBorderStyle } from \"./lib\"\r\nimport { type WidthMethod, type CapturedSpan, type CapturedLine } from \"./types\"\r\nimport type { TextBufferView } from \"./text-buffer-view\"\r\nimport type { EditorView } from \"./editor-view\"\r\n\r\n// Pack drawing options into a single u32\r\n// bits 0-3: borderSides, bit 4: shouldFill, bits 5-6: titleAlignment\r\nfunction packDrawOptions(\r\n border: boolean | BorderSides[],\r\n shouldFill: boolean,\r\n titleAlignment: \"left\" | \"center\" | \"right\",\r\n): number {\r\n let packed = 0\r\n\r\n if (border === true) {\r\n packed |= 0b1111 // All sides\r\n } else if (Array.isArray(border)) {\r\n if (border.includes(\"top\")) packed |= 0b1000\r\n if (border.includes(\"right\")) packed |= 0b0100\r\n if (border.includes(\"bottom\")) packed |= 0b0010\r\n if (border.includes(\"left\")) packed |= 0b0001\r\n }\r\n\r\n if (shouldFill) {\r\n packed |= 1 << 4\r\n }\r\n\r\n const alignmentMap: Record<string, number> = {\r\n left: 0,\r\n center: 1,\r\n right: 2,\r\n }\r\n const alignment = alignmentMap[titleAlignment]\r\n packed |= alignment << 5\r\n\r\n return packed\r\n}\r\n\r\nexport class OptimizedBuffer {\r\n private static fbIdCounter = 0\r\n public id: string\r\n public lib: RenderLib\r\n private bufferPtr: Pointer\r\n private _width: number\r\n private _height: number\r\n private _widthMethod: WidthMethod\r\n public respectAlpha: boolean = false\r\n private _rawBuffers: {\r\n char: Uint32Array\r\n fg: Float32Array\r\n bg: Float32Array\r\n attributes: Uint32Array\r\n } | null = null\r\n private _destroyed: boolean = false\r\n\r\n get ptr(): Pointer {\r\n return this.bufferPtr\r\n }\r\n\r\n // Fail loud and clear\r\n // Instead of trying to return values that could work or not,\r\n // this at least will show a stack trace to know where the call to a destroyed Buffer was made\r\n private guard(): void {\r\n if (this._destroyed) throw new Error(`Buffer ${this.id} is destroyed`)\r\n }\r\n\r\n get buffers(): {\r\n char: Uint32Array\r\n fg: Float32Array\r\n bg: Float32Array\r\n attributes: Uint32Array\r\n } {\r\n this.guard()\r\n if (this._rawBuffers === null) {\r\n const size = this._width * this._height\r\n const charPtr = this.lib.bufferGetCharPtr(this.bufferPtr)\r\n const fgPtr = this.lib.bufferGetFgPtr(this.bufferPtr)\r\n const bgPtr = this.lib.bufferGetBgPtr(this.bufferPtr)\r\n const attributesPtr = this.lib.bufferGetAttributesPtr(this.bufferPtr)\r\n\r\n this._rawBuffers = {\r\n char: new Uint32Array(toArrayBuffer(charPtr, 0, size * 4)),\r\n fg: new Float32Array(toArrayBuffer(fgPtr, 0, size * 4 * 4)),\r\n bg: new Float32Array(toArrayBuffer(bgPtr, 0, size * 4 * 4)),\r\n attributes: new Uint32Array(toArrayBuffer(attributesPtr, 0, size * 4)),\r\n }\r\n }\r\n\r\n return this._rawBuffers\r\n }\r\n\r\n constructor(\r\n lib: RenderLib,\r\n ptr: Pointer,\r\n width: number,\r\n height: number,\r\n options: { respectAlpha?: boolean; id?: string; widthMethod?: WidthMethod },\r\n ) {\r\n this.id = options.id || `fb_${OptimizedBuffer.fbIdCounter++}`\r\n this.lib = lib\r\n this.respectAlpha = options.respectAlpha || false\r\n this._width = width\r\n this._height = height\r\n this._widthMethod = options.widthMethod || \"unicode\"\r\n this.bufferPtr = ptr\r\n }\r\n\r\n static create(\r\n width: number,\r\n height: number,\r\n widthMethod: WidthMethod,\r\n options: { respectAlpha?: boolean; id?: string } = {},\r\n ): OptimizedBuffer {\r\n const lib = resolveRenderLib()\r\n const respectAlpha = options.respectAlpha || false\r\n const id = options.id && options.id.trim() !== \"\" ? options.id : \"unnamed buffer\"\r\n const buffer = lib.createOptimizedBuffer(width, height, widthMethod, respectAlpha, id)\r\n return buffer\r\n }\r\n\r\n public get widthMethod(): WidthMethod {\r\n return this._widthMethod\r\n }\r\n\r\n public get width(): number {\r\n return this._width\r\n }\r\n\r\n public get height(): number {\r\n return this._height\r\n }\r\n\r\n public setRespectAlpha(respectAlpha: boolean): void {\r\n this.guard()\r\n this.lib.bufferSetRespectAlpha(this.bufferPtr, respectAlpha)\r\n this.respectAlpha = respectAlpha\r\n }\r\n\r\n public getNativeId(): string {\r\n this.guard()\r\n return this.lib.bufferGetId(this.bufferPtr)\r\n }\r\n\r\n public getRealCharBytes(addLineBreaks: boolean = false): Uint8Array {\r\n this.guard()\r\n const realSize = this.lib.bufferGetRealCharSize(this.bufferPtr)\r\n const outputBuffer = new Uint8Array(realSize)\r\n const bytesWritten = this.lib.bufferWriteResolvedChars(this.bufferPtr, outputBuffer, addLineBreaks)\r\n return outputBuffer.slice(0, bytesWritten)\r\n }\r\n\r\n public getSpanLines(): CapturedLine[] {\r\n this.guard()\r\n const { char, fg, bg, attributes } = this.buffers\r\n const lines: CapturedLine[] = []\r\n\r\n const CHAR_FLAG_CONTINUATION = 0xc0000000 | 0\r\n const CHAR_FLAG_MASK = 0xc0000000 | 0\r\n\r\n const realTextBytes = this.getRealCharBytes(true)\r\n const realTextLines = new TextDecoder().decode(realTextBytes).split(\"\\n\")\r\n\r\n for (let y = 0; y < this._height; y++) {\r\n const spans: CapturedSpan[] = []\r\n let currentSpan: CapturedSpan | null = null\r\n\r\n const lineChars = [...(realTextLines[y] || \"\")]\r\n let charIdx = 0\r\n\r\n for (let x = 0; x < this._width; x++) {\r\n const i = y * this._width + x\r\n const cp = char[i]\r\n const cellFg = RGBA.fromValues(fg[i * 4], fg[i * 4 + 1], fg[i * 4 + 2], fg[i * 4 + 3])\r\n const cellBg = RGBA.fromValues(bg[i * 4], bg[i * 4 + 1], bg[i * 4 + 2], bg[i * 4 + 3])\r\n const cellAttrs = attributes[i] & 0xff\r\n\r\n // Continuation cells are placeholders for wide characters (emojis, CJK)\r\n const isContinuation = (cp & CHAR_FLAG_MASK) === CHAR_FLAG_CONTINUATION\r\n const cellChar = isContinuation ? \"\" : (lineChars[charIdx++] ?? \" \")\r\n\r\n // Check if this cell continues the current span\r\n if (\r\n currentSpan &&\r\n currentSpan.fg.equals(cellFg) &&\r\n currentSpan.bg.equals(cellBg) &&\r\n currentSpan.attributes === cellAttrs\r\n ) {\r\n currentSpan.text += cellChar\r\n currentSpan.width += 1\r\n } else {\r\n // Start a new span\r\n if (currentSpan) {\r\n spans.push(currentSpan)\r\n }\r\n currentSpan = {\r\n text: cellChar,\r\n fg: cellFg,\r\n bg: cellBg,\r\n attributes: cellAttrs,\r\n width: 1,\r\n }\r\n }\r\n }\r\n\r\n // Push the last span\r\n if (currentSpan) {\r\n spans.push(currentSpan)\r\n }\r\n\r\n lines.push({ spans })\r\n }\r\n\r\n return lines\r\n }\r\n\r\n public clear(bg: RGBA = RGBA.fromValues(0, 0, 0, 1)): void {\r\n this.guard()\r\n this.lib.bufferClear(this.bufferPtr, bg)\r\n }\r\n\r\n public setCell(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes: number = 0): void {\r\n this.guard()\r\n this.lib.bufferSetCell(this.bufferPtr, x, y, char, fg, bg, attributes)\r\n }\r\n\r\n public setCellWithAlphaBlending(\r\n x: number,\r\n y: number,\r\n char: string,\r\n fg: RGBA,\r\n bg: RGBA,\r\n attributes: number = 0,\r\n ): void {\r\n this.guard()\r\n this.lib.bufferSetCellWithAlphaBlending(this.bufferPtr, x, y, char, fg, bg, attributes)\r\n }\r\n\r\n public drawText(\r\n text: string,\r\n x: number,\r\n y: number,\r\n fg: RGBA,\r\n bg?: RGBA,\r\n attributes: number = 0,\r\n selection?: { start: number; end: number; bgColor?: RGBA; fgColor?: RGBA } | null,\r\n ): void {\r\n this.guard()\r\n if (!selection) {\r\n this.lib.bufferDrawText(this.bufferPtr, text, x, y, fg, bg, attributes)\r\n return\r\n }\r\n\r\n const { start, end } = selection\r\n\r\n let selectionBg: RGBA\r\n let selectionFg: RGBA\r\n\r\n if (selection.bgColor) {\r\n selectionBg = selection.bgColor\r\n selectionFg = selection.fgColor || fg\r\n } else {\r\n const defaultBg = bg || RGBA.fromValues(0, 0, 0, 0)\r\n selectionFg = defaultBg.a > 0 ? defaultBg : RGBA.fromValues(0, 0, 0, 1)\r\n selectionBg = fg\r\n }\r\n\r\n if (start > 0) {\r\n const beforeText = text.slice(0, start)\r\n this.lib.bufferDrawText(this.bufferPtr, beforeText, x, y, fg, bg, attributes)\r\n }\r\n\r\n if (end > start) {\r\n const selectedText = text.slice(start, end)\r\n this.lib.bufferDrawText(this.bufferPtr, selectedText, x + start, y, selectionFg, selectionBg, attributes)\r\n }\r\n\r\n if (end < text.length) {\r\n const afterText = text.slice(end)\r\n this.lib.bufferDrawText(this.bufferPtr, afterText, x + end, y, fg, bg, attributes)\r\n }\r\n }\r\n\r\n public fillRect(x: number, y: number, width: number, height: number, bg: RGBA): void {\r\n this.lib.bufferFillRect(this.bufferPtr, x, y, width, height, bg)\r\n }\r\n\r\n public drawFrameBuffer(\r\n destX: number,\r\n destY: number,\r\n frameBuffer: OptimizedBuffer,\r\n sourceX?: number,\r\n sourceY?: number,\r\n sourceWidth?: number,\r\n sourceHeight?: number,\r\n ): void {\r\n this.guard()\r\n this.lib.drawFrameBuffer(this.bufferPtr, destX, destY, frameBuffer.ptr, sourceX, sourceY, sourceWidth, sourceHeight)\r\n }\r\n\r\n public destroy(): void {\r\n if (this._destroyed) return\r\n this._destroyed = true\r\n this.lib.destroyOptimizedBuffer(this.bufferPtr)\r\n }\r\n\r\n public drawTextBuffer(textBufferView: TextBufferView, x: number, y: number): void {\r\n this.guard()\r\n this.lib.bufferDrawTextBufferView(this.bufferPtr, textBufferView.ptr, x, y)\r\n }\r\n\r\n public drawEditorView(editorView: EditorView, x: number, y: number): void {\r\n this.guard()\r\n this.lib.bufferDrawEditorView(this.bufferPtr, editorView.ptr, x, y)\r\n }\r\n\r\n public drawSuperSampleBuffer(\r\n x: number,\r\n y: number,\r\n pixelDataPtr: Pointer,\r\n pixelDataLength: number,\r\n format: \"bgra8unorm\" | \"rgba8unorm\",\r\n alignedBytesPerRow: number,\r\n ): void {\r\n this.guard()\r\n this.lib.bufferDrawSuperSampleBuffer(\r\n this.bufferPtr,\r\n x,\r\n y,\r\n pixelDataPtr,\r\n pixelDataLength,\r\n format,\r\n alignedBytesPerRow,\r\n )\r\n }\r\n\r\n public drawPackedBuffer(\r\n dataPtr: Pointer,\r\n dataLen: number,\r\n posX: number,\r\n posY: number,\r\n terminalWidthCells: number,\r\n terminalHeightCells: number,\r\n ): void {\r\n this.guard()\r\n this.lib.bufferDrawPackedBuffer(\r\n this.bufferPtr,\r\n dataPtr,\r\n dataLen,\r\n posX,\r\n posY,\r\n terminalWidthCells,\r\n terminalHeightCells,\r\n )\r\n }\r\n\r\n public drawGrayscaleBuffer(\r\n posX: number,\r\n posY: number,\r\n intensities: Float32Array,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null = null,\r\n bg: RGBA | null = null,\r\n ): void {\r\n this.guard()\r\n this.lib.bufferDrawGrayscaleBuffer(this.bufferPtr, posX, posY, ptr(intensities), srcWidth, srcHeight, fg, bg)\r\n }\r\n\r\n public drawGrayscaleBufferSupersampled(\r\n posX: number,\r\n posY: number,\r\n intensities: Float32Array,\r\n srcWidth: number,\r\n srcHeight: number,\r\n fg: RGBA | null = null,\r\n bg: RGBA | null = null,\r\n ): void {\r\n this.guard()\r\n this.lib.bufferDrawGrayscaleBufferSupersampled(\r\n this.bufferPtr,\r\n posX,\r\n posY,\r\n ptr(intensities),\r\n srcWidth,\r\n srcHeight,\r\n fg,\r\n bg,\r\n )\r\n }\r\n\r\n public resize(width: number, height: number): void {\r\n this.guard()\r\n if (this._width === width && this._height === height) return\r\n\r\n this._width = width\r\n this._height = height\r\n this._rawBuffers = null\r\n\r\n this.lib.bufferResize(this.bufferPtr, width, height)\r\n }\r\n\r\n public drawBox(options: {\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n borderStyle?: BorderStyle\r\n customBorderChars?: Uint32Array\r\n border: boolean | BorderSides[]\r\n borderColor: RGBA\r\n backgroundColor: RGBA\r\n shouldFill?: boolean\r\n title?: string\r\n titleAlignment?: \"left\" | \"center\" | \"right\"\r\n }): void {\r\n this.guard()\r\n const style = parseBorderStyle(options.borderStyle, \"single\")\r\n const borderChars: Uint32Array = options.customBorderChars ?? BorderCharArrays[style]\r\n\r\n const packedOptions = packDrawOptions(options.border, options.shouldFill ?? false, options.titleAlignment || \"left\")\r\n\r\n this.lib.bufferDrawBox(\r\n this.bufferPtr,\r\n options.x,\r\n options.y,\r\n options.width,\r\n options.height,\r\n borderChars,\r\n packedOptions,\r\n options.borderColor,\r\n options.backgroundColor,\r\n options.title ?? null,\r\n )\r\n }\r\n\r\n public pushScissorRect(x: number, y: number, width: number, height: number): void {\r\n this.guard()\r\n this.lib.bufferPushScissorRect(this.bufferPtr, x, y, width, height)\r\n }\r\n\r\n public popScissorRect(): void {\r\n this.guard()\r\n this.lib.bufferPopScissorRect(this.bufferPtr)\r\n }\r\n\r\n public clearScissorRects(): void {\r\n this.guard()\r\n this.lib.bufferClearScissorRects(this.bufferPtr)\r\n }\r\n\r\n public pushOpacity(opacity: number): void {\r\n this.guard()\r\n this.lib.bufferPushOpacity(this.bufferPtr, Math.max(0, Math.min(1, opacity)))\r\n }\r\n\r\n public popOpacity(): void {\r\n this.guard()\r\n this.lib.bufferPopOpacity(this.bufferPtr)\r\n }\r\n\r\n public getCurrentOpacity(): number {\r\n this.guard()\r\n return this.lib.bufferGetCurrentOpacity(this.bufferPtr)\r\n }\r\n\r\n public clearOpacity(): void {\r\n this.guard()\r\n this.lib.bufferClearOpacity(this.bufferPtr)\r\n }\r\n\r\n public encodeUnicode(text: string): { ptr: Pointer; data: Array<{ width: number; char: number }> } | null {\r\n this.guard()\r\n return this.lib.encodeUnicode(text, this._widthMethod)\r\n }\r\n\r\n public freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number }> }): void {\r\n this.guard()\r\n this.lib.freeUnicode(encoded)\r\n }\r\n\r\n public drawGrid(options: {\r\n borderChars: Uint32Array\r\n borderFg: RGBA\r\n borderBg: RGBA\r\n columnOffsets: Int32Array\r\n rowOffsets: Int32Array\r\n drawInner: boolean\r\n drawOuter: boolean\r\n }): void {\r\n this.guard()\r\n\r\n const columnCount = Math.max(0, options.columnOffsets.length - 1)\r\n const rowCount = Math.max(0, options.rowOffsets.length - 1)\r\n\r\n this.lib.bufferDrawGrid(\r\n this.bufferPtr,\r\n options.borderChars,\r\n options.borderFg,\r\n options.borderBg,\r\n options.columnOffsets,\r\n columnCount,\r\n options.rowOffsets,\r\n rowCount,\r\n {\r\n drawInner: options.drawInner,\r\n drawOuter: options.drawOuter,\r\n },\r\n )\r\n }\r\n\r\n public drawChar(char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes: number = 0): void {\r\n this.guard()\r\n this.lib.bufferDrawChar(this.bufferPtr, char, x, y, fg, bg, attributes)\r\n }\r\n}\r\n",
43
43
  "// src/structs_ffi.ts\nimport { ptr, toArrayBuffer } from \"bun:ffi\";\nfunction fatalError(...args) {\n const message = args.join(\" \");\n console.error(\"FATAL ERROR:\", message);\n throw new Error(message);\n}\nvar pointerSize = process.arch === \"x64\" || process.arch === \"arm64\" ? 8 : 4;\nvar typeSizes = {\n u8: 1,\n bool_u8: 1,\n bool_u32: 4,\n u16: 2,\n i16: 2,\n u32: 4,\n u64: 8,\n f32: 4,\n f64: 8,\n pointer: pointerSize,\n i32: 4\n};\nvar primitiveKeys = Object.keys(typeSizes);\nfunction isPrimitiveType(type) {\n return typeof type === \"string\" && primitiveKeys.includes(type);\n}\nvar typeAlignments = { ...typeSizes };\nvar typeGetters = {\n u8: (view, offset) => view.getUint8(offset),\n bool_u8: (view, offset) => Boolean(view.getUint8(offset)),\n bool_u32: (view, offset) => Boolean(view.getUint32(offset, true)),\n u16: (view, offset) => view.getUint16(offset, true),\n i16: (view, offset) => view.getInt16(offset, true),\n u32: (view, offset) => view.getUint32(offset, true),\n u64: (view, offset) => view.getBigUint64(offset, true),\n f32: (view, offset) => view.getFloat32(offset, true),\n f64: (view, offset) => view.getFloat64(offset, true),\n i32: (view, offset) => view.getInt32(offset, true),\n pointer: (view, offset) => pointerSize === 8 ? view.getBigUint64(offset, true) : BigInt(view.getUint32(offset, true))\n};\nfunction objectPtr() {\n return {\n __type: \"objectPointer\"\n };\n}\nfunction isObjectPointerDef(type) {\n return typeof type === \"object\" && type !== null && type.__type === \"objectPointer\";\n}\nfunction allocStruct(structDef, options) {\n const buffer = new ArrayBuffer(structDef.size);\n const view = new DataView(buffer);\n const result = { buffer, view };\n const { pack: pointerPacker } = primitivePackers(\"pointer\");\n if (options?.lengths) {\n const subBuffers = {};\n for (const [arrayFieldName, length] of Object.entries(options.lengths)) {\n const arrayMeta = structDef.arrayFields.get(arrayFieldName);\n if (!arrayMeta) {\n throw new Error(`Field '${arrayFieldName}' is not an array field with a lengthOf field`);\n }\n const subBuffer = new ArrayBuffer(length * arrayMeta.elementSize);\n subBuffers[arrayFieldName] = subBuffer;\n const pointer = length > 0 ? ptr(subBuffer) : null;\n pointerPacker(view, arrayMeta.arrayOffset, pointer);\n arrayMeta.lengthPack(view, arrayMeta.lengthOffset, length);\n }\n if (Object.keys(subBuffers).length > 0) {\n result.subBuffers = subBuffers;\n }\n }\n return result;\n}\nfunction alignOffset(offset, align) {\n return offset + (align - 1) & ~(align - 1);\n}\nfunction enumTypeError(value) {\n throw new TypeError(`Invalid enum value: ${value}`);\n}\nfunction defineEnum(mapping, base = \"u32\") {\n const reverse = Object.fromEntries(Object.entries(mapping).map(([k, v]) => [v, k]));\n return {\n __type: \"enum\",\n type: base,\n to(value) {\n return typeof value === \"number\" ? value : mapping[value] ?? enumTypeError(String(value));\n },\n from(value) {\n return reverse[value] ?? enumTypeError(String(value));\n },\n enum: mapping\n };\n}\nfunction isEnum(type) {\n return typeof type === \"object\" && type.__type === \"enum\";\n}\nfunction isStruct(type) {\n return typeof type === \"object\" && type.__type === \"struct\";\n}\nfunction primitivePackers(type) {\n let pack;\n let unpack;\n switch (type) {\n case \"u8\":\n pack = (view, off, val) => view.setUint8(off, val);\n unpack = (view, off) => view.getUint8(off);\n break;\n case \"bool_u8\":\n pack = (view, off, val) => view.setUint8(off, val ? 1 : 0);\n unpack = (view, off) => Boolean(view.getUint8(off));\n break;\n case \"bool_u32\":\n pack = (view, off, val) => view.setUint32(off, val ? 1 : 0, true);\n unpack = (view, off) => Boolean(view.getUint32(off, true));\n break;\n case \"u16\":\n pack = (view, off, val) => view.setUint16(off, val, true);\n unpack = (view, off) => view.getUint16(off, true);\n break;\n case \"i16\":\n pack = (view, off, val) => view.setInt16(off, val, true);\n unpack = (view, off) => view.getInt16(off, true);\n break;\n case \"u32\":\n pack = (view, off, val) => view.setUint32(off, val, true);\n unpack = (view, off) => view.getUint32(off, true);\n break;\n case \"i32\":\n pack = (view, off, val) => view.setInt32(off, val, true);\n unpack = (view, off) => view.getInt32(off, true);\n break;\n case \"u64\":\n pack = (view, off, val) => view.setBigUint64(off, BigInt(val), true);\n unpack = (view, off) => view.getBigUint64(off, true);\n break;\n case \"f32\":\n pack = (view, off, val) => view.setFloat32(off, val, true);\n unpack = (view, off) => view.getFloat32(off, true);\n break;\n case \"f64\":\n pack = (view, off, val) => view.setFloat64(off, val, true);\n unpack = (view, off) => view.getFloat64(off, true);\n break;\n case \"pointer\":\n pack = (view, off, val) => {\n pointerSize === 8 ? view.setBigUint64(off, val ? BigInt(val) : 0n, true) : view.setUint32(off, val ? Number(val) : 0, true);\n };\n unpack = (view, off) => {\n const bint = pointerSize === 8 ? view.getBigUint64(off, true) : BigInt(view.getUint32(off, true));\n return Number(bint);\n };\n break;\n default:\n fatalError(`Unsupported primitive type: ${type}`);\n }\n return { pack, unpack };\n}\nvar { pack: pointerPacker, unpack: pointerUnpacker } = primitivePackers(\"pointer\");\nfunction packObjectArray(val) {\n const buffer = new ArrayBuffer(val.length * pointerSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n const instance = val[i];\n const ptrValue = instance?.ptr ?? null;\n pointerPacker(bufferView, i * pointerSize, ptrValue);\n }\n return bufferView;\n}\nvar encoder = new TextEncoder;\nvar decoder = new TextDecoder;\nfunction defineStruct(fields, structDefOptions) {\n let offset = 0;\n let maxAlign = 1;\n const layout = [];\n const lengthOfFields = {};\n const lengthOfRequested = [];\n const arrayFieldsMetadata = {};\n for (const [name, typeOrStruct, options = {}] of fields) {\n if (options.condition && !options.condition()) {\n continue;\n }\n let size = 0, align = 0;\n let pack;\n let unpack;\n let needsLengthOf = false;\n let lengthOfDef = null;\n if (isPrimitiveType(typeOrStruct)) {\n size = typeSizes[typeOrStruct];\n align = typeAlignments[typeOrStruct];\n ({ pack, unpack } = primitivePackers(typeOrStruct));\n } else if (typeof typeOrStruct === \"string\" && typeOrStruct === \"cstring\") {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val) => {\n const bufPtr = val ? ptr(encoder.encode(val + \"\\x00\")) : null;\n pointerPacker(view, off, bufPtr);\n };\n unpack = (view, off) => {\n const ptrVal = pointerUnpacker(view, off);\n return ptrVal;\n };\n } else if (typeof typeOrStruct === \"string\" && typeOrStruct === \"char*\") {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val) => {\n const bufPtr = val ? ptr(encoder.encode(val)) : null;\n pointerPacker(view, off, bufPtr);\n };\n unpack = (view, off) => {\n const ptrVal = pointerUnpacker(view, off);\n return ptrVal;\n };\n needsLengthOf = true;\n } else if (isEnum(typeOrStruct)) {\n const base = typeOrStruct.type;\n size = typeSizes[base];\n align = typeAlignments[base];\n const { pack: packEnum } = primitivePackers(base);\n pack = (view, off, val) => {\n const num = typeOrStruct.to(val);\n packEnum(view, off, num);\n };\n unpack = (view, off) => {\n const raw = typeGetters[base](view, off);\n return typeOrStruct.from(raw);\n };\n } else if (isStruct(typeOrStruct)) {\n if (options.asPointer === true) {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, val, obj, options2) => {\n if (!val) {\n pointerPacker(view, off, null);\n return;\n }\n const nestedBuf = typeOrStruct.pack(val, options2);\n pointerPacker(view, off, ptr(nestedBuf));\n };\n unpack = (view, off) => {\n throw new Error(\"Not implemented yet\");\n };\n } else {\n size = typeOrStruct.size;\n align = typeOrStruct.align;\n pack = (view, off, val, obj, options2) => {\n const nestedBuf = typeOrStruct.pack(val, options2);\n const nestedView = new Uint8Array(nestedBuf);\n const dView = new Uint8Array(view.buffer);\n dView.set(nestedView, off);\n };\n unpack = (view, off) => {\n const slice = view.buffer.slice(off, off + size);\n return typeOrStruct.unpack(slice);\n };\n }\n } else if (isObjectPointerDef(typeOrStruct)) {\n size = pointerSize;\n align = pointerSize;\n pack = (view, off, value) => {\n const ptrValue = value?.ptr ?? null;\n if (ptrValue === undefined) {\n console.warn(`Field '${name}' expected object with '.ptr' property, but got undefined pointer value from:`, value);\n pointerPacker(view, off, null);\n } else {\n pointerPacker(view, off, ptrValue);\n }\n };\n unpack = (view, off) => {\n return pointerUnpacker(view, off);\n };\n } else if (Array.isArray(typeOrStruct) && typeOrStruct.length === 1 && typeOrStruct[0] !== undefined) {\n const [def] = typeOrStruct;\n size = pointerSize;\n align = pointerSize;\n let arrayElementSize;\n if (isEnum(def)) {\n arrayElementSize = typeSizes[def.type];\n pack = (view, off, val, obj) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n const num = def.to(val[i]);\n bufferView.setUint32(i * arrayElementSize, num, true);\n }\n pointerPacker(view, off, ptr(buffer));\n };\n unpack = null;\n needsLengthOf = true;\n lengthOfDef = def;\n } else if (isStruct(def)) {\n arrayElementSize = def.size;\n pack = (view, off, val, obj, options2) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n def.packInto(val[i], bufferView, i * arrayElementSize, options2);\n }\n pointerPacker(view, off, ptr(buffer));\n };\n unpack = (view, off) => {\n throw new Error(\"Not implemented yet\");\n };\n } else if (isPrimitiveType(def)) {\n arrayElementSize = typeSizes[def];\n const { pack: primitivePack } = primitivePackers(def);\n pack = (view, off, val) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const buffer = new ArrayBuffer(val.length * arrayElementSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < val.length; i++) {\n primitivePack(bufferView, i * arrayElementSize, val[i]);\n }\n pointerPacker(view, off, ptr(buffer));\n };\n unpack = null;\n needsLengthOf = true;\n lengthOfDef = def;\n } else if (isObjectPointerDef(def)) {\n arrayElementSize = pointerSize;\n pack = (view, off, val) => {\n if (!val || val.length === 0) {\n pointerPacker(view, off, null);\n return;\n }\n const packedView = packObjectArray(val);\n pointerPacker(view, off, ptr(packedView.buffer));\n };\n unpack = () => {\n throw new Error(\"not implemented yet\");\n };\n } else {\n throw new Error(`Unsupported array element type for ${name}: ${JSON.stringify(def)}`);\n }\n const lengthOfField = Object.values(lengthOfFields).find((f) => f.lengthOf === name);\n if (lengthOfField && isPrimitiveType(lengthOfField.type)) {\n const { pack: lengthPack } = primitivePackers(lengthOfField.type);\n arrayFieldsMetadata[name] = {\n elementSize: arrayElementSize,\n arrayOffset: offset,\n lengthOffset: lengthOfField.offset,\n lengthPack\n };\n }\n } else {\n throw new Error(`Unsupported field type for ${name}: ${JSON.stringify(typeOrStruct)}`);\n }\n offset = alignOffset(offset, align);\n if (options.unpackTransform) {\n const originalUnpack = unpack;\n unpack = (view, off) => options.unpackTransform(originalUnpack(view, off));\n }\n if (options.packTransform) {\n const originalPack = pack;\n pack = (view, off, val, obj, packOptions) => originalPack(view, off, options.packTransform(val), obj, packOptions);\n }\n if (options.optional) {\n const originalPack = pack;\n if (isStruct(typeOrStruct) && !options.asPointer) {\n pack = (view, off, val, obj, packOptions) => {\n if (val || options.mapOptionalInline) {\n originalPack(view, off, val, obj, packOptions);\n }\n };\n } else {\n pack = (view, off, val, obj, packOptions) => originalPack(view, off, val ?? 0, obj, packOptions);\n }\n }\n if (options.lengthOf) {\n const originalPack = pack;\n pack = (view, off, val, obj, packOptions) => {\n const targetValue = obj[options.lengthOf];\n let length = 0;\n if (targetValue) {\n if (typeof targetValue === \"string\") {\n length = Buffer.byteLength(targetValue);\n } else {\n length = targetValue.length;\n }\n }\n return originalPack(view, off, length, obj, packOptions);\n };\n }\n let validateFunctions;\n if (options.validate) {\n validateFunctions = Array.isArray(options.validate) ? options.validate : [options.validate];\n }\n const layoutField = {\n name,\n offset,\n size,\n align,\n validate: validateFunctions,\n optional: !!options.optional || !!options.lengthOf || options.default !== undefined,\n default: options.default,\n pack,\n unpack,\n type: typeOrStruct,\n lengthOf: options.lengthOf\n };\n layout.push(layoutField);\n if (options.lengthOf) {\n lengthOfFields[options.lengthOf] = layoutField;\n }\n if (needsLengthOf) {\n const def = typeof typeOrStruct === \"string\" && typeOrStruct === \"char*\" ? \"char*\" : lengthOfDef;\n if (!def)\n fatalError(`Internal error: needsLengthOf=true but def is null for ${name}`);\n lengthOfRequested.push({ requester: layoutField, def });\n }\n offset += size;\n maxAlign = Math.max(maxAlign, align);\n }\n for (const { requester, def } of lengthOfRequested) {\n const lengthOfField = lengthOfFields[requester.name];\n if (!lengthOfField) {\n if (def === \"char*\") {\n continue;\n }\n throw new Error(`lengthOf field not found for array field ${requester.name}`);\n }\n if (def === \"char*\") {\n requester.unpack = (view, off) => {\n const ptrAddress = pointerUnpacker(view, off);\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n if (ptrAddress === 0) {\n return null;\n }\n const byteLength = typeof length === \"bigint\" ? Number(length) : length;\n if (byteLength === 0) {\n return \"\";\n }\n const buffer = toArrayBuffer(ptrAddress, 0, byteLength);\n return decoder.decode(buffer);\n };\n } else if (isPrimitiveType(def)) {\n const elemSize = typeSizes[def];\n const { unpack: primitiveUnpack } = primitivePackers(def);\n requester.unpack = (view, off) => {\n const result = [];\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n const ptrAddress = pointerUnpacker(view, off);\n if (ptrAddress === 0n && length > 0) {\n throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);\n }\n if (ptrAddress === 0n || length === 0) {\n return [];\n }\n const buffer = toArrayBuffer(ptrAddress, 0, length * elemSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < length; i++) {\n result.push(primitiveUnpack(bufferView, i * elemSize));\n }\n return result;\n };\n } else {\n const elemSize = def.type === \"u32\" ? 4 : 8;\n requester.unpack = (view, off) => {\n const result = [];\n const length = lengthOfField.unpack(view, lengthOfField.offset);\n const ptrAddress = pointerUnpacker(view, off);\n if (ptrAddress === 0n && length > 0) {\n throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);\n }\n if (ptrAddress === 0n || length === 0) {\n return [];\n }\n const buffer = toArrayBuffer(ptrAddress, 0, length * elemSize);\n const bufferView = new DataView(buffer);\n for (let i = 0;i < length; i++) {\n result.push(def.from(bufferView.getUint32(i * elemSize, true)));\n }\n return result;\n };\n }\n }\n const totalSize = alignOffset(offset, maxAlign);\n const description = layout.map((f) => ({\n name: f.name,\n offset: f.offset,\n size: f.size,\n align: f.align,\n optional: f.optional,\n type: f.type,\n lengthOf: f.lengthOf\n }));\n const layoutByName = new Map(description.map((f) => [f.name, f]));\n const arrayFields = new Map(Object.entries(arrayFieldsMetadata));\n return {\n __type: \"struct\",\n size: totalSize,\n align: maxAlign,\n hasMapValue: !!structDefOptions?.mapValue,\n layoutByName,\n arrayFields,\n pack(obj, options) {\n const buf = new ArrayBuffer(totalSize);\n const view = new DataView(buf);\n let mappedObj = obj;\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(obj);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n fatalError(`Packing non-optional field '${field.name}' but value is undefined (and no default provided)`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, field.offset, value, mappedObj, options);\n }\n return view.buffer;\n },\n packInto(obj, view, offset2, options) {\n let mappedObj = obj;\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(obj);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n console.warn(`packInto missing value for non-optional field '${field.name}' at offset ${offset2 + field.offset}. Writing default or zero.`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, offset2 + field.offset, value, mappedObj, options);\n }\n },\n unpack(buf) {\n if (buf.byteLength < totalSize) {\n fatalError(`Buffer size (${buf.byteLength}) is smaller than struct size (${totalSize}) for unpacking.`);\n }\n const view = new DataView(buf);\n const result = structDefOptions?.default ? { ...structDefOptions.default } : {};\n for (const field of layout) {\n if (!field.unpack) {\n continue;\n }\n try {\n result[field.name] = field.unpack(view, field.offset);\n } catch (e) {\n console.error(`Error unpacking field '${field.name}' at offset ${field.offset}:`, e);\n throw e;\n }\n }\n if (structDefOptions?.reduceValue) {\n return structDefOptions.reduceValue(result);\n }\n return result;\n },\n packList(objects, options) {\n if (objects.length === 0) {\n return new ArrayBuffer(0);\n }\n const buffer = new ArrayBuffer(totalSize * objects.length);\n const view = new DataView(buffer);\n for (let i = 0;i < objects.length; i++) {\n let mappedObj = objects[i];\n if (structDefOptions?.mapValue) {\n mappedObj = structDefOptions.mapValue(objects[i]);\n }\n for (const field of layout) {\n const value = mappedObj[field.name] ?? field.default;\n if (!field.optional && value === undefined) {\n fatalError(`Packing non-optional field '${field.name}' at index ${i} but value is undefined (and no default provided)`);\n }\n if (field.validate) {\n for (const validateFn of field.validate) {\n validateFn(value, field.name, {\n hints: options?.validationHints,\n input: mappedObj\n });\n }\n }\n field.pack(view, i * totalSize + field.offset, value, mappedObj, options);\n }\n }\n return buffer;\n },\n unpackList(buf, count) {\n if (count === 0) {\n return [];\n }\n const expectedSize = totalSize * count;\n if (buf.byteLength < expectedSize) {\n fatalError(`Buffer size (${buf.byteLength}) is smaller than expected size (${expectedSize}) for unpacking ${count} structs.`);\n }\n const view = new DataView(buf);\n const results = [];\n for (let i = 0;i < count; i++) {\n const offset2 = i * totalSize;\n const result = structDefOptions?.default ? { ...structDefOptions.default } : {};\n for (const field of layout) {\n if (!field.unpack) {\n continue;\n }\n try {\n result[field.name] = field.unpack(view, offset2 + field.offset);\n } catch (e) {\n console.error(`Error unpacking field '${field.name}' at index ${i}, offset ${offset2 + field.offset}:`, e);\n throw e;\n }\n }\n if (structDefOptions?.reduceValue) {\n results.push(structDefOptions.reduceValue(result));\n } else {\n results.push(result);\n }\n }\n return results;\n },\n describe() {\n return description;\n }\n };\n}\nexport {\n pointerSize,\n packObjectArray,\n objectPtr,\n defineStruct,\n defineEnum,\n allocStruct\n};\n",
44
44
  "import { defineStruct, defineEnum } from \"bun-ffi-structs\"\r\nimport { ptr, toArrayBuffer, type Pointer } from \"bun:ffi\"\r\nimport { RGBA } from \"./lib/RGBA\"\r\n\r\nconst rgbaPackTransform = (rgba?: RGBA) => (rgba ? ptr(rgba.buffer) : null)\r\nconst rgbaUnpackTransform = (ptr?: Pointer) => (ptr ? RGBA.fromArray(new Float32Array(toArrayBuffer(ptr))) : undefined)\r\n\r\ntype StyledChunkInput = {\r\n text: string\r\n fg?: RGBA | null\r\n bg?: RGBA | null\r\n attributes?: number | null\r\n link?: { url: string } | string | null\r\n}\r\n\r\nexport const StyledChunkStruct = defineStruct(\r\n [\r\n [\"text\", \"char*\"],\r\n [\"text_len\", \"u64\", { lengthOf: \"text\" }],\r\n [\r\n \"fg\",\r\n \"pointer\",\r\n {\r\n optional: true,\r\n packTransform: rgbaPackTransform,\r\n unpackTransform: rgbaUnpackTransform,\r\n },\r\n ],\r\n [\r\n \"bg\",\r\n \"pointer\",\r\n {\r\n optional: true,\r\n packTransform: rgbaPackTransform,\r\n unpackTransform: rgbaUnpackTransform,\r\n },\r\n ],\r\n [\"attributes\", \"u32\", { default: 0 }],\r\n [\"link\", \"char*\", { default: \"\" }],\r\n [\"link_len\", \"u64\", { lengthOf: \"link\" }],\r\n ],\r\n {\r\n mapValue: (chunk: StyledChunkInput): StyledChunkInput => {\r\n if (!chunk.link || typeof chunk.link === \"string\") {\r\n return chunk\r\n }\r\n\r\n return {\r\n ...chunk,\r\n link: chunk.link.url,\r\n }\r\n },\r\n },\r\n)\r\n\r\nexport const HighlightStruct = defineStruct([\r\n [\"start\", \"u32\"],\r\n [\"end\", \"u32\"],\r\n [\"styleId\", \"u32\"],\r\n [\"priority\", \"u8\", { default: 0 }],\r\n [\"hlRef\", \"u16\", { default: 0 }],\r\n])\r\n\r\nexport const LogicalCursorStruct = defineStruct([\r\n [\"row\", \"u32\"],\r\n [\"col\", \"u32\"],\r\n [\"offset\", \"u32\"],\r\n])\r\n\r\nexport const VisualCursorStruct = defineStruct([\r\n [\"visualRow\", \"u32\"],\r\n [\"visualCol\", \"u32\"],\r\n [\"logicalRow\", \"u32\"],\r\n [\"logicalCol\", \"u32\"],\r\n [\"offset\", \"u32\"],\r\n])\r\n\r\nconst UnicodeMethodEnum = defineEnum({ wcwidth: 0, unicode: 1 }, \"u8\")\r\n\r\nexport const TerminalCapabilitiesStruct = defineStruct([\r\n [\"kitty_keyboard\", \"bool_u8\"],\r\n [\"kitty_graphics\", \"bool_u8\"],\r\n [\"rgb\", \"bool_u8\"],\r\n [\"unicode\", UnicodeMethodEnum],\r\n [\"sgr_pixels\", \"bool_u8\"],\r\n [\"color_scheme_updates\", \"bool_u8\"],\r\n [\"explicit_width\", \"bool_u8\"],\r\n [\"scaled_text\", \"bool_u8\"],\r\n [\"sixel\", \"bool_u8\"],\r\n [\"focus_tracking\", \"bool_u8\"],\r\n [\"sync\", \"bool_u8\"],\r\n [\"bracketed_paste\", \"bool_u8\"],\r\n [\"hyperlinks\", \"bool_u8\"],\r\n [\"osc52\", \"bool_u8\"],\r\n [\"explicit_cursor_positioning\", \"bool_u8\"],\r\n [\"term_name\", \"char*\"],\r\n [\"term_name_len\", \"u64\", { lengthOf: \"term_name\" }],\r\n [\"term_version\", \"char*\"],\r\n [\"term_version_len\", \"u64\", { lengthOf: \"term_version\" }],\r\n [\"term_from_xtversion\", \"bool_u8\"],\r\n])\r\n\r\nexport const EncodedCharStruct = defineStruct([\r\n [\"width\", \"u8\"],\r\n [\"char\", \"u32\"],\r\n])\r\n\r\nexport const LineInfoStruct = defineStruct([\r\n [\"starts\", [\"u32\"]],\r\n [\"startsLen\", \"u32\", { lengthOf: \"starts\" }],\r\n [\"widths\", [\"u32\"]],\r\n [\"widthsLen\", \"u32\", { lengthOf: \"widths\" }],\r\n [\"sources\", [\"u32\"]],\r\n [\"sourcesLen\", \"u32\", { lengthOf: \"sources\" }],\r\n [\"wraps\", [\"u32\"]],\r\n [\"wrapsLen\", \"u32\", { lengthOf: \"wraps\" }],\r\n [\"maxWidth\", \"u32\"],\r\n])\r\n\r\nexport const MeasureResultStruct = defineStruct([\r\n [\"lineCount\", \"u32\"],\r\n [\"maxWidth\", \"u32\"],\r\n])\r\n\r\nexport const CursorStateStruct = defineStruct([\r\n [\"x\", \"u32\"],\r\n [\"y\", \"u32\"],\r\n [\"visible\", \"bool_u8\"],\r\n [\"style\", \"u8\"],\r\n [\"blinking\", \"bool_u8\"],\r\n [\"r\", \"f32\"],\r\n [\"g\", \"f32\"],\r\n [\"b\", \"f32\"],\r\n [\"a\", \"f32\"],\r\n])\r\n\r\nexport const CursorStyleOptionsStruct = defineStruct([\r\n [\"style\", \"u8\", { default: 255 }],\r\n [\"blinking\", \"u8\", { default: 255 }],\r\n [\r\n \"color\",\r\n \"pointer\",\r\n {\r\n optional: true,\r\n packTransform: rgbaPackTransform,\r\n unpackTransform: rgbaUnpackTransform,\r\n },\r\n ],\r\n [\"cursor\", \"u8\", { default: 255 }],\r\n])\r\n\r\nexport const GridDrawOptionsStruct = defineStruct([\r\n [\"drawInner\", \"bool_u8\", { default: true }],\r\n [\"drawOuter\", \"bool_u8\", { default: true }],\r\n])\r\n\r\nexport type BuildOptions = {\r\n gpaSafeStats: boolean\r\n gpaMemoryLimitTracking: boolean\r\n}\r\n\r\nexport const BuildOptionsStruct = defineStruct([\r\n [\"gpaSafeStats\", \"bool_u8\"],\r\n [\"gpaMemoryLimitTracking\", \"bool_u8\"],\r\n])\r\n\r\nexport type AllocatorStats = {\r\n totalRequestedBytes: number\r\n activeAllocations: number\r\n smallAllocations: number\r\n largeAllocations: number\r\n requestedBytesValid: boolean\r\n}\r\n\r\nexport const AllocatorStatsStruct = defineStruct([\r\n [\"totalRequestedBytes\", \"u64\"],\r\n [\"activeAllocations\", \"u64\"],\r\n [\"smallAllocations\", \"u64\"],\r\n [\"largeAllocations\", \"u64\"],\r\n [\"requestedBytesValid\", \"bool_u8\"],\r\n])\r\n\r\nexport type GrowthPolicy = \"grow\" | \"block\"\r\n\r\nexport type NativeSpanFeedOptions = {\r\n chunkSize?: number\r\n initialChunks?: number\r\n maxBytes?: bigint\r\n growthPolicy?: GrowthPolicy\r\n autoCommitOnFull?: boolean\r\n spanQueueCapacity?: number\r\n}\r\n\r\nexport type NativeSpanFeedStats = {\r\n bytesWritten: bigint\r\n spansCommitted: bigint\r\n chunks: number\r\n pendingSpans: number\r\n}\r\n\r\nexport type SpanInfo = {\r\n chunkPtr: Pointer\r\n offset: number\r\n len: number\r\n chunkIndex: number\r\n}\r\n\r\nexport type ReserveInfo = {\r\n ptr: Pointer\r\n len: number\r\n}\r\n\r\nconst GrowthPolicyEnum = defineEnum({ grow: 0, block: 1 }, \"u8\")\r\n\r\nexport const NativeSpanFeedOptionsStruct = defineStruct([\r\n [\"chunkSize\", \"u32\", { default: 64 * 1024 }],\r\n [\"initialChunks\", \"u32\", { default: 2 }],\r\n [\"maxBytes\", \"u64\", { default: 0n }],\r\n [\"growthPolicy\", GrowthPolicyEnum, { default: \"grow\" }],\r\n [\"autoCommitOnFull\", \"bool_u8\", { default: true }],\r\n [\"spanQueueCapacity\", \"u32\", { default: 0 }],\r\n])\r\n\r\nexport const NativeSpanFeedStatsStruct = defineStruct([\r\n [\"bytesWritten\", \"u64\"],\r\n [\"spansCommitted\", \"u64\"],\r\n [\"chunks\", \"u32\"],\r\n [\"pendingSpans\", \"u32\"],\r\n])\r\n\r\nexport const SpanInfoStruct = defineStruct(\r\n [\r\n [\"chunkPtr\", \"pointer\"],\r\n [\"offset\", \"u32\"],\r\n [\"len\", \"u32\"],\r\n [\"chunkIndex\", \"u32\"],\r\n [\"reserved\", \"u32\", { default: 0 }],\r\n ],\r\n {\r\n reduceValue: (value: { chunkPtr: Pointer; offset: number; len: number; chunkIndex: number }) => ({\r\n chunkPtr: value.chunkPtr as Pointer,\r\n offset: value.offset,\r\n len: value.len,\r\n chunkIndex: value.chunkIndex,\r\n }),\r\n },\r\n)\r\n\r\nexport const ReserveInfoStruct = defineStruct(\r\n [\r\n [\"ptr\", \"pointer\"],\r\n [\"len\", \"u32\"],\r\n [\"reserved\", \"u32\", { default: 0 }],\r\n ],\r\n {\r\n reduceValue: (value: { ptr: Pointer; len: number }) => ({\r\n ptr: value.ptr as Pointer,\r\n len: value.len,\r\n }),\r\n },\r\n)\r\n",
@@ -55,7 +55,7 @@
55
55
  "import type { ViewportBounds } from \"../types\"\r\n\r\ninterface ViewportObject {\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n zIndex: number\r\n}\r\n\r\n/**\r\n * Returns objects that overlap with the viewport bounds.\r\n *\r\n * @param viewport - The viewport bounds to check against\r\n * @param objects - Array of objects MUST be sorted by position (y for column, x for row direction)\r\n * @param direction - Primary scroll direction: \"column\" (vertical) or \"row\" (horizontal)\r\n * @param padding - Extra padding around viewport to include nearby objects\r\n * @param minTriggerSize - Minimum array size to use binary search optimization\r\n * @returns Array of visible objects sorted by zIndex\r\n *\r\n * @remarks\r\n * Objects must be pre-sorted by their start position (y for column direction, x for row direction).\r\n * Unsorted input will produce incorrect results.\r\n */\r\nexport function getObjectsInViewport<T extends ViewportObject>(\r\n viewport: ViewportBounds,\r\n objects: T[],\r\n direction: \"row\" | \"column\" = \"column\",\r\n padding: number = 10,\r\n minTriggerSize: number = 16,\r\n): T[] {\r\n if (viewport.width <= 0 || viewport.height <= 0) {\r\n return []\r\n }\r\n\r\n if (objects.length === 0) {\r\n return []\r\n }\r\n\r\n if (objects.length < minTriggerSize) {\r\n return objects\r\n }\r\n\r\n const viewportTop = viewport.y - padding\r\n const viewportBottom = viewport.y + viewport.height + padding\r\n const viewportLeft = viewport.x - padding\r\n const viewportRight = viewport.x + viewport.width + padding\r\n\r\n const isRow = direction === \"row\"\r\n\r\n const children = objects\r\n const totalChildren = children.length\r\n if (totalChildren === 0) return []\r\n\r\n const vpStart = isRow ? viewportLeft : viewportTop\r\n const vpEnd = isRow ? viewportRight : viewportBottom\r\n\r\n // Binary search to find any child that overlaps along the primary axis\r\n let lo = 0\r\n let hi = totalChildren - 1\r\n let candidate = -1\r\n while (lo <= hi) {\r\n const mid = (lo + hi) >> 1\r\n const c = children[mid]\r\n const start = isRow ? c.x : c.y\r\n const end = isRow ? c.x + c.width : c.y + c.height\r\n\r\n if (end < vpStart) {\r\n lo = mid + 1\r\n } else if (start > vpEnd) {\r\n hi = mid - 1\r\n } else {\r\n candidate = mid\r\n break\r\n }\r\n }\r\n\r\n const visibleChildren: T[] = []\r\n\r\n // If binary search found no candidate, the viewport might be in a gap between objects\r\n // Start from the position where the search ended\r\n if (candidate === -1) {\r\n // Binary search failed to find overlap - viewport is in a gap\r\n // We need to check objects before lo for any that extend into the viewport\r\n candidate = lo > 0 ? lo - 1 : 0\r\n }\r\n\r\n // Expand left to find all objects that overlap the viewport\r\n // To handle large objects that start early but extend far, we continue\r\n // checking even after finding objects that don't overlap, up to a limit\r\n // This handles cases where many small objects sit between a large object and the viewport\r\n // Real-world examples: background panels, large images, or spanning containers\r\n const maxLookBehind = 50\r\n let left = candidate\r\n let gapCount = 0\r\n\r\n while (left - 1 >= 0) {\r\n const prev = children[left - 1]\r\n const prevEnd = isRow ? prev.x + prev.width : prev.y + prev.height\r\n\r\n if (prevEnd <= vpStart) {\r\n gapCount++\r\n if (gapCount >= maxLookBehind) {\r\n break\r\n }\r\n } else {\r\n gapCount = 0\r\n }\r\n\r\n left--\r\n }\r\n\r\n // Expand right to find the rightmost overlapping object\r\n let right = candidate + 1\r\n while (right < totalChildren) {\r\n const next = children[right]\r\n if ((isRow ? next.x : next.y) >= vpEnd) break\r\n right++\r\n }\r\n\r\n // Collect candidates that also overlap on the cross axis\r\n for (let i = left; i < right; i++) {\r\n const child = children[i]\r\n const start = isRow ? child.x : child.y\r\n const end = isRow ? child.x + child.width : child.y + child.height\r\n\r\n // Check primary axis overlap (optimization: skip objects that don't overlap)\r\n if (end <= vpStart) continue\r\n if (start >= vpEnd) break\r\n\r\n // Check cross-axis overlap\r\n if (isRow) {\r\n const childBottom = child.y + child.height\r\n if (childBottom < viewportTop) continue\r\n const childTop = child.y\r\n if (childTop > viewportBottom) continue\r\n } else {\r\n const childRight = child.x + child.width\r\n if (childRight < viewportLeft) continue\r\n const childLeft = child.x\r\n if (childLeft > viewportRight) continue\r\n }\r\n\r\n visibleChildren.push(child)\r\n }\r\n\r\n // Sort by zIndex\r\n if (visibleChildren.length > 1) {\r\n visibleChildren.sort((a, b) => (a.zIndex > b.zIndex ? 1 : a.zIndex < b.zIndex ? -1 : 0))\r\n }\r\n\r\n return visibleChildren\r\n}\r\n",
56
56
  "/**\r\n * Terminal capability response detection utilities.\r\n *\r\n * Detects various terminal capability response sequences:\r\n * - DECRPM (DEC Request Mode): ESC[?...;N$y where N is 0,1,2,3,4\r\n * - CPR (Cursor Position Report): ESC[row;colR (used for width detection)\r\n * - XTVersion: ESC P >| ... ESC \\\r\n * - Kitty Graphics: ESC _ G ... ESC \\\r\n * - Kitty Keyboard Query: ESC[?Nu where N is 0,1,2,etc\r\n * - DA1 (Device Attributes): ESC[?...c\r\n * - Pixel Resolution: ESC[4;height;widtht\r\n */\r\n\r\n/**\r\n * Check if a sequence is a terminal capability response.\r\n * Returns true if the sequence matches any known capability response pattern.\r\n */\r\nexport function isCapabilityResponse(sequence: string): boolean {\r\n // DECRPM: ESC[?digits;digits$y\r\n if (/\\x1b\\[\\?\\d+(?:;\\d+)*\\$y/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // CPR for explicit width/scaled text detection: ESC[1;NR where N >= 2\r\n // The column number tells us how many characters were rendered with width annotations\r\n // ESC[1;1R means no width support (cursor didn't move)\r\n // ESC[1;2R or higher means width support (cursor moved after rendering)\r\n // We accept any column >= 2 to handle cases where cursor wasn't at exact home position\r\n if (/\\x1b\\[1;(?!1R)\\d+R/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // XTVersion: ESC P >| ... ESC \\\r\n if (/\\x1bP>\\|[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // Kitty graphics response: ESC _ G ... ESC \\\r\n // Matches any graphics response including OK, errors, etc.\r\n // This is for filtering capability responses from user input\r\n if (/\\x1b_G[\\s\\S]*?\\x1b\\\\/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // Kitty keyboard query response: ESC[?Nu or ESC[?N;Mu (progressive enhancement)\r\n if (/\\x1b\\[\\?\\d+(?:;\\d+)?u/.test(sequence)) {\r\n return true\r\n }\r\n\r\n // DA1 (Device Attributes): ESC[?...c\r\n if (/\\x1b\\[\\?[0-9;]*c/.test(sequence)) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\n/**\r\n * Check if a sequence is a pixel resolution response.\r\n * Format: ESC[4;height;widtht\r\n */\r\nexport function isPixelResolutionResponse(sequence: string): boolean {\r\n return /\\x1b\\[4;\\d+;\\d+t/.test(sequence)\r\n}\r\n\r\n/**\r\n * Parse pixel resolution from response sequence.\r\n * Returns { width, height } or null if not a valid resolution response.\r\n */\r\nexport function parsePixelResolution(sequence: string): { width: number; height: number } | null {\r\n const match = sequence.match(/\\x1b\\[4;(\\d+);(\\d+)t/)\r\n if (match) {\r\n return {\r\n width: parseInt(match[2]),\r\n height: parseInt(match[1]),\r\n }\r\n }\r\n return null\r\n}\r\n"
57
57
  ],
58
- "mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
59
- "debugId": "16C825532B5F27E664756E2164756E21",
58
+ "mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
59
+ "debugId": "56AB7BEC6F0515B564756E2164756E21",
60
60
  "names": []
61
61
  }