@opentui/core 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +4 -4
  2. package/Renderable.d.ts +3 -0
  3. package/audio.d.ts +202 -1
  4. package/buffer.d.ts +3 -0
  5. package/{chunk-bun-t2myhmwd.js → chunk-bun-ctxxvhwz.js} +1181 -147
  6. package/chunk-bun-ctxxvhwz.js.map +62 -0
  7. package/{chunk-bun-tkm837n2.js → chunk-bun-v3e63tzw.js} +147 -37
  8. package/chunk-bun-v3e63tzw.js.map +32 -0
  9. package/{chunk-node-51kpf0mz.js → chunk-node-1j69hr31.js} +147 -37
  10. package/chunk-node-1j69hr31.js.map +32 -0
  11. package/{chunk-node-q0cwyvm9.js → chunk-node-savhj5rp.js} +1181 -147
  12. package/chunk-node-savhj5rp.js.map +61 -0
  13. package/image.d.ts +105 -0
  14. package/index.bun.js +2131 -89
  15. package/index.bun.js.map +6 -4
  16. package/index.d.ts +1 -0
  17. package/index.node.js +2131 -89
  18. package/index.node.js.map +7 -3
  19. package/lib/env.d.ts +1 -0
  20. package/lib/stdin-parser.d.ts +5 -0
  21. package/node-assets.js +5 -2
  22. package/node-assets.js.map +3 -3
  23. package/package.json +10 -10
  24. package/parser.worker.js +5 -2
  25. package/parser.worker.js.map +3 -3
  26. package/platform/ffi.d.ts +2 -0
  27. package/renderables/Image.d.ts +44 -0
  28. package/renderables/index.d.ts +1 -0
  29. package/renderer.d.ts +14 -0
  30. package/testing.bun.js +4 -3
  31. package/testing.bun.js.map +3 -3
  32. package/testing.js +4 -3
  33. package/testing.js.map +3 -3
  34. package/text-buffer-view.d.ts +2 -5
  35. package/types.d.ts +8 -0
  36. package/yoga.bun.js +1 -1
  37. package/yoga.js +1 -1
  38. package/zig-structs.d.ts +45 -24
  39. package/zig.d.ts +70 -7
  40. package/chunk-bun-t2myhmwd.js.map +0 -62
  41. package/chunk-bun-tkm837n2.js.map +0 -32
  42. package/chunk-node-51kpf0mz.js.map +0 -32
  43. package/chunk-node-q0cwyvm9.js.map +0 -61
package/lib/env.d.ts CHANGED
@@ -32,6 +32,7 @@ export interface EnvVarConfig {
32
32
  name: string;
33
33
  description: string;
34
34
  default?: string | boolean | number;
35
+ required?: boolean;
35
36
  type?: "string" | "boolean" | "number";
36
37
  }
37
38
  export declare const envRegistry: Record<string, EnvVarConfig>;
