🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@opentui/core

Package Overview
Dependencies
Maintainers
3
Versions
301
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentui/core - npm Package Compare versions

Comparing version
0.4.4
to
0.4.5
chunk-bun-t2myhmwd.js

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

+1
export declare function resolveBundledDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string>;
export type NodeAssetTarget = {
readonly platform: "darwin" | "linux" | "win32";
readonly arch: "arm64" | "x64";
readonly libc?: "glibc" | "musl";
};
export interface NativeAssetDescriptor {
readonly key: string;
readonly packageName: string;
readonly fileName: string;
}
export declare function getNativeAssetDescriptor(target: NodeAssetTarget): NativeAssetDescriptor;
export declare function getCurrentNodeAssetTarget(): NodeAssetTarget;
import { type NodeAssetTarget } from "./node-asset-target.js";
export type { NodeAssetTarget };
export type NodeAsset = {
readonly key: string;
readonly source: string;
};
export declare function getNodeAssets(target: NodeAssetTarget): readonly NodeAsset[];
// src/node-assets.ts
import { statSync } from "node:fs";
import { dirname, join as join2, resolve } from "node:path";
import { fileURLToPath } from "node:url";
// src/node-asset-target.ts
var NATIVE_FILE_NAMES = {
darwin: "libopentui.dylib",
linux: "libopentui.so",
win32: "opentui.dll"
};
function getNativeAssetDescriptor(target) {
if (!Object.hasOwn(NATIVE_FILE_NAMES, target.platform) || target.arch !== "arm64" && target.arch !== "x64") {
throw new Error(`Unsupported OpenTUI Node asset target: ${String(target.platform)}-${String(target.arch)}`);
}
if (target.libc !== undefined && target.libc !== "glibc" && target.libc !== "musl") {
throw new Error(`Unsupported libc for OpenTUI Node assets: ${String(target.libc)}`);
}
if (target.platform !== "linux" && target.libc !== undefined) {
throw new Error(`OpenTUI Node asset target libc is only supported on Linux, got ${target.platform}`);
}
const libcSuffix = target.platform === "linux" && target.libc === "musl" ? "-musl" : "";
const packageName = `@opentui/core-${target.platform}-${target.arch}${libcSuffix}`;
const fileName = NATIVE_FILE_NAMES[target.platform];
return {
key: `${packageName}/${fileName}`,
packageName,
fileName
};
}
// src/platform/assets.ts
import { isAbsolute, join } from "node:path";
// src/lib/singleton.ts
var singletonCacheSymbol = Symbol.for("@opentui/core/singleton");
function singleton(key, factory) {
const bag = globalThis[singletonCacheSymbol] ??= {};
if (!(key in bag)) {
bag[key] = factory();
}
return bag[key];
}
// src/lib/env.ts
var envRegistry = singleton("env-registry", () => ({}));
function registerEnvVar(config) {
const existing = envRegistry[config.name];
if (existing) {
if (existing.description !== config.description || existing.type !== config.type || existing.default !== config.default) {
throw new Error(`Environment variable "${config.name}" is already registered with different configuration. ` + `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`);
}
return;
}
envRegistry[config.name] = config;
}
function normalizeBoolean(value) {
const lowerValue = value.toLowerCase();
return ["true", "1", "on", "yes"].includes(lowerValue);
}
function parseEnvValue(config) {
const envValue = process.env[config.name];
if (envValue === undefined && config.default !== undefined) {
return config.default;
}
if (envValue === undefined) {
throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`);
}
switch (config.type) {
case "boolean":
return typeof envValue === "boolean" ? envValue : normalizeBoolean(envValue);
case "number":
const numValue = Number(envValue);
if (isNaN(numValue)) {
throw new Error(`Environment variable ${config.name} must be a valid number, got: ${envValue}`);
}
return numValue;
case "string":
default:
return envValue;
}
}
class EnvStore {
parsedValues = new Map;
get(key) {
if (this.parsedValues.has(key)) {
return this.parsedValues.get(key);
}
if (!(key in envRegistry)) {
throw new Error(`Environment variable ${key} is not registered.`);
}
try {
const value = parseEnvValue(envRegistry[key]);
this.parsedValues.set(key, value);
return value;
} catch (error) {
throw new Error(`Failed to parse env var ${key}: ${error instanceof Error ? error.message : String(error)}`);
}
}
has(key) {
return key in envRegistry;
}
clearCache() {
this.parsedValues.clear();
}
}
var envStore = singleton("env-store", () => new EnvStore);
var env = new Proxy({}, {
get(target, prop) {
if (typeof prop !== "string") {
return;
}
return envStore.get(prop);
},
has(target, prop) {
return envStore.has(prop);
},
ownKeys() {
return Object.keys(envRegistry);
},
getOwnPropertyDescriptor(target, prop) {
if (envStore.has(prop)) {
return {
enumerable: true,
configurable: true,
get: () => envStore.get(prop)
};
}
return;
}
});
// src/platform/assets.ts
registerEnvVar({
name: "OTUI_ASSET_ROOT",
description: "Absolute directory containing relocatable OpenTUI runtime assets",
type: "string",
default: ""
});
function validateAssetKey(key) {
if (key.length === 0 || isAbsolute(key) || key.includes("\\") || key.split("/").includes("..")) {
throw new Error(`Invalid OpenTUI asset key: ${JSON.stringify(key)}`);
}
}
// src/platform/runtime-assets.node.ts
var CORE_ASSET_PREFIX = "@opentui/core/";
var PARSER_WORKER_ASSET_KEY = `${CORE_ASSET_PREFIX}parser.worker.js`;
// src/lib/tree-sitter/default-parsers.ts
var defaultParserDescriptors = [
{
filetype: "javascript",
aliases: ["javascriptreact"],
queries: { highlights: ["assets/javascript/highlights.scm"] },
wasm: "assets/javascript/tree-sitter-javascript.wasm"
},
{
filetype: "typescript",
aliases: ["typescriptreact"],
queries: { highlights: ["assets/typescript/highlights.scm"] },
wasm: "assets/typescript/tree-sitter-typescript.wasm"
},
{
filetype: "markdown",
queries: {
highlights: ["assets/markdown/highlights.scm"],
injections: ["assets/markdown/injections.scm"]
},
wasm: "assets/markdown/tree-sitter-markdown.wasm",
injectionMapping: {
nodeTypes: { inline: "markdown_inline", pipe_table_cell: "markdown_inline" },
infoStringMap: {
javascript: "javascript",
js: "javascript",
jsx: "javascriptreact",
javascriptreact: "javascriptreact",
typescript: "typescript",
ts: "typescript",
tsx: "typescriptreact",
typescriptreact: "typescriptreact",
markdown: "markdown",
md: "markdown"
}
}
},
{
filetype: "markdown_inline",
queries: { highlights: ["assets/markdown_inline/highlights.scm"] },
wasm: "assets/markdown_inline/tree-sitter-markdown_inline.wasm"
},
{
filetype: "zig",
queries: { highlights: ["assets/zig/highlights.scm"] },
wasm: "assets/zig/tree-sitter-zig.wasm"
}
];
var defaultParserAssetPaths = [
...new Set(defaultParserDescriptors.flatMap((parser) => [
...parser.queries.highlights,
parser.wasm,
...parser.queries.injections ?? []
]))
];
// src/node-assets.ts
var CORE_PREFIX = "@opentui/core/";
var PARSER_WORKER_KEY = `${CORE_PREFIX}parser.worker.js`;
var TREE_SITTER_WASM_KEY = "web-tree-sitter/tree-sitter.wasm";
function getNodeAssets(target) {
const native = getNativeAssetDescriptor(target);
const coreRoot = resolveCoreRuntimeRoot();
const nativeRoot = dirname(resolvePackageEntry(native.packageName));
const assets = [
{ key: native.key, source: join2(nativeRoot, native.fileName) },
{ key: PARSER_WORKER_KEY, source: join2(coreRoot, "parser.worker.js") },
...defaultParserAssetPaths.map((relativePath) => ({
key: `${CORE_PREFIX}${relativePath}`,
source: join2(coreRoot, relativePath)
})),
{ key: TREE_SITTER_WASM_KEY, source: resolvePackageEntry(TREE_SITTER_WASM_KEY) }
];
const keys = new Set;
for (const asset of assets) {
validateAssetKey(asset.key);
if (keys.has(asset.key)) {
throw new Error(`Duplicate OpenTUI Node asset key: ${JSON.stringify(asset.key)}`);
}
keys.add(asset.key);
let isFile = false;
try {
isFile = statSync(asset.source).isFile();
} catch {}
if (!isFile) {
throw new Error(`Missing OpenTUI Node asset ${JSON.stringify(asset.key)} at ${JSON.stringify(asset.source)}`);
}
}
return assets.toSorted((left, right) => left.key < right.key ? -1 : left.key > right.key ? 1 : 0);
}
function resolveCoreRuntimeRoot() {
const moduleDirectory = dirname(fileURLToPath(import.meta.url));
const candidates = [moduleDirectory, resolve(moduleDirectory, "../dist")];
return candidates.find((candidate) => statIsFile(join2(candidate, "parser.worker.js"))) ?? moduleDirectory;
}
function resolvePackageEntry(specifier) {
return fileURLToPath(import.meta.resolve(specifier));
}
function statIsFile(path) {
try {
return statSync(path).isFile();
} catch {
return false;
}
}
export {
getNodeAssets
};
//# debugId=CA3D232D897F070364756E2164756E21
//# sourceMappingURL=node-assets.js.map
{
"version": 3,
"sources": ["../src/node-assets.ts", "../src/node-asset-target.ts", "../src/platform/assets.ts", "../src/lib/singleton.ts", "../src/lib/env.ts", "../src/platform/runtime-assets.node.ts", "../src/lib/tree-sitter/default-parsers.ts"],
"sourcesContent": [
"import { statSync } from \"node:fs\"\nimport { dirname, join, resolve } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { defaultParserAssetPaths } from \"./lib/tree-sitter/default-parsers.js\"\nimport { getNativeAssetDescriptor, type NodeAssetTarget } from \"./node-asset-target.js\"\nimport { validateAssetKey } from \"./platform/assets.js\"\n\nexport type { NodeAssetTarget }\n\nexport type NodeAsset = {\n readonly key: string\n readonly source: string\n}\n\nconst CORE_PREFIX = \"@opentui/core/\"\nconst PARSER_WORKER_KEY = `${CORE_PREFIX}parser.worker.js`\nconst TREE_SITTER_WASM_KEY = \"web-tree-sitter/tree-sitter.wasm\"\n\nexport function getNodeAssets(target: NodeAssetTarget): readonly NodeAsset[] {\n const native = getNativeAssetDescriptor(target)\n const coreRoot = resolveCoreRuntimeRoot()\n const nativeRoot = dirname(resolvePackageEntry(native.packageName))\n const assets: NodeAsset[] = [\n { key: native.key, source: join(nativeRoot, native.fileName) },\n { key: PARSER_WORKER_KEY, source: join(coreRoot, \"parser.worker.js\") },\n ...defaultParserAssetPaths.map((relativePath) => ({\n key: `${CORE_PREFIX}${relativePath}`,\n source: join(coreRoot, relativePath),\n })),\n { key: TREE_SITTER_WASM_KEY, source: resolvePackageEntry(TREE_SITTER_WASM_KEY) },\n ]\n\n const keys = new Set<string>()\n for (const asset of assets) {\n validateAssetKey(asset.key)\n if (keys.has(asset.key)) {\n throw new Error(`Duplicate OpenTUI Node asset key: ${JSON.stringify(asset.key)}`)\n }\n keys.add(asset.key)\n\n let isFile = false\n try {\n isFile = statSync(asset.source).isFile()\n } catch {}\n if (!isFile) {\n throw new Error(`Missing OpenTUI Node asset ${JSON.stringify(asset.key)} at ${JSON.stringify(asset.source)}`)\n }\n }\n\n return assets.toSorted((left, right) => (left.key < right.key ? -1 : left.key > right.key ? 1 : 0))\n}\n\nfunction resolveCoreRuntimeRoot(): string {\n const moduleDirectory = dirname(fileURLToPath(import.meta.url))\n const candidates = [moduleDirectory, resolve(moduleDirectory, \"../dist\")]\n return candidates.find((candidate) => statIsFile(join(candidate, \"parser.worker.js\"))) ?? moduleDirectory\n}\n\nfunction resolvePackageEntry(specifier: string): string {\n return fileURLToPath(import.meta.resolve(specifier))\n}\n\nfunction statIsFile(path: string): boolean {\n try {\n return statSync(path).isFile()\n } catch {\n return false\n }\n}\n",
"export type NodeAssetTarget = {\n readonly platform: \"darwin\" | \"linux\" | \"win32\"\n readonly arch: \"arm64\" | \"x64\"\n readonly libc?: \"glibc\" | \"musl\"\n}\n\nexport interface NativeAssetDescriptor {\n readonly key: string\n readonly packageName: string\n readonly fileName: string\n}\n\nconst NATIVE_FILE_NAMES = {\n darwin: \"libopentui.dylib\",\n linux: \"libopentui.so\",\n win32: \"opentui.dll\",\n} as const\n\nexport function getNativeAssetDescriptor(target: NodeAssetTarget): NativeAssetDescriptor {\n if (!Object.hasOwn(NATIVE_FILE_NAMES, target.platform) || (target.arch !== \"arm64\" && target.arch !== \"x64\")) {\n throw new Error(`Unsupported OpenTUI Node asset target: ${String(target.platform)}-${String(target.arch)}`)\n }\n\n if (target.libc !== undefined && target.libc !== \"glibc\" && target.libc !== \"musl\") {\n throw new Error(`Unsupported libc for OpenTUI Node assets: ${String(target.libc)}`)\n }\n if (target.platform !== \"linux\" && target.libc !== undefined) {\n throw new Error(`OpenTUI Node asset target libc is only supported on Linux, got ${target.platform}`)\n }\n\n const libcSuffix = target.platform === \"linux\" && target.libc === \"musl\" ? \"-musl\" : \"\"\n const packageName = `@opentui/core-${target.platform}-${target.arch}${libcSuffix}`\n const fileName = NATIVE_FILE_NAMES[target.platform]\n return {\n key: `${packageName}/${fileName}`,\n packageName,\n fileName,\n }\n}\n\nexport function getCurrentNodeAssetTarget(): NodeAssetTarget {\n const libc = process.env.OPENTUI_LIBC\n if (process.platform === \"linux\" && libc !== undefined && libc !== \"\" && libc !== \"glibc\" && libc !== \"musl\") {\n throw new Error(`On Linux, OPENTUI_LIBC must be unset, empty, \"glibc\", or \"musl\", got ${JSON.stringify(libc)}`)\n }\n\n return {\n platform: process.platform as NodeAssetTarget[\"platform\"],\n arch: process.arch as NodeAssetTarget[\"arch\"],\n ...(process.platform === \"linux\" && libc === \"musl\" ? { libc } : {}),\n }\n}\n",
"import { statSync } from \"node:fs\"\nimport { isAbsolute, join } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { registerEnvVar } from \"../lib/env.js\"\n\ntype AssetFallback = string | URL | (() => string | URL)\n\nregisterEnvVar({\n name: \"OTUI_ASSET_ROOT\",\n description: \"Absolute directory containing relocatable OpenTUI runtime assets\",\n type: \"string\",\n default: \"\",\n})\n\nexport function resolveAssetPath(key: string, fallback?: AssetFallback): string {\n validateAssetKey(key)\n\n const configuredPath = resolveAssetRootPath(key)\n if (configuredPath !== undefined) {\n return configuredPath\n }\n\n if (fallback === undefined) {\n throw new Error(`OpenTUI asset ${JSON.stringify(key)} has no package-relative fallback`)\n }\n\n const value = typeof fallback === \"function\" ? fallback() : fallback\n return value instanceof URL ? fileURLToPath(value) : value\n}\n\nexport function resolveAssetRootPath(key: string): string | undefined {\n validateAssetKey(key)\n\n const root = process.env.OTUI_ASSET_ROOT\n if (!root) {\n return undefined\n }\n\n if (!isAbsolute(root)) {\n throw new Error(`OTUI_ASSET_ROOT must be an absolute directory, got ${JSON.stringify(root)}`)\n }\n\n const assetPath = join(root, key)\n let isFile = false\n try {\n isFile = statSync(assetPath).isFile()\n } catch {}\n if (!isFile) {\n throw new Error(`Missing OpenTUI asset ${JSON.stringify(key)} at ${JSON.stringify(assetPath)}`)\n }\n return assetPath\n}\n\nexport function validateAssetKey(key: string): void {\n if (key.length === 0 || isAbsolute(key) || key.includes(\"\\\\\") || key.split(\"/\").includes(\"..\")) {\n throw new Error(`Invalid OpenTUI asset key: ${JSON.stringify(key)}`)\n }\n}\n",
"const singletonCacheSymbol = Symbol.for(\"@opentui/core/singleton\")\n\n/**\n * Ensures a value is initialized once per process,\n * persists across Bun hot reloads, and is type-safe.\n */\nexport function singleton<T>(key: string, factory: () => T): T {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = (globalThis[singletonCacheSymbol] ??= {})\n if (!(key in bag)) {\n bag[key] = factory()\n }\n return bag[key] as T\n}\n\nexport function getSingleton<T>(key: string): T | undefined {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n return bag?.[key] as T | undefined\n}\n\nexport function destroySingleton(key: string): void {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n if (bag && key in bag) {\n delete bag[key]\n }\n}\n\nexport function hasSingleton(key: string): boolean {\n // @ts-expect-error this symbol is only used in this file and is not part of the public API\n const bag = globalThis[singletonCacheSymbol]\n return bag && key in bag\n}\n",
"import { singleton } from \"./singleton.js\"\n\n/**\n * Environment variable registry\n *\n * Usage:\n * ```ts\n * import { registerEnvVar, env } from \"./lib/env.ts\";\n *\n * // Register environment variables\n * registerEnvVar({\n * name: \"DEBUG\",\n * description: \"Enable debug logging\",\n * type: \"boolean\",\n * default: false\n * });\n *\n * registerEnvVar({\n * name: \"PORT\",\n * description: \"Server port number\",\n * type: \"number\",\n * default: 3000\n * });\n *\n * // Access environment variables\n * if (env.DEBUG) {\n * console.log(\"Debug mode enabled\");\n * }\n *\n * const port = env.PORT; // number\n * ```\n */\n\nexport interface EnvVarConfig {\n name: string\n description: string\n default?: string | boolean | number\n type?: \"string\" | \"boolean\" | \"number\"\n}\n\nexport const envRegistry: Record<string, EnvVarConfig> = singleton(\"env-registry\", () => ({}))\n\nexport function registerEnvVar(config: EnvVarConfig): void {\n const existing = envRegistry[config.name]\n if (existing) {\n if (\n existing.description !== config.description ||\n existing.type !== config.type ||\n existing.default !== config.default\n ) {\n throw new Error(\n `Environment variable \"${config.name}\" is already registered with different configuration. ` +\n `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`,\n )\n }\n return\n }\n envRegistry[config.name] = config\n}\n\nfunction normalizeBoolean(value: string): boolean {\n const lowerValue = value.toLowerCase()\n return [\"true\", \"1\", \"on\", \"yes\"].includes(lowerValue)\n}\n\nfunction parseEnvValue(config: EnvVarConfig): string | boolean | number {\n const envValue = process.env[config.name]\n\n if (envValue === undefined && config.default !== undefined) {\n return config.default\n }\n\n if (envValue === undefined) {\n throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`)\n }\n\n switch (config.type) {\n case \"boolean\":\n return typeof envValue === \"boolean\" ? envValue : normalizeBoolean(envValue)\n case \"number\":\n const numValue = Number(envValue)\n if (isNaN(numValue)) {\n throw new Error(`Environment variable ${config.name} must be a valid number, got: ${envValue}`)\n }\n return numValue\n case \"string\":\n default:\n return envValue\n }\n}\n\nclass EnvStore {\n private parsedValues: Map<string, string | boolean | number> = new Map()\n\n get(key: string): any {\n if (this.parsedValues.has(key)) {\n return this.parsedValues.get(key)!\n }\n\n if (!(key in envRegistry)) {\n throw new Error(`Environment variable ${key} is not registered.`)\n }\n\n try {\n const value = parseEnvValue(envRegistry[key])\n this.parsedValues.set(key, value)\n return value\n } catch (error) {\n throw new Error(`Failed to parse env var ${key}: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n has(key: string): boolean {\n return key in envRegistry\n }\n\n clearCache(): void {\n this.parsedValues.clear()\n }\n}\n\nconst envStore = singleton(\"env-store\", () => new EnvStore())\n\nexport function clearEnvCache(): void {\n envStore.clearCache()\n}\n\nexport function generateEnvMarkdown(): string {\n const configs = Object.values(envRegistry)\n\n if (configs.length === 0) {\n return \"# Environment Variables\\n\\nNo environment variables registered.\\n\"\n }\n\n let markdown = \"# Environment Variables\\n\\n\"\n\n for (const config of configs) {\n markdown += `## ${config.name}\\n\\n`\n markdown += `${config.description}\\n\\n`\n\n markdown += `**Type:** \\`${config.type || \"string\"}\\` \\n`\n\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\n markdown += `**Default:** \\`${defaultValue}\\`\\n`\n } else {\n markdown += \"**Default:** *Required*\\n\"\n }\n\n markdown += \"\\n\"\n }\n\n return markdown\n}\n\nexport function generateEnvColored(): string {\n const configs = Object.values(envRegistry)\n\n if (configs.length === 0) {\n return \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\nNo environment variables registered.\\n\"\n }\n\n let output = \"\\x1b[1;36mEnvironment Variables\\x1b[0m\\n\\n\"\n\n for (const config of configs) {\n output += `\\x1b[1;33m${config.name}\\x1b[0m\\n`\n output += `${config.description}\\n`\n output += `\\x1b[32mType:\\x1b[0m \\x1b[36m${config.type || \"string\"}\\x1b[0m\\n`\n\n if (config.default !== undefined) {\n const defaultValue = typeof config.default === \"string\" ? `\"${config.default}\"` : String(config.default)\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[35m${defaultValue}\\x1b[0m\\n`\n } else {\n output += `\\x1b[32mDefault:\\x1b[0m \\x1b[31mRequired\\x1b[0m\\n`\n }\n\n output += \"\\n\"\n }\n\n return output\n}\n\nexport const env = new Proxy({} as Record<string, any>, {\n get(target, prop: string) {\n if (typeof prop !== \"string\") {\n return undefined\n }\n return envStore.get(prop)\n },\n\n has(target, prop: string) {\n return envStore.has(prop)\n },\n\n ownKeys() {\n return Object.keys(envRegistry)\n },\n\n getOwnPropertyDescriptor(target, prop: string) {\n if (envStore.has(prop)) {\n return {\n enumerable: true,\n configurable: true,\n get: () => envStore.get(prop),\n }\n }\n return undefined\n },\n})\n",
"import { getCurrentNodeAssetTarget, getNativeAssetDescriptor } from \"../node-asset-target.js\"\nimport { resolveAssetPath, resolveAssetRootPath } from \"./assets.js\"\n\ninterface NativePackageModule {\n readonly default: string\n}\n\nconst CORE_ASSET_PREFIX = \"@opentui/core/\"\nconst PARSER_WORKER_ASSET_KEY = `${CORE_ASSET_PREFIX}parser.worker.js`\nconst TREE_SITTER_WASM_ASSET_KEY = \"web-tree-sitter/tree-sitter.wasm\"\n\nexport function resolveDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string> {\n return Promise.resolve(resolveAssetPath(`${CORE_ASSET_PREFIX}${relativePath}`, fallbackPath))\n}\n\nexport function resolveDefaultTreeSitterWorkerPath(fallbackPath: URL): string {\n return resolveAssetPath(PARSER_WORKER_ASSET_KEY, fallbackPath)\n}\n\nexport function resolveTreeSitterWasm(): Promise<string> {\n return Promise.resolve(\n resolveAssetPath(TREE_SITTER_WASM_ASSET_KEY, () => new URL(import.meta.resolve(TREE_SITTER_WASM_ASSET_KEY))),\n )\n}\n\nexport async function resolveNativeLibraryPath(): Promise<string> {\n const asset = getNativeAssetDescriptor(getCurrentNodeAssetTarget())\n const configuredPath = resolveAssetRootPath(asset.key)\n if (configuredPath !== undefined) {\n return configuredPath\n }\n\n const specifier: string = asset.packageName\n return ((await import(specifier)) as NativePackageModule).default\n}\n",
"// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n\nimport { resolveDefaultParserAsset } from \"#opentui/runtime-assets\"\n\nimport type { FiletypeParserOptions, InjectionMapping } from \"./types.js\"\n\ninterface DefaultParserDescriptor {\n readonly filetype: string\n readonly aliases?: readonly string[]\n readonly queries: {\n readonly highlights: readonly string[]\n readonly injections?: readonly string[]\n }\n readonly wasm: string\n readonly injectionMapping?: InjectionMapping\n}\n\nconst defaultParserDescriptors: readonly DefaultParserDescriptor[] = [\n {\n \"filetype\": \"javascript\",\n \"aliases\": [\"javascriptreact\"],\n \"queries\": { \"highlights\": [\"assets/javascript/highlights.scm\"] },\n \"wasm\": \"assets/javascript/tree-sitter-javascript.wasm\"\n },\n {\n \"filetype\": \"typescript\",\n \"aliases\": [\"typescriptreact\"],\n \"queries\": { \"highlights\": [\"assets/typescript/highlights.scm\"] },\n \"wasm\": \"assets/typescript/tree-sitter-typescript.wasm\"\n },\n {\n \"filetype\": \"markdown\",\n \"queries\": {\n \"highlights\": [\"assets/markdown/highlights.scm\"],\n \"injections\": [\"assets/markdown/injections.scm\"]\n },\n \"wasm\": \"assets/markdown/tree-sitter-markdown.wasm\",\n \"injectionMapping\": {\n \"nodeTypes\": { \"inline\": \"markdown_inline\", \"pipe_table_cell\": \"markdown_inline\" },\n \"infoStringMap\": {\n \"javascript\": \"javascript\",\n \"js\": \"javascript\",\n \"jsx\": \"javascriptreact\",\n \"javascriptreact\": \"javascriptreact\",\n \"typescript\": \"typescript\",\n \"ts\": \"typescript\",\n \"tsx\": \"typescriptreact\",\n \"typescriptreact\": \"typescriptreact\",\n \"markdown\": \"markdown\",\n \"md\": \"markdown\"\n }\n }\n },\n {\n \"filetype\": \"markdown_inline\",\n \"queries\": { \"highlights\": [\"assets/markdown_inline/highlights.scm\"] },\n \"wasm\": \"assets/markdown_inline/tree-sitter-markdown_inline.wasm\"\n },\n {\n \"filetype\": \"zig\",\n \"queries\": { \"highlights\": [\"assets/zig/highlights.scm\"] },\n \"wasm\": \"assets/zig/tree-sitter-zig.wasm\"\n }\n]\n\nexport const defaultParserAssetPaths: readonly string[] = [\n ...new Set(\n defaultParserDescriptors.flatMap((parser) => [\n ...parser.queries.highlights,\n parser.wasm,\n ...(parser.queries.injections ?? []),\n ]),\n ),\n]\n\nlet cachedParsers: Promise<FiletypeParserOptions[]> | undefined\n\nexport function getParsers(): Promise<FiletypeParserOptions[]> {\n cachedParsers ??= Promise.all(defaultParserDescriptors.map(resolveDefaultParser))\n return cachedParsers\n}\n\nasync function resolveDefaultParser(parser: DefaultParserDescriptor): Promise<FiletypeParserOptions> {\n const queries: FiletypeParserOptions[\"queries\"] = {\n highlights: await Promise.all(parser.queries.highlights.map(resolveParserAsset)),\n }\n if (parser.queries.injections) {\n queries.injections = await Promise.all(parser.queries.injections.map(resolveParserAsset))\n }\n\n return {\n filetype: parser.filetype,\n ...(parser.aliases ? { aliases: [...parser.aliases] } : {}),\n queries,\n wasm: await resolveParserAsset(parser.wasm),\n ...(parser.injectionMapping ? { injectionMapping: parser.injectionMapping } : {}),\n }\n}\n\nfunction resolveParserAsset(relativePath: string): Promise<string> {\n return resolveDefaultParserAsset(relativePath, new URL(`./${relativePath}`, import.meta.url))\n}\n"
],
"mappings": "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",
"debugId": "CA3D232D897F070364756E2164756E21",
"names": []
}
type AssetFallback = string | URL | (() => string | URL);
export declare function resolveAssetPath(key: string, fallback?: AssetFallback): string;
export declare function resolveAssetRootPath(key: string): string | undefined;
export declare function validateAssetKey(key: string): void;
export {};
export declare function resolveDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string>;
export declare function resolveDefaultTreeSitterWorkerPath(_fallbackPath: URL): string;
export declare function resolveTreeSitterWasm(): Promise<string>;
export declare function resolveNativeLibraryPath(): Promise<string>;
export declare function resolveDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string>;
export declare function resolveDefaultTreeSitterWorkerPath(fallbackPath: URL): string;
export declare function resolveTreeSitterWasm(): Promise<string>;
export declare function resolveNativeLibraryPath(): Promise<string>;
// @bun
import {
ANSI,
CliRenderer
} from "./chunk-bun-tkm837n2.js";
import {
SystemClock,
TreeSitterClient
} from "./chunk-bun-t2myhmwd.js";
// src/testing/mock-keys.ts
import { Buffer as Buffer2 } from "buffer";
function pasteBytes(text) {
return Uint8Array.from(Buffer2.from(text));
}
var KeyCodes = {
RETURN: "\r",
LINEFEED: `
`,
TAB: "\t",
BACKSPACE: "\b",
DELETE: "\x1B[3~",
HOME: "\x1B[H",
END: "\x1B[F",
ESCAPE: "\x1B",
ARROW_UP: "\x1B[A",
ARROW_DOWN: "\x1B[B",
ARROW_RIGHT: "\x1B[C",
ARROW_LEFT: "\x1B[D",
F1: "\x1BOP",
F2: "\x1BOQ",
F3: "\x1BOR",
F4: "\x1BOS",
F5: "\x1B[15~",
F6: "\x1B[17~",
F7: "\x1B[18~",
F8: "\x1B[19~",
F9: "\x1B[20~",
F10: "\x1B[21~",
F11: "\x1B[23~",
F12: "\x1B[24~"
};
var kittyKeyCodeMap = {
escape: 27,
tab: 9,
return: 13,
backspace: 127,
insert: 57348,
delete: 57349,
left: 57350,
right: 57351,
up: 57352,
down: 57353,
pageup: 57354,
pagedown: 57355,
home: 57356,
end: 57357,
f1: 57364,
f2: 57365,
f3: 57366,
f4: 57367,
f5: 57368,
f6: 57369,
f7: 57370,
f8: 57371,
f9: 57372,
f10: 57373,
f11: 57374,
f12: 57375
};
function encodeKittySequence(codepoint, modifiers) {
let modMask = 0;
if (modifiers?.shift)
modMask |= 1;
if (modifiers?.meta)
modMask |= 2;
if (modifiers?.ctrl)
modMask |= 4;
if (modifiers?.super)
modMask |= 8;
if (modifiers?.hyper)
modMask |= 16;
if (modMask === 0) {
return `\x1B[${codepoint}u`;
} else {
return `\x1B[${codepoint};${modMask + 1}u`;
}
}
function encodeModifyOtherKeysSequence(charCode, modifiers) {
let modMask = 0;
if (modifiers?.shift)
modMask |= 1;
if (modifiers?.meta)
modMask |= 2;
if (modifiers?.ctrl)
modMask |= 4;
if (modifiers?.super)
modMask |= 8;
if (modifiers?.hyper)
modMask |= 16;
if (modMask === 0) {
return String.fromCharCode(charCode);
}
return `\x1B[27;${modMask + 1};${charCode}~`;
}
function resolveKeyInput(key) {
let keyValue;
let keyName;
if (typeof key === "string") {
if (key in KeyCodes) {
keyValue = KeyCodes[key];
keyName = key.toLowerCase();
} else {
keyValue = key;
keyName = undefined;
}
} else {
keyValue = KeyCodes[key];
if (!keyValue) {
throw new Error(`Unknown key: ${key}`);
}
keyName = String(key).toLowerCase();
}
return { keyValue, keyName };
}
function createMockKeys(renderer, options) {
const useKittyKeyboard = options?.kittyKeyboard ?? false;
const useOtherModifiersMode = options?.otherModifiersMode ?? false;
const effectiveOtherModifiersMode = useOtherModifiersMode && !useKittyKeyboard;
const pressKeys = async (keys, delayMs = 0) => {
for (const key of keys) {
const { keyValue: keyCode } = resolveKeyInput(key);
renderer.stdin.emit("data", Buffer2.from(keyCode));
if (delayMs > 0) {
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
}
};
const pressKey = (key, modifiers) => {
if (useKittyKeyboard) {
let { keyValue, keyName } = resolveKeyInput(key);
const valueToKeyNameMap = {
"\b": "backspace",
"\r": "return",
"\n": "return",
"\t": "tab",
"\x1B": "escape",
"\x1B[A": "up",
"\x1B[B": "down",
"\x1B[C": "right",
"\x1B[D": "left",
"\x1B[H": "home",
"\x1B[F": "end",
"\x1B[3~": "delete"
};
if (keyValue && valueToKeyNameMap[keyValue]) {
keyName = valueToKeyNameMap[keyValue];
}
if (keyName && keyName.startsWith("arrow_")) {
keyName = keyName.substring(6);
}
if (keyName && kittyKeyCodeMap[keyName]) {
const kittyCode = kittyKeyCodeMap[keyName];
const sequence = encodeKittySequence(kittyCode, modifiers);
renderer.stdin.emit("data", Buffer2.from(sequence));
return;
}
if (keyValue && keyValue.length === 1 && !keyValue.startsWith("\x1B")) {
const codepoint = keyValue.codePointAt(0);
if (codepoint) {
const sequence = encodeKittySequence(codepoint, modifiers);
renderer.stdin.emit("data", Buffer2.from(sequence));
return;
}
}
}
if (effectiveOtherModifiersMode && modifiers) {
let { keyValue, keyName } = resolveKeyInput(key);
const valueToCharCodeMap = {
"\b": 127,
"\r": 13,
"\n": 13,
"\t": 9,
"\x1B": 27,
" ": 32
};
let charCode;
if (keyValue && valueToCharCodeMap[keyValue] !== undefined) {
charCode = valueToCharCodeMap[keyValue];
} else if (keyValue && keyValue.length === 1 && !keyValue.startsWith("\x1B")) {
charCode = keyValue.charCodeAt(0);
}
if (charCode !== undefined) {
const sequence = encodeModifyOtherKeysSequence(charCode, modifiers);
renderer.stdin.emit("data", Buffer2.from(sequence));
return;
}
}
let keyCode = resolveKeyInput(key).keyValue;
if (modifiers) {
if (keyCode.startsWith("\x1B[") && keyCode.length > 2) {
const modifier = 1 + (modifiers.shift ? 1 : 0) + (modifiers.meta ? 2 : 0) + (modifiers.ctrl ? 4 : 0) + (modifiers.super ? 8 : 0) + (modifiers.hyper ? 16 : 0);
if (modifier > 1) {
const tildeMatch = keyCode.match(/^\x1b\[(\d+)~$/);
if (tildeMatch) {
keyCode = `\x1B[${tildeMatch[1]};${modifier}~`;
} else {
const ending = keyCode.slice(-1);
keyCode = `\x1B[1;${modifier}${ending}`;
}
}
} else if (keyCode.length === 1) {
let char = keyCode;
if (char === "\t" && modifiers.shift) {
keyCode = modifiers.meta ? "\x1B\x1B[Z" : "\x1B[Z";
renderer.stdin.emit("data", Buffer2.from(keyCode));
return;
}
if (char === "\b" && (modifiers.ctrl || modifiers.super || modifiers.hyper)) {
const modifier = 1 + (modifiers.shift ? 1 : 0) + (modifiers.meta ? 2 : 0) + (modifiers.ctrl ? 4 : 0) + (modifiers.super ? 8 : 0) + (modifiers.hyper ? 16 : 0);
keyCode = `\x1B[27;${modifier};127~`;
} else if (modifiers.ctrl) {
if (char >= "a" && char <= "z") {
keyCode = String.fromCharCode(char.charCodeAt(0) - 96);
} else if (char >= "A" && char <= "Z") {
keyCode = String.fromCharCode(char.charCodeAt(0) - 64);
} else {
const specialCtrlMap = {
"[": "\x1B",
"\\": "\x1C",
"]": "\x1D",
"^": "\x1E",
_: "\x1F",
"?": "\x7F",
"/": "\x1F",
"-": "\x1F",
".": "\x1E",
",": "\x1C",
"@": "\x00",
" ": "\x00"
};
if (char in specialCtrlMap) {
keyCode = specialCtrlMap[char];
}
}
if (modifiers.meta) {
keyCode = `\x1B${keyCode}`;
}
} else {
if (modifiers.shift && char >= "a" && char <= "z") {
char = char.toUpperCase();
}
if (modifiers.meta) {
keyCode = `\x1B${char}`;
} else {
keyCode = char;
}
}
} else if (modifiers.meta && !keyCode.startsWith("\x1B")) {
keyCode = `\x1B${keyCode}`;
}
}
renderer.stdin.emit("data", Buffer2.from(keyCode));
};
const typeText = async (text, delayMs = 0) => {
const keys = text.split("");
await pressKeys(keys, delayMs);
};
const pressReturn = (modifiers) => {
pressKey(KeyCodes.RETURN, modifiers);
};
const pressEscape = (modifiers) => {
pressKey(KeyCodes.ESCAPE, modifiers);
};
const pressTab = (modifiers) => {
pressKey(KeyCodes.TAB, modifiers);
};
const pressBackspace = (modifiers) => {
pressKey(KeyCodes.BACKSPACE, modifiers);
};
const pressArrow = (direction, modifiers) => {
const keyMap = {
up: KeyCodes.ARROW_UP,
down: KeyCodes.ARROW_DOWN,
left: KeyCodes.ARROW_LEFT,
right: KeyCodes.ARROW_RIGHT
};
pressKey(keyMap[direction], modifiers);
};
const pressCtrlC = () => {
pressKey("c", { ctrl: true });
};
const pasteBracketedText = (text) => {
return pressKeys([ANSI.bracketedPasteStart, text, ANSI.bracketedPasteEnd]);
};
return {
pressKeys,
pressKey,
typeText,
pressEnter: pressReturn,
pressEscape,
pressTab,
pressBackspace,
pressArrow,
pressCtrlC,
pasteBracketedText
};
}
// src/testing/mock-mouse.ts
var MouseButtons = {
LEFT: 0,
MIDDLE: 1,
RIGHT: 2,
WHEEL_UP: 64,
WHEEL_DOWN: 65,
WHEEL_LEFT: 66,
WHEEL_RIGHT: 67
};
function createMockMouse(renderer) {
let currentPosition = { x: 0, y: 0 };
let buttonsPressed = new Set;
const generateMouseEvent = (type, x, y, button = MouseButtons.LEFT, modifiers = {}) => {
let buttonCode = button;
if (modifiers.shift)
buttonCode |= 4;
if (modifiers.alt)
buttonCode |= 8;
if (modifiers.ctrl)
buttonCode |= 16;
switch (type) {
case "move":
buttonCode = 32 | 3;
if (modifiers.shift)
buttonCode |= 4;
if (modifiers.alt)
buttonCode |= 8;
if (modifiers.ctrl)
buttonCode |= 16;
break;
case "drag":
buttonCode = (buttonsPressed.size > 0 ? Array.from(buttonsPressed)[0] : button) | 32;
if (modifiers.shift)
buttonCode |= 4;
if (modifiers.alt)
buttonCode |= 8;
if (modifiers.ctrl)
buttonCode |= 16;
break;
case "scroll":
break;
}
const ansiX = x + 1;
const ansiY = y + 1;
let pressRelease = "M";
if (type === "up" || type === "move" || type === "drag") {
pressRelease = "m";
}
return `\x1B[<${buttonCode};${ansiX};${ansiY}${pressRelease}`;
};
const emitMouseEvent = async (type, x, y, button = MouseButtons.LEFT, options = {}) => {
const { modifiers = {}, delayMs = 0 } = options;
const eventSequence = generateMouseEvent(type, x, y, button, modifiers);
renderer.stdin.emit("data", Buffer.from(eventSequence));
currentPosition = { x, y };
if (type === "down" && button < 64) {
buttonsPressed.add(button);
} else if (type === "up") {
buttonsPressed.delete(button);
}
if (delayMs > 0) {
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
};
const moveTo = async (x, y, options = {}) => {
const { button = MouseButtons.LEFT, delayMs = 0, modifiers = {} } = options;
if (buttonsPressed.size > 0) {
await emitMouseEvent("drag", x, y, Array.from(buttonsPressed)[0], { modifiers, delayMs });
} else {
await emitMouseEvent("move", x, y, button, { modifiers, delayMs });
}
currentPosition = { x, y };
};
const click = async (x, y, button = MouseButtons.LEFT, options = {}) => {
const { delayMs = 10, modifiers = {} } = options;
await emitMouseEvent("down", x, y, button, { modifiers, delayMs });
await new Promise((resolve) => setTimeout(resolve, delayMs));
await emitMouseEvent("up", x, y, button, { modifiers, delayMs });
};
const doubleClick = async (x, y, button = MouseButtons.LEFT, options = {}) => {
const { delayMs = 10, modifiers = {} } = options;
await click(x, y, button, { modifiers, delayMs });
await new Promise((resolve) => setTimeout(resolve, delayMs));
await click(x, y, button, { modifiers, delayMs });
};
const pressDown = async (x, y, button = MouseButtons.LEFT, options = {}) => {
const { modifiers = {}, delayMs = 0 } = options;
await emitMouseEvent("down", x, y, button, { modifiers, delayMs });
};
const release = async (x, y, button = MouseButtons.LEFT, options = {}) => {
const { modifiers = {}, delayMs = 0 } = options;
await emitMouseEvent("up", x, y, button, { modifiers, delayMs });
};
const drag = async (startX, startY, endX, endY, button = MouseButtons.LEFT, options = {}) => {
const { delayMs = 10, modifiers = {} } = options;
await pressDown(startX, startY, button, { modifiers });
const steps = 5;
const dx = (endX - startX) / steps;
const dy = (endY - startY) / steps;
for (let i = 1;i <= steps; i++) {
const currentX = Math.round(startX + dx * i);
const currentY = Math.round(startY + dy * i);
await emitMouseEvent("drag", currentX, currentY, button, { modifiers, delayMs });
}
await release(endX, endY, button, { modifiers });
};
const scroll = async (x, y, direction, options = {}) => {
const { modifiers = {}, delayMs = 0 } = options;
let button;
switch (direction) {
case "up":
button = MouseButtons.WHEEL_UP;
break;
case "down":
button = MouseButtons.WHEEL_DOWN;
break;
case "left":
button = MouseButtons.WHEEL_LEFT;
break;
case "right":
button = MouseButtons.WHEEL_RIGHT;
break;
}
await emitMouseEvent("scroll", x, y, button, { modifiers, delayMs });
};
const getCurrentPosition = () => {
return { ...currentPosition };
};
const getPressedButtons = () => {
return Array.from(buttonsPressed);
};
return {
moveTo,
click,
doubleClick,
pressDown,
release,
drag,
scroll,
getCurrentPosition,
getPressedButtons,
emitMouseEvent
};
}
// src/testing/test-streams.ts
import { Readable, Writable } from "stream";
class TestWriteStream extends Writable {
isTTY = true;
columns;
rows;
constructor(columns = 80, rows = 24) {
super();
this.columns = columns;
this.rows = rows;
}
_write(_chunk, _encoding, callback) {
callback();
}
getColorDepth() {
return 24;
}
}
function createTestStdin() {
return new Readable({ read() {} });
}
function createTestStdout(columns = 80, rows = 24) {
return new TestWriteStream(columns, rows);
}
// src/testing/test-renderer.ts
var decoder = new TextDecoder;
var DEFAULT_MAX_PASSES = 20;
var DEFAULT_MAX_VISUAL_IDLE_FRAMES = 20;
var DEFAULT_QUIET_FRAMES = 1;
async function drainImmediateWork() {
await Promise.resolve();
await new Promise((resolve) => process.nextTick(resolve));
await Promise.resolve();
}
function normalizePositiveInteger(value, fallback) {
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
return fallback;
}
return Math.floor(value);
}
function createWaitError(renderer, message, frame) {
const stats = renderer.getStats();
const scheduler = renderer.getSchedulerState();
const details = [
message,
`frameId: ${renderer.frameId}`,
`nativeFrameCount: ${stats.nativeFrameCount}`,
`cellsUpdated: ${stats.cellsUpdated}`,
`isRunning: ${scheduler.isRunning}`,
`isRendering: ${scheduler.isRendering}`,
`hasScheduledRender: ${scheduler.hasScheduledRender}`
];
if (frame !== undefined) {
details.push(`lastFrame:
${frame}`);
}
return new Error(details.join(`
`));
}
class TestExternalOutputRecorder {
commits = [];
constructor(renderer) {
renderer.on("external_output" /* EXTERNAL_OUTPUT */, this.record);
renderer.once("destroy" /* DESTROY */, () => {
renderer.off("external_output" /* EXTERNAL_OUTPUT */, this.record);
});
}
record = (event) => {
const raw = decoder.decode(event.snapshot.getRealCharBytes(false));
const rows = Array.from({ length: event.snapshot.height }, (_, index) => raw.slice(index * event.snapshot.width, (index + 1) * event.snapshot.width).trimEnd());
this.commits.push({
text: rows.join(`
`),
rows,
width: event.snapshot.width,
height: event.snapshot.height,
rowColumns: event.rowColumns,
startOnNewLine: event.startOnNewLine,
trailingNewline: event.trailingNewline
});
};
take() {
const commits = this.commits;
this.commits = [];
return commits;
}
takeText() {
return this.take().flatMap((commit) => commit.rows).join(`
`);
}
clear() {
this.commits = [];
}
}
function waitForNextFrameOrIdle(renderer) {
const scheduler = renderer.getSchedulerState();
if (!scheduler.isRunning && !scheduler.isRendering && !scheduler.hasScheduledRender) {
return Promise.resolve(null);
}
return new Promise((resolve) => {
let settled = false;
const cleanup = () => {
renderer.off("frame" /* FRAME */, onFrame);
renderer.off("destroy" /* DESTROY */, onDestroy);
};
const finish = (event) => {
if (settled)
return;
settled = true;
cleanup();
resolve(event);
};
const onFrame = (event) => {
finish(event);
};
const onDestroy = () => {
finish(null);
};
renderer.on("frame" /* FRAME */, onFrame);
renderer.once("destroy" /* DESTROY */, onDestroy);
if (!scheduler.isRunning) {
renderer.idle().then(() => finish(null));
}
});
}
async function createTestRenderer(options) {
const useKittyKeyboard = options.kittyKeyboard ? { events: true } : options.useKittyKeyboard;
const renderer = await setupTestRenderer({
...options,
useKittyKeyboard,
screenMode: options.screenMode ?? "main-screen",
footerHeight: options.footerHeight ?? 12,
consoleMode: options.consoleMode ?? "disabled",
externalOutputMode: options.externalOutputMode ?? "passthrough"
});
const externalOutput = new TestExternalOutputRecorder(renderer);
const mockInput = createMockKeys(renderer, {
kittyKeyboard: options.kittyKeyboard,
otherModifiersMode: options.otherModifiersMode
});
const mockMouse = createMockMouse(renderer);
const renderOnce = async () => {
const feed = renderer._feed;
if (feed?.isBackpressured()) {
await feed.idle();
}
await renderer.loop();
};
const captureCharFrame = () => {
const currentBuffer = renderer.currentRenderBuffer;
const frameBytes = currentBuffer.getRealCharBytes(true);
return decoder.decode(frameBytes);
};
const waitForVisualIdle = async (waitOptions = {}) => {
const maxFrames = normalizePositiveInteger(waitOptions.maxFrames, DEFAULT_MAX_VISUAL_IDLE_FRAMES);
const quietFrames = normalizePositiveInteger(waitOptions.quietFrames, DEFAULT_QUIET_FRAMES);
let consecutiveQuietFrames = 0;
for (let frame = 0;frame < maxFrames; frame++) {
await drainImmediateWork();
const scheduler2 = renderer.getSchedulerState();
if (!scheduler2.isRunning && !scheduler2.isRendering && !scheduler2.hasScheduledRender) {
return;
}
const event = await waitForNextFrameOrIdle(renderer);
if (!event) {
return;
}
if (renderer.getNativeStats().cellsUpdated === 0) {
consecutiveQuietFrames++;
if (consecutiveQuietFrames >= quietFrames) {
return;
}
} else {
consecutiveQuietFrames = 0;
}
}
await drainImmediateWork();
const scheduler = renderer.getSchedulerState();
if (!scheduler.isRunning && !scheduler.isRendering && !scheduler.hasScheduledRender) {
return;
}
throw createWaitError(renderer, `Timed out waiting for visual idle after ${maxFrames} frames`);
};
const flush = async (flushOptions = {}) => {
await waitForVisualIdle({ maxFrames: normalizePositiveInteger(flushOptions.maxPasses, DEFAULT_MAX_PASSES) });
};
const waitFor = async (predicate, waitOptions = {}) => {
const maxPasses = normalizePositiveInteger(waitOptions.maxPasses, DEFAULT_MAX_PASSES);
for (let pass = 0;pass <= maxPasses; pass++) {
await drainImmediateWork();
if (await predicate()) {
return;
}
if (pass === maxPasses) {
break;
}
const scheduler = renderer.getSchedulerState();
if (!scheduler.isRunning && !scheduler.isRendering && !scheduler.hasScheduledRender) {
break;
}
await waitForNextFrameOrIdle(renderer);
}
throw createWaitError(renderer, `Timed out waiting for predicate after ${maxPasses} passes`);
};
const waitForFrame = async (predicate, waitOptions = {}) => {
const maxPasses = normalizePositiveInteger(waitOptions.maxPasses, DEFAULT_MAX_PASSES);
let frame = captureCharFrame();
for (let pass = 0;pass <= maxPasses; pass++) {
await drainImmediateWork();
frame = captureCharFrame();
if (await predicate(frame)) {
return frame;
}
if (pass === maxPasses) {
break;
}
const scheduler = renderer.getSchedulerState();
if (!scheduler.isRunning && !scheduler.isRendering && !scheduler.hasScheduledRender) {
break;
}
await waitForNextFrameOrIdle(renderer);
}
frame = captureCharFrame();
throw createWaitError(renderer, `Timed out waiting for frame predicate after ${maxPasses} passes`, frame);
};
return {
renderer,
mockInput,
mockMouse,
renderOnce,
flush,
waitFor,
waitForFrame,
waitForVisualIdle,
externalOutput,
getNativeStats: () => renderer.getNativeStats(),
captureCharFrame,
captureSpans: () => {
const currentBuffer = renderer.currentRenderBuffer;
const lines = currentBuffer.getSpanLines();
const cursorState = renderer.getCursorState();
return {
cols: currentBuffer.width,
rows: currentBuffer.height,
cursor: [cursorState.x, cursorState.y],
lines
};
},
resize: (width, height) => {
renderer.processResize(width, height);
}
};
}
async function setupTestRenderer(config) {
const stdin = config.stdin || createTestStdin();
const width = config.width || config.stdout?.columns || process.stdout.columns || 80;
const height = config.height || config.stdout?.rows || process.stdout.rows || 24;
const stdout = config.stdout || createTestStdout(width, height);
return new CliRenderer(stdin, stdout, width, height, {
...config,
bufferedOutput: config.bufferedOutput ?? "memory"
});
}
// src/testing/mock-tree-sitter-client.ts
class MockTreeSitterClient extends TreeSitterClient {
_highlightPromises = [];
_mockResult = { highlights: [] };
_autoResolveTimeout;
_clock;
constructor(options) {
super({ dataPath: "/tmp/mock" }, { autoStartWorker: false });
this._autoResolveTimeout = options?.autoResolveTimeout;
this._clock = options?.clock ?? new SystemClock;
}
async destroy() {
this.resolveAllHighlightOnce();
await super.destroy();
}
async highlightOnce(content, filetype) {
const { promise, resolve } = Promise.withResolvers();
let timeout;
if (this._autoResolveTimeout !== undefined) {
timeout = this._clock.setTimeout(() => {
const index = this._highlightPromises.findIndex((p) => p.promise === promise);
if (index !== -1) {
resolve(this._mockResult);
this._highlightPromises.splice(index, 1);
}
}, this._autoResolveTimeout);
}
this._highlightPromises.push({ promise, resolve, timeout });
return promise;
}
setMockResult(result) {
this._mockResult = result;
}
resolveHighlightOnce(index = 0) {
if (index >= 0 && index < this._highlightPromises.length) {
const item = this._highlightPromises[index];
if (item.timeout) {
this._clock.clearTimeout(item.timeout);
}
item.resolve(this._mockResult);
this._highlightPromises.splice(index, 1);
}
}
resolveAllHighlightOnce() {
for (const { resolve, timeout } of this._highlightPromises) {
if (timeout) {
this._clock.clearTimeout(timeout);
}
resolve(this._mockResult);
}
this._highlightPromises = [];
}
isHighlighting() {
return this._highlightPromises.length > 0;
}
}
// src/testing/terminal-capabilities.ts
function createTerminalCapabilities(overrides = {}) {
return {
kitty_keyboard: false,
kitty_graphics: false,
rgb: false,
ansi256: false,
unicode: "unicode",
sgr_pixels: false,
color_scheme_updates: false,
explicit_width: false,
scaled_text: false,
sixel: false,
focus_tracking: false,
sync: false,
bracketed_paste: false,
hyperlinks: false,
osc52: false,
osc52_support: "unknown",
notifications: false,
explicit_cursor_positioning: false,
remote: false,
multiplexer: "none",
...overrides,
terminal: {
name: "",
version: "",
from_xtversion: false,
...overrides.terminal
}
};
}
function setRendererCapabilities(renderer, overrides = {}) {
const capabilities = createTerminalCapabilities(overrides);
renderer._capabilities = capabilities;
return capabilities;
}
// src/testing/spy.ts
function createSpy() {
const calls = [];
const spy = (...args) => {
calls.push(args);
};
spy.calls = calls;
spy.callCount = () => calls.length;
spy.calledWith = (...expected) => {
return calls.some((call) => JSON.stringify(call) === JSON.stringify(expected));
};
spy.reset = () => calls.length = 0;
return spy;
}
// src/testing/manual-clock.ts
function compareTimers(left, right) {
if (left.fireAt !== right.fireAt) {
return left.fireAt - right.fireAt;
}
return left.order - right.order;
}
class ManualClock {
time = 0;
nextId = 1;
nextOrder = 0;
timers = new Map;
now() {
return this.time;
}
setTime(time) {
const targetTime = Math.floor(time);
if (targetTime >= this.time) {
this.advance(targetTime - this.time);
return;
}
this.time = targetTime;
}
setTimeout(fn, delayMs) {
return this.schedule(fn, delayMs, false);
}
clearTimeout(handle) {
this.timers.delete(Number(handle));
}
setInterval(fn, delayMs) {
return this.schedule(fn, delayMs, true);
}
clearInterval(handle) {
this.clearTimeout(handle);
}
advance(delayMs) {
const targetTime = this.time + Math.max(0, Math.floor(delayMs));
while (true) {
const nextTimer = this.peekNextTimer();
if (!nextTimer || nextTimer.fireAt > targetTime) {
break;
}
this.timers.delete(nextTimer.id);
this.time = nextTimer.fireAt;
nextTimer.fn();
if (nextTimer.repeat && !this.timers.has(nextTimer.id)) {
this.timers.set(nextTimer.id, {
...nextTimer,
fireAt: this.time + nextTimer.delayMs,
order: this.nextOrder++
});
}
}
this.time = targetTime;
}
runAll() {
while (true) {
const nextTimer = this.peekNextTimer();
if (!nextTimer) {
return;
}
this.advance(nextTimer.fireAt - this.time);
}
}
schedule(fn, delayMs, repeat) {
const id = this.nextId++;
const normalizedDelay = Math.max(0, Math.floor(delayMs));
this.timers.set(id, {
id,
fireAt: this.time + normalizedDelay,
order: this.nextOrder++,
delayMs: normalizedDelay,
repeat,
fn
});
return id;
}
peekNextTimer() {
let nextTimer = null;
for (const timer of this.timers.values()) {
if (!nextTimer || compareTimers(timer, nextTimer) < 0) {
nextTimer = timer;
}
}
return nextTimer;
}
}
// src/testing/test-recorder.ts
class TestRecorder {
renderer;
frames = [];
recording = false;
frameNumber = 0;
startTime = 0;
decoder = new TextDecoder;
recordBuffers;
now;
onFrame = () => {
if (!this.recording)
return;
this.captureFrame();
};
constructor(renderer, options) {
this.renderer = renderer;
this.recordBuffers = options?.recordBuffers || {};
this.now = options?.now ?? (() => performance.now());
}
rec() {
if (this.recording) {
return;
}
this.recording = true;
this.frames = [];
this.frameNumber = 0;
this.startTime = this.now();
this.renderer.on("frame" /* FRAME */, this.onFrame);
}
stop() {
if (!this.recording) {
return;
}
this.recording = false;
this.renderer.off("frame" /* FRAME */, this.onFrame);
}
get recordedFrames() {
return [...this.frames];
}
clear() {
this.frames = [];
this.frameNumber = 0;
}
get isRecording() {
return this.recording;
}
captureFrame() {
const currentBuffer = this.renderer.currentRenderBuffer;
const frameBytes = currentBuffer.getRealCharBytes(true);
const frame = this.decoder.decode(frameBytes);
const recordedFrame = {
frame,
timestamp: this.now() - this.startTime,
frameNumber: this.frameNumber++
};
if (this.recordBuffers.fg || this.recordBuffers.bg || this.recordBuffers.attributes) {
const buffers = currentBuffer.buffers;
recordedFrame.buffers = {};
if (this.recordBuffers.fg) {
recordedFrame.buffers.fg = new Uint16Array(buffers.fg);
}
if (this.recordBuffers.bg) {
recordedFrame.buffers.bg = new Uint16Array(buffers.bg);
}
if (this.recordBuffers.attributes) {
recordedFrame.buffers.attributes = new Uint8Array(buffers.attributes);
}
}
this.frames.push(recordedFrame);
}
}
export {
setRendererCapabilities,
pasteBytes,
createTestRenderer,
createTerminalCapabilities,
createSpy,
createMockMouse,
createMockKeys,
TestRecorder,
MouseButtons,
MockTreeSitterClient,
ManualClock,
KeyCodes
};
//# debugId=0357928BEE71C0AA64756E2164756E21
//# sourceMappingURL=testing.bun.js.map

Sorry, the diff of this file is too big to display

// @bun
import {
ALIGN_AUTO,
ALIGN_BASELINE,
ALIGN_CENTER,
ALIGN_FLEX_END,
ALIGN_FLEX_START,
ALIGN_SPACE_AROUND,
ALIGN_SPACE_BETWEEN,
ALIGN_SPACE_EVENLY,
ALIGN_STRETCH,
Align,
BOX_SIZING_BORDER_BOX,
BOX_SIZING_CONTENT_BOX,
BoxSizing,
Config,
DIMENSION_HEIGHT,
DIMENSION_WIDTH,
DIRECTION_INHERIT,
DIRECTION_LTR,
DIRECTION_RTL,
DISPLAY_CONTENTS,
DISPLAY_FLEX,
DISPLAY_NONE,
Dimension,
Direction,
Display,
EDGE_ALL,
EDGE_BOTTOM,
EDGE_END,
EDGE_HORIZONTAL,
EDGE_LEFT,
EDGE_RIGHT,
EDGE_START,
EDGE_TOP,
EDGE_VERTICAL,
ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE,
ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING,
ERRATA_ALL,
ERRATA_CLASSIC,
ERRATA_NONE,
ERRATA_STRETCH_FLEX_BASIS,
EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,
Edge,
Errata,
ExperimentalFeature,
FLEX_DIRECTION_COLUMN,
FLEX_DIRECTION_COLUMN_REVERSE,
FLEX_DIRECTION_ROW,
FLEX_DIRECTION_ROW_REVERSE,
FlexDirection,
GUTTER_ALL,
GUTTER_COLUMN,
GUTTER_ROW,
Gutter,
JUSTIFY_CENTER,
JUSTIFY_FLEX_END,
JUSTIFY_FLEX_START,
JUSTIFY_SPACE_AROUND,
JUSTIFY_SPACE_BETWEEN,
JUSTIFY_SPACE_EVENLY,
Justify,
LOG_LEVEL_DEBUG,
LOG_LEVEL_ERROR,
LOG_LEVEL_FATAL,
LOG_LEVEL_INFO,
LOG_LEVEL_VERBOSE,
LOG_LEVEL_WARN,
LogLevel1 as LogLevel,
MEASURE_MODE_AT_MOST,
MEASURE_MODE_EXACTLY,
MEASURE_MODE_UNDEFINED,
MeasureMode,
NODE_TYPE_DEFAULT,
NODE_TYPE_TEXT,
Node,
NodeType,
OVERFLOW_HIDDEN,
OVERFLOW_SCROLL,
OVERFLOW_VISIBLE,
Overflow,
POSITION_TYPE_ABSOLUTE,
POSITION_TYPE_RELATIVE,
POSITION_TYPE_STATIC,
PositionType,
UNIT_AUTO,
UNIT_PERCENT,
UNIT_POINT,
UNIT_UNDEFINED,
Unit,
WRAP_NO_WRAP,
WRAP_WRAP,
WRAP_WRAP_REVERSE,
Wrap,
yoga_default
} from "./chunk-bun-t2myhmwd.js";
export {
yoga_default as default,
Wrap,
WRAP_WRAP_REVERSE,
WRAP_WRAP,
WRAP_NO_WRAP,
Unit,
UNIT_UNDEFINED,
UNIT_POINT,
UNIT_PERCENT,
UNIT_AUTO,
PositionType,
POSITION_TYPE_STATIC,
POSITION_TYPE_RELATIVE,
POSITION_TYPE_ABSOLUTE,
Overflow,
OVERFLOW_VISIBLE,
OVERFLOW_SCROLL,
OVERFLOW_HIDDEN,
NodeType,
Node,
NODE_TYPE_TEXT,
NODE_TYPE_DEFAULT,
MeasureMode,
MEASURE_MODE_UNDEFINED,
MEASURE_MODE_EXACTLY,
MEASURE_MODE_AT_MOST,
LogLevel,
LOG_LEVEL_WARN,
LOG_LEVEL_VERBOSE,
LOG_LEVEL_INFO,
LOG_LEVEL_FATAL,
LOG_LEVEL_ERROR,
LOG_LEVEL_DEBUG,
Justify,
JUSTIFY_SPACE_EVENLY,
JUSTIFY_SPACE_BETWEEN,
JUSTIFY_SPACE_AROUND,
JUSTIFY_FLEX_START,
JUSTIFY_FLEX_END,
JUSTIFY_CENTER,
Gutter,
GUTTER_ROW,
GUTTER_COLUMN,
GUTTER_ALL,
FlexDirection,
FLEX_DIRECTION_ROW_REVERSE,
FLEX_DIRECTION_ROW,
FLEX_DIRECTION_COLUMN_REVERSE,
FLEX_DIRECTION_COLUMN,
ExperimentalFeature,
Errata,
Edge,
EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,
ERRATA_STRETCH_FLEX_BASIS,
ERRATA_NONE,
ERRATA_CLASSIC,
ERRATA_ALL,
ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING,
ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE,
EDGE_VERTICAL,
EDGE_TOP,
EDGE_START,
EDGE_RIGHT,
EDGE_LEFT,
EDGE_HORIZONTAL,
EDGE_END,
EDGE_BOTTOM,
EDGE_ALL,
Display,
Direction,
Dimension,
DISPLAY_NONE,
DISPLAY_FLEX,
DISPLAY_CONTENTS,
DIRECTION_RTL,
DIRECTION_LTR,
DIRECTION_INHERIT,
DIMENSION_WIDTH,
DIMENSION_HEIGHT,
Config,
BoxSizing,
BOX_SIZING_CONTENT_BOX,
BOX_SIZING_BORDER_BOX,
Align,
ALIGN_STRETCH,
ALIGN_SPACE_EVENLY,
ALIGN_SPACE_BETWEEN,
ALIGN_SPACE_AROUND,
ALIGN_FLEX_START,
ALIGN_FLEX_END,
ALIGN_CENTER,
ALIGN_BASELINE,
ALIGN_AUTO
};
//# debugId=EFACC04A7A76B41064756E2164756E21
//# sourceMappingURL=yoga.bun.js.map
{
"version": 3,
"sources": [],
"sourcesContent": [
],
"mappings": "",
"debugId": "EFACC04A7A76B41064756E2164756E21",
"names": []
}
+1
-0

@@ -27,2 +27,3 @@ export * from "./Renderable.js";

export * from "./console.js";
export { resolveBundledFilePath } from "./platform/runtime.js";
export * as Yoga from "./yoga.js";
import type { FiletypeParserOptions } from "./types.js";
export declare const defaultParserAssetPaths: readonly string[];
export declare function getParsers(): Promise<FiletypeParserOptions[]>;
+2
-2
/**
* This file contains the configuration for the defaulttree-sitter parsers.
* It is used by ./assets/update.ts to generate the default-parsers.ts file.
* For changes here to be reflected in the default-parsers.ts file, you need to run `bun run ./assets/update.ts`
* It is used by ./assets/update.ts to generate the default parser runtime files and asset manifest.
* For changes here to be reflected in generated files, you need to run `bun run ./assets/update.ts`
*/

@@ -6,0 +6,0 @@ declare const _default: {

@@ -51,2 +51,3 @@ export interface HighlightRange {

dataPath: string;
treeSitterWasmPath?: string;
} | {

@@ -53,0 +54,0 @@ type: "ADD_FILETYPE_PARSER";

@@ -158,3 +158,3 @@ #!/usr/bin/env bun

}
return "./" + path2.relative(path2.dirname(outputPath), languagePath);
return "./" + path2.relative(path2.dirname(outputPath), languagePath).replaceAll(path2.sep, "/");
}

@@ -207,75 +207,141 @@ async function downloadAndCombineQueries(filetype, queryUrls, assetsDir, outputPath, queryType, configPath) {

console.log(` Combined ${queryContents.length} queries into ${queryPath}`);
return "./" + path2.relative(path2.dirname(outputPath), queryPath);
return "./" + path2.relative(path2.dirname(outputPath), queryPath).replaceAll(path2.sep, "/");
}
async function generateDefaultParsersFile(parsers, outputPath) {
const assetPaths = parsers.map((parser) => {
const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, "_");
const lines = [
`const ${safeFiletype}_highlights = await resolveBundledFilePath(`,
` () => import("${parser.highlightsPath}" as string, { with: { type: "file" } }),`,
` "${parser.highlightsPath}",`,
` import.meta.url,`,
`)`,
`const ${safeFiletype}_language = await resolveBundledFilePath(`,
` () => import("${parser.languagePath}" as string, { with: { type: "file" } }),`,
` "${parser.languagePath}",`,
` import.meta.url,`,
`)`
];
if (parser.injectionsPath) {
lines.push(`const ${safeFiletype}_injections = await resolveBundledFilePath(`, ` () => import("${parser.injectionsPath}" as string, { with: { type: "file" } }),`, ` "${parser.injectionsPath}",`, ` import.meta.url,`, `)`);
}
return lines.join(`
const descriptors = parsers.map((parser) => ({
filetype: parser.filetype,
...parser.aliases?.length ? { aliases: parser.aliases } : {},
queries: {
highlights: [toPackageRelativeAssetPath(parser.highlightsPath)],
...parser.injectionsPath ? { injections: [toPackageRelativeAssetPath(parser.injectionsPath)] } : {}
},
wasm: toPackageRelativeAssetPath(parser.languagePath),
...parser.injectionMapping ? { injectionMapping: parser.injectionMapping } : {}
}));
const assetPaths = [
...new Set(parsers.flatMap((parser) => [parser.highlightsPath, parser.languagePath, parser.injectionsPath].filter((assetPath) => assetPath !== undefined).map(toPackageRelativeAssetPath)))
];
const isDefaultOutput = path2.resolve(outputPath) === getDefaultOptions().outputPath;
const bundledAssetLoaderEntries = assetPaths.map((assetPath) => ` ${JSON.stringify(assetPath)}: () => import(${JSON.stringify(`./${assetPath}`)} as string, { with: { type: "file" } }),`).join(`
`);
}).join(`
`);
const parserDefinitions = parsers.map((parser) => {
const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, "_");
const queriesLines = [` highlights: [${safeFiletype}_highlights],`];
if (parser.injectionsPath) {
queriesLines.push(` injections: [${safeFiletype}_injections],`);
}
const injectionMappingLine = parser.injectionMapping ? ` injectionMapping: ${JSON.stringify(parser.injectionMapping, null, 10)},` : "";
const aliasesLine = parser.aliases?.length ? ` aliases: ${JSON.stringify(parser.aliases)},` : "";
return ` {
filetype: "${parser.filetype}",
${aliasesLine ? aliasesLine + `
` : ""} queries: {
${queriesLines.join(`
`)}
},
wasm: ${safeFiletype}_language,${injectionMappingLine ? `
` + injectionMappingLine : ""}
}`;
}).join(`,
`);
const fileContent = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY
const parserImports = isDefaultOutput ? `import { resolveDefaultParserAsset } from "#opentui/runtime-assets"
import type { FiletypeParserOptions, InjectionMapping } from "./types.js"` : `import { resolveBundledFilePath } from "@opentui/core"
import type { FiletypeParserOptions, InjectionMapping } from "@opentui/core"`;
const parserAssetLoaders = isDefaultOutput ? "" : `interface FileImportModule {
readonly default: string
}
const bundledAssetLoaders: Record<string, () => Promise<FileImportModule>> = {
${bundledAssetLoaderEntries}
}
`;
const parserAssetResolver = isDefaultOutput ? `function resolveParserAsset(relativePath: string): Promise<string> {
return resolveDefaultParserAsset(relativePath, new URL(\`./\${relativePath}\`, import.meta.url))
}` : `function resolveParserAsset(relativePath: string): Promise<string> {
const loadBundledFile = bundledAssetLoaders[relativePath]
if (!loadBundledFile) {
throw new Error(\`Unknown parser asset: \${JSON.stringify(relativePath)}\`)
}
return resolveBundledFilePath(
relativePath,
loadBundledFile,
new URL(\`./\${relativePath}\`, import.meta.url),
import.meta.url,
{ loadBundledFileFallback: true, useAssetRoot: false },
)
}`;
const parserFile = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY
// Run 'bun assets/update.ts' to regenerate this file
// Last generated: ${new Date().toISOString()}
import type { FiletypeParserOptions } from "./types.js"
import { resolveBundledFilePath } from "../../platform/runtime.js"
${parserImports}
// Cached parsers to avoid re-resolving paths on every call
let _cachedParsers: Promise<FiletypeParserOptions[]> | undefined
${parserAssetLoaders}interface DefaultParserDescriptor {
readonly filetype: string
readonly aliases?: readonly string[]
readonly queries: {
readonly highlights: readonly string[]
readonly injections?: readonly string[]
}
readonly wasm: string
readonly injectionMapping?: InjectionMapping
}
const defaultParserDescriptors: readonly DefaultParserDescriptor[] = ${JSON.stringify(descriptors, null, 2)}
export const defaultParserAssetPaths: readonly string[] = [
...new Set(
defaultParserDescriptors.flatMap((parser) => [
...parser.queries.highlights,
parser.wasm,
...(parser.queries.injections ?? []),
]),
),
]
let cachedParsers: Promise<FiletypeParserOptions[]> | undefined
export function getParsers(): Promise<FiletypeParserOptions[]> {
if (!_cachedParsers) {
_cachedParsers = loadParsers()
cachedParsers ??= Promise.all(defaultParserDescriptors.map(resolveDefaultParser))
return cachedParsers
}
async function resolveDefaultParser(parser: DefaultParserDescriptor): Promise<FiletypeParserOptions> {
const queries: FiletypeParserOptions["queries"] = {
highlights: await Promise.all(parser.queries.highlights.map(resolveParserAsset)),
}
return _cachedParsers
if (parser.queries.injections) {
queries.injections = await Promise.all(parser.queries.injections.map(resolveParserAsset))
}
return {
filetype: parser.filetype,
...(parser.aliases ? { aliases: [...parser.aliases] } : {}),
queries,
wasm: await resolveParserAsset(parser.wasm),
...(parser.injectionMapping ? { injectionMapping: parser.injectionMapping } : {}),
}
}
async function loadParsers(): Promise<FiletypeParserOptions[]> {
${assetPaths}
${parserAssetResolver}
`;
const bunAssetFile = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY
// Run 'bun assets/update.ts' to regenerate this file
return [
${parserDefinitions},
]
import { resolveBundledFilePath } from "../../platform/runtime.js"
interface FileImportModule {
readonly default: string
}
const bundledAssetLoaders: Record<string, () => Promise<FileImportModule>> = {
${bundledAssetLoaderEntries}
}
export function resolveBundledDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string> {
const loadBundledFile = bundledAssetLoaders[relativePath]
if (!loadBundledFile) {
throw new Error(\`Unknown OpenTUI default parser asset: \${JSON.stringify(relativePath)}\`)
}
return resolveBundledFilePath(
\`@opentui/core/\${relativePath}\`,
loadBundledFile,
fallbackPath,
import.meta.url,
)
}
`;
const bunAssetOutputPath = path2.join(path2.dirname(outputPath), "default-parser-assets.bun.ts");
await mkdir2(path2.dirname(outputPath), { recursive: true });
await writeFile2(outputPath, fileContent, "utf-8");
const writes = [writeFile2(outputPath, parserFile, "utf-8")];
if (isDefaultOutput) {
writes.push(writeFile2(bunAssetOutputPath, bunAssetFile, "utf-8"));
}
await Promise.all(writes);
console.log(`Generated ${path2.basename(outputPath)} with ${parsers.length} parsers`);
}
function toPackageRelativeAssetPath(assetPath) {
return assetPath.replace(/^\.\//, "");
}
async function main(options) {

@@ -380,3 +446,3 @@ const opts = { ...getDefaultOptions(), ...options };

//# debugId=1A2D716CBBE1018664756E2164756E21
//# debugId=EC6FDBCB61B1DFC664756E2164756E21
//# sourceMappingURL=update-assets.js.map

@@ -5,9 +5,9 @@ {

"sourcesContent": [
"#!/usr/bin/env bun\n\nimport { readFile, writeFile, mkdir } from \"fs/promises\"\nimport * as path from \"path\"\nimport { DownloadUtils } from \"../download-utils.js\"\nimport { parseArgs } from \"util\"\nimport type { FiletypeParserOptions } from \"../types.js\"\nimport { readdir } from \"fs/promises\"\nimport { fileURLToPath } from \"node:url\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\ninterface ParsersConfig {\n parsers: FiletypeParserOptions[]\n}\n\ninterface GeneratedParser {\n filetype: string\n aliases?: string[]\n languagePath: string\n highlightsPath: string\n injectionsPath?: string\n injectionMapping?: any\n}\n\nexport interface UpdateOptions {\n /** Path to parsers-config.json */\n configPath: string\n /** Directory where .wasm and .scm files will be downloaded */\n assetsDir: string\n /** Path where the generated TypeScript file will be written */\n outputPath: string\n}\n\nfunction getDefaultOptions(): UpdateOptions {\n return {\n configPath: path.resolve(__dirname, \"../parsers-config\"),\n assetsDir: path.resolve(__dirname),\n outputPath: path.resolve(__dirname, \"../default-parsers.ts\"),\n }\n}\n\nasync function loadConfig(configPath: string): Promise<ParsersConfig> {\n let ext = path.extname(configPath)\n let resolvedConfigPath = configPath\n\n if (ext === \"\") {\n const files = await readdir(path.dirname(configPath))\n const file = files.find(\n (file) =>\n file.startsWith(path.basename(configPath)) &&\n (file.endsWith(\".json\") || file.endsWith(\".ts\") || file.endsWith(\".js\")),\n )\n if (!file) {\n throw new Error(`No config file found for ${configPath}`)\n }\n resolvedConfigPath = path.join(path.dirname(configPath), file)\n ext = path.extname(resolvedConfigPath)\n }\n\n if (ext === \".json\") {\n const configContent = await readFile(resolvedConfigPath, \"utf-8\")\n return JSON.parse(configContent)\n } else if (ext === \".ts\" || ext === \".js\") {\n const { default: configContent } = await import(resolvedConfigPath)\n return configContent\n }\n throw new Error(`Unsupported config file extension: ${ext}`)\n}\n\nasync function downloadLanguage(\n filetype: string,\n languageUrl: string,\n assetsDir: string,\n outputPath: string,\n): Promise<string> {\n const languageDir = path.join(assetsDir, filetype)\n const languageFilename = path.basename(languageUrl)\n const languagePath = path.join(languageDir, languageFilename)\n\n const result = await DownloadUtils.downloadToPath(languageUrl, languagePath)\n\n if (result.error) {\n throw new Error(`Failed to download language for ${filetype}: ${result.error}`)\n }\n\n return \"./\" + path.relative(path.dirname(outputPath), languagePath)\n}\n\nasync function downloadAndCombineQueries(\n filetype: string,\n queryUrls: string[],\n assetsDir: string,\n outputPath: string,\n queryType: \"highlights\" | \"injections\",\n configPath: string,\n): Promise<string> {\n const queriesDir = path.join(assetsDir, filetype)\n const queryPath = path.join(queriesDir, `${queryType}.scm`)\n\n const queryContents: string[] = []\n\n for (let i = 0; i < queryUrls.length; i++) {\n const queryUrl = queryUrls[i]\n\n if (queryUrl.startsWith(\"./\")) {\n console.log(` Using local query ${i + 1}/${queryUrls.length}: ${queryUrl}`)\n\n try {\n const localPath = path.resolve(path.dirname(configPath), queryUrl)\n const content = await readFile(localPath, \"utf-8\")\n\n if (content.trim()) {\n queryContents.push(content)\n console.log(` ✓ Loaded ${content.split(\"\\n\").length} lines from local file`)\n }\n } catch (error) {\n console.warn(`Failed to read local query from ${queryUrl}: ${error}`)\n continue\n }\n } else {\n console.log(` Downloading query ${i + 1}/${queryUrls.length}: ${queryUrl}`)\n\n try {\n const response = await fetch(queryUrl)\n if (!response.ok) {\n console.warn(`Failed to download query from ${queryUrl}: ${response.statusText}`)\n continue\n }\n\n const content = await response.text()\n if (content.trim()) {\n queryContents.push(`; Query from: ${queryUrl}\\n${content}`)\n console.log(` ✓ Downloaded ${content.split(\"\\n\").length} lines`)\n }\n } catch (error) {\n console.warn(`Failed to download query from ${queryUrl}: ${error}`)\n continue\n }\n }\n }\n\n const combinedContent = queryContents.join(\"\\n\\n\")\n await writeFile(queryPath, combinedContent, \"utf-8\")\n\n console.log(` Combined ${queryContents.length} queries into ${queryPath}`)\n\n return \"./\" + path.relative(path.dirname(outputPath), queryPath)\n}\n\nasync function generateDefaultParsersFile(parsers: GeneratedParser[], outputPath: string): Promise<void> {\n const assetPaths = parsers\n .map((parser) => {\n const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, \"_\")\n const lines = [\n `const ${safeFiletype}_highlights = await resolveBundledFilePath(`,\n ` () => import(\"${parser.highlightsPath}\" as string, { with: { type: \"file\" } }),`,\n ` \"${parser.highlightsPath}\",`,\n ` import.meta.url,`,\n `)`,\n `const ${safeFiletype}_language = await resolveBundledFilePath(`,\n ` () => import(\"${parser.languagePath}\" as string, { with: { type: \"file\" } }),`,\n ` \"${parser.languagePath}\",`,\n ` import.meta.url,`,\n `)`,\n ]\n\n if (parser.injectionsPath) {\n lines.push(\n `const ${safeFiletype}_injections = await resolveBundledFilePath(`,\n ` () => import(\"${parser.injectionsPath}\" as string, { with: { type: \"file\" } }),`,\n ` \"${parser.injectionsPath}\",`,\n ` import.meta.url,`,\n `)`,\n )\n }\n\n return lines.join(\"\\n\")\n })\n .join(\"\\n\")\n\n const parserDefinitions = parsers\n .map((parser) => {\n const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, \"_\")\n const queriesLines = [` highlights: [${safeFiletype}_highlights],`]\n\n if (parser.injectionsPath) {\n queriesLines.push(` injections: [${safeFiletype}_injections],`)\n }\n\n const injectionMappingLine = parser.injectionMapping\n ? ` injectionMapping: ${JSON.stringify(parser.injectionMapping, null, 10)},`\n : \"\"\n const aliasesLine = parser.aliases?.length ? ` aliases: ${JSON.stringify(parser.aliases)},` : \"\"\n\n return ` {\n filetype: \"${parser.filetype}\",\n${aliasesLine ? aliasesLine + \"\\n\" : \"\"} queries: {\n${queriesLines.join(\"\\n\")}\n },\n wasm: ${safeFiletype}_language,${injectionMappingLine ? \"\\n\" + injectionMappingLine : \"\"}\n }`\n })\n .join(\",\\n\")\n\n const fileContent = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n// Last generated: ${new Date().toISOString()}\n\nimport type { FiletypeParserOptions } from \"./types.js\"\nimport { resolveBundledFilePath } from \"../../platform/runtime.js\"\n\n// Cached parsers to avoid re-resolving paths on every call\nlet _cachedParsers: Promise<FiletypeParserOptions[]> | undefined\n\nexport function getParsers(): Promise<FiletypeParserOptions[]> {\n if (!_cachedParsers) {\n _cachedParsers = loadParsers()\n }\n return _cachedParsers\n}\n\nasync function loadParsers(): Promise<FiletypeParserOptions[]> {\n${assetPaths}\n\n return [\n${parserDefinitions},\n ]\n}\n`\n\n await mkdir(path.dirname(outputPath), { recursive: true })\n await writeFile(outputPath, fileContent, \"utf-8\")\n console.log(`Generated ${path.basename(outputPath)} with ${parsers.length} parsers`)\n}\n\nasync function main(options?: Partial<UpdateOptions>): Promise<void> {\n const opts = { ...getDefaultOptions(), ...options }\n\n try {\n console.log(\"Loading parsers configuration...\")\n console.log(` Config: ${opts.configPath}`)\n console.log(` Assets Dir: ${opts.assetsDir}`)\n console.log(` Output: ${opts.outputPath}`)\n\n const config = await loadConfig(opts.configPath)\n\n console.log(`Found ${config.parsers.length} parsers to process`)\n\n const generatedParsers: GeneratedParser[] = []\n\n for (const parser of config.parsers) {\n console.log(`Processing ${parser.filetype}...`)\n\n console.log(` Downloading language...`)\n const languagePath = await downloadLanguage(parser.filetype, parser.wasm, opts.assetsDir, opts.outputPath)\n\n console.log(` Downloading ${parser.queries.highlights.length} highlight queries...`)\n const highlightsPath = await downloadAndCombineQueries(\n parser.filetype,\n parser.queries.highlights,\n opts.assetsDir,\n opts.outputPath,\n \"highlights\",\n opts.configPath,\n )\n\n let injectionsPath: string | undefined\n if (parser.queries.injections && parser.queries.injections.length > 0) {\n console.log(` Downloading ${parser.queries.injections.length} injection queries...`)\n injectionsPath = await downloadAndCombineQueries(\n parser.filetype,\n parser.queries.injections,\n opts.assetsDir,\n opts.outputPath,\n \"injections\",\n opts.configPath,\n )\n }\n\n generatedParsers.push({\n filetype: parser.filetype,\n aliases: parser.aliases,\n languagePath,\n highlightsPath,\n injectionsPath,\n injectionMapping: parser.injectionMapping,\n })\n\n console.log(` ✓ Completed ${parser.filetype}`)\n }\n\n console.log(\"Generating output file...\")\n await generateDefaultParsersFile(generatedParsers, opts.outputPath)\n\n console.log(\"✅ Update completed successfully!\")\n } catch (error) {\n console.error(\"❌ Update failed:\", error)\n process.exit(1)\n }\n}\n\nfunction parseCLIArgs(): Partial<UpdateOptions> | null {\n try {\n const { values } = parseArgs({\n args: process.argv.slice(2),\n options: {\n config: { type: \"string\" },\n assets: { type: \"string\" },\n output: { type: \"string\" },\n help: { type: \"boolean\" },\n },\n strict: true,\n })\n\n if (values.help) {\n const command = path.basename(Bun.argv[1] ?? \"update-assets.js\")\n\n console.log(`Usage: bun ${command} [options]\n\nOptions:\n --config <path> Path to parsers-config.json\n --assets <path> Directory where .wasm and .scm files will be downloaded\n --output <path> Path where the generated TypeScript file will be written\n --help Show this help message\n\nExamples:\n # Use default paths (for OpenTUI core development)\n bun ${command}\n\n # Use custom paths (for application integration)\n bun ${command} --config ./my-parsers.json --assets ./src/parsers --output ./src/parsers.ts\n`)\n process.exit(0)\n }\n\n const options: Partial<UpdateOptions> = {}\n if (values.config) options.configPath = path.resolve(values.config)\n if (values.assets) options.assetsDir = path.resolve(values.assets)\n if (values.output) options.outputPath = path.resolve(values.output)\n\n return Object.keys(options).length > 0 ? options : null\n } catch (error) {\n console.error(`Error parsing arguments: ${error}`)\n console.log(\"Run with --help for usage information\")\n process.exit(1)\n }\n}\n\nexport function runUpdateAssetsCli(): Promise<void> {\n const cliOptions = parseCLIArgs()\n return main(cliOptions || undefined)\n}\n\nif (import.meta.main) {\n await runUpdateAssetsCli()\n}\n\nexport { main as updateAssets }\n",
"#!/usr/bin/env bun\n\nimport { readFile, writeFile, mkdir } from \"fs/promises\"\nimport * as path from \"path\"\nimport { DownloadUtils } from \"../download-utils.js\"\nimport { parseArgs } from \"util\"\nimport type { FiletypeParserOptions } from \"../types.js\"\nimport { readdir } from \"fs/promises\"\nimport { fileURLToPath } from \"node:url\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\ninterface ParsersConfig {\n parsers: FiletypeParserOptions[]\n}\n\ninterface GeneratedParser {\n filetype: string\n aliases?: string[]\n languagePath: string\n highlightsPath: string\n injectionsPath?: string\n injectionMapping?: any\n}\n\nexport interface UpdateOptions {\n /** Path to parsers-config.json */\n configPath: string\n /** Directory where .wasm and .scm files will be downloaded */\n assetsDir: string\n /** Path where the generated TypeScript file will be written */\n outputPath: string\n}\n\nfunction getDefaultOptions(): UpdateOptions {\n return {\n configPath: path.resolve(__dirname, \"../parsers-config\"),\n assetsDir: path.resolve(__dirname),\n outputPath: path.resolve(__dirname, \"../default-parsers.ts\"),\n }\n}\n\nasync function loadConfig(configPath: string): Promise<ParsersConfig> {\n let ext = path.extname(configPath)\n let resolvedConfigPath = configPath\n\n if (ext === \"\") {\n const files = await readdir(path.dirname(configPath))\n const file = files.find(\n (file) =>\n file.startsWith(path.basename(configPath)) &&\n (file.endsWith(\".json\") || file.endsWith(\".ts\") || file.endsWith(\".js\")),\n )\n if (!file) {\n throw new Error(`No config file found for ${configPath}`)\n }\n resolvedConfigPath = path.join(path.dirname(configPath), file)\n ext = path.extname(resolvedConfigPath)\n }\n\n if (ext === \".json\") {\n const configContent = await readFile(resolvedConfigPath, \"utf-8\")\n return JSON.parse(configContent)\n } else if (ext === \".ts\" || ext === \".js\") {\n const { default: configContent } = await import(resolvedConfigPath)\n return configContent\n }\n throw new Error(`Unsupported config file extension: ${ext}`)\n}\n\nasync function downloadLanguage(\n filetype: string,\n languageUrl: string,\n assetsDir: string,\n outputPath: string,\n): Promise<string> {\n const languageDir = path.join(assetsDir, filetype)\n const languageFilename = path.basename(languageUrl)\n const languagePath = path.join(languageDir, languageFilename)\n\n const result = await DownloadUtils.downloadToPath(languageUrl, languagePath)\n\n if (result.error) {\n throw new Error(`Failed to download language for ${filetype}: ${result.error}`)\n }\n\n return \"./\" + path.relative(path.dirname(outputPath), languagePath).replaceAll(path.sep, \"/\")\n}\n\nasync function downloadAndCombineQueries(\n filetype: string,\n queryUrls: string[],\n assetsDir: string,\n outputPath: string,\n queryType: \"highlights\" | \"injections\",\n configPath: string,\n): Promise<string> {\n const queriesDir = path.join(assetsDir, filetype)\n const queryPath = path.join(queriesDir, `${queryType}.scm`)\n\n const queryContents: string[] = []\n\n for (let i = 0; i < queryUrls.length; i++) {\n const queryUrl = queryUrls[i]\n\n if (queryUrl.startsWith(\"./\")) {\n console.log(` Using local query ${i + 1}/${queryUrls.length}: ${queryUrl}`)\n\n try {\n const localPath = path.resolve(path.dirname(configPath), queryUrl)\n const content = await readFile(localPath, \"utf-8\")\n\n if (content.trim()) {\n queryContents.push(content)\n console.log(` ✓ Loaded ${content.split(\"\\n\").length} lines from local file`)\n }\n } catch (error) {\n console.warn(`Failed to read local query from ${queryUrl}: ${error}`)\n continue\n }\n } else {\n console.log(` Downloading query ${i + 1}/${queryUrls.length}: ${queryUrl}`)\n\n try {\n const response = await fetch(queryUrl)\n if (!response.ok) {\n console.warn(`Failed to download query from ${queryUrl}: ${response.statusText}`)\n continue\n }\n\n const content = await response.text()\n if (content.trim()) {\n queryContents.push(`; Query from: ${queryUrl}\\n${content}`)\n console.log(` ✓ Downloaded ${content.split(\"\\n\").length} lines`)\n }\n } catch (error) {\n console.warn(`Failed to download query from ${queryUrl}: ${error}`)\n continue\n }\n }\n }\n\n const combinedContent = queryContents.join(\"\\n\\n\")\n await writeFile(queryPath, combinedContent, \"utf-8\")\n\n console.log(` Combined ${queryContents.length} queries into ${queryPath}`)\n\n return \"./\" + path.relative(path.dirname(outputPath), queryPath).replaceAll(path.sep, \"/\")\n}\n\nasync function generateDefaultParsersFile(parsers: GeneratedParser[], outputPath: string): Promise<void> {\n const descriptors = parsers.map((parser) => ({\n filetype: parser.filetype,\n ...(parser.aliases?.length ? { aliases: parser.aliases } : {}),\n queries: {\n highlights: [toPackageRelativeAssetPath(parser.highlightsPath)],\n ...(parser.injectionsPath ? { injections: [toPackageRelativeAssetPath(parser.injectionsPath)] } : {}),\n },\n wasm: toPackageRelativeAssetPath(parser.languagePath),\n ...(parser.injectionMapping ? { injectionMapping: parser.injectionMapping } : {}),\n }))\n const assetPaths = [\n ...new Set(\n parsers.flatMap((parser) =>\n [parser.highlightsPath, parser.languagePath, parser.injectionsPath]\n .filter((assetPath): assetPath is string => assetPath !== undefined)\n .map(toPackageRelativeAssetPath),\n ),\n ),\n ]\n const isDefaultOutput = path.resolve(outputPath) === getDefaultOptions().outputPath\n const bundledAssetLoaderEntries = assetPaths\n .map(\n (assetPath) =>\n ` ${JSON.stringify(assetPath)}: () => import(${JSON.stringify(`./${assetPath}`)} as string, { with: { type: \"file\" } }),`,\n )\n .join(\"\\n\")\n const parserImports = isDefaultOutput\n ? `import { resolveDefaultParserAsset } from \"#opentui/runtime-assets\"\n\nimport type { FiletypeParserOptions, InjectionMapping } from \"./types.js\"`\n : `import { resolveBundledFilePath } from \"@opentui/core\"\nimport type { FiletypeParserOptions, InjectionMapping } from \"@opentui/core\"`\n const parserAssetLoaders = isDefaultOutput\n ? \"\"\n : `interface FileImportModule {\n readonly default: string\n}\n\nconst bundledAssetLoaders: Record<string, () => Promise<FileImportModule>> = {\n${bundledAssetLoaderEntries}\n}\n\n`\n const parserAssetResolver = isDefaultOutput\n ? `function resolveParserAsset(relativePath: string): Promise<string> {\n return resolveDefaultParserAsset(relativePath, new URL(\\`./\\${relativePath}\\`, import.meta.url))\n}`\n : `function resolveParserAsset(relativePath: string): Promise<string> {\n const loadBundledFile = bundledAssetLoaders[relativePath]\n if (!loadBundledFile) {\n throw new Error(\\`Unknown parser asset: \\${JSON.stringify(relativePath)}\\`)\n }\n return resolveBundledFilePath(\n relativePath,\n loadBundledFile,\n new URL(\\`./\\${relativePath}\\`, import.meta.url),\n import.meta.url,\n { loadBundledFileFallback: true, useAssetRoot: false },\n )\n}`\n\n const parserFile = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n\n${parserImports}\n\n${parserAssetLoaders}interface DefaultParserDescriptor {\n readonly filetype: string\n readonly aliases?: readonly string[]\n readonly queries: {\n readonly highlights: readonly string[]\n readonly injections?: readonly string[]\n }\n readonly wasm: string\n readonly injectionMapping?: InjectionMapping\n}\n\nconst defaultParserDescriptors: readonly DefaultParserDescriptor[] = ${JSON.stringify(descriptors, null, 2)}\n\nexport const defaultParserAssetPaths: readonly string[] = [\n ...new Set(\n defaultParserDescriptors.flatMap((parser) => [\n ...parser.queries.highlights,\n parser.wasm,\n ...(parser.queries.injections ?? []),\n ]),\n ),\n]\n\nlet cachedParsers: Promise<FiletypeParserOptions[]> | undefined\n\nexport function getParsers(): Promise<FiletypeParserOptions[]> {\n cachedParsers ??= Promise.all(defaultParserDescriptors.map(resolveDefaultParser))\n return cachedParsers\n}\n\nasync function resolveDefaultParser(parser: DefaultParserDescriptor): Promise<FiletypeParserOptions> {\n const queries: FiletypeParserOptions[\"queries\"] = {\n highlights: await Promise.all(parser.queries.highlights.map(resolveParserAsset)),\n }\n if (parser.queries.injections) {\n queries.injections = await Promise.all(parser.queries.injections.map(resolveParserAsset))\n }\n\n return {\n filetype: parser.filetype,\n ...(parser.aliases ? { aliases: [...parser.aliases] } : {}),\n queries,\n wasm: await resolveParserAsset(parser.wasm),\n ...(parser.injectionMapping ? { injectionMapping: parser.injectionMapping } : {}),\n }\n}\n\n${parserAssetResolver}\n`\n\n const bunAssetFile = `// This file is generated by assets/update.ts - DO NOT EDIT MANUALLY\n// Run 'bun assets/update.ts' to regenerate this file\n\nimport { resolveBundledFilePath } from \"../../platform/runtime.js\"\n\ninterface FileImportModule {\n readonly default: string\n}\n\nconst bundledAssetLoaders: Record<string, () => Promise<FileImportModule>> = {\n${bundledAssetLoaderEntries}\n}\n\nexport function resolveBundledDefaultParserAsset(relativePath: string, fallbackPath: URL): Promise<string> {\n const loadBundledFile = bundledAssetLoaders[relativePath]\n if (!loadBundledFile) {\n throw new Error(\\`Unknown OpenTUI default parser asset: \\${JSON.stringify(relativePath)}\\`)\n }\n return resolveBundledFilePath(\n \\`@opentui/core/\\${relativePath}\\`,\n loadBundledFile,\n fallbackPath,\n import.meta.url,\n )\n}\n`\n\n const bunAssetOutputPath = path.join(path.dirname(outputPath), \"default-parser-assets.bun.ts\")\n await mkdir(path.dirname(outputPath), { recursive: true })\n const writes = [writeFile(outputPath, parserFile, \"utf-8\")]\n if (isDefaultOutput) {\n writes.push(writeFile(bunAssetOutputPath, bunAssetFile, \"utf-8\"))\n }\n await Promise.all(writes)\n console.log(`Generated ${path.basename(outputPath)} with ${parsers.length} parsers`)\n}\n\nfunction toPackageRelativeAssetPath(assetPath: string): string {\n return assetPath.replace(/^\\.\\//, \"\")\n}\n\nasync function main(options?: Partial<UpdateOptions>): Promise<void> {\n const opts = { ...getDefaultOptions(), ...options }\n\n try {\n console.log(\"Loading parsers configuration...\")\n console.log(` Config: ${opts.configPath}`)\n console.log(` Assets Dir: ${opts.assetsDir}`)\n console.log(` Output: ${opts.outputPath}`)\n\n const config = await loadConfig(opts.configPath)\n\n console.log(`Found ${config.parsers.length} parsers to process`)\n\n const generatedParsers: GeneratedParser[] = []\n\n for (const parser of config.parsers) {\n console.log(`Processing ${parser.filetype}...`)\n\n console.log(` Downloading language...`)\n const languagePath = await downloadLanguage(parser.filetype, parser.wasm, opts.assetsDir, opts.outputPath)\n\n console.log(` Downloading ${parser.queries.highlights.length} highlight queries...`)\n const highlightsPath = await downloadAndCombineQueries(\n parser.filetype,\n parser.queries.highlights,\n opts.assetsDir,\n opts.outputPath,\n \"highlights\",\n opts.configPath,\n )\n\n let injectionsPath: string | undefined\n if (parser.queries.injections && parser.queries.injections.length > 0) {\n console.log(` Downloading ${parser.queries.injections.length} injection queries...`)\n injectionsPath = await downloadAndCombineQueries(\n parser.filetype,\n parser.queries.injections,\n opts.assetsDir,\n opts.outputPath,\n \"injections\",\n opts.configPath,\n )\n }\n\n generatedParsers.push({\n filetype: parser.filetype,\n aliases: parser.aliases,\n languagePath,\n highlightsPath,\n injectionsPath,\n injectionMapping: parser.injectionMapping,\n })\n\n console.log(` ✓ Completed ${parser.filetype}`)\n }\n\n console.log(\"Generating output file...\")\n await generateDefaultParsersFile(generatedParsers, opts.outputPath)\n\n console.log(\"✅ Update completed successfully!\")\n } catch (error) {\n console.error(\"❌ Update failed:\", error)\n process.exit(1)\n }\n}\n\nfunction parseCLIArgs(): Partial<UpdateOptions> | null {\n try {\n const { values } = parseArgs({\n args: process.argv.slice(2),\n options: {\n config: { type: \"string\" },\n assets: { type: \"string\" },\n output: { type: \"string\" },\n help: { type: \"boolean\" },\n },\n strict: true,\n })\n\n if (values.help) {\n const command = path.basename(Bun.argv[1] ?? \"update-assets.js\")\n\n console.log(`Usage: bun ${command} [options]\n\nOptions:\n --config <path> Path to parsers-config.json\n --assets <path> Directory where .wasm and .scm files will be downloaded\n --output <path> Path where the generated TypeScript file will be written\n --help Show this help message\n\nExamples:\n # Use default paths (for OpenTUI core development)\n bun ${command}\n\n # Use custom paths (for application integration)\n bun ${command} --config ./my-parsers.json --assets ./src/parsers --output ./src/parsers.ts\n`)\n process.exit(0)\n }\n\n const options: Partial<UpdateOptions> = {}\n if (values.config) options.configPath = path.resolve(values.config)\n if (values.assets) options.assetsDir = path.resolve(values.assets)\n if (values.output) options.outputPath = path.resolve(values.output)\n\n return Object.keys(options).length > 0 ? options : null\n } catch (error) {\n console.error(`Error parsing arguments: ${error}`)\n console.log(\"Run with --help for usage information\")\n process.exit(1)\n }\n}\n\nexport function runUpdateAssetsCli(): Promise<void> {\n const cliOptions = parseCLIArgs()\n return main(cliOptions || undefined)\n}\n\nif (import.meta.main) {\n await runUpdateAssetsCli()\n}\n\nexport { main as updateAssets }\n",
"import { mkdir, readFile, writeFile } from \"fs/promises\"\nimport * as path from \"path\"\n\nexport interface DownloadResult {\n content?: Buffer\n filePath?: string\n error?: string\n}\n\nexport class DownloadUtils {\n private static hashUrl(url: string): string {\n let hash = 0\n for (let i = 0; i < url.length; i++) {\n const char = url.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash\n }\n return Math.abs(hash).toString(16)\n }\n\n /**\n * Download a file from URL or load from local path, with caching support\n */\n static async downloadOrLoad(\n source: string,\n cacheDir: string,\n cacheSubdir: string,\n fileExtension: string,\n useHashForCache: boolean = true,\n filetype?: string,\n ): Promise<DownloadResult> {\n const isUrl = source.startsWith(\"http://\") || source.startsWith(\"https://\")\n\n if (isUrl) {\n let cacheFileName: string\n if (useHashForCache) {\n const hash = this.hashUrl(source)\n cacheFileName = filetype ? `${filetype}-${hash}${fileExtension}` : `${hash}${fileExtension}`\n } else {\n cacheFileName = path.basename(source)\n }\n const cacheFile = path.join(cacheDir, cacheSubdir, cacheFileName)\n\n // Ensure cache directory exists\n await mkdir(path.dirname(cacheFile), { recursive: true })\n\n try {\n const cachedContent = await readFile(cacheFile)\n if (cachedContent.byteLength > 0) {\n console.log(`Loaded from cache: ${cacheFile} (${source})`)\n return { content: cachedContent, filePath: cacheFile }\n }\n } catch (error) {\n // Cache miss, continue to fetch\n }\n\n try {\n console.log(`Downloading from URL: ${source}`)\n const response = await fetch(source)\n if (!response.ok) {\n return { error: `Failed to fetch from ${source}: ${response.statusText}` }\n }\n const content = Buffer.from(await response.arrayBuffer())\n\n try {\n await writeFile(cacheFile, Buffer.from(content))\n console.log(`Cached: ${source}`)\n } catch (cacheError) {\n console.warn(`Failed to cache: ${cacheError}`)\n }\n\n return { content, filePath: cacheFile }\n } catch (error) {\n return { error: `Error downloading from ${source}: ${error}` }\n }\n } else {\n try {\n console.log(`Loading from local path: ${source}`)\n const content = await readFile(source)\n return { content, filePath: source }\n } catch (error) {\n return { error: `Error loading from local path ${source}: ${error}` }\n }\n }\n }\n\n /**\n * Download and save a file to a specific target path\n */\n static async downloadToPath(source: string, targetPath: string): Promise<DownloadResult> {\n const isUrl = source.startsWith(\"http://\") || source.startsWith(\"https://\")\n\n await mkdir(path.dirname(targetPath), { recursive: true })\n\n if (isUrl) {\n try {\n console.log(`Downloading from URL: ${source}`)\n const response = await fetch(source)\n if (!response.ok) {\n return { error: `Failed to fetch from ${source}: ${response.statusText}` }\n }\n const content = Buffer.from(await response.arrayBuffer())\n\n await writeFile(targetPath, Buffer.from(content))\n console.log(`Downloaded: ${source} -> ${targetPath}`)\n\n return { content, filePath: targetPath }\n } catch (error) {\n return { error: `Error downloading from ${source}: ${error}` }\n }\n } else {\n try {\n console.log(`Copying from local path: ${source}`)\n const content = await readFile(source)\n await writeFile(targetPath, Buffer.from(content))\n return { content, filePath: targetPath }\n } catch (error) {\n return { error: `Error copying from local path ${source}: ${error}` }\n }\n }\n }\n\n /**\n * Fetch multiple highlight queries and concatenate them\n */\n static async fetchHighlightQueries(sources: string[], cacheDir: string, filetype: string): Promise<string> {\n const queryPromises = sources.map((source) => this.fetchHighlightQuery(source, cacheDir, filetype))\n const queryResults = await Promise.all(queryPromises)\n\n const validQueries = queryResults.filter((query) => query.trim().length > 0)\n return validQueries.join(\"\\n\")\n }\n\n private static async fetchHighlightQuery(source: string, cacheDir: string, filetype: string): Promise<string> {\n const result = await this.downloadOrLoad(source, cacheDir, \"queries\", \".scm\", true, filetype)\n\n if (result.error) {\n console.error(`Error fetching highlight query from ${source}:`, result.error)\n return \"\"\n }\n\n if (result.content) {\n return new TextDecoder().decode(result.content)\n }\n\n return \"\"\n }\n}\n",
"#!/usr/bin/env bun\n\nimport { runUpdateAssetsCli } from \"./assets/update.js\"\n\nexport { runUpdateAssetsCli, updateAssets } from \"./assets/update.js\"\nexport type { UpdateOptions } from \"./assets/update.js\"\n\nif (import.meta.main) {\n await runUpdateAssetsCli()\n}\n"
],
"mappings": "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",
"debugId": "1A2D716CBBE1018664756E2164756E21",
"mappings": "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",
"debugId": "EC6FDBCB61B1DFC664756E2164756E21",
"names": []
}
{
"name": "@opentui/core",
"module": "index.js",
"main": "index.js",
"module": "index.node.js",
"main": "index.node.js",
"types": "index.d.ts",
"type": "module",
"version": "0.4.4",
"version": "0.4.5",
"description": "OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)",

@@ -17,6 +17,9 @@ "license": "MIT",

".": {
"import": "./index.js",
"types": "./index.d.ts"
"types": "./index.d.ts",
"bun": "./index.bun.js",
"node": "./index.node.js",
"import": "./index.node.js"
},
"./testing": {
"bun": "./testing.bun.js",
"import": "./testing.js",

@@ -44,2 +47,3 @@ "types": "./testing.d.ts"

"./yoga": {
"bun": "./yoga.bun.js",
"types": "./yoga.d.ts",

@@ -54,5 +58,11 @@ "import": "./yoga.js"

"./parser.worker": {
"bun": "./parser.worker.js",
"node": "./parser.worker.js",
"import": "./parser.worker.js",
"require": "./parser.worker.js",
"types": "./lib/tree-sitter/parser.worker.d.ts"
},
"./node-assets": {
"types": "./node-assets.d.ts",
"import": "./node-assets.js"
}

@@ -71,11 +81,11 @@ },

"optionalDependencies": {
"@opentui/core-darwin-x64": "0.4.4",
"@opentui/core-darwin-arm64": "0.4.4",
"@opentui/core-linux-x64": "0.4.4",
"@opentui/core-linux-arm64": "0.4.4",
"@opentui/core-win32-x64": "0.4.4",
"@opentui/core-win32-arm64": "0.4.4",
"@opentui/core-linux-x64-musl": "0.4.4",
"@opentui/core-linux-arm64-musl": "0.4.4"
"@opentui/core-darwin-x64": "0.4.5",
"@opentui/core-darwin-arm64": "0.4.5",
"@opentui/core-linux-x64": "0.4.5",
"@opentui/core-linux-arm64": "0.4.5",
"@opentui/core-win32-x64": "0.4.5",
"@opentui/core-win32-arm64": "0.4.5",
"@opentui/core-linux-x64-musl": "0.4.5",
"@opentui/core-linux-arm64-musl": "0.4.5"
}
}

@@ -9,2 +9,6 @@ export interface WriteFileOptions {

type FilePathFallback = string | URL | (() => string | URL);
export interface ResolveBundledFilePathOptions {
loadBundledFileFallback?: boolean;
useAssetRoot?: boolean;
}
export declare const sleep: (msOrDate: number | Date) => Promise<void>;

@@ -14,3 +18,3 @@ export declare const stringWidth: (text: string) => number;

export declare const writeFile: (destination: string | URL, data: string | ArrayBufferView, options?: WriteFileOptions) => Promise<number>;
export declare function resolveBundledFilePath(loadBundledFile: () => Promise<FileImportModule>, fallbackPath: FilePathFallback, metaUrl: string): Promise<string>;
export declare function resolveBundledFilePath(key: string, loadBundledFile: () => Promise<FileImportModule>, fallbackPath: FilePathFallback, metaUrl: string, options?: ResolveBundledFilePathOptions): Promise<string>;
export {};

@@ -40,3 +40,3 @@ /*

import { fileURLToPath } from "node:url";
import * as coreRuntime from "./index.js";
import * as coreRuntime from "@opentui/core";
const CORE_RUNTIME_SPECIFIER = "@opentui/core";

@@ -56,3 +56,3 @@ const CORE_TESTING_RUNTIME_SPECIFIER = "@opentui/core/testing";

const loadCoreTestingRuntimeModule = async () => {
return (await import("./testing.js"));
return (await import("@opentui/core/testing"));
};

@@ -59,0 +59,0 @@ const escapeRegExp = (value) => {

@@ -1,1 +0,1 @@

{"version":3,"file":"runtime-plugin.js","sourceRoot":"","sources":["runtime-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,KAAK,WAAW,MAAM,YAAY,CAAA;AAsBzC,MAAM,sBAAsB,GAAG,eAAe,CAAA;AAC9C,MAAM,8BAA8B,GAAG,uBAAuB,CAAA;AAC9D,MAAM,qBAAqB,GAAG,yBAAyB,CAAA;AACvD,MAAM,2BAA2B,GAAG,EAAE,CAAA;AACtC,MAAM,sCAAsC,GAA0C;IACpF,4BAA4B,EAAE,IAAI;IAClC,yBAAyB,EAAE,KAAK;CACjC,CAAA;AAED,MAAM,sCAAsC,GAAG,CAAC,sBAAsB,EAAE,8BAA8B,CAAU,CAAA;AAEhH,MAAM,yCAAyC,GAAG,IAAI,GAAG,CAAS,sCAAsC,CAAC,CAAA;AAEzG,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,SAAiB,EAAW,EAAE;IACzE,OAAO,yCAAyC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,4BAA4B,GAAG,KAAK,IAAmC,EAAE;IAC7E,OAAO,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAyB,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAU,EAAE;IACzD,OAAO,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,KAAe,EAAU,EAAE;IAClD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACtD,OAAO,IAAI,MAAM,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AACjF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAiB,EAAU,EAAE;IACvE,OAAO,GAAG,qBAAqB,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,KAAK,EAAE,WAA+B,EAAiC,EAAE;IAC3G,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,MAAM,WAAW,EAAE,CAAA;IAC5B,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3F,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAkB,CAAA;AAE5D,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAU,EAAE;IACnD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC5D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,IAAI,cAAc,GAAG,SAAS,CAAA;IAE9B,IAAI,CAAC;QACH,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,cAAc,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACzD,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAW,EAAE;IAClD,OAAO,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,IAAY,EACZ,4BAAgE,EACzC,EAAE;IACzB,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;QACxD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC3E,IAAI,iBAAiB,EAAE,CAAC;gBACtB,OAAO,iBAAiB,CAAA;YAC1B,CAAC;YAED,IAAI,WAAW,GAA0B,UAAU,CAAA;YAEnD,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAsB,CAAA;gBAC1F,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClC,WAAW,GAAG,QAAQ,CAAA;gBACxB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW,GAAG,UAAU,CAAA;YAC1B,CAAC;YAED,4BAA4B,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;YAC9D,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;QACrC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,UAAU,GAAG,SAAS,CAAA;IACxB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAC3B,IAAY,EACZ,4BAAgE,EACvD,EAAE;IACX,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAEhD,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IACE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/B,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/B,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/B,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC/B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1G,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,kBAAkB,CAAC,cAAc,EAAE,4BAA4B,CAAC,KAAK,QAAQ,CAAA;AACtF,CAAC,CAAA;AAED,MAAM,6BAA6B,GAAG,CAAC,IAAY,EAAiB,EAAE;IACpE,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;QACrC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,cAAc,EAAE,CAAC;YAC3C,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,cAAc,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3F,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,UAAU,GAAG,SAAS,CAAA;IACxB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kCAAkC,GAAG,CACzC,OAAgD,EACT,EAAE;IACzC,OAAO;QACL,4BAA4B,EAC1B,OAAO,EAAE,4BAA4B,IAAI,sCAAsC,CAAC,4BAA4B;QAC9G,yBAAyB,EACvB,OAAO,EAAE,yBAAyB,IAAI,sCAAsC,CAAC,yBAAyB;KACzG,CAAA;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAsC,EAAE;IAChF,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAElC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,8BAA8B,GAAG;IACrC,8BAA8B;IAC9B,gCAAgC;IAChC,0CAA0C;IAC1C,2CAA2C;CACnC,CAAA;AAEV,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAW,EAAE;IACrD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IACE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAC7B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,uBAAiC,EAAE,aAAqB,EAAQ,EAAE;IAC/F,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACpE,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,uBAAuB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAE3C,IAAI,uBAAuB,CAAC,MAAM,GAAG,2BAA2B,EAAE,CAAC;QACjE,uBAAuB,CAAC,KAAK,EAAE,CAAA;IACjC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,kBAAwD,EAAU,EAAE;IACjH,IAAI,eAAe,GAAG,IAAI,CAAA;IAE1B,KAAK,MAAM,OAAO,IAAI,8BAA8B,EAAE,CAAC;QACrD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;YAC1F,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;YACjD,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9C,OAAO,SAAS,CAAA;YAClB,CAAC;YAED,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,CAAA;QAC3C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAY,EAAE;IACzD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEpC,KAAK,MAAM,OAAO,IAAI,8BAA8B,EAAE,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACvD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACzB,OAAO,UAAU,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAiB,EAAE;IAC7E,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAChE,IACE,iBAAiB,KAAK,SAAS;YAC/B,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC;YACrC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,EACpC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,8BAA8B,GAAG,CAAC,SAAiB,EAAE,QAAgB,EAAiB,EAAE;IAC5F,IACE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAS,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAC3C,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,gCAAgC,GAAG,CAAC,IAAY,EAAE,uBAAiC,EAAU,EAAE;IACnG,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAiB,EAAE;QAC9D,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5E,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;YACpD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;YACrE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,OAAO,iBAAiB,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,OAAO,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAE,2BAAgD,EAAU,EAAE;IAC1G,OAAO,uBAAuB,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE;QACjD,MAAM,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAClE,OAAO,eAAe,IAAI,IAAI,CAAA;IAChC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAoC,EAAE;IACxE,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAA;IAC5D,cAAc,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,IAAI,IAAK,WAAoC,CAAC,CAAA;IAC/F,cAAc,CAAC,GAAG,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CAAA;IAChF,MAAM,cAAc,GAAG,kCAAkC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAExE,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9E,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC7D,KAAK,MAAM,SAAS,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,2BAA2B,CAAC,GAAG,CAAC,SAAS,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAA;IACpF,CAAC;IAED,OAAO;QACL,IAAI,EAAE,oCAAoC;QAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,uBAAuB,GAAa,EAAE,CAAA;YAC5C,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAU,CAAA;YACjD,MAAM,kCAAkC,GAAG,IAAI,GAAG,EAAU,CAAA;YAC5D,MAAM,4BAA4B,GAAG,IAAI,GAAG,EAAiC,CAAA;YAC7E,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA0B,CAAA;YAC9D,MAAM,oCAAoC,GAAG,IAAI,GAAG,EAAoB,CAAA;YAExE,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAQ,EAAE;gBAClD,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;gBAC3C,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAA;gBAEnE,IAAI,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACrD,OAAM;gBACR,CAAC;gBAED,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;gBAEhD,6EAA6E;gBAC7E,mFAAmF;gBACnF,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBAClG,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACjD,IAAI,UAAU,KAAK,mBAAmB,EAAE,CAAC;wBACvC,OAAO,SAAS,CAAA;oBAClB,CAAC;oBAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;oBACrD,MAAM,8BAA8B,GAAG,CAAC,eAAe,IAAI,cAAc,CAAC,4BAA4B,CAAA;oBACtG,MAAM,2BAA2B,GAAG,CAAC,eAAe,IAAI,cAAc,CAAC,yBAAyB,CAAA;oBAChG,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;oBAC9E,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;oBAClD,MAAM,wBAAwB,GAAG,8BAA8B;wBAC7D,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,2BAA2B,CAAC;wBACjE,CAAC,CAAC,QAAQ,CAAA;oBAEZ,IAAI,wBAAwB,KAAK,QAAQ,IAAI,2BAA2B,EAAE,CAAC;wBACzE,qBAAqB,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAA;oBAC5D,CAAC;oBAED,MAAM,mBAAmB,GAAG,2BAA2B;wBACrD,CAAC,CAAC,gCAAgC,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;wBACrF,CAAC,CAAC,wBAAwB,CAAA;oBAE5B,OAAO;wBACL,QAAQ,EAAE,mBAAmB;wBAC7B,MAAM;qBACP,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAkB,EAAE;gBACzD,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAChD,MAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAC/D,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,cAAc,CAAA;gBACvB,CAAC;gBAED,IAAI,QAAgB,CAAA;gBACpB,IAAI,CAAC;oBACH,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;gBACjD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrF,MAAM,QAAQ,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAA;wBAC9E,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;wBAClD,OAAO,QAAQ,CAAA;oBACjB,CAAC;oBACD,MAAM,KAAK,CAAA;gBACb,CAAC;gBAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA;gBAC1D,MAAM,QAAQ,GAAG;oBACf,gBAAgB;oBAChB,4BAA4B,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAChE,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAC3C;iBACF,CAAA;gBAED,oBAAoB,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;gBAClD,OAAO,QAAQ,CAAA;YACjB,CAAC,CAAA;YAED,MAAM,qCAAqC,GAAG,CAAC,IAAY,EAAE,WAAW,IAAI,GAAG,EAAU,EAAY,EAAE;gBACrG,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAEhD,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,4BAA4B,CAAC,EAAE,CAAC;oBACxE,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,oCAAoC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAC5E,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,WAAW,CAAA;gBACpB,CAAC;gBAED,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBACjC,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAE5B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;gBACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;gBAElD,IAAI,QAAQ,CAAC,4BAA4B,EAAE,CAAC;oBAC1C,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAClC,CAAC;gBAED,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBAClD,MAAM,YAAY,GAAG,8BAA8B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;oBAC9E,IAAI,CAAC,YAAY,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,4BAA4B,CAAC,EAAE,CAAC;wBACvF,SAAQ;oBACV,CAAC;oBAED,KAAK,MAAM,UAAU,IAAI,qCAAqC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;wBACvF,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;oBAC9B,CAAC;gBACH,CAAC;gBAED,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;gBAE/B,MAAM,oBAAoB,GAAG,CAAC,GAAG,YAAY,CAAC,CAAA;gBAC9C,oCAAoC,CAAC,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;gBAC9E,OAAO,oBAAoB,CAAA;YAC7B,CAAC,CAAA;YAED,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAE3D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,SAAQ;gBACV,CAAC;gBAED,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBAClC,OAAO,EAAE,MAAM,2BAA2B,CAAC,WAAW,CAAC;oBACvD,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC,CAAA;gBAEH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;YAC1F,CAAC;YAED,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzC,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC9F,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,MAAM,IAAI,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACrE,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzC,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;gBAE/C,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,oBAAoB,CAAC,IAAI,CAAC,CAAA;oBAC1B,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,4BAA4B,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;oBAC9F,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,KAAK,MAAM,WAAW,IAAI,qCAAqC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtE,oBAAoB,CAAC,WAAW,CAAC,CAAA;gBACnC,CAAC;gBAED,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAA;gBACvD,IACE,cAAc,CAAC,yBAAyB;oBACxC,WAAW;oBACX,kCAAkC,CAAC,GAAG,CAAC,WAAW,CAAC,EACnD,CAAC;oBACD,oBAAoB,CAAC,IAAI,CAAC,CAAA;oBAC1B,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,4BAA4B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,4BAA4B,EAAE,CAAC;oBAC1G,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,IAAI,cAAc,CAAC,yBAAyB,IAAI,WAAW,EAAE,CAAC;oBAC5D,kCAAkC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;gBACrD,CAAC;gBAED,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBAC1B,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
{"version":3,"file":"runtime-plugin.js","sourceRoot":"","sources":["runtime-plugin.ts"],"names":[],"mappings":"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"}
import {
ANSI,
CliRenderer
} from "./index-7z5n7k9m.js";
} from "./chunk-node-51kpf0mz.js";
import {
SystemClock,
TreeSitterClient
} from "./index-za1krqsf.js";
} from "./chunk-node-q0cwyvm9.js";

@@ -10,0 +10,0 @@ // src/testing/mock-keys.ts

@@ -95,3 +95,3 @@ import {

yoga_default
} from "./index-za1krqsf.js";
} from "./chunk-node-q0cwyvm9.js";
export {

@@ -98,0 +98,0 @@ yoga_default as default,

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display