@@ -52,6 +52,8 @@ export declare class StdinParser {
52
52
  private timeoutId;
53
53
  private destroyed;
54
54
  private pendingSinceMs;
55
+ private pendingTimeoutPaused;
56
+ private suspendedPixelResolutionPrefixLength;
55
57
  private forceFlush;
56
58
  private justFlushedEsc;
57
59
  private state;
@@ -69,6 +71,9 @@ export declare class StdinParser {
69
71
  flushTimeout(nowMsValue?: number): void;
70
72
  private tryForceFlush;
71
73
  reset(): void;
74
+ hasPendingPixelResolutionResponse(): boolean;
75
+ pausePendingTimeout(): void;
76
+ resumePendingTimeout(): void;
72
77
  resetMouseState(): void;
73
78
  destroy(): void;
74
79
  private ensureAlive;
package/node-assets.js CHANGED
@@ -47,7 +47,7 @@ var envRegistry = singleton("env-registry", () => ({}));
47
47
  function registerEnvVar(config) {
48
48
  const existing = envRegistry[config.name];
49
49
  if (existing) {
50
- if (existing.description !== config.description || existing.type !== config.type || existing.default !== config.default) {
50
+ if (existing.description !== config.description || existing.type !== config.type || existing.default !== config.default || existing.required !== config.required) {
51
51
  throw new Error(`Environment variable "${config.name}" is already registered with different configuration. ` + `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`);
52
52
  }
53
53
  return;
@@ -63,6 +63,9 @@ function parseEnvValue(config) {
63
63
  if (envValue === undefined && config.default !== undefined) {
64
64
  return config.default;
65
65
  }
66
+ if (envValue === undefined && config.required === false) {
67
+ return;
68
+ }
66
69
  if (envValue === undefined) {
67
70
  throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`);
68
71
  }
@@ -257,5 +260,5 @@ export {
257
260
  getNodeAssets
258
261
  };
259
262
 
260
- //# debugId=CA3D232D897F070364756E2164756E21
263
+ //# debugId=2D9AF8B7C6420F5D64756E2164756E21
261
264
  //# sourceMappingURL=node-assets.js.map
@@ -6,11 +6,11 @@
6
6
  "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",
7
7
  "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",
8
8
  "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",
9
- "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",
9
+ "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 required?: boolean\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 existing.required !== config.required\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 | undefined {\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 && config.required === false) {\n return undefined\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 | undefined> = 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 if (config.required === false) {\n markdown += \"**Default:** *unset*\\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 if (config.required === false) {\n output += \"\\x1b[32mDefault:\\x1b[0m \\x1b[35munset\\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",
10
10
  "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",
11
11
  "// 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"
12
12
  ],
13
- "mappings": "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",
14
- "debugId": "CA3D232D897F070364756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "2D9AF8B7C6420F5D64756E2164756E21",
15
15
  "names": []
16
16
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "main": "index.node.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
7
- "version": "0.4.5",
7
+ "version": "0.5.0",
8
8
  "description": "OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)",
9
9
  "license": "MIT",
10
10
  "repository": {
@@ -65,7 +65,7 @@
65
65
  }
66
66
  },
67
67
  "dependencies": {
68
- "bun-ffi-structs": "0.2.4",
68
+ "bun-ffi-structs": "0.3.1",
69
69
  "diff": "9.0.0",
70
70
  "marked": "17.0.1",
71
71
  "string-width": "7.2.0",
@@ -75,13 +75,13 @@
75
75
  "web-tree-sitter": "0.25.10"
76
76
  },
77
77
  "optionalDependencies": {
78
- "@opentui/core-darwin-x64": "0.4.5",
79
- "@opentui/core-darwin-arm64": "0.4.5",
80
- "@opentui/core-linux-x64": "0.4.5",
81
- "@opentui/core-linux-arm64": "0.4.5",
82
- "@opentui/core-win32-x64": "0.4.5",
83
- "@opentui/core-win32-arm64": "0.4.5",
84
- "@opentui/core-linux-x64-musl": "0.4.5",
85
- "@opentui/core-linux-arm64-musl": "0.4.5"
78
+ "@opentui/core-darwin-x64": "0.5.0",
79
+ "@opentui/core-darwin-arm64": "0.5.0",
80
+ "@opentui/core-linux-x64": "0.5.0",
81
+ "@opentui/core-linux-arm64": "0.5.0",
82
+ "@opentui/core-win32-x64": "0.5.0",
83
+ "@opentui/core-win32-arm64": "0.5.0",
84
+ "@opentui/core-linux-x64-musl": "0.5.0",
85
+ "@opentui/core-linux-arm64-musl": "0.5.0"
86
86
  }
87
87
  }
package/parser.worker.js CHANGED
@@ -3357,7 +3357,7 @@ var envRegistry = singleton("env-registry", () => ({}));
3357
3357
  function registerEnvVar(config) {
3358
3358
  const existing = envRegistry[config.name];
3359
3359
  if (existing) {
3360
- if (existing.description !== config.description || existing.type !== config.type || existing.default !== config.default) {
3360
+ if (existing.description !== config.description || existing.type !== config.type || existing.default !== config.default || existing.required !== config.required) {
3361
3361
  throw new Error(`Environment variable "${config.name}" is already registered with different configuration. ` + `Existing: ${JSON.stringify(existing)}, New: ${JSON.stringify(config)}`);
3362
3362
  }
3363
3363
  return;
@@ -3373,6 +3373,9 @@ function parseEnvValue(config) {
3373
3373
  if (envValue === undefined && config.default !== undefined) {
3374
3374
  return config.default;
3375
3375
  }
3376
+ if (envValue === undefined && config.required === false) {
3377
+ return;
3378
+ }
3376
3379
  if (envValue === undefined) {
3377
3380
  throw new Error(`Required environment variable ${config.name} is not set. ${config.description}`);
3378
3381
  }
@@ -4557,5 +4560,5 @@ if (isWorkerRuntime) {
4557
4560
  });
4558
4561
  }
4559
4562
 
4560
- //# debugId=87DC963DDC93A9B264756E2164756E21
4563
+ //# debugId=E5F8B2FE3F70793464756E2164756E21
4561
4564
  //# sourceMappingURL=parser.worker.js.